From: Mark Huang Date: Wed, 5 Apr 2006 20:32:28 +0000 (+0000) Subject: - create new package vserver-system-packages that contain the packages X-Git-Tag: myplc-0_4-rc1~15 X-Git-Url: http://git.onelab.eu/?p=vserver-reference.git;a=commitdiff_plain;h=3847b719dd4f7cd08676e1eadadc7c66d342077a - create new package vserver-system-packages that contain the packages necessary to bootstrap pl_conf and pl_netflow --- 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 diff --git a/vserver-reference.spec b/vserver-reference.spec index 5170870..7774384 100644 --- a/vserver-reference.spec +++ b/vserver-reference.spec @@ -1,4 +1,4 @@ -%define name vserver-reference +%define name vserver %define version 3.1 %define release 3%{?pldistro:.%{pldistro}}%{?date:.%{date}} @@ -17,13 +17,30 @@ Group: Applications/System BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot Requires: util-vserver, e2fsprogs, yum -AutoReqProv: no %define debug_package %{nil} %description +This package does not really exist. + +%package reference +Summary: VServer reference image +Group: Applications/System +AutoReqProv: no + +%description reference This package creates the virtual server (VServer) reference image used as the installation base for new PlanetLab slivers. +%package system-packages +Summary: System slice packages +Group: Applications/System +Requires: vserver-reference = %{version}-%{release} +AutoReqProv: no + +%description system-packages +This package installs the RPMS necessary to create system ("root + resource") slices from the virtual server (VServer) reference image. + %prep %setup -q @@ -33,14 +50,15 @@ pushd vserver-reference # Not until we can get the build server to run Fedora Core 4 or an # updated version of yum. #./build.sh -r 4 +./system-packages.sh popd %install rm -rf $RPM_BUILD_ROOT pushd vserver-reference -install -D -m 755 %{name}.init $RPM_BUILD_ROOT/%{_initrddir}/%{name} -find vservers/vserver-reference | cpio -p -d -u $RPM_BUILD_ROOT/ +install -D -m 755 vserver-reference.init $RPM_BUILD_ROOT/%{_initrddir}/vserver-reference +find vservers | cpio -p -d -u $RPM_BUILD_ROOT/ popd %clean @@ -57,14 +75,18 @@ if [ -n "$SUDO_USER" ] ; then chown -R $SUDO_USER %{_rpmdir}/%{_arch} fi -%files +%files reference %defattr(-,root,root) -%{_initrddir}/%{name} +%{_initrddir}/vserver-reference /vservers/vserver-reference +%files system-packages +%defattr(-,root,root) +/vservers/system-packages + %define vcached_pid /var/run/vcached.pid -%pre +%pre reference # Stop vcached if [ -r %{vcached_pid} ] ; then kill $(cat %{vcached_pid}) @@ -83,9 +105,9 @@ fi # Allow vcached to run again rm -f %{vcached_pid} -%post -chkconfig --add %{name} -chkconfig %{name} on +%post reference +chkconfig --add vserver-reference +chkconfig vserver-reference on [ "$PL_BOOTCD" = "1" ] || service vserver-reference start %changelog