Now using febootstrap.
authorrjones <rjones>
Tue, 24 Mar 2009 09:38:31 +0000 (09:38 +0000)
committerrjones <rjones>
Tue, 24 Mar 2009 09:38:31 +0000 (09:38 +0000)
Makefile.am
README
autogen.sh
configure.ac
daemon/.cvsignore
daemon/Makefile.am
daemon/configure.ac
nfs-utils-1.1.4-build.patch [deleted file]

index cb1fdd2..efff275 100644 (file)
@@ -15,4 +15,4 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 # 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 (file)
--- a/README
+++ b/README
@@ -30,23 +30,13 @@ For discussion please use the fedora-virt mailing list:
 Requirements
 ----------------------------------------------------------------------
 
 Requirements
 ----------------------------------------------------------------------
 
-- nfs-utils source, unpacked
-  http://download.sourceforge.net/nfs
-
 - Recent QEMU with vmchannel support
 
 - Recent QEMU with vmchannel support
 
-- Compiled Linux kernels for 32 and/or 64 bit (see note below).
-
-- mkinitrd
-
-- cpio
+- febootstrap >= 1.2
 
 - XDR, rpcgen
 
 
 - 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.
 
 Running ./configure will check you have all the requirements installed
 on your machine.
@@ -55,41 +45,14 @@ on your machine.
 Building
 ----------------------------------------------------------------------
 
 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
 
-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:
 
 
 Finally run the tests:
 
@@ -100,69 +63,19 @@ these commands as root:
 
   make install
 
 
   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
 
 
 Copyright and license information
index 8d86dbe..fa2af25 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/sh -
+#!/bin/bash -
 # libguestfs
 # Copyright (C) 2009 Red Hat Inc.
 #
 # libguestfs
 # Copyright (C) 2009 Red Hat Inc.
 #
@@ -24,5 +24,7 @@ export AUTOMAKE='automake --foreign'
 aclocal
 libtoolize
 autoreconf
 aclocal
 libtoolize
 autoreconf
-cd daemon
-autoreconf
\ No newline at end of file
+pushd daemon
+autoreconf
+popd
+./configure "$@"
index 7b9db49..a3c2166 100644 (file)
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 # 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
 
 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
 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])
        ])
 
        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 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])
 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.])
 
 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])
 
 dnl Produce output files.
 AC_CONFIG_HEADERS([config.h])
index 012280b..a11bc9c 100644 (file)
@@ -5,6 +5,9 @@ autom4te.cache
 build*
 config.h
 config.h.in
 build*
 config.h
 config.h.in
+config.log
+config.status
 configure
 install-sh
 missing
 configure
 install-sh
 missing
+stamp-h1
index 930e78e..686f4b6 100644 (file)
@@ -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.
 # 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
index 406594a..59ed51e 100644 (file)
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 # 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
 
 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],
 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])
        ])
 
        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])
 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 (file)
index 1aea8d4..0000000
+++ /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