mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 18:21:39 +01:00
135 lines
3.3 KiB
Bash
Executable File
135 lines
3.3 KiB
Bash
Executable File
#!/bin/sh -x
|
|
|
|
# usage: xen-clone hg_repository dest_dir orig_linux_dir
|
|
#
|
|
# this script contains some CL site specific details, but can easily be adapted
|
|
#
|
|
|
|
# test which site we're on
|
|
[ -d /usr/groups/xeno/ -a -d /usr/groups/srgboot ] && SITE=UCCL
|
|
|
|
case "$SITE" in
|
|
UCCL)
|
|
BK_REP=${1:-http://hg.srg.cl.cam.ac.uk/xen-unstable.hg}
|
|
LINUX_DIR=${3:-/usr/groups/xeno/archive/}
|
|
;;
|
|
*)
|
|
BK_REP=${1:-http://xenbits.xensource.com/xen-unstable.hg}
|
|
LINUX_DIR=${3:-.:..}
|
|
;;
|
|
esac
|
|
|
|
DEST_DIR=${2:-xeno-clone}
|
|
DEST_BK_REP=`basename "${BK_REP}"`
|
|
DEST_VER=`basename ${DEST_BK_REP} .hg`
|
|
|
|
echo usage: xen-clone hg dest_dir orig_linux_dir
|
|
echo Source BK Repository : ${BK_REP}
|
|
echo Destination Dir/Repository : ${DEST_DIR}/${DEST_BK_REP}
|
|
echo Pristine Linux Source directory : ${LINUX_DIR}
|
|
|
|
mkdir -p ${DEST_DIR}
|
|
cd ${DEST_DIR}
|
|
TOP=`/bin/pwd`
|
|
|
|
# site-specific set up of installation directories
|
|
case "$SITE" in
|
|
UCCL)
|
|
PATH=$PATH:/usr/groups/xeno/build_tools/bin
|
|
mkdir -p install/boot
|
|
cd install/boot
|
|
ln -sf ../../../xeno-roots/roots .
|
|
ln -sf ../../../xeno-roots/usr .
|
|
ln -sf ../lib .
|
|
ln -sf ../bin .
|
|
ln -sf /usr/groups/srgboot/${USER}/xenoboot.sh .
|
|
ln -sf `pwd` /usr/groups/srgboot/${USER}/${DEST_DIR}
|
|
ln -sf xen.gz image.gz
|
|
cd ../..
|
|
;;
|
|
esac
|
|
|
|
# clone the master repository (now checked-out by default)
|
|
if [ ! -d ${DEST_BK_REP} ]
|
|
then
|
|
mkdir -p ${DEST_BK_REP} ; cd ${DEST_BK_REP} ; hg init ${BK_REP} ; hg co ; cd ${TOP}
|
|
else
|
|
cd ${DEST_BK_REP}
|
|
hg pull ; hg co
|
|
cd ${TOP}
|
|
fi
|
|
|
|
|
|
if [ -d ${DEST_BK_REP}/linux-2.4*-xen-sparse ]
|
|
then
|
|
# this is a new style Xen repository so building is dead easy
|
|
|
|
export LINUX_SRC_PATH=${LINUX_DIR}
|
|
|
|
cd ${DEST_BK_REP}
|
|
|
|
# Recent repositories install into 'dist/install' rather than 'install'.
|
|
if [ -f install.sh ]
|
|
then
|
|
mkdir -p dist
|
|
ln -sf ../../install dist/install
|
|
else
|
|
ln -sf ../install install
|
|
fi
|
|
|
|
make -j4 KERNELS=linux-* world
|
|
#make -j4 linux24
|
|
cd ../install/boot
|
|
if [ -r vmlinuz-2.6-xen0 ]
|
|
then
|
|
ln -s vmlinuz-2.6-xen0 xenolinux.gz
|
|
else
|
|
kern=`ls vmlinuz-2.6.*-xen0 | head -1`
|
|
[ -r "$kern" ] && ln -s "$kern" xenolinux.gz
|
|
fi
|
|
|
|
else
|
|
# old style repository without 'make world'
|
|
|
|
|
|
# identify this version of linux
|
|
LINUX_VER=`( /bin/ls -ld ${DEST_BK_REP}/*xenolinux-sparse || /bin/ls -ld ${DEST_BK_REP}/*xenolinux-*-sparse ) 2>/dev/null | sed -e 's!^.*xenolinux-\(.\+\)-sparse!\1!'`
|
|
|
|
if [ -z "${LINUX_VER}" ]
|
|
then
|
|
echo Unable to identify Linux version. Bailing.
|
|
exit -1
|
|
fi
|
|
|
|
# copy in the master Linux tree for this kernel
|
|
if [ ! -d linux-${LINUX_VER} ]
|
|
then
|
|
tar -jxf ${LINUX_DIR}/linux-${LINUX_VER}.tar.bz2 || tar -zxf ${LINUX_DIR}/linux-${LINUX_VER}.tar.gz || tar -zxf ${LINUX_DIR}/linux-${LINUX_VER}.tgz || cp -a ${LINUX_DIR}/linux-${LINUX_VER} . || wget ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-${LINUX_VER}.tar.gz -O- | tar -zxf - || exit -1
|
|
fi
|
|
|
|
# build and install Xen and tools
|
|
cd ${DEST_BK_REP}
|
|
make dist || make install
|
|
|
|
# Turn linux into xenolinux then build it
|
|
cd xenolinux-${LINUX_VER}-sparse
|
|
./mkbuildtree ../../linux-${LINUX_VER}
|
|
cd ../..
|
|
mv linux-${LINUX_VER} xenolinux-${LINUX_VER}
|
|
cd xenolinux-${LINUX_VER}
|
|
|
|
# cope with the change from ARCH=xeno to ARCH=xen
|
|
cd arch; XEN=`/bin/ls -d xen*`; cd ..
|
|
|
|
# built it all
|
|
ARCH=$XEN make oldconfig
|
|
ARCH=$XEN make dep
|
|
ARCH=$XEN make bzImage
|
|
ARCH=$XEN make dist || ARCH=xen make install
|
|
ARCH=$XEN make modules
|
|
ARCH=$XEN make INSTALL_MOD_PATH=${TOP}/install modules_install
|
|
cd ..
|
|
|
|
fi
|
|
|