X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=system-packages.sh;fp=system-packages.sh;h=3147f5433496280529f8b444097c753ca2ca2176;hb=3847b719dd4f7cd08676e1eadadc7c66d342077a;hp=0000000000000000000000000000000000000000;hpb=9c295d2d824cbc779f805955ee0ba8e5577cb020;p=sliceimage.git diff --git a/system-packages.sh b/system-packages.sh new file mode 100755 index 0000000..3147f54 --- /dev/null +++ b/system-packages.sh @@ -0,0 +1,166 @@ +#!/bin/bash +# +# Download dependencies that would be necessary to build the +# pl_netflow and pl_conf root slices from the vserver-reference image. +# +# Mark Huang +# Copyright (C) 2004-2006 The Trustees of Princeton University +# +# $Id$ +# + +export PATH=/sbin:/bin:/usr/sbin:/usr/bin + +vroot=$PWD/vservers/vserver-reference +rpms=$PWD/vservers/system-packages +install -d -m 755 $rpms + +# curl can't list file:// URLs +list () +{ + url=$1 + if [ -e ${url#file://} ] ; then + /bin/ls ${url#file://} + else + curl --fail --silent --max-time 60 $url + fi +} + +# pl_netflow requires third party MySQL RPMs +mysql_mirrors=( +file:///usr/share/mirrors/mysql +http://boot.planet-lab.org/install-rpms/3rdparty +) + +for mirror in "${mysql_mirrors[@]}" ; do + baseurl=$mirror/ + if list $baseurl | grep -q "MySQL-server.*rpm" ; then + break + fi + unset baseurl +done + +if [ -z "$baseurl" ] ; then + echo "Error: MySQL-server RPM package" + echo " could not be found in any of the following locations:" + echo + for mirror in ${mysql_mirrors[@]} ; do + echo $mirror + done + echo + exit 1 +fi + +# Add MySQL mirror to yum.conf +if ! grep -q mysql $vroot/etc/yum.conf ; then + cat >>$vroot/etc/yum.conf <$rpms/$package-$version.$arch.rpm ; then + break + fi + rm -f $rpms/$package-$version.$arch.rpm + done + + # Assert that we got it successfully + if [ ! -f $rpms/$package-$version.$arch.rpm ] ; then + echo "Failed to fetch $package-$version.$arch.rpm from $repository" >&2 + false + fi + + dependencies[${#dependencies[*]}]=$package-$version.$arch.rpm + break + fi + done <$vroot/etc/yum.conf + done < <(yum -c $vroot/etc/yum.conf --installroot=$vroot shell <$rpms/$(basename $path) + dependencies[${#dependencies[*]}]=$(basename $path) + fi + baseURL= + path= + fi + done < <(yum -d 3 -c $vroot/etc/yum.conf --installroot=$vroot -y --download-only install $packages 2>&1) + fi + + for dependency in "${dependencies[@]}" ; do + echo $dependency + done >$rpms/$slice.lst +done + +# Clean yum cache +yum -c $vroot/etc/yum.conf --installroot=$vroot -y \ + clean all + +# Clean RPM state +rm -f $vroot/var/lib/rpm/__db* + +exit 0