From: rjones Date: Tue, 24 Mar 2009 09:38:31 +0000 (+0000) Subject: Now using febootstrap. X-Git-Tag: 0.4~59 X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=commitdiff_plain;h=91df7a164befc0c9a24f85733837874da5a057ac Now using febootstrap. --- diff --git a/Makefile.am b/Makefile.am index cb1fdd2..efff275 100644 --- a/Makefile.am +++ b/Makefile.am @@ -15,4 +15,4 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -SUBDIRS = src examples +SUBDIRS = daemon src examples diff --git a/README b/README index 9306b5c..c8b4242 100644 --- a/README +++ b/README @@ -30,23 +30,13 @@ For discussion please use the fedora-virt mailing list: Requirements ---------------------------------------------------------------------- -- nfs-utils source, unpacked - http://download.sourceforge.net/nfs - - Recent QEMU with vmchannel support -- Compiled Linux kernels for 32 and/or 64 bit (see note below). - -- mkinitrd - -- cpio +- febootstrap >= 1.2 - XDR, rpcgen -- If you are running a 64 bit or non-x86 machine, see note below. - -We don't support initramfs at the moment. Patches gratefully -received. +- (Optional) Local Fedora mirror Running ./configure will check you have all the requirements installed on your machine. @@ -55,41 +45,14 @@ on your machine. Building ---------------------------------------------------------------------- -Unpack nfs-utils source into a directory somewhere, then create a -symlink daemon/nfs-utils to where you unpacked it. For example: +Then make the daemon, library and root filesystem: - pushd daemon - tar zxf /path/to/nfs-utils-1.1.4.tar.gz - ln -s nfs-utils-1.1.4 nfs-utils - popd - -For nfs-utils 1.1.4, you may find that the patch -(nfs-utils-1.1.4-build.patch) helps. - -Then make the library and shell tools: - - ./configure + ./configure [--mirror=URI] make -Make the daemon and NFS server: - mkdir daemon/build - pushd daemon/build - ../configure [--disable-nfsv4 --disable-gss] - make - popd - -For 64 bit you'll probably want to build the 32 bit daemon and NFS -server too: - - mkdir daemon/build-32 - pushd daemon/build-32 - ../configure --enable-32bit [--disable-nfsv4 --disable-gss] - make - popd - -For complex cross-architecture environments, you may want to build -other versions of the daemon and NFS server as well. See the note -below. +Use the optional --mirror parameter to specify the URI of a local +Fedora mirror. See the discussion of the MIRROR parameter in the +febootstrap(8) manpage. Finally run the tests: @@ -100,69 +63,19 @@ these commands as root: make install - pushd daemon/build - make install - popd - # Repeat for each daemon/build* directory you made above. - - -Note on 64 bit and non-x86 architectures +Notes on cross-architecture support ---------------------------------------------------------------------- -The library runs the Linux kernel code in QEMU. It also runs a small -control daemon inside QEMU. It might also run an NFS server. It -might also run programs from the guest's disk/environment (if asked to). +At the moment we basically don't support cross-architecture or +32-on-64. This limits what is possible for some guests. Filesystem +operations and NFS export will work fine, but running commands in +guests may not be possible. -This leaves open the question of which QEMU do we run, eg. qemu (the -i386 emulator) or qemu-system-x86_64 or qemu-system-ppc64 or ...? +To enable this requires work for cross-architecture and 32-on-64 +support in febootstrap. -Several factors influence the choice: - -(a) The host architecture. - -(b) The guest architecture. - -(c) What kernel(s) we find at runtime. - -(d) What compiler(s) we find at configure time. - -(e) In general, we would prefer to run a 32 bit kernel over a 64 bit -kernel, because that reduces the amount of system memory we have to -give to qemu significantly, and makes libguestfs smaller, faster and -use less memory. - -For example, if (a) the host is x86-64, then it might be running a -mixture of (b) i386 and x86-64 guests. Disk formats are stable, even -across 32 and 64 bit and endianness changes, so it doesn't really -matter what kernel we use if we just want to access files in the -guest. In the absence of any other factors, we would choose an i386 -kernel and run it in plain 'qemu', because that would use the least -amount of memory. - -But if we wanted to enable the feature of running a guest program in -an x86-64 guest, then we have to run an x86-64 kernel and -qemu-system-x86_64 (an i386 kernel can't run 64 bit programs). The -same applies if we didn't find a 32 bit kernel at runtime, or if we -couldn't run "gcc -m32" at configure time (because we can't compile -the daemon). - -SO: to enable maximum features on 64 bit architectures: - -(1) Ensure that "gcc -m32" can create usable binaries. - -(2) Provide 32 and 64 bit kernels binaries at runtime. - -If you have a really weird environment, eg. you want to run programs -inside PPC64 guests on your MIPS machine, then: - -(3) Provide gcc cross-compiler and glibc for each architecture, and -cross-compile the daemon and NFS server: - - mkdir daemon/build-ppc64 - pushd daemon/build-ppc64 - ../configure --host=ppc64-gnu-linux - make - popd +The daemon/ directory contains its own configure script. This is so +that in future we will be able to cross-compile the daemon. Copyright and license information diff --git a/autogen.sh b/autogen.sh index 8d86dbe..fa2af25 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,4 +1,4 @@ -#!/bin/sh - +#!/bin/bash - # libguestfs # Copyright (C) 2009 Red Hat Inc. # @@ -24,5 +24,7 @@ export AUTOMAKE='automake --foreign' aclocal libtoolize autoreconf -cd daemon -autoreconf \ No newline at end of file +pushd daemon +autoreconf +popd +./configure "$@" diff --git a/configure.ac b/configure.ac index 7b9db49..a3c2166 100644 --- a/configure.ac +++ b/configure.ac @@ -15,17 +15,10 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -AC_INIT([libguestfs],[0.1]) +AC_INIT([libguestfs],[0.2]) AM_INIT_AUTOMAKE AC_PROG_LIBTOOL -dnl Make sure the user has created the link to nfs-utils source. -if ! test -e $srcdir/daemon/nfs-utils \ - -o -f $srcdir/daemon/nfs-utils/utils/nfsd/nfsd.c; then - AC_MSG_ERROR([$srcdir/daemon/nfs-utils must be a symlink to the unpacked nfs-utils sources. -See the README file for more information.]) -fi - dnl Check for basic C environment. AC_PROG_CC AC_PROG_INSTALL @@ -46,21 +39,20 @@ AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[ AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl]) ]) +dnl Check for febootstrap. +AC_CHECK_PROG([FEBOOTSTRAP],[febootstrap],[febootstrap],[no]) +test "x$FEBOOTSTRAP" = "xno" && AC_MSG_ERROR([febootstrap must be installed]) + dnl Check for QEMU. We only check for the basic 'qemu' program here dnl (ie. the i386 full system qemu). But at runtime we might choose -dnl a different qemu to run, eg. qemu-system-ppc. What we run depends -dnl on several factors explained in the README. +dnl a different qemu to run, eg. qemu-system-ppc. AC_PATH_PROG([QEMU],[qemu],[no], [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin]) -test "x$QEMU" = "xno" && AC_MSG_ERROR([No 'qemu' program found]) +test "x$QEMU" = "xno" && AC_MSG_ERROR([qemu must be installed]) AC_DEFINE_UNQUOTED([QEMU],["$QEMU"],[Location of qemu binary.]) -dnl Check for mkinitrd, cpio. -AC_PATH_PROG([MKINITRD],[mkinitrd],[no], - [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin]) -test "x$MKINITRD" = "xno" && AC_MSG_ERROR([No 'mkinitrd' program found]) -AC_CHECK_PROG([CPIO],[cpio],[cpio],[no]) -test "x$CPIO" = "xno" && AC_MSG_ERROR([No 'cpio' program found]) +dnl Run in subdirs. +AC_CONFIG_SUBDIRS([daemon]) dnl Produce output files. AC_CONFIG_HEADERS([config.h]) diff --git a/daemon/.cvsignore b/daemon/.cvsignore index 012280b..a11bc9c 100644 --- a/daemon/.cvsignore +++ b/daemon/.cvsignore @@ -5,6 +5,9 @@ autom4te.cache build* config.h config.h.in +config.log +config.status configure install-sh missing +stamp-h1 diff --git a/daemon/Makefile.am b/daemon/Makefile.am index 930e78e..686f4b6 100644 --- a/daemon/Makefile.am +++ b/daemon/Makefile.am @@ -14,5 +14,3 @@ # 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. - -SUBDIRS = nfs-utils diff --git a/daemon/configure.ac b/daemon/configure.ac index 406594a..59ed51e 100644 --- a/daemon/configure.ac +++ b/daemon/configure.ac @@ -15,16 +15,9 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -AC_INIT([libguestfs-daemon],[0.1]) +AC_INIT([libguestfs-daemon],[0.2]) AM_INIT_AUTOMAKE -dnl Make sure the user has created the link to nfs-utils source. -if ! test -e $srcdir/nfs-utils \ - -o -f $srcdir/nfs-utils/utils/nfsd/nfsd.c; then - AC_MSG_ERROR([$srcdir/nfs-utils must be a symlink to the unpacked nfs-utils sources. -See the README file for more information.]) -fi - dnl If the user specified --enable-32bit, then force the C compiler dnl to build 32 bit binaries (gcc -m32). AC_ARG_ENABLE([32bit], @@ -47,9 +40,6 @@ AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[ AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl]) ]) -dnl Run in subdirs. -AC_CONFIG_SUBDIRS([nfs-utils]) - dnl Produce output files. AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([Makefile]) diff --git a/nfs-utils-1.1.4-build.patch b/nfs-utils-1.1.4-build.patch deleted file mode 100644 index 1aea8d4..0000000 --- a/nfs-utils-1.1.4-build.patch +++ /dev/null @@ -1,50 +0,0 @@ -This patch fixes nfs-utils to support nested builds in subdirectories -properly. - - - Richard W.M. Jones (rjones@redhat.com) - -diff -ur nfs-utils-1.1.4/support/export/Makefile.am nfs-utils-1.1.4.buildfix/support/export/Makefile.am ---- nfs-utils-1.1.4/support/export/Makefile.am 2008-10-17 15:20:09.000000000 +0100 -+++ nfs-utils-1.1.4.buildfix/support/export/Makefile.am 2009-03-02 18:46:59.000000000 +0000 -@@ -40,9 +40,9 @@ - $(GENFILES_H): %.h: %.x $(RPCGEN) - test -f $@ && rm -rf $@ || true - $(RPCGEN) -h -o $@ $< -- rm -f $(top_builddir)/support/include/mount.h -- $(LN_S) ../export/mount.h $(top_builddir)/support/include/mount.h -+ rm -f $(top_srcdir)/support/export/mount.h -+ $(LN_S) $(abs_top_builddir)/support/export/mount.h $(top_srcdir)/support/export/mount.h - - MAINTAINERCLEANFILES = Makefile.in - --CLEANFILES = $(GENFILES) $(top_builddir)/support/include/mount.h -+CLEANFILES = $(GENFILES) $(top_srcdir)/support/export/mount.h -diff -ur nfs-utils-1.1.4/utils/mount/Makefile.am nfs-utils-1.1.4.buildfix/utils/mount/Makefile.am ---- nfs-utils-1.1.4/utils/mount/Makefile.am 2008-10-17 15:20:09.000000000 +0100 -+++ nfs-utils-1.1.4.buildfix/utils/mount/Makefile.am 2009-03-03 08:50:30.000000000 +0000 -@@ -17,6 +17,8 @@ - parse_opt.h parse_dev.h \ - nfs4_mount.h nfs_mount4.h stropts.h version.h - -+mount_nfs_CFLAGS = -I$(top_builddir)/support/export -+ - mount_nfs_LDADD = ../../support/nfs/libnfs.a \ - ../../support/export/libexport.a - -diff -ur nfs-utils-1.1.4/utils/statd/Makefile.am nfs-utils-1.1.4.buildfix/utils/statd/Makefile.am ---- nfs-utils-1.1.4/utils/statd/Makefile.am 2008-10-17 15:20:09.000000000 +0100 -+++ nfs-utils-1.1.4.buildfix/utils/statd/Makefile.am 2009-03-02 18:49:10.000000000 +0000 -@@ -51,10 +51,12 @@ - $(GENFILES_H): %.h: %.x $(RPCGEN) - test -f $@ && rm -rf $@ || true - $(RPCGEN) -h -o $@ $< -+ rm -f $(top_srcdir)/utils/statd/sm_inter.h -+ $(LN_S) $(abs_top_builddir)/utils/statd/sm_inter.h $(top_srcdir)/utils/statd/sm_inter.h - - MAINTAINERCLEANFILES = Makefile.in - --CLEANFILES = $(GENFILES) -+CLEANFILES = $(GENFILES) $(top_srcdir)/utils/statd/sm_inter.h - - ####################################################################### - # The following allows the current practice of having