testosx   [plain text]


#!/bin/sh
# Make sure we are running in the right directory...
if test ! -f tools/testosx; then
	echo "Run this script from the top-level CUPS source directory, e.g.:"
	echo ""
	echo "    sudo tools/testosx [version]"
	echo ""
	exit 1
fi

if test `whoami` != root; then
	echo "Run this script with sudo, e.g.:"
	echo ""
	echo "    sudo tools/testosx [version]"
	echo ""
	exit 1
fi

# Get the current working copy version...
rev=`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[a-zA-Z]*//g'`

if test $# = 0; then
	version="1.4svn-r$rev"
else
	version=$1
fi

# Setup an install directory...
user=`whoami`
topdir=`pwd`
pkgdir="/tmp/cups.pkg-$user"

echo Building package using temp directory $pkgdir...
rm -rf $pkgdir
mkdir -p $pkgdir/Package
mkdir -p $pkgdir/Resources

# Install resource files into the Resources directory...
echo Installing resource files...
cp packaging/LICENSE.rtf $pkgdir/Resources/ReadMe.rtf
sed -e '1,$s/@CUPS_VERSION@/'$version'/g' \
	<packaging/WELCOME.rtf >$pkgdir/Resources/Welcome.rtf
cp packaging/installer.tif $pkgdir/Resources/background.tif

if test -x /bin/launchctl; then
	cat >$pkgdir/Resources/preflight <<EOF
#!/bin/sh
# Tell launchd to stop cupsd...
if test "x`whoami`" = xroot; then
	sudo launchctl unload /System/Library/LaunchDaemons/org.cups.cupsd.plist || exit 0
	sudo launchctl unload /System/Library/LaunchDaemons/org.cups.cups-lpd.plist || exit 0
fi
killall cupsd || exit 0
EOF
else
	cat >$pkgdir/Resources/preflight <<EOF
#!/bin/sh
# Stop any running cupsd processes...
killall cupsd || exit 0
EOF
fi

chmod 755 $pkgdir/Resources/preflight

if test -x /bin/launchctl; then
	cat >$pkgdir/Resources/postflight <<EOF
#!/bin/sh

# Remove old xinetd config file, we use launchd now...
rm -f /etc/xinetd.d/cups-lpd

# Tell launchd to reload cupsd...
if test "x`whoami`" = xroot; then
	sudo launchctl load /System/Library/LaunchDaemons/org.cups.cupsd.plist
	sudo launchctl load /System/Library/LaunchDaemons/org.cups.cupsd-lpd.plist || exit 0
fi
EOF
else
	cat >$pkgdir/Resources/postflight <<EOF
#!/bin/sh

# Start cupsd...
/usr/sbin/cupsd
EOF
fi

chmod 755 $pkgdir/Resources/postflight

case `uname -r` in
	8.* | 9.*)
		cp packaging/InstallationCheck $pkgdir/Resources
		chmod 755 $pkgdir/Resources/InstallationCheck
		;;
esac

# Tag the current revision in the plist and web interface files...
for file in packaging/cups-desc.plist packaging/cups-info.plist \
		doc/index.html templates/header.tmpl; do
	echo Updating $file...
	sed -e '1,$s/@CUPS_VERSION@/'$version'/g' \
		-e '1,$s/@CUPS_REVISION@//g' \
		-e '1,$s/@CUPS_RELEASE@/1.4.'$rev'/g' \
		<$file.in >$file
done

# Install CUPS into the Package directory...
#make INSTALL=$topdir/install-sh BUILDROOT=$pkgdir/Package install
make BUILDROOT=$pkgdir/Package install || exit 1

# Figure out where PackageMaker is installled...
if test -d /Developer/Applications/Utilities/PackageMaker.app; then
	PackageMaker=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
else
	PackageMaker=/Developer/Applications/PackageMaker.app/Contents/MacOS/PackageMaker
fi

# Create the package...
echo Creating MacOS X package...
rm -rf cups.pkg
echo $PackageMaker -build -v -p cups.pkg \
	-f $pkgdir/Package \
	-r $pkgdir/Resources \
	-d packaging/cups-desc.plist \
	-i packaging/cups-info.plist
$PackageMaker -build -v -p cups.pkg \
	-f $pkgdir/Package \
	-r $pkgdir/Resources \
	-d packaging/cups-desc.plist \
	-i packaging/cups-info.plist

# Create a disk image...
echo Creating MacOS X disk image...
hdiutil create -ov -srcfolder cups.pkg cups-$version.dmg

# Cleanup temp files...
echo Removing temporary files...
#rm -rf $pkgdir