[PATCH] build: fix test for --nocompress option
The test for febootstrap-to-initramfs' --nocompress option was always failing for me on F11. Here's why: $ bash ~/w/co/libguestfs:210-comment-fix $ t=`febootstrap-to-initramfs 2>&1` [Exit 1] $ if ! echo $t|grep -sq -- --nocompress; then echo not found; fi not found Notice: without quotes, the [--nocompress] term expands to "k", because I happen to have a temporary file named "k": $ echo $t Usage: febootstrap-to-initramfs [--files=filelist] k DIR Please read febootstrap-to-initramfs(8) man page for more information. $ echo "$t" Usage: febootstrap-to-initramfs [--files=filelist] [--nocompress] DIR Please read febootstrap-to-initramfs(8) man page for more information. a simpler example gives a clue: $ touch a b c $ echo [--z] a b c $ echo [--a] a $ echo [--b] a b it's interpreting [--nocompress] as a range: "-" through "n", plus the other characters, ocmpres. "k" falls in the --n range. Anyhow, here's the fix:
From 84855642ed41828d01d55123cfab8d8dede759c1 Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyering@redhat.com> Date: Wed, 29 Jul 2009 16:33:02 -0400 Subject: [PATCH] build: fix test for --nocompress option
* configure.ac: Fix underquoting bug that would cause the test for febootstrap-to-initramfs' --nocompress option always to fail with certain-letter-named files in the top directory. --- configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/configure.ac b/configure.ac index 0ae20be..6bdf7d4 100644 --- a/configure.ac +++ b/configure.ac @@ -264,7 +264,7 @@ version of febootstrap. AC_MSG_CHECKING([for --nocompress support in $FEBOOTSTRAP_TO_INITRAMFS]) out=`$FEBOOTSTRAP_TO_INITRAMFS 2>&1 ||:` echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD - if ! echo $out | grep -sq -- "--nocompress" ; then + if ! echo "$out" | grep -sq -e --nocompress ; then AC_MSG_RESULT([no]) AC_MSG_FAILURE( [febootstrap-to-initramfs does not support the --nocompress option. -- 1.6.3.3
On Wed, Jul 29, 2009 at 10:50:44PM +0200, Jim Meyering wrote:
The test for febootstrap-to-initramfs' --nocompress option was always failing for me on F11. Here's why: [...]
Ouch that's obscure. I've applied this patch and the previous one you sent too. Thanks! Rich. -- Richard Jones, Emerging Technologies, Red Hat http://et.redhat.com/~rjones libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://et.redhat.com/~rjones/libguestfs/ See what it can do: http://et.redhat.com/~rjones/libguestfs/recipes.html
Richard W.M. Jones wrote:
On Wed, Jul 29, 2009 at 10:50:44PM +0200, Jim Meyering wrote:
The test for febootstrap-to-initramfs' --nocompress option was always failing for me on F11. Here's why: [...]
Ouch that's obscure. I've applied this patch and the previous one you sent too. Thanks!
Our messages crossed. Rebasing my fixed patch and adjusting the log:
From 9e7846da50ceeee57187f703835bd3975e789719 Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyering@redhat.com> Date: Wed, 29 Jul 2009 16:33:02 -0400 Subject: [PATCH] build: quote the other option test similarly
* configure.ac: Quote properly. --- configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/configure.ac b/configure.ac index 6bdf7d4..20edc70 100644 --- a/configure.ac +++ b/configure.ac @@ -248,7 +248,7 @@ if test "x$enable_supermin" = "xyes"; then AC_MSG_CHECKING([for --files support in $FEBOOTSTRAP_TO_INITRAMFS]) out=`$FEBOOTSTRAP_TO_INITRAMFS 2>&1 ||:` echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD - if ! echo $out | grep -sq -- "--files" ; then + if ! echo "$out" | grep -sq -e --files ; then AC_MSG_RESULT([no]) AC_MSG_FAILURE( [febootstrap-to-initramfs does not support the --files option. -- 1.6.3.3
On Thu, Jul 30, 2009 at 10:50:49AM +0200, Jim Meyering wrote:
diff --git a/configure.ac b/configure.ac index 6bdf7d4..20edc70 100644 --- a/configure.ac +++ b/configure.ac @@ -248,7 +248,7 @@ if test "x$enable_supermin" = "xyes"; then AC_MSG_CHECKING([for --files support in $FEBOOTSTRAP_TO_INITRAMFS]) out=`$FEBOOTSTRAP_TO_INITRAMFS 2>&1 ||:` echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD - if ! echo $out | grep -sq -- "--files" ; then + if ! echo "$out" | grep -sq -e --files ; then AC_MSG_RESULT([no]) AC_MSG_FAILURE( [febootstrap-to-initramfs does not support the --files option. -- 1.6.3.3
Pushed this one too! Rich. -- Richard Jones, Emerging Technologies, Red Hat http://et.redhat.com/~rjones virt-p2v converts physical machines to virtual machines. Boot with a live CD or over the network (PXE) and turn machines into Xen guests. http://et.redhat.com/~rjones/virt-p2v
Richard W.M. Jones wrote:
On Thu, Jul 30, 2009 at 10:50:49AM +0200, Jim Meyering wrote:
diff --git a/configure.ac b/configure.ac index 6bdf7d4..20edc70 100644 --- a/configure.ac +++ b/configure.ac @@ -248,7 +248,7 @@ if test "x$enable_supermin" = "xyes"; then AC_MSG_CHECKING([for --files support in $FEBOOTSTRAP_TO_INITRAMFS]) out=`$FEBOOTSTRAP_TO_INITRAMFS 2>&1 ||:` echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD - if ! echo $out | grep -sq -- "--files" ; then + if ! echo "$out" | grep -sq -e --files ; then AC_MSG_RESULT([no]) AC_MSG_FAILURE( [febootstrap-to-initramfs does not support the --files option. --
Hmm... I searched for ' \$' in configure.ac and found more. Most are probably theoretical-only, but once-burned...
From cf4d01e412b22a752c3fe954e5c2dced71080b46 Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyering@redhat.com> Date: Thu, 30 Jul 2009 11:15:44 +0200 Subject: [PATCH] configure.ac: more quoting
Also, prohibit an invalid value of $JAVA_HOME, since it must be used unquoted below. --- configure.ac | 29 ++++++++++++++++++----------- 1 files changed, 18 insertions(+), 11 deletions(-) diff --git a/configure.ac b/configure.ac index 16e16c8..ece7da7 100644 --- a/configure.ac +++ b/configure.ac @@ -98,7 +98,7 @@ if test "x$vmchannel_test" != "xno"; then AC_MSG_CHECKING([for "-net channel" support in $QEMU]) vmchannelout=`$QEMU -net channel /dev/zero 2>&1 ||:` echo "vmchannel test command output: $vmchannelout" >&AS_MESSAGE_LOG_FD - if echo $vmchannelout | grep -sq "vmchannel wrong port number" ; then + if echo "$vmchannelout" | grep -sq "vmchannel wrong port number" ; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) @@ -169,8 +169,8 @@ if test "x$FEBOOTSTRAP" != "xno"; then AC_MSG_WARN([fakechroot --version command failed, proceeding anyway]) else AC_MSG_RESULT([$fakechroot_version]) - fakechroot_major=`echo $fakechroot_version | awk -F. '{print $1}'` - fakechroot_minor=`echo $fakechroot_version | awk -F. '{print $2}'` + fakechroot_major=`echo "$fakechroot_version" | awk -F. '{print $1}'` + fakechroot_minor=`echo "$fakechroot_version" | awk -F. '{print $2}'` if test "$fakechroot_major" -lt 2 -o \ \( "$fakechroot_major" -eq 2 -a "$fakechroot_minor" -lt 9 \); then AC_MSG_ERROR([fakechroot version must be >= 2.9]) @@ -187,7 +187,7 @@ else test "x$DEBIRF" = "xno" && AC_MSG_ERROR([debirf must be installed]) DIST="DEBIAN" - case $host_cpu in + case "$host_cpu" in *86) DEBIAN_KERNEL_ARCH=486 ;; @@ -395,6 +395,13 @@ AC_ARG_WITH(java_home, if test "x$with_java_home" != "xno"; then if test "x$with_java_home" != "xyes" -a "x$with_java_home" != "xcheck" then + # Reject unsafe characters in $JAVA_HOME + jh_lf=' +' + case $JAVA_HOME in + *[\\\"\#\$\&\'\`$jh_lf\ \ ]*) + AC_MSG_FAILURE([unsafe \$JAVA_HOME directory (use --with-java-home=no to disable Java support)]);; + esac if test -d "$with_java_home"; then JAVA_HOME="$with_java_home" else @@ -419,7 +426,7 @@ if test "x$with_java_home" != "xno"; then AC_MSG_CHECKING(for JDK in $JAVA_HOME) if test ! -x "$JAVA_HOME/bin/java"; then AC_MSG_ERROR([missing $JAVA_HOME/bin/java binary (use --with-java-home=no to disable Java support)]) - else + else JAVA="$JAVA_HOME/bin/java" fi if test ! -x "$JAVA_HOME/bin/javac"; then @@ -452,7 +459,7 @@ if test "x$with_java_home" != "xno"; then else if test "`find $JAVA_HOME -name jni.h`" != ""; then head=`find $JAVA_HOME -name jni.h | tail -1` - dir=`dirname $head` + dir=`dirname "$head"` JNI_CFLAGS="-I$dir" else AC_MSG_FAILURE([missing jni.h header file]) @@ -473,7 +480,7 @@ if test "x$with_java_home" != "xno"; then else if test "`find $JAVA_HOME -name jni_md.h`" != ""; then head=`find $JAVA_HOME -name jni_md.h | tail -1` - dir=`dirname $head` + dir=`dirname "$head"` JNI_CFLAGS="$JNI_CFLAGS -I$dir" else AC_MSG_FAILURE([missing jni_md.h header file]) @@ -497,10 +504,10 @@ if test "x$with_java_home" != "xno"; then JNI_INSTALL_DIR=\${libdir} dnl JNI version. - jni_major_version=`echo $VERSION | awk -F. '{print $1}'` - jni_minor_version=`echo $VERSION | awk -F. '{print $2}'` - jni_micro_version=`echo $VERSION | awk -F. '{print $3}'` - JNI_VERSION_INFO=`expr $jni_major_version + $jni_minor_version`:$jni_micro_version:$jni_minor_version + jni_major_version=`echo "$VERSION" | awk -F. '{print $1}'` + jni_minor_version=`echo "$VERSION" | awk -F. '{print $2}'` + jni_micro_version=`echo "$VERSION" | awk -F. '{print $3}'` + JNI_VERSION_INFO=`expr "$jni_major_version" + "$jni_minor_version"`":$jni_micro_version:$jni_minor_version" fi fi -- 1.6.3.3
Yes, this makes perfect sense even if it's cautionary. I tested it locally and pushed it. Thanks, Rich. -- Richard Jones, Emerging Technologies, Red Hat http://et.redhat.com/~rjones virt-df lists disk usage of guests without needing to install any software inside the virtual machine. Supports Linux and Windows. http://et.redhat.com/~rjones/virt-df/
Jim Meyering wrote:
it's interpreting [--nocompress] as a range: "-" through "n", plus the other characters, ocmpres. "k" falls in the --n range.
Anyhow, here's the fix:
Here's a more complete fix, since there was another similar echo stmt that required quotes:
From 4c84ba453fe9a4b6903885f93b92f32135dc53d3 Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyering@redhat.com> Date: Wed, 29 Jul 2009 16:33:02 -0400 Subject: [PATCH] build: fix test for --nocompress option
* configure.ac: Fix underquoting-with-bash bug that would cause the test for --nocompress in the output of febootstrap-to-initramfs' usage string always to fail. --- configure.ac | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 0ae20be..20edc70 100644 --- a/configure.ac +++ b/configure.ac @@ -248,7 +248,7 @@ if test "x$enable_supermin" = "xyes"; then AC_MSG_CHECKING([for --files support in $FEBOOTSTRAP_TO_INITRAMFS]) out=`$FEBOOTSTRAP_TO_INITRAMFS 2>&1 ||:` echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD - if ! echo $out | grep -sq -- "--files" ; then + if ! echo "$out" | grep -sq -e --files ; then AC_MSG_RESULT([no]) AC_MSG_FAILURE( [febootstrap-to-initramfs does not support the --files option. @@ -264,7 +264,7 @@ version of febootstrap. AC_MSG_CHECKING([for --nocompress support in $FEBOOTSTRAP_TO_INITRAMFS]) out=`$FEBOOTSTRAP_TO_INITRAMFS 2>&1 ||:` echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD - if ! echo $out | grep -sq -- "--nocompress" ; then + if ! echo "$out" | grep -sq -e --nocompress ; then AC_MSG_RESULT([no]) AC_MSG_FAILURE( [febootstrap-to-initramfs does not support the --nocompress option. -- 1.6.3.3
participants (2)
-
Jim Meyering -
Richard W.M. Jones