mirror of
https://github.com/macports/mpbb.git
synced 2026-03-31 14:38:29 -07:00
git-svn-id: https://svn.macports.org/repository/macports/contrib/mpab@133003 d073be05-634f-4543-b044-5fe20cf6d1d6
89 lines
2.7 KiB
Bash
Executable File
89 lines
2.7 KiB
Bash
Executable File
#!/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
|