#!/bin/sh exportDir=mpexport CHROOTSUBDIR=mpchroot baseDir=$(dirname $0) dataDir=$(pwd) if [[ -n "$MPAB_DATA" ]]; then dataDir=$MPAB_DATA fi if [[ -z "$PREFIX" ]]; then PREFIX=/opt/local fi export PREFIX if [[ -z "$SRC_PREFIX" ]]; then SRC_PREFIX=/opt/mports fi export SRC_PREFIX chrootPath="${dataDir}/${CHROOTSUBDIR}" OSMajor=`uname -r | sed 's/\..*//'` # xcodebuild breaks in chroots on 10.6 if [[ $1 = "-n" || $OSMajor -ge 10 ]]; then chrootPath="" if [[ $1 = "-n" ]]; then shift fi fi # $1 - script to execute function chroot_exec () { cp -p ${baseDir}/chroot-scripts/$1 ${chrootPath}/var/tmp if [[ -n "$chrootPath" ]]; then # Set DYLD_NO_FIX_PREBINDING as otherwise, on 10.5, dyld will spew # errors to syslog/console log like: # com.apple.launchd[1] (com.apple.dyld): Throttling respawn: Will start in 10 seconds env -i PATH=/bin:/usr/bin:/sbin:/usr/sbin HOME=/var/root DYLD_NO_FIX_PREBINDING=1 PREFIX=${PREFIX} SRC_PREFIX=${SRC_PREFIX} /usr/sbin/chroot ${chrootPath} /bin/sh /var/tmp/$1 else env -i PATH=/bin:/usr/bin:/sbin:/usr/sbin HOME=/var/root PREFIX=${PREFIX} SRC_PREFIX=${SRC_PREFIX} /bin/sh /var/tmp/$1 fi rm ${chrootPath}/var/tmp/$1 } if [[ -d ${dataDir}/${exportDir}/base && -d ${dataDir}/${exportDir}/dports ]] ; then if [[ -e ${dataDir}/${exportDir}/base/.svn/lock ]]; then svn --non-interactive cleanup ${dataDir}/${exportDir}/base fi svn update --non-interactive \ -r HEAD ${dataDir}/${exportDir}/base || exit 1 if [[ -e ${dataDir}/${exportDir}/dports/.svn/lock ]]; then svn --non-interactive cleanup ${dataDir}/${exportDir}/dports fi svn update --non-interactive \ -r HEAD ${dataDir}/${exportDir}/dports || exit 1 else rm -rf ${dataDir}/${exportDir} echo "Checking out macports from svn..." mkdir -p ${dataDir}/${exportDir} svn checkout --non-interactive -r HEAD \ https://svn.macports.org/repository/macports/trunk/base \ ${dataDir}/${exportDir}/base || exit 1 svn checkout --non-interactive -r HEAD \ https://svn.macports.org/repository/macports/trunk/dports \ ${dataDir}/${exportDir}/dports || exit 1 fi if [[ -n "$chrootPath" && ! -d "$chrootPath" ]] ; then sudo ${baseDir}/mpab mount || exit 1 umount=yes fi rsync -av --del --exclude '*~' --exclude '.svn' --exclude '/dports/PortIndex*' \ ${dataDir}/${exportDir}/ \ ${chrootPath}${SRC_PREFIX} || exit 1 chroot_exec recreateportindex if [[ "$BASE_UPDATE" == "selfupdate" ]]; then chroot_exec selfupdate elif [[ "$BASE_UPDATE" == "svn" ]]; then chroot_exec installmacports fi if [[ "${umount}" = yes ]] ; then sudo ${baseDir}/mpab umount || exit 1 fi