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.1 2006/07/06 14:30:07 mlhuang Exp $
13 export PATH=/sbin:/bin:/usr/sbin:/usr/bin
18 # Default yum repositories to try
21 # Yum groups to install
24 "Development Libraries"
25 # In particular, compat-gcc-32 for kernel-2.6.12 builds
26 "Legacy Software Development"
67 echo "Usage: mkbuild [OPTION]... [basedir]"
68 echo " -l url Fedora mirror location"
69 echo " -r release Fedora release number"
70 echo " -a arch Fedora architecture"
71 echo " -g group1 -g group2 ..."
72 echo " Yumgroups to install. Defaults:"
73 for group in "${grouplist[@]}" ; do
76 echo " -p package1 -p package2 ..."
77 echo " Additional packages to install. Defaults:"
78 for package in "${packagelist[@]}" ; do
81 echo " -t tag CVS tag of PlanetLab sources to export (default: $tag)"
83 echo " -h This message"
88 while getopts "kl:g:p:t:vh" opt ; do
94 grouplist[${#grouplist[*]}]="$OPTARG"
97 packagelist[${#packagelist[*]}]="$OPTARG"
112 shift $(($OPTIND - 1))
113 if [ -n "$1" ] ; then
116 vroot=$(cd "$1" && pwd -P)
122 if [ $UID -ne 0 ] ; then
123 echo "Error: You must run this script as root."
129 if [ -z "$verbose" ] ; then
134 # Do not tolerate errors
137 if [ -n "$vroot" ] ; then
139 if [ $verbose -ne 0 ] ; then
140 options="$options -v"
142 if [ -n "$mirror" ] ; then
143 options="$options -l \"$mirror\""
145 for group in "${grouplist[@]}" ; do
146 options="$options -g \"$group\""
148 for package in "${packagelist[@]}" ; do
149 options="$options -p \"$package\""
152 eval ./mkfedora $options $vroot
155 echo "* Installing optional packages" >&3
156 yum -y install "${packagelist[@]}"
158 echo "* Installing optional groups" >&3
159 yum -y groupinstall "${grouplist[@]}"
162 # If a preferred mirror was specified, configure mkfedora to use it
163 if [ -n "$mirror" ] ; then
164 mkdir -p $vroot/etc/planetlab
165 echo "PLC_DEVEL_FEDORA_URL=$mirror" >$vroot/etc/planetlab/plc_config
168 # Install local CVS repository.
169 echo "* Exporting source code to /cvs" >&3
171 export CVSROOT=$vroot/cvs
174 tmp=$(mktemp -d /tmp/cvs.XXXXXX)
175 trap "rm -rf $tmp" ERR
178 # Export source code from cvs.planet-lab.org to /tmp
179 if [ "$tag" = "HEAD" ] ; then
180 date=$(date +%Y-%m-%d)
181 cvs_export="cvs -d :pserver:anon@cvs.planet-lab.org:/cvs export -D $date planetlab"
184 cvs_export="cvs -d :pserver:anon@cvs.planet-lab.org:/cvs export -r $tag planetlab"
188 # Import into /cvs/tmp
191 cvs -d $CVSROOT import -m "$cvs_export" -ko -I ! $dir planetlab $tag