Message ID | 20190306044620.GC75@03612eec87fc (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | qemu-binfmt-conf.sh | expand |
On 06/03/2019 05:46, Unai Martinez-Corral wrote: > Allow to set options '--persistent' and/or '--credential' through > environment variables. If not defined, defaults are used ('no'). > Anyway, command-line arguments have priority over environment variables. > Could you explain why we could need to use the env variable instead of the command line parameter? I don't see any use case for that. Thanks, Laurent
2019/3/9 10:42, Laurent Vivier: > On 06/03/2019 05:46, Unai Martinez-Corral wrote: > > Allow to set options '--persistent' and/or '--credential' through > > environment variables. If not defined, defaults are used ('no'). > > Anyway, command-line arguments have priority over environment variables. > > Could you explain why we could need to use the env variable instead of > the command line parameter? > > I don't see any use case for that. The main use case is to provide defaults when this script is included in a docker container. There are three actors involved: - Developers of QEMU providing some defaults in the script. - Developer of a docker image including the script from upstream but changing some defaults by setting envvars inside the container. - User of the container that might want to override the settings either by setting the envvars or through the command line. If the entrypoint to the docker image is any script that executes qemu-binfmt-conf.sh at some point, the user cannot provide options through the command line. Envvars allow to do so, without requiring the user to customize the docker image. Regards, Unai
diff --git a/scripts/qemu-binfmt-conf.sh b/scripts/qemu-binfmt-conf.sh index ca15ff8092..e7a714e22c 100755 --- a/scripts/qemu-binfmt-conf.sh +++ b/scripts/qemu-binfmt-conf.sh @@ -186,9 +186,11 @@ Usage: qemu-binfmt-conf.sh [--qemu-path PATH][--debian][--systemd CPU] (default: $SYSTEMDDIR or $DEBIANDIR) --credential: if present, credential and security tokens are calculated according to the binary to interpret + ($QEMU_CREDENTIAL=yes) --persistent: if present, the interpreter is loaded when binfmt is configured and remains in memory. All future uses are cloned from the open file. + ($QEMU_PERSISTENT=yes) To import templates with update-binfmts, use : @@ -255,10 +257,10 @@ qemu_check_systemd() { qemu_generate_register() { flags="" - if [ "x$CREDENTIAL" = "xyes" ] ; then + if [ "x$QEMU_CREDENTIAL" = "xyes" ] ; then flags="OC" fi - if [ "x$PERSISTENT" = "xyes" ] ; then + if [ "x$QEMU_PERSISTENT" = "xyes" ] ; then flags="${flags}F" fi @@ -281,7 +283,7 @@ package qemu-$cpu interpreter $qemu magic $magic mask $mask -credential $CREDENTIAL +credential $QEMU_CREDENTIAL EOF } @@ -320,8 +322,10 @@ SYSTEMDDIR="/etc/binfmt.d" DEBIANDIR="/usr/share/binfmts" QEMU_PATH=/usr/local/bin -CREDENTIAL=no -PERSISTENT=no + +QEMU_CREDENTIAL="${QEMU_CREDENTIAL:-no}" +QEMU_PERSISTENT="${QEMU_PERSISTENT:-no}" + QEMU_SUFFIX="" options=$(getopt -o ds:Q:S:e:hcp -l debian,systemd:,qemu-path:,qemu-suffix:,exportdir:,help,credential,persistent -- "$@") @@ -373,10 +377,10 @@ while true ; do exit 1 ;; -c|--credential) - CREDENTIAL="yes" + QEMU_CREDENTIAL="yes" ;; -p|--persistent) - PERSISTENT="yes" + QEMU_PERSISTENT="yes" ;; *) break
Allow to set options '--persistent' and/or '--credential' through environment variables. If not defined, defaults are used ('no'). Anyway, command-line arguments have priority over environment variables. Signed-off-by: Unai Martinez-Corral <unai.martinezcorral@ehu.eus> --- scripts/qemu-binfmt-conf.sh | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) -- 2.20.1