3 # Builds a Fedora Core 4 build environment suitable for rebuilding all
4 # PlanetLab software, including MyPLC. Requires access to Fedora Core
5 # 4 base, updates, and extras repositories.
7 # Mark Huang <mlhuang@cs.princeton.edu>
8 # Copyright (C) 2006 The Trustees of Princeton University
10 # $Id: mkbuild,v 1.2.4.1 2007/08/30 16:39:00 mef Exp $
13 export PATH=/sbin:/bin:/usr/sbin:/usr/bin
20 # Default yum repositories to try
23 # Yum groups to install
26 "Development Libraries"
27 # In particular, compat-gcc-32 for kernel-2.6.12 builds
28 "Legacy Software Development"
69 echo "Usage: mkbuild [OPTION]... [basedir]"
70 echo " -l url Fedora mirror location"
71 echo " -r release Fedora release number"
72 echo " -a arch Fedora architecture"
73 echo " -g group1 -g group2 ..."
74 echo " Yumgroups to install. Defaults:"
75 for group in "${grouplist[@]}" ; do
78 echo " -p package1 -p package2 ..."
79 echo " Additional packages to install. Defaults:"
80 for package in "${packagelist[@]}" ; do
83 echo " -t tag CVS tag of PlanetLab sources to export (default: $tag)"
85 echo " -h This message"
90 while getopts "kl:g:p:t:vh" opt ; do
96 grouplist[${#grouplist[*]}]="$OPTARG"
99 packagelist[${#packagelist[*]}]="$OPTARG"
114 shift $(($OPTIND - 1))
115 if [ -n "$1" ] ; then
118 vroot=$(cd "$1" && pwd -P)
124 if [ $UID -ne 0 ] ; then
125 echo "Error: You must run this script as root."
131 if [ -z "$verbose" ] ; then
136 # Do not tolerate errors
139 if [ -n "$vroot" ] ; then
141 if [ $verbose -ne 0 ] ; then
142 options="$options -v"
144 if [ -n "$mirror" ] ; then
145 options="$options -l \"$mirror\""
147 for group in "${grouplist[@]}" ; do
148 options="$options -g \"$group\""
150 for package in "${packagelist[@]}" ; do
151 options="$options -p \"$package\""
154 pl_mkfedora $vroot $options
157 echo "* Installing optional packages" >&3
158 yum -y install "${packagelist[@]}"
160 echo "* Installing optional groups" >&3
161 yum -y groupinstall "${grouplist[@]}"
164 # If a preferred mirror was specified, configure mkfedora to use it
165 if [ -n "$mirror" ] ; then
166 mkdir -p $vroot/etc/planetlab
167 echo "PLC_DEVEL_FEDORA_URL=$mirror" >$vroot/etc/planetlab/plc_config
170 # Install local CVS repository.
171 echo "* Exporting source code to /cvs" >&3
173 export CVSROOT=$vroot/cvs
176 tmp=$(mktemp -d /tmp/cvs.XXXXXX)
177 trap "rm -rf $tmp" ERR
180 # Export source code from cvs.planet-lab.org to /tmp
181 if [ "$tag" = "HEAD" ] ; then
182 date=$(date +%Y-%m-%d)
183 cvs_export="cvs -d :pserver:anon@cvs.planet-lab.org:/cvs export -D $date planetlab"
186 cvs_export="cvs -d :pserver:anon@cvs.planet-lab.org:/cvs export -r $tag planetlab"
190 # Import into /cvs/tmp
193 cvs -d $CVSROOT import -m "$cvs_export" -ko -I ! $dir planetlab $tag