ports/emulators/qemu-user-static-devel/files/qemu_user_static.in
Kyle Evans 2f03a12d35 NEW PORT: emulators/qemu-user-static-devel: QEMU user-mode emulation
This port represents the to-be-released version of qemu-user-static for
testing prior to unleashing it upon the community at large and the package
building infrastructure. Currently, it is based on the bsd-user-rebase-3.1
branch that moves the base qemu version of this work forward.

The main highlight of the update to 3.1 is initial riscv64 bsd-user support,
submitted by Embecosm.

This version of the port is also notably no longer based on the master port,
qemu-sbruno, but repocopied from it due to reusing a good portion of it. As
such, it's been severely reduced to eliminate all of the bits not relevant
to building bsd-user/ (including the various port options), so much of the
diff is eliminating the option-enabled checks and combining them all into a
single CONFIGURE_ARGS/MAKE_ARGS, along with some additional --disable-flags
for things that we certainly don't need.

The python2.7 version restriction has been dropped as qemu's actually
supported py3+ since at least the 2.x version we have over in qemu-sbruno, A
follow-up commit will also drop the version restrictions in the other qemu
ports that still have it to be proactive about this stuff as Python2 reaches
EOL.

Q/A:
 * portlint: looks fine
 * testport: 11.3, -CURRENT; amd64

PR:		242253
Reviewed by:	koobs (ports)
Approved by:	koobs (ports)
2019-12-02 03:40:49 +00:00

164 lines
6.2 KiB
Bash

#!/bin/sh
#
# $FreeBSD$
#
# PROVIDE: %%NAME%%
# REQUIRE: LOGIN
# KEYWORD: shutdown
# Add the following lines to /etc/rc.conf to enable `%%NAME%%':
#
# %%NAME%%_enable="YES"
#
. /etc/rc.subr
name=%%NAME%%
rcvar=%%NAME%%_enable
# read configuration and set defaults
load_rc_config "$name"
: ${%%NAME%%_enable:="NO"}
BINMISCCTL=/usr/sbin/binmiscctl
QEMU_DIR=%%PREFIX%%/bin
QEMU_PREFIX=qemu-
QEMU_SUFFIX=-static
start_cmd=%%NAME%%_start
stop_cmd=%%NAME%%_stop
extra_commands=list
list_cmd="${BINMISCCTL} list"
%%NAME%%_start()
{
# register arm interpreter styled 'arm'
interpreter=${QEMU_DIR}/${QEMU_PREFIX}arm${QEMU_SUFFIX}
if [ -x "${interpreter}" ]; then
${BINMISCCTL} add arm --interpreter "${interpreter}" \
--magic "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00" \
--mask "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff" \
--size 20 --set-enabled
else
echo "$0: interpreter ${interpreter} not found, cannot register."
fi
# register armv6 interpreter styled 'arm'
interpreter=${QEMU_DIR}/${QEMU_PREFIX}arm${QEMU_SUFFIX}
if [ -x "${interpreter}" ]; then
${BINMISCCTL} add armv6 --interpreter "${interpreter}" \
--magic "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00" \
--mask "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff" \
--size 20 --set-enabled
else
echo "$0: interpreter ${interpreter} not found, cannot register."
fi
# register armv7 interpreter styled 'arm'
interpreter=${QEMU_DIR}/${QEMU_PREFIX}arm${QEMU_SUFFIX}
if [ -x "${interpreter}" ]; then
${BINMISCCTL} add armv7 --interpreter "${interpreter}" \
--magic "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00" \
--mask "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff" \
--size 20 --set-enabled
else
echo "$0: interpreter ${interpreter} not found, cannot register."
fi
# register aarch64 interpreter styled 'aarch64'
interpreter=${QEMU_DIR}/${QEMU_PREFIX}aarch64${QEMU_SUFFIX}
if [ -x "${interpreter}" ]; then
${BINMISCCTL} add aarch64 --interpreter "${interpreter}" \
--magic "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00" \
--mask "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff" \
--size 20 --set-enabled
else
echo "$0: interpreter ${interpreter} not found, cannot register."
fi
# register mips interpreter styled 'mips'
interpreter=${QEMU_DIR}/${QEMU_PREFIX}mips${QEMU_SUFFIX}
if [ -x "${interpreter}" ]; then
${BINMISCCTL} add mips --interpreter "${interpreter}" \
--magic "\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08" \
--mask "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff" \
--size 20 --set-enabled
else
echo "$0: interpreter ${interpreter} not found, cannot register."
fi
# register mipsle interpreter styled 'mipsel'
interpreter=${QEMU_DIR}/${QEMU_PREFIX}mipsel${QEMU_SUFFIX}
if [ -x "${interpreter}" ]; then
${BINMISCCTL} add mipsel --interpreter "${interpreter}" \
--magic "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00" \
--mask "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff" \
--size 20 --set-enabled
else
echo "$0: interpreter ${interpreter} not found, cannot register."
fi
# register mips64 interpreter styled 'mips64'
interpreter=${QEMU_DIR}/${QEMU_PREFIX}mips64${QEMU_SUFFIX}
if [ -x "${interpreter}" ]; then
${BINMISCCTL} add mips64 --interpreter "${interpreter}" \
--magic "\x7f\x45\x4c\x46\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08" \
--mask "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff" \
--size 20 --set-enabled
else
echo "$0: interpreter ${interpreter} not found, cannot register."
fi
# register powerpc interpreter styled 'ppc'
interpreter=${QEMU_DIR}/${QEMU_PREFIX}ppc${QEMU_SUFFIX}
if [ -x "${interpreter}" ]; then
${BINMISCCTL} add powerpc --interpreter "${interpreter}" \
--magic "\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14" \
--mask "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff" \
--size 20 --set-enabled
else
echo "$0: interpreter ${interpreter} not found, cannot register."
fi
# register powerpc64 interpreter styled 'ppc64'
interpreter=${QEMU_DIR}/${QEMU_PREFIX}ppc64${QEMU_SUFFIX}
if [ -x "${interpreter}" ]; then
${BINMISCCTL} add powerpc64 --interpreter "${interpreter}" \
--magic "\x7f\x45\x4c\x46\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x15" \
--mask "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff" \
--size 20 --set-enabled
else
echo "$0: interpreter ${interpreter} not found, cannot register."
fi
# register riscv64 interpreter styled 'riscv64'
interpreter=${QEMU_DIR}/${QEMU_PREFIX}riscv64${QEMU_SUFFIX}
if [ -x "${interpreter}" ]; then
${BINMISCCTL} add riscv64 --interpreter "${interpreter}" \
--magic "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xf3\x00" \
--mask "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff" \
--size 20 --set-enabled
else
echo "$0: interpreter ${interpreter} not found, cannot register."
fi
# register sparc64 interpreter styled 'sparc64'
interpreter=${QEMU_DIR}/${QEMU_PREFIX}sparc64${QEMU_SUFFIX}
if [ -x "${interpreter}" ]; then
${BINMISCCTL} add sparc64 --interpreter "${interpreter}" \
--magic "\x7f\x45\x4c\x46\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2b" \
--mask "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff" \
--size 20 --set-enabled
else
echo "$0: interpreter ${interpreter} not found, cannot register."
fi
}
%%NAME%%_stop()
{
${BINMISCCTL} remove arm
${BINMISCCTL} remove armv6
${BINMISCCTL} remove armv7
${BINMISCCTL} remove aarch64
${BINMISCCTL} remove mips
${BINMISCCTL} remove mips64
${BINMISCCTL} remove mipsel
${BINMISCCTL} remove powerpc
${BINMISCCTL} remove powerpc64
${BINMISCCTL} remove riscv64
${BINMISCCTL} remove sparc64
}
run_rc_command "$1"