+gitmark
[nethome.git] / src / rawhide-bootstrap
index bbbd389..6729a6d 100755 (executable)
@@ -5,8 +5,10 @@
 #      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
+uname_i=`uname -i|sed 's/^ppc64$/ppc/'`
+RPMS_URL_BASE=http://armstrong.rhts.boston.redhat.com/distros/rawhide-$uname_i
+wget -q -O - $RPMS_URL_BASE/GPL >/dev/null || \
+RPMS_URL_BASE=http://sunsite.mff.cuni.cz/pub/fedora/development/$uname_i/os
 
 
 if test $# != 1;then echo >&2 "Syntax: $0 <target-root-directory(DELETED!)>";exit 1;fi
@@ -15,18 +17,21 @@ if test "${ROOT#/}" = "$ROOT";then echo >&2 "Absolute pathname required: $ROOT";
 
 cd /
 umount $ROOT/proc
+umount $ROOT/selinux
 umount $ROOT/sys
 set -ex
 
 set +x;pkgs="`set -x;wget -q -O - $RPMS_URL_BASE/Fedora/RPMS/ | sed -n 's/^.*<a href="\([^/?][^/]*\)">.*$/\1/p'`";set -x
 function pkg
 {
-       for arch in `uname -m` `uname -i` noarch;do
+       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
+                       if [ "$arch" != ppc64 ];then
+                               return
+                       fi
                fi
        done
        echo >&2 "ERROR: $1"
@@ -36,19 +41,22 @@ function pkg
 
 KEY=/tmp/fedora-bootstrap-$$-key
 rm -rf $KEY
-trap 'rm -f $KEY' EXIT
+trap 'rm -rf $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` >/dev/null
 wget -q -O - `pkg fedora-release` | rpm2cpio | cpio -id
 
 rm -rf $ROOT
 mkdir -p $ROOT/{etc,dev,var/log,sys}
+cp -p /etc/resolv.conf $ROOT/etc
 awk '/^[ \t]*[^#]/ { if ($2 == "/" || $2 == "/sys" || $2 == "/proc") { print; }}' </etc/fstab >$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
+echo 'none /selinux selinuxfs defaults 0 0' >>$ROOT/etc/fstab
 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
@@ -69,8 +77,10 @@ while read -r key val;do
 EOH
 
 # Workaround coreutils: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=199840
-mkdir -p $ROOT/bin
+mkdir -p $ROOT/{bin,etc/rpm}
 cp -p /bin/{cat,rm} $ROOT/bin/
+cp -p /etc/rpm/platform $ROOT/etc/rpm/
+cp -p /etc/rpm/macros $ROOT/etc/rpm/ || echo May be missing
 
 # Prevent:
 # matchpathcon(/var/log/lastlog) failed: No such file or directory
@@ -85,7 +95,7 @@ rm -rf $DOWNLOAD
 trap 'rm -rf $DOWNLOAD $KEY' EXIT
 mkdir $DOWNLOAD
 cd $DOWNLOAD
-wget `set +x;while read -r line;do pkg $line;done <<EOH
+wget `set +x;while read -r line;do if [ -n "$line" ];then pkg $line;fi;done <<EOH
 coreutils
 rpm
 bash
@@ -132,6 +142,7 @@ readline
 info
 zlib
 fedora-release
+fedora-release-notes
 cracklib-dicts
 mingetty
 iputils
@@ -166,15 +177,25 @@ libusb
 gdbm
 mcstrans
 libcap
+kpartx
+$(if [ $uname_i = ppc ];then echo ppc64-utils;fi)
+$(if [ $uname_i = ppc ];then echo yaboot     ;fi)
+perl
+binutils
+hfsutils
+tcl
+nash
 EOH
 `
+mkdir -p $ROOT/var/lock/rpm
+mkdir -p $ROOT/{proc,selinux}
+mount -n -t proc      none $ROOT/proc
+mount -n -t selinuxfs none $ROOT/selinux
 $RPM --root=$ROOT -i * 
 rm -f *
 cd
 rm -rf $DOWNLOAD
 
-chroot $ROOT /bin/rpm --rebuilddb
-
 # Do not install yum(8) just by 'rpm --root', later --rebuilddb would:
 #      rpmdb: Program version 4.2 doesn't match environment version
 # FIXME: Analyse and bugreport:
@@ -193,17 +214,21 @@ libxml2-python
 gmp
 libxml2
 elfutils
-binutils
+elfutils-libs
 python-elementtree
 python-sqlite
 python-urlgrabber
 yum-metadata-parser
-elfutils-libs
 EOH
 `"
 chroot $ROOT /usr/bin/wget `set +x;for line in $lines;do pkg $line;done`
-chroot $ROOT /bin/rpm -i `set +x;for line in $lines;do basename $(pkg $line);done`
-chroot $ROOT /bin/rm -f `set +x;for line in $lines;do basename $(pkg $line);done`
+$RPM --root=$ROOT -i `set +x;for line in $lines;do for i in $(pkg $line|xargs -n1 basename);do echo $ROOT/$i;done;done`
+chroot $ROOT /bin/rm -f `set +x;for line in $lines;do pkg $line|xargs -n1 basename;done`
+
+# Reported as Bug 206524, occurs on ppc, possibly not a bug:
+rm -f $ROOT/var/lib/rpm/__db.*
+
+chroot $ROOT /bin/rpm --rebuilddb
 
 for repo in $ROOT/etc/yum.repos.d/*.repo;do
        mv -f $repo $repo-orig
@@ -212,21 +237,6 @@ for repo in $ROOT/etc/yum.repos.d/*.repo;do
                <$repo-orig >$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 <<EOH
---- usr/lib/python2.4/site-packages/yum/logginglevels.py-orig  2006-07-12 21:23:31.000000000 +0200
-+++ usr/lib/python2.4/site-packages/yum/logginglevels.py       2006-07-23 08:17:36.000000000 +0200
-@@ -107,7 +107,7 @@
-     logger.propagate = False
-     logger.addHandler(console_stderr)
-     
--    syslog = logging.handlers.SysLogHandler('/dev/log')
-+    syslog = logging.StreamHandler(sys.stderr)
-     syslog.setFormatter(plainformatter)
-     filelogger = logging.getLogger("yum.filelogging")
-     filelogger.setLevel(logging.INFO)
-EOH
 chroot $ROOT /usr/bin/yum -y update
 
 # For: kernel-2.6.9-11.EL.src.rpm
@@ -240,9 +250,12 @@ kernel-utils
 gcc
 redhat-rpm-config
 diffutils
+gdb
 EOH
 `
 
+umount $ROOT/proc
+umount $ROOT/selinux
 umount $ROOT/sys
 
 echo OK