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"
packages[0]="@Core"
i=0
+clean=yes
+
usage ()
{
echo "Usage: febootstrap [--options] REPO TARGET [MIRROR]"
--groupinstall|--group-install)
packages[i++]="@$2"
shift 2;;
+ --noclean|--no-clean)
+ clean=no
+ shift;;
--help)
usage
exit 0;;
# 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)
# 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
+
+# Substitute some statically-linked commands. This is only supported
+# in fakechroot > 2.9. For previous versions of fakechroot it is
+# ignored.
+export FAKECHROOT_CMD_SUBST=/sbin/ldconfig=/bin/true:/usr/sbin/glibc_post_upgrade.i686=/bin/true:/usr/sbin/glibc_post_upgrade.x86_64=/bin/true:/usr/sbin/build-locale-archive=/bin/true:/usr/sbin/libgcc_post_upgrade=/bin/true
+
# 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
else
run_yum "${packages[@]}"
fi
+
+# Clean up the yum repository.
+if [ "$clean" = "yes" ]; then
+ rm -rf "$target"/var/cache/yum/febootstrap
+fi