X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=febootstrap.sh;h=590049990e3be9e35aceae7ff07f458e323a3ef9;hb=eef9f0b64f44a2098e2caacc4c3195762f5fc76e;hp=e9a197fa14e16f3d26f14377fc093230cdaa1254;hpb=4782157e72773c888753df84543cd0a747933dd5;p=febootstrap.git diff --git a/febootstrap.sh b/febootstrap.sh index e9a197f..5900499 100755 --- a/febootstrap.sh +++ b/febootstrap.sh @@ -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