#! /bin/bash # Bootstrap for: RawHide # $Id$ # Latest: # http://cvs.jankratochvil.net/viewcvs/nethome/src/rawhide-bootstrap?rev=HEAD ###RPMS_URL_BASE=http://sunsite.mff.cuni.cz/pub/fedora/development/`uname -i`/os RPMS_URL_BASE=http://localhost/redhat/devel/rawhide-latest/rawhide-latest/latest/`uname -i`/os if test $# != 1;then echo >&2 "Syntax: $0 ";exit 1;fi ROOT="$1" if test "${ROOT#/}" = "$ROOT";then echo >&2 "Absolute pathname required: $ROOT";exit 1;fi cd / umount $ROOT/proc umount $ROOT/sys set -ex set +x;pkgs="`set -x;wget -q -O - $RPMS_URL_BASE/Fedora/RPMS/ | sed -n 's/^.*.*$/\1/p'`";set -x function pkg { for arch in `uname -m` `uname -i` noarch;do r="`set +x;echo "$pkgs"|(set +e;grep -P '^\Q'"$1"'\E-[^-]+-[^-]+'".$arch.rpm"'$')`" if [ `echo "$r"|wc -l` -ge 2 ];then break;fi if [ -n "$r" ];then echo "$RPMS_URL_BASE/Fedora/RPMS/$r" return fi done echo >&2 "ERROR: $1" echo >&2 "$r" kill $$ } KEY=/tmp/fedora-bootstrap-$$-key rm -rf $KEY trap 'rm -f $KEY' EXIT mkdir $KEY cd $KEY # wget(1) due to: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=167483 wget -q -O - `pkg fedora-release` | rpm2cpio | cpio -id rm -rf $ROOT mkdir -p $ROOT/{etc,dev,var/log,sys} awk '/^[ \t]*[^#]/ { if ($2 == "/" || $2 == "/sys" || $2 == "/proc") { print; }}' $ROOT/etc/fstab if grep -q '^LABEL=' $ROOT/etc/fstab;then awk <$ROOT/etc/fstab >$ROOT/etc/fstab2 '{ if ($2 == "/") $1="/dev/root"; }{ print; }' mv -f $ROOT/etc/fstab2 $ROOT/etc/fstab fi cp -a /dev/{null,urandom,random} `awk '/^[ \t]*[^#]/ { if ($2 == "/") { print $1; }}' <$ROOT/etc/fstab` $ROOT/dev/ touch $ROOT/{etc/mtab,var/log/lastlog} mount -tsysfs sysfs $ROOT/sys rpm --root=$ROOT --initdb rpm --root=$ROOT --import $KEY/etc/pki/rpm-gpg/RPM-GPG-KEY* rm -rf $KEY cd $RPMS # For rpm(1) http:// downloads: mkdir -p $ROOT/var/tmp RPM=rpm while read -r key val;do if test -n "$val";then RPM="$RPM $key $val";fi done <j # rpm(8) DOWNLOAD=/tmp/fedora-bootstrap-$$-download rm -rf $DOWNLOAD trap 'rm -rf $DOWNLOAD $KEY' EXIT mkdir $DOWNLOAD cd $DOWNLOAD wget `set +x;while read -r line;do pkg $line;done <$repo done chroot $ROOT mount /proc # Prevent: socket.error: (2, 'No such file or directory') patch $ROOT/usr/lib/python2.4/site-packages/yum/logginglevels.py <