Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
executable file 82 lines (69 sloc) 1.92 KB
#!/bin/bash
if [ $EUID -ne 0 ]; then
echo "install script must be run as root" 2>&1
exit 1
fi
## Copy Libsystem pieces from ~rc
copylibs=0
## Install results in /
noinstall=0
build=$(sw_vers -buildVersion)
train=$(~rc/bin/getTrainForBuild --quiet "$build")
while [ $# -gt 0 ]; do
if [ "${1/=*/}" = "--build" ]; then
build="${1/*=/}"
elif [ "$1" = "--noinstall" ]; then
noinstall=1
elif [ "$1" = "--copylibs" ]; then
copylibs=1
else
echo "install: [--build=10A400] [--noinstall] [--copylibs]" 2>&1
exit 1
fi
shift
done
ROOTS=/var/tmp/GCDRoots."$build"
# Building for another version implies copylibs and noinstall
if [ "$build" != "$(sw_vers -buildVersion)" ]; then
copylibs=1
noinstall=1
fi
set -ex
mkdir -p "$ROOTS"
function BUILDIT() {
~rc/bin/buildit -arch i386 -arch ppc -arch x86_64 -arch armv6 \
-release "$train" -rootsDirectory "$ROOTS" "$@" .
}
BUILDIT -project libdispatch -merge / -noverify
if [ $copylibs = 1 ]; then
ALTUSRLOCALLIBSYSTEM="$ROOTS"/system
mkdir -p "$ALTUSRLOCALLIBSYSTEM"
export ALTUSRLOCALLIBSYSTEM
./install_Libsystem_pieces "$build"
cp /usr/local/lib/system/libdispatch* "$ALTUSRLOCALLIBSYSTEM"
fi
LIBSYSTEM=$(~rc/bin/getvers "$train$build" Libsystem)
if [ -z "$LIBSYSTEM" ]; then
exit 1
fi
SRCROOT="/var/tmp/$LIBSYSTEM"
if [ ! -e "$SRCROOT" ]; then
cd $(dirname "$SRCROOT")
svn co http://src.apple.com/svn/BSD/Libsystem/tags/"$LIBSYSTEM"
fi
cd "$SRCROOT"
BUILDIT
if [ $noinstall -eq 1 ]; then
exit 0
fi
if [ ! -e /usr/lib/libSystem.B.dylib.orig ]; then
cp /usr/lib/libSystem.B.dylib /usr/lib/libSystem.B.dylib.orig
fi
if [ ! -e /usr/lib/libSystem.B_debug.dylib.orig ] ; then
cp /usr/lib/libSystem.B_debug.dylib /usr/lib/libSystem.B_debug.dylib.orig
fi
if [ ! -e /usr/lib/libSystem.B_profile.dylib.orig ] ; then
cp /usr/lib/libSystem.B_profile.dylib /usr/lib/libSystem.B_profile.dylib.orig
fi
cp -R "$ROOTS"/"$LIBSYSTEM".roots/"$LIBSYSTEM"~sym/libSystem* /usr/lib/
update_dyld_shared_cache