[Libguestfs] [PATCH] Debian: Use /bin/bash as the shell for regression test scripts.

Jim Meyering jim at meyering.net
Thu Nov 5 17:04:18 UTC 2009


Richard W.M. Jones wrote:
> Another fix revealed by testing this on Debian.
...
> Subject: [PATCH] Debian: Use /bin/bash as the shell for regression test scripts.
>
> /bin/sh on Debian is a minimal shell called 'dash' which doesn't
> support some features we need such as the particular 'function'
> syntax used by regressions/test-stringlist.sh, and therefore
> this script was failing on Debian.

Hi Rich,

Have you considered changing to POSIX syntax, e.g.,

    -function foo
    +foo()

If that's the only change, it may be worthwhile to accommodate dash.

> Change all of these scripts to use #!/bin/bash explicitly to avoid
> these sorts of problems.
> ---
>  regressions/rhbz503169c10.sh                       |    2 +-
>  regressions/rhbz503169c13.sh                       |    2 +-
>  regressions/test-bootbootboot.sh                   |    2 +-
>  .../test-cancellation-download-librarycancels.sh   |    2 +-
>  .../test-cancellation-upload-daemoncancels.sh      |    2 +-
>  regressions/test-find0.sh                          |    2 +-
>  regressions/test-qemudie-killsub.sh                |    2 +-
>  regressions/test-qemudie-launchfail.sh             |    2 +-
>  regressions/test-qemudie-midcommand.sh             |    2 +-
>  regressions/test-qemudie-synch.sh                  |    2 +-
>  regressions/test-read_file.sh                      |    2 +-
>  regressions/test-remote.sh                         |    2 +-
>  regressions/test-reopen.sh                         |    2 +-
>  regressions/test-stringlist.sh                     |    2 +-
>  14 files changed, 14 insertions(+), 14 deletions(-)
>
> diff --git a/regressions/rhbz503169c10.sh b/regressions/rhbz503169c10.sh
> index 8813c05..91284e0 100755
> --- a/regressions/rhbz503169c10.sh
> +++ b/regressions/rhbz503169c10.sh
> @@ -1,4 +1,4 @@
> -#!/bin/sh -
> +#!/bin/bash -

An alternative is to change Makefile.am to do e.g.,

TESTS_ENVIRONMENT = \
        export MALLOC_PERTURB_=$(random_val) \
        LD_LIBRARY_PATH=$(top_builddir)/src/.libs \
        LIBGUESTFS_PATH=$(top_builddir)/appliance \
        NOEXEC_CHECK="$(top_builddir)/src/.libs/libguestfs.so $(top_builddir)/daemon/guestfsd"
        ; /bin/bash

Or even use a configure-time test like gnulib's posix-shell
module to set SHELL to /bin/bash if it exists, then use this,

TESTS_ENVIRONMENT = \
        export MALLOC_PERTURB_=$(random_val) \
        LD_LIBRARY_PATH=$(top_builddir)/src/.libs \
        LIBGUESTFS_PATH=$(top_builddir)/appliance \
        NOEXEC_CHECK="$(top_builddir)/src/.libs/libguestfs.so $(top_builddir)/daemon/guestfsd"
        ; $(SHELL)

which would might work even if /bin/bash doesn't exist.




More information about the Libguestfs mailing list