[Libguestfs] [PATCH v2] out-of-tree build: generate ./run from template, fix image checks

Hilko Bengen bengen at hilluzination.de
Wed Aug 17 22:14:46 UTC 2011


./run can now be run in a separate build directory. Since some files
needed in the image checks are found in the source tree (but not the
build tree), the source tree location is passed to make-*-img.sh via
an environment variable.
---
 configure.ac                         |    2 +
 images/Makefile.am                   |   14 ++++-----
 images/guest-aux/make-debian-img.sh  |    6 ++--
 images/guest-aux/make-fedora-img.sh  |    4 +-
 images/guest-aux/make-ubuntu-img.sh  |    6 ++--
 images/guest-aux/make-windows-img.sh |    8 ++--
 run                                  |   52 ----------------------------------
 run.in                               |   51 +++++++++++++++++++++++++++++++++
 8 files changed, 71 insertions(+), 72 deletions(-)
 delete mode 100755 run
 create mode 100755 run.in

diff --git a/configure.ac b/configure.ac
index 54c2911..e45632d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -909,6 +909,8 @@ AC_CONFIG_HEADERS([config.h])
 dnl http://www.mail-archive.com/automake@gnu.org/msg10204.html
 AC_CONFIG_FILES([podwrapper.sh],
                 [chmod +x podwrapper.sh])
+AC_CONFIG_FILES([run],
+                [chmod +x run])
 AC_CONFIG_FILES([Makefile
                  appliance/Makefile
                  capitests/Makefile
diff --git a/images/Makefile.am b/images/Makefile.am
index 68eb550..90c4ce3 100644
--- a/images/Makefile.am
+++ b/images/Makefile.am
@@ -173,41 +173,39 @@ $(builddir)/test-grep.txt.gz: test-grep.txt
 fedora.img: guest-aux/make-fedora-img.sh \
 		guest-aux/fedora-name.db \
 		guest-aux/fedora-packages.db
-	LIBGUESTFS_PATH=$(top_builddir)/appliance \
-	LD_LIBRARY_PATH=$(top_builddir)/src/.libs \
 	TMPDIR=$(top_builddir) \
+	SRCDIR=$(srcdir) \
 	bash $<
 
 guest-aux/fedora-name.db: guest-aux/fedora-name.db.txt
 	rm -f $@ $@-t
+	mkdir -p guest-aux
 	$(DB_LOAD) $@-t < $<
 	mv $@-t $@
 
 guest-aux/fedora-packages.db: guest-aux/fedora-packages.db.txt
 	rm -f $@ $@-t
+	mkdir -p guest-aux
 	$(DB_LOAD) $@-t < $<
 	mv $@-t $@
 
 # Make a (dummy) Debian image.
 debian.img: guest-aux/make-debian-img.sh
-	LIBGUESTFS_PATH=$(top_builddir)/appliance \
-	LD_LIBRARY_PATH=$(top_builddir)/src/.libs \
 	TMPDIR=$(top_builddir) \
+	SRCDIR=$(srcdir) \
 	bash $<
 
 # Make a (dummy) Ubuntu image.
 ubuntu.img: guest-aux/make-ubuntu-img.sh
-	LIBGUESTFS_PATH=$(top_builddir)/appliance \
-	LD_LIBRARY_PATH=$(top_builddir)/src/.libs \
 	TMPDIR=$(top_builddir) \
+	SRCDIR=$(srcdir) \
 	bash $<
 
 # Make a (dummy) Windows image.
 windows.img: guest-aux/make-windows-img.sh \
 	     guest-aux/windows-software guest-aux/windows-system
-	LIBGUESTFS_PATH=$(top_builddir)/appliance \
-	LD_LIBRARY_PATH=$(top_builddir)/src/.libs \
 	TMPDIR=$(top_builddir) \
+	SRCDIR=$(srcdir) \
 	bash $<
 
 # Since users might not have the tools needed to create this, we
diff --git a/images/guest-aux/make-debian-img.sh b/images/guest-aux/make-debian-img.sh
index 9a01e93..4b0490d 100755
--- a/images/guest-aux/make-debian-img.sh
+++ b/images/guest-aux/make-debian-img.sh
@@ -31,7 +31,7 @@ LABEL=BOOT /boot ext2 default 0 0
 EOF
 
 # Create a disk image.
-../run ../fish/guestfish <<'EOF'
+../run ../fish/guestfish <<EOF
 sparse debian.img.tmp 512M
 run
 
@@ -80,9 +80,9 @@ upload fstab.tmp /etc/fstab
 write /etc/debian_version "5.0.1"
 write /etc/hostname "debian.invalid"
 
-upload guest-aux/debian-packages /var/lib/dpkg/status
+upload ${SRCDIR}/guest-aux/debian-packages /var/lib/dpkg/status
 
-upload bin-x86_64-dynamic /bin/ls
+upload ${SRCDIR}/bin-x86_64-dynamic /bin/ls
 
 mkdir /boot/grub
 touch /boot/grub/grub.conf
diff --git a/images/guest-aux/make-fedora-img.sh b/images/guest-aux/make-fedora-img.sh
index a038432..3d6c471 100755
--- a/images/guest-aux/make-fedora-img.sh
+++ b/images/guest-aux/make-fedora-img.sh
@@ -31,7 +31,7 @@ LABEL=ROOT / ext2 default 0 0
 EOF
 
 # Create a disk image.
-../run ../fish/guestfish <<'EOF'
+../run ../fish/guestfish <<EOF
 sparse fedora.img.tmp 512M
 run
 
@@ -75,7 +75,7 @@ write /etc/sysconfig/network "HOSTNAME=fedora.invalid"
 upload guest-aux/fedora-name.db /var/lib/rpm/Name
 upload guest-aux/fedora-packages.db /var/lib/rpm/Packages
 
-upload bin-x86_64-dynamic /bin/ls
+upload ${SRCDIR}/bin-x86_64-dynamic /bin/ls
 
 mkdir /boot/grub
 touch /boot/grub/grub.conf
diff --git a/images/guest-aux/make-ubuntu-img.sh b/images/guest-aux/make-ubuntu-img.sh
index 4ddb40a..c48fd5d 100755
--- a/images/guest-aux/make-ubuntu-img.sh
+++ b/images/guest-aux/make-ubuntu-img.sh
@@ -36,7 +36,7 @@ DISTRIB_DESCRIPTION="Ubuntu 10.10 (Phony Pharaoh)"
 EOF
 
 # Create a disk image.
-../run ../fish/guestfish <<'EOF'
+../run ../fish/guestfish <<EOF
 sparse ubuntu.img.tmp 512M
 run
 
@@ -69,9 +69,9 @@ write /etc/debian_version "5.0.1"
 upload release.tmp /etc/lsb-release
 write /etc/hostname "ubuntu.invalid"
 
-upload guest-aux/debian-packages /var/lib/dpkg/status
+upload ${SRCDIR}/guest-aux/debian-packages /var/lib/dpkg/status
 
-upload bin-i586-dynamic /bin/ls
+upload ${SRCDIR}/bin-x86_64-dynamic /bin/ls
 
 mkdir /boot/grub
 touch /boot/grub/grub.conf
diff --git a/images/guest-aux/make-windows-img.sh b/images/guest-aux/make-windows-img.sh
index 3acb2b7..9e2152d 100755
--- a/images/guest-aux/make-windows-img.sh
+++ b/images/guest-aux/make-windows-img.sh
@@ -36,7 +36,7 @@ if ! ../run ../fish/guestfish -a /dev/null run : available "ntfs3g ntfsprogs"; t
 fi
 
 # Create a disk image.
-../run ../fish/guestfish <<'EOF'
+../run ../fish/guestfish <<EOF
 sparse windows.img.tmp 512M
 run
 
@@ -58,10 +58,10 @@ mkfs ntfs /dev/sda2
 mount-options "" /dev/sda2 /
 mkdir-p /Windows/System32/Config
 
-upload guest-aux/windows-software /Windows/System32/Config/SOFTWARE
-upload guest-aux/windows-system /Windows/System32/Config/SYSTEM
+upload ${SRCDIR}/guest-aux/windows-software /Windows/System32/Config/SOFTWARE
+upload ${SRCDIR}/guest-aux/windows-system /Windows/System32/Config/SYSTEM
 
-upload bin-win32.exe /Windows/System32/cmd.exe
+upload ${SRCDIR}/bin-win32.exe /Windows/System32/cmd.exe
 
 mkdir "/Program Files"
 touch /autoexec.bat
diff --git a/run b/run
deleted file mode 100755
index 2945315..0000000
--- a/run
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/bash -
-# libguestfs 'run' programs locally script
-# Copyright (C) 2011 Red Hat Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-#----------------------------------------------------------------------
-
-# With this script you can run all the virt tools without needing to
-# install them first.  You just have to do for example:
-#
-#   ./run ./inspector/virt-inspector [args ...]
-#
-# This works for any C, OCaml or Perl virt tools in the libguestfs
-# distribution.  Also you can make a symbolic link to this 'run'
-# script from anywhere (eg. $HOME/bin/run) if you wish.
-
-#----------------------------------------------------------------------
-
-# Find this script.
-run=$(readlink -f "$0")
-b=$(dirname "$run")
-
-# Set TMPDIR so the appliance doesn't conflict with globally
-# installed libguestfs.
-export TMPDIR=$b
-
-# Set local environment relative to this script.
-export LD_LIBRARY_PATH="$b/src/.libs"
-export LIBGUESTFS_PATH="$b/appliance"
-export PERL5LIB="$b/perl/blib/lib:$b/perl/blib/arch"
-
-# Do we have libtool?  If we have it then we can use it to make
-# running valgrind simpler.  However don't depend on it.
-if libtool --help >/dev/null 2>&1; then
-    libtool="libtool --mode=execute"
-fi
-
-# Run the program.
-exec $libtool "$@"
diff --git a/run.in b/run.in
new file mode 100755
index 0000000..d7b91d4
--- /dev/null
+++ b/run.in
@@ -0,0 +1,51 @@
+#!/bin/bash -
+# libguestfs 'run' programs locally script
+# Copyright (C) 2011 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+#----------------------------------------------------------------------
+
+# With this script you can run all the virt tools without needing to
+# install them first.  You just have to do for example:
+#
+#   ./run ./inspector/virt-inspector [args ...]
+#
+# This works for any C, OCaml or Perl virt tools in the libguestfs
+# distribution.  Also you can make a symbolic link to this 'run'
+# script from anywhere (eg. $HOME/bin/run) if you wish.
+
+#----------------------------------------------------------------------
+
+# Find this script.
+b=@abs_builddir@
+
+# Set TMPDIR so the appliance doesn't conflict with globally
+# installed libguestfs.
+export TMPDIR="$b"
+
+# Set local environment relative to this script.
+export LD_LIBRARY_PATH="$b/src/.libs"
+export LIBGUESTFS_PATH="$b/appliance"
+export PERL5LIB="$b/perl/blib/lib:$b/perl/blib/arch"
+
+# Do we have libtool?  If we have it then we can use it to make
+# running valgrind simpler.  However don't depend on it.
+if libtool --help >/dev/null 2>&1; then
+    libtool="libtool --mode=execute"
+fi
+
+# Run the program.
+exec $libtool "$@"
-- 
1.7.5.4




More information about the Libguestfs mailing list