#
# Written by Richard W.M. Jones <rjones@redhat.com>
+unset CDPATH
+
TEMP=`getopt \
- -o g:i: \
- --long groupinstall:,group-install:,help,install:,noclean,no-clean \
+ -o g:i:p:u: \
+ --long groupinstall:,group-install:,help,install:,noclean,no-clean,proxy:,updates: \
-n febootstrap -- "$@"`
if [ $? != 0 ]; then
echo "febootstrap: problem parsing the command line arguments"
-i|--install)
packages[i++]="$2"
shift 2;;
- --groupinstall|--group-install)
+ -g|--groupinstall|--group-install)
packages[i++]="@$2"
shift 2;;
+ -p|--proxy)
+ proxy="proxy=$2"
+ shift 2;;
+ -u|--updates)
+ updates="$2";
+ shift 2;;
--noclean|--no-clean)
clean=no
shift;;
failovermethod=priority
enabled=1
gpgcheck=0
+$proxy
__EOF__
# "Mirror" parameter is a bit misnamed, but it means a local mirror,
echo "mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=$repo&arch=$arch" >> "$tmpdir"/febootstrap.repo
fi
+# Add the updates repository if asked.
+case "$updates" in
+ none|no)
+ ;;
+ *://*)
+ cat >> $tmpdir/febootstrap.repo <<EOF
+
+[febootstrap-updates]
+name=febootstrap updates $arch
+failovermethod=priority
+enabled=1
+gpgcheck=0
+$proxy
+baseurl=$updates
+EOF
+ ;;
+ *)
+ cat >> $tmpdir/febootstrap.repo <<EOF
+
+[febootstrap-updates]
+name=febootstrap $updates $arch
+failovermethod=priority
+enabled=1
+gpgcheck=0
+$proxy
+mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=$updates&arch=$arch
+EOF
+ ;;
+esac
+
# Create the target filesystem.
rm -rf "$target"
mkdir "$target"
# Target must be an absolute path.
-target=$(cd "$target"; pwd)
+target=$(cd "$target" > /dev/null; pwd)
# This is necessary to keep yum happy. It's not clear why yum can't
# just create this file itself.
# 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?