qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH 1/3] configure: Add the possibility to read options from meso


From: Eric Blake
Subject: Re: [PATCH 1/3] configure: Add the possibility to read options from meson_options.txt
Date: Mon, 30 Aug 2021 09:47:05 -0500
User-agent: NeoMutt/20210205-739-420e15

On Sun, Aug 29, 2021 at 07:32:08PM +0200, Thomas Huth wrote:
> To avoid double maintenance between the configure script and
> meson_options.txt, add some simple logic in the configure script
> to read the options from meson_options.txt.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  configure | 24 +++++++++++++++++++++++-
>  1 file changed, 23 insertions(+), 1 deletion(-)
> 
> diff --git a/configure b/configure
> index 9a79a004d7..b3e6d51916 100755
> --- a/configure
> +++ b/configure
> @@ -836,6 +836,8 @@ fi
>  
>  werror=""
>  
> +meson_options=""
> +
>  for opt do
>    optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
>    case "$opt" in
> @@ -1581,6 +1583,26 @@ for opt do
>    ;;
>    --disable-slirp-smbd) slirp_smbd=no
>    ;;
> +  --enable-*)
> +      arg=$(echo "$opt" | sed -e "s/--enable-//" -e "s/-/_/g")

configure is a /bin/sh script, which means that using echo on
user-supplied arguments is unsafe (a malicious user may provide a
backslash, which not all 'echo' implementations treat the same across
different sh implementations).  What's more, $opt starts with
"--enable", and 'echo --enable' may trigger echo to try and warn about
an unknown option.  To be portable, you want:

arg=$(printf %s\\n "$opt" | sed...)

> +      if ! grep -q "option('$arg', type[ ]*: 'feature'" \
> +                $source_path/meson_options.txt; then
> +          echo "ERROR: unknown option $opt"
> +          echo "Try '$0 --help' for more information"
> +          exit 1
> +      fi
> +      meson_options="$meson_options -D$arg=enabled"
> +  ;;
> +  --disable-*)
> +      arg=$(echo "$opt" | sed -e "s/--disable-//" -e "s/-/_/g")

And again.

> +      if ! grep -q "option('$arg', type[ ]*: 'feature'" \
> +                $source_path/meson_options.txt; then
> +          echo "ERROR: unknown option $opt"
> +          echo "Try '$0 --help' for more information"
> +          exit 1
> +      fi
> +      meson_options="$meson_options -D$arg=disabled"
> +  ;;
>    *)
>        echo "ERROR: unknown option $opt"
>        echo "Try '$0 --help' for more information"
> @@ -5211,7 +5233,7 @@ if test "$skip_meson" = no; then
>          -Dvhost_user_blk_server=$vhost_user_blk_server 
> -Dmultiprocess=$multiprocess \
>          -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek 
> -Dguest_agent_msi=$guest_agent_msi -Dbpf=$bpf\
>          $(if test "$default_feature" = no; then echo 
> "-Dauto_features=disabled"; fi) \
> -     -Dtcg_interpreter=$tcg_interpreter \
> +        -Dtcg_interpreter=$tcg_interpreter $meson_options \
>          $cross_arg \
>          "$PWD" "$source_path"

Otherwise looks like a nice idea.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org




reply via email to

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