# Marc E. Fiuczynski <mef@cs.princeton.edu>
# Copyright (C) 2007 The Trustees of Princeton University
#
-# $Id: build.common,v 1.1.2.3 2007/08/30 17:43:08 mef Exp $
+# $Id$
#
-function pl_getDefaultFedoraRelease() {
+function pl_getDefaultDistro() {
# FC4 is currently the default release
- return 4
+ echo "Fedora"
}
-function pl_getFedoraRelease() {
- pl_getDefaultFedoraRelease
- defaultFedoraRelease=$?
- if [ -f "/etc/fedora-release" ] ; then
- fedoraRelease=$(awk ' { if ($2=="Core") print $4; else print $3 } ' /etc/fedora-release)
- [ $fedoraRelease -lt $defaultFedoraRelease ] && fedoraRelease=$defaultFedoraRelease
+function pl_getDefaultRelease() {
+ # FC4 is currently the default release
+ echo "4"
+}
+
+function pl_getDistro() {
+ defaultDistro=$(pl_getDefaultDistro)
+ if [ -f "/etc/redhat-release" ] ; then
+ distro=$(awk ' { print $1 } ' /etc/redhat-release)
+ else
+ distro=$defaultDistro
+ fi
+ echo "$distro"
+}
+
+function pl_getRelease() {
+ defaultRelease=$(pl_getDefaultRelease)
+ if [ -f "/etc/redhat-release" ] ; then
+ release=$(awk ' { if ($1=="Fedora" && $2=="Core") print $4 ; if (($1=="Fedora" && $2!="Core")||$1=="CentOS") print $3 } ' /etc/redhat-release)
+ [ $release -lt $defaultRelease ] && release=$defaultRelease
else
- fedoraRelease=defaultFedoraRelease
+ release=$defaultRelease
fi
- return $fedoraRelease
+ echo "$release"
}
+# figure out which redhat distro we are using (fedora, centos, redhat)
+pl_DISTRO=$(pl_getDistro)
+
# select basearch of the host devel environment
-pl_FEDORA_ARCH=$(uname -i)
+pl_DISTRO_ARCH=$(uname -i)
# let mkfedora select one of its mirrors
-pl_FEDORA_URL=""
+pl_DISTRO_URL=""
+
+pl_DISTRO_RELEASE=$(pl_getRelease)
-pl_getDefaultFedoraRelease
-pl_FEDORA_RELEASE=$?
+# vserver expects something like fc4 or f7
+# for fedora only as of now
+case $pl_DISTRO in
+ [Ff]edora*)
+ if [ "$pl_DISTRO_RELEASE" -le 6 ] ; then
+ pl_DISTRO_NAME=fc$pl_DISTRO_RELEASE
+ else
+ pl_DISTRO_NAME=f$pl_DISTRO_RELEASE
+ fi ;;
+ *)
+ echo "build.common: WARNING - pl_DISTRO_NAME not set for distro=$pl_DISTRO" ;;
+esac
# get patch to appropriate yumgroups.xml file
# XXX This path should be relative to PLDISTRO, as defined in
# build/Makefile
pl_YUMGROUPSXML="../build/groups/v4_yumgroups.xml"
+# Thierry: quick & dirty improvement
+# this is updated by the toplevel build, from the appropriate pldistro-dep file
+# use another var for now for safety
+pl_DISTRO_YUMGROUPS="../../../RPMS/yumgroups.xml"
function pl_process_fedora_options () {
# Get options
while getopts "l:r:a:h" opt ; do
case $opt in
l)
- pl_FEDORA_URL=$OPTARG
+ pl_DISTRO_URL=$OPTARG
let shiftcount=$shiftcount+2
;;
r)
- pl_FEDORA_RELEASE=$OPTARG
+ pl_DISTRO_RELEASE=$OPTARG
let shiftcount=$shiftcount+2
;;
a)
- pl_FEDORA_ARCH=$OPTARG
+ pl_DISTRO_ARCH=$OPTARG
let shiftcount=$shiftcount+2
;;
h|*)
echo "Usage: $0 [OPTION]..."
- echo " -l url Fedora mirror location (default: $pl_FEDORA_URL)"
- echo " -r release Fedora release number (default: $pl_FEDORA_RELEASE)"
- echo " -a arch Fedora architecture (default: $pl_FEDORA_ARCH)"
+ echo " -l url distro mirror location (default: $pl_DISTRO_URL)"
+ echo " -r release distro release number (default: $pl_DISTRO_RELEASE)"
+ echo " -a arch distro architecture (default: $pl_DISTRO_ARCH)"
+ echo "where distro can be either fedora, centos, or redhat"
echo " -h This message"
exit 1
;;
# For df and linuxconf
touch $vroot/dev/hdv1
- # For TUN/TAP
- mkdir -p $vroot/dev/net
- mknod -m 600 $vroot/dev/net/tun c 10 200
-
# For pseudo ttys
mkdir -p $vroot/dev/pts
+ # (Might have to remove the following for vserver-reference.)
+
# for tmpfs mount
mkdir -p $vroot/dev/shm
+ # For TUN/TAP
+ mkdir -p $vroot/dev/net
+ mknod -m 600 $vroot/dev/net/tun c 10 200
+
# For mkinitrd (in case a kernel is being installed)
- for i in $(seq 0 7) ; do
+ # As well for loop back mounting within a vserver.
+ for i in $(seq 0 255) ; do
mknod -m 640 $vroot/dev/loop$i b 7 $i
done
}
pl_makedevs $root
- [ -n "$pl_FEDORA_URL" ] && options="$options -l $pl_FEDORA_URL"
- [ -n "$pl_FEDORA_ARCH" ] && options="$options -a $pl_FEDORA_ARCH"
- [ -n "$pl_FEDORA_RELEASE" ] && options="$options -r $pl_FEDORA_RELEASE"
+ [ -n "$pl_DISTRO_URL" ] && options="$options -l $pl_DISTRO_URL"
+ [ -n "$pl_DISTRO_ARCH" ] && options="$options -a $pl_DISTRO_ARCH"
+ [ -n "$pl_DISTRO_RELEASE" ] && options="$options -r $pl_DISTRO_RELEASE"
# echo "mkfedora -v $options $root"
eval mkfedora -v $options $root
}
(cd $root && tar cpf - .) | (cd $tmp && tar xpf -)
# Unmount it
- umount $tmp
+ umount -l $tmp
rmdir $tmp
trap - ERR INT
}
done
}
+function pl_getPackages() {
+ filename=$1
+ packages=$(grep "^package:" $filename | sed -e s,package:,,)
+ echo "$packages"
+ return 0
+}
+
+# add -p before each package for mkfedora
+function pl_getPackagesOptions() {
+ pl_getPackages "$@" | awk '{for (i=1;i<=NF;i++) {print "-p " $i}}'
+}
+
+function pl_getGroups() {
+ filename=$1
+ groups=$(grep "^group:" $filename | sed -e s,group:,,)
+ echo "$groups"
+ return 0
+}
+
+# add -g before each group for mkfedora
+function pl_getGroupsOptions() {
+ pl_getGroups "$@" | awk '{for (i=1;i<=NF;i++) {print "-g " $i}}'
+}
+