X-Git-Url: http://git.annexia.org/?p=febootstrap.git;a=blobdiff_plain;f=febootstrap.sh;h=67687e555f97b6ea85f16d10f5505a893f96564a;hp=c7eeca4e2eb337b54ce80eaee10fa9b37cbcf9b3;hb=10573678d072741674cdc75108a337f361ebae1e;hpb=9a6f7420554d0cd1116b230fd48052613f6d5885 diff --git a/febootstrap.sh b/febootstrap.sh index c7eeca4..67687e5 100755 --- a/febootstrap.sh +++ b/febootstrap.sh @@ -18,9 +18,11 @@ # # Written by Richard W.M. Jones +unset CDPATH + TEMP=`getopt \ - -o g:i:p: \ - --long groupinstall:,group-install:,help,install:,noclean,no-clean,proxy: \ + -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" @@ -45,11 +47,14 @@ while true; do -i|--install) packages[i++]="$2" shift 2;; + -g|--groupinstall|--group-install) + packages[i++]="@$2" + shift 2;; -p|--proxy) proxy="proxy=$2" shift 2;; - --groupinstall|--group-install) - packages[i++]="@$2" + -u|--updates) + updates="$2"; shift 2;; --noclean|--no-clean) clean=no @@ -77,7 +82,7 @@ mirror="$3" # Architecture is currently always the same as the current arch. We # cannot do --foreign builds. See discussion in the manpage. -arch=$(arch) +arch=$(uname -m) case $arch in i?86) arch=i386 ;; esac @@ -110,12 +115,44 @@ else 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 <> $tmpdir/febootstrap.repo < /dev/null; pwd) # This is necessary to keep yum happy. It's not clear why yum can't # just create this file itself. @@ -133,6 +170,9 @@ export FAKECHROOT_EXCLUDE_PATH=/proc # 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 +# Use the libraries inside the chroot. +export LD_LIBRARY_PATH="$target"/usr/lib64:"$target"/usr/lib:"$target"/lib64:"$target"/usr/lib + # Make the device nodes inside the fake chroot. # (Copied from mock/backend.py) Why isn't there a base package which # creates these? @@ -169,18 +209,24 @@ else make_device_nodes fi +repos=febootstrap +if [ -n "$addrepo" ]; then + repos="$repos,$addrepo" +fi + # Run yum. run_yum () { yum \ -y -c "$tmpdir"/febootstrap.repo \ - --disablerepo=* --enablerepo=febootstrap \ + --disablerepo=* --enablerepo=$repos \ --noplugins --nogpgcheck \ --installroot="$target" \ install "$@" } export -f run_yum export tmpdir +export repos if [ $(id -u) -ne 0 ]; then # Bash doesn't support exporting array variables, hence this @@ -193,6 +239,8 @@ else fi # Clean up the yum repository. +# XXX We shouldn't just rm files. if [ "$clean" = "yes" ]; then rm -rf "$target"/var/cache/yum/febootstrap + rm -rf "$target"/var/cache/yum/febootstrap-updates fi