qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v7 8/9] qemu-binfmt-conf.sh: add option --clear


From: Unai Martinez Corral
Subject: Re: [Qemu-devel] [PATCH v7 8/9] qemu-binfmt-conf.sh: add option --clear
Date: Tue, 12 Mar 2019 21:25:43 +0100

I could not see the indentation problems you mentioned before. Hope it
is fixed in v7 anyway.

El mar., 12 mar. 2019 a las 20:56, Laurent Vivier
(<address@hidden>) escribió:
>
> On 12/03/2019 20:54, Unai Martinez-Corral wrote:
> > This is a partial implementation.
> >
> > Allows to remove a single or a list of already registered binfmt
> > interpreters. Valid values are those in qemu_target_list.
> > If TARGETS is empty, all the existing 'qemu-*' interpreters are
> > removed.
> >
> > This is partial because 'debian' and 'systemd' configurations are not
> > supported. The script will exit with error 'option clear not
> > implemented for this mode yet'.
> >
> > Removal is done by printing '-1' as explained at:
> > https://www.kernel.org/doc/Documentation/admin-guide/binfmt-misc.rst
> >
> > Signed-off-by: Unai Martinez-Corral <address@hidden>
> > ---
> >   scripts/qemu-binfmt-conf.sh | 36 ++++++++++++++++++++++++++++++++++--
> >   1 file changed, 34 insertions(+), 2 deletions(-)
> >
> > diff --git a/scripts/qemu-binfmt-conf.sh b/scripts/qemu-binfmt-conf.sh
> > index 5d6535bfc9..16c48e13a8 100755
> > --- a/scripts/qemu-binfmt-conf.sh
> > +++ b/scripts/qemu-binfmt-conf.sh
> > @@ -197,7 +197,7 @@ Options and associated environment variables:
> >
> >   Argument             Env-variable     Description
> >   TARGETS              QEMU_TARGETS     A single arch name or a list of 
> > them (see all names below);
> > -                                      if empty, configure all known 
> > targets;
> > +                                      if empty, configure/clear all known 
> > targets;
> >                                         if 'NONE', no interpreter is 
> > configured.
> >   -h|--help                             display this usage
> >   -Q|--path PATH       QEMU_PATH        set path to qemu interpreter(s)
> > @@ -206,6 +206,8 @@ TARGETS              QEMU_TARGETS     A single arch 
> > name or a list of them (see
> >                                         uses are cloned from the open file.
> >   -c|--credential      QEMU_CREDENTIAL  (yes) credential and security 
> > tokens are calculated according
> >                                         to the binary to interpret
> > +-r|--clear           QEMU_CLEAR       (yes) remove registered interpreters 
> > for target TARGETS;
> > +                                      then exit.
> >   -e|--exportdir PATH                   define where to write configuration 
> > files
> >                                         (default: $SYSTEMDDIR or $DEBIANDIR)
> >   -s|--systemd                          don't write into /proc, generate 
> > file(s) for
> > @@ -218,6 +220,7 @@ QEMU_PATH=$QEMU_PATH
> >   QEMU_SUFFIX=$QEMU_SUFFIX
> >   QEMU_PERSISTENT=$QEMU_PERSISTENT
> >   QEMU_CREDENTIAL=$QEMU_CREDENTIAL
> > +QEMU_CLEAR=$QEMU_CLEAR
> >
> >   To import templates with update-binfmts, use :
> >
> > @@ -344,8 +347,22 @@ qemu_set_binfmts() {
> >       done
> >   }
> >
> > +qemu_clear_notimplemented() {
> > +    echo "ERROR: option clear not implemented for this mode yet" 1>&2
> > +    usage
> > +    exit 1
> > +}
> > +
> > +qemu_clear_interpreter() {
> > +    p="/proc/sys/fs/binfmt_misc/$1"
> > +    if [ -f "$p" ] ; then
> > +      printf %s -1 > "$p"
> > +    fi
> > +}
> > +
> >   CHECK=qemu_check_bintfmt_misc
> >   BINFMT_SET=qemu_register_interpreter
> > +BINFMT_CLEAR=qemu_clear_interpreter
> >
> >   SYSTEMDDIR="/etc/binfmt.d"
> >   DEBIANDIR="/usr/share/binfmts"
> > @@ -355,20 +372,26 @@ QEMU_PATH="${QEMU_PATH:-/usr/local/bin}"
> >   QEMU_SUFFIX="${QEMU_SUFFIX:-}"
> >   QEMU_PERSISTENT="${QEMU_PERSISTENT:-no}"
> >   QEMU_CREDENTIAL="${QEMU_CREDENTIAL:-no}"
> > +QEMU_CLEAR="${QEMU_CLEAR:-no}"
> >
> > -options=$(getopt -o dsQ:S:e:hcp -l 
> > debian,systemd,path:,suffix:,exportdir:,help,credential,persistent -- "$@")
> > +options=$(getopt -o rdsQ:S:e:hcp -l 
> > clear,debian,systemd,path:,suffix:,exportdir:,help,credential,persistent -- 
> > "$@")
> >   eval set -- "$options"
> >
> >   while true ; do
> >       case "$1" in
> > +    -r|--clear)
> > +        QEMU_CLEAR="yes"
> > +        ;;
> >       -d|--debian)
> >           CHECK=qemu_check_debian
> >           BINFMT_SET=qemu_generate_debian
> > +        BINFMT_CLEAR=qemu_clear_notimplemented
> >           EXPORTDIR=${EXPORTDIR:-$DEBIANDIR}
> >           ;;
> >       -s|--systemd)
> >           CHECK=qemu_check_systemd
> >           BINFMT_SET=qemu_generate_systemd
> > +        BINFMT_CLEAR=qemu_clear_notimplemented
> >           EXPORTDIR=${EXPORTDIR:-$SYSTEMDDIR}
> >           ;;
> >       -Q|--path)
> > @@ -403,4 +426,13 @@ done
> >   shift
> >
> >   $CHECK
> > +
> > +if [ "x$QEMU_CLEAR" = "xyes" ] ; then
> > +    qemu_check_target_list "$@"
> > +    for t in $checked_target_list ; do
> > +        $BINFMT_CLEAR "qemu-$t"
> > +    done
> > +    exit
> > +fi
> > +
> >   qemu_set_binfmts "$@"
> > --
> > 2.21.0
> >
>
> Reviewed-by: Laurent Vivier <address@hidden>
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]