Update TODO: febootstrap-run implemented
[febootstrap.git] / febootstrap.sh
index e9a197f..5900499 100755 (executable)
@@ -20,7 +20,7 @@
 
 TEMP=`getopt \
         -o g:i: \
-        --long groupinstall:,group-install:,help,install: \
+        --long groupinstall:,group-install:,help,install:,noclean,no-clean \
         -n febootstrap -- "$@"`
 if [ $? != 0 ]; then
     echo "febootstrap: problem parsing the command line arguments"
@@ -32,6 +32,8 @@ declare -a packages
 packages[0]="@Core"
 i=0
 
+clean=yes
+
 usage ()
 {
     echo "Usage: febootstrap [--options] REPO TARGET [MIRROR]"
@@ -46,6 +48,9 @@ while true; do
        --groupinstall|--group-install)
            packages[i++]="@$2"
            shift 2;;
+       --noclean|--no-clean)
+           clean=no
+           shift;;
        --help)
            usage
            exit 0;;
@@ -70,6 +75,9 @@ mirror="$3"
 # Architecture is currently always the same as the current arch.  We
 # cannot do --foreign builds.  See discussion in the manpage.
 arch=$(arch)
+case $arch in
+    i?86) arch=i386 ;;
+esac
 
 # Create a temporary directory, make sure it gets cleaned up at the end.
 tmpdir=$(mktemp -d)
@@ -109,16 +117,26 @@ target=$(cd "$target"; pwd)
 # just create this file itself.
 mkdir -p "$target"/var/cache/yum/febootstrap/packages
 
+# NB: REQUIRED for useradd/groupadd to run properly.
+#
+# However this causes 'filesystem' RPM install to give the
+# following error.  Not sure how serious the error is:
+# error: unpacking of archive failed on file /proc: cpio: utime
+export FAKECHROOT_EXCLUDE_PATH=/proc
+
 # Make the device nodes inside the fake chroot.
 # (Copied from mock/backend.py)  Why isn't there a base package which
 # creates these?
 make_device_nodes ()
 {
+    mkdir "$target"/proc
+    mkdir "$target"/sys
     mkdir "$target"/dev
     (
        cd "$target"/dev
        mkdir pts
        mkdir shm
+       mkdir mapper
        mknod null c 1 3;    chmod 0666 null
        mknod full c 1 7;    chmod 0666 full
        mknod zero c 1 5;    chmod 0666 zero
@@ -164,3 +182,8 @@ if [ $(id -u) -ne 0 ]; then
 else
     run_yum "${packages[@]}"
 fi
+
+# Clean up the yum repository.
+if [ "$clean" = "yes" ]; then
+    rm -rf "$target"/var/cache/yum/febootstrap
+fi