diff --git a/checkin_notes b/checkin_notes index bed1a427f0..62255b9b38 100644 --- a/checkin_notes +++ b/checkin_notes @@ -4196,3 +4196,10 @@ David 8 Jun 2010 clientgui/ build_po + +Charlie 9 Jun 2010 + - Mac installer: Create script to build installer for Campus Party (installs + custom project_inint.xml file.) + + mac_installer/ + release_campus_party.sh diff --git a/mac_installer/release_campus_party.sh b/mac_installer/release_campus_party.sh new file mode 100644 index 0000000000..d7ba667dd5 --- /dev/null +++ b/mac_installer/release_campus_party.sh @@ -0,0 +1,239 @@ +#!/bin/csh + +# This file is part of BOINC. +# http://boinc.berkeley.edu +# Copyright (C) 2008 University of California +# +# BOINC is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License +# as published by the Free Software Foundation, +# either version 3 of the License, or (at your option) any later version. +# +# BOINC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with BOINC. If not, see . + +## +# Release Script for Campus Party Macintosh BOINC Manager +# +# Release Script for Macintosh BOINC Manager 10/31/07 by Charlie Fenton +## updated 11/18/09 by Charlie Fenton for OS 10.6 Snow Leopard +## updated 4/16/10 by Charlie Fenton +## customized 6/8/10 for Campus Party (installs custom project_init.xml file) +## +## NOTE: This script uses PackageMaker, which is installed as part of the +## XCode developer tools. So you must have installed XCode Developer +## Tools on the Mac before running this script. +## +## NOTE: PackageMaker may write 3 lines to the terminal with "Setting to : 0 (null)" +## and "relocate: (null) 0". This is normal and does not indicate a problem. +## + +## Usage: +## cd to the root directory of the boinc tree, for example: +## cd [path]/boinc +## +## Invoke this script with the three parts of version number as arguments. +## For example, if the version is 3.2.1: +## source [path_to_this_script] 3 2 1 +## +## This will create a director "BOINC_Installer" in the parent directory of +## the current directory +## +## For testing only, you can use the development build by adding a fourth argument -dev +## For example, if the version is 3.2.1: +## source [path_to_this_script] 3 2 1 -dev + +if [ $# -lt 3 ]; then +echo "Usage:" +echo " cd [path]/boinc" +echo " source [path_to_this_script] major_version minor_version revision_number" +return 1 +fi + +#pushd ./ +BOINCPath=$PWD + +## XCode 2.x has separate directories for Development and Deployment build products +if [ "$4" = "-dev" ]; then + if [ -d mac_build/build/Development/ ]; then + BUILDPATH="mac_build/build/Development" + else + BUILDPATH="mac_build/build" + fi +else + if [ -d mac_build/build/Deployment/ ]; then + BUILDPATH="mac_build/build/Deployment" + else + BUILDPATH="mac_build/build" + fi +fi + +sudo rm -dfR ../BOINC_Installer/Installer\ Resources/ +sudo rm -dfR ../BOINC_Installer/Installer\ Scripts/ +sudo rm -dfR ../BOINC_Installer/Pkg_Root + +mkdir -p ../BOINC_Installer/Installer\ Resources/ +mkdir -p ../BOINC_Installer/Installer\ Scripts/ + +cp -fp mac_Installer/License.rtf ../BOINC_Installer/Installer\ Resources/ +cp -fp mac_installer/ReadMe.rtf ../BOINC_Installer/Installer\ Resources/ +cp -fp win_build/installerv2/redist/all_projects_list.xml ../BOINC_Installer/Installer\ Resources/ + +# Update version number +sed -i "" s/""/"$1.$2.$3"/g ../BOINC_Installer/Installer\ Resources/ReadMe.rtf + +#### We don't customize BOINC Data directory name for branding +cp -fp mac_installer/preinstall ../BOINC_Installer/Installer\ Scripts/ +cp -fp mac_installer/preinstall ../BOINC_Installer/Installer\ Scripts/preupgrade +cp -fp mac_installer/postinstall ../BOINC_Installer/Installer\ Scripts/ +cp -fp mac_installer/postupgrade ../BOINC_Installer/Installer\ Scripts/ + +cp -fpR $BUILDPATH/PostInstall.app ../BOINC_Installer/Installer\ Resources/ +cp -fpR $BUILDPATH/WaitPermissions.app ../BOINC_Installer/Installer\ Resources/ + +mkdir -p ../BOINC_Installer/Pkg_Root +mkdir -p ../BOINC_Installer/Pkg_Root/Applications +mkdir -p ../BOINC_Installer/Pkg_Root/Library +mkdir -p ../BOINC_Installer/Pkg_Root/Library/Screen\ Savers +mkdir -p ../BOINC_Installer/Pkg_Root/Library/Application\ Support +mkdir -p ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data +mkdir -p ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/locale +mkdir -p ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/switcher +mkdir -p ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/skins + +cp -fpR $BUILDPATH/switcher ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/switcher/ +cp -fpR $BUILDPATH/setprojectgrp ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/switcher/ +## cp -fpR $BUILDPATH/AppStats ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/switcher/ + +## FOR NOW - Don't install WCG Skins. If you reinstate this, also reinstate preinstall & preupgrade above +## Copy the World Community Grid skins into the installer tree, minus the CVS files +## mkdir -p ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/skins +## cd "${BOINCPath}/clientgui/skins" +## cp -fpR World\ Community\ Grid ../../../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/skins/ +## cd "${BOINCPath}" +## sudo rm -dfR ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/skins/World\ Community\ Grid/CVS +## sudo rm -dfR ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/skins/World\ Community\ Grid/graphic/CVS + +cp -fp curl/ca-bundle.crt ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/ + +cp -fp doc/logo/boinc_logo_black.jpg ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/ +cp -fp api/txf/Helvetica.txf ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/ +cp -fp clientscr/ss_config.xml ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/ +cp -fpR $BUILDPATH/boincscr ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/ + +## CUSTOM project_init.xml file for Campus Party +cat >> ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/project_init.xml << ENDOFFILE + + http://boinc.bakerlab.org/rosetta/ + http://boinc.bakerlab.org/rosetta/ + + CampusParty + +ENDOFFILE +## End of CUSTOM project_init.xml file for Campus Party + +cp -fpR $BUILDPATH/BOINCManager.app ../BOINC_Installer/Pkg_Root/Applications/ + +cp -fpR $BUILDPATH/BOINCSaver.saver ../BOINC_Installer/Pkg_Root/Library/Screen\ Savers/ + +## If x86_64 version of screen saver for OS 10.6 exists, merge it into our screen saver +if [ -x ../_boinc_SnowLeopard/mac_build/build/Deployment/BOINCSaver.saver/Contents/MacOS/BOINCSaver ]; then + if [ "$4" != "-dev" ]; then + rm -f ../BOINC_Installer/Pkg_Root/Library/Screen\ Savers/BOINCSaver.saver/Contents/MacOS/BOINCSaver + rm -fR ../BOINC_Installer/temp/ + mkdir -p ../BOINC_Installer/temp/ + lipo ../_boinc_SnowLeopard/mac_build/build/Deployment/BOINCSaver.saver/Contents/MacOS/BOINCSaver -thin x86_64 -output ../BOINC_Installer/temp/saver64 + lipo ../BOINC_Installer/temp/saver64 $BUILDPATH/BOINCSaver.saver/Contents/MacOS/BOINCSaver -create -output ../BOINC_Installer/Pkg_Root/Library/Screen\ Savers/BOINCSaver.saver/Contents/MacOS/BOINCSaver + rm -fR ../BOINC_Installer/temp/ + fi +fi + +## Copy the localization files into the installer tree +## Old way copies CVS and *.po files which are not needed +## cp -fpR locale/ ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/locale +## sudo rm -dfR ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/locale/CVS +## New way copies only *.mo files (adapted from boinc/sea/make-tar.sh) +find locale -name '*.mo' | cut -d '/' -f 2 | awk '{print "\"../BOINC_Installer/Pkg_Root/Library/Application Support/BOINC Data/locale/"$0"\""}' | xargs mkdir -p +find locale -name '*.mo' | cut -d '/' -f 2,3 | awk '{print "cp \"locale/"$0"\" \"../BOINC_Installer/Pkg_Root/Library/Application Support/BOINC Data/locale/"$0"\""}' | bash + +## Fix up ownership and permissions +sudo chown -R root:admin ../BOINC_Installer/Pkg_Root/* +sudo chmod -R u+rw,g+rw,o+r-w ../BOINC_Installer/Pkg_Root/* +sudo chmod 1775 ../BOINC_Installer/Pkg_Root/Library + +sudo chown -R 501:admin ../BOINC_Installer/Pkg_Root/Library/Application\ Support/* +sudo chmod -R u+rw,g+r-w,o+r-w ../BOINC_Installer/Pkg_Root/Library/Application\ Support/* + +sudo chown -R root:admin ../BOINC_Installer/Installer\ Resources/* +sudo chown -R root:admin ../BOINC_Installer/Installer\ Scripts/* +sudo chmod -R u+rw,g+r-w,o+r-w ../BOINC_Installer/Installer\ Resources/* +sudo chmod -R u+rw,g+r-w,o+r-w ../BOINC_Installer/Installer\ Scripts/* + +sudo rm -dfR ../BOINC_Installer/Campus_Party_$1_$2_$3/ + +mkdir -p ../BOINC_Installer/Campus_Party_$1_$2_$3/ +mkdir -p ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party +mkdir -p ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/extras + +cp -fp ../BOINC_Installer/Installer\ Resources/ReadMe.rtf ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party +sudo chown -R 501:admin ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/ReadMe.rtf +sudo chmod -R 644 ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/ReadMe.rtf + +cp -fp COPYING ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/extras/COPYING.txt +sudo chown -R 501:admin ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/extras/COPYING.txt +sudo chmod -R 644 ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/extras/COPYING.txt + +cp -fp COPYING.LESSER ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/extras/COPYING.LESSER.txt +sudo chown -R 501:admin ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/extras/COPYING.LESSER.txt +sudo chmod -R 644 ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/extras/COPYING.LESSER.txt + +cp -fp COPYRIGHT ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/extras/COPYRIGHT.txt +sudo chown -R 501:admin ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/extras/COPYRIGHT.txt +sudo chmod -R 644 ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/extras/COPYRIGHT.txt + +cp -fpR $BUILDPATH/Uninstall\ BOINC.app ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/extras +sudo chown -R root:admin ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/extras/Uninstall\ BOINC.app +sudo chmod -R 755 ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/extras/Uninstall\ BOINC.app + +# Copy the installer wrapper application "BOINC Installer.app" +cp -fpR $BUILDPATH/BOINC\ Installer.app ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/ + +DarwinVersion=`uname -r`; +DarwinMajorVersion=`echo $DarwinVersion | sed 's/\([0-9]*\)[.].*/\1/' `; +# DarwinMinorVersion=`echo $version | sed 's/[0-9]*[.]\([0-9]*\).*/\1/' `; +# +# echo "major = $DarwinMajorVersion" +# echo "minor = $DarwinMinorVersion" +# +# Darwin version 9.x.y corresponds to OS 10.5.x +# Darwin version 8.x.y corresponds to OS 10.4.x +# Darwin version 7.x.y corresponds to OS 10.3.x +# Darwin version 6.x corresponds to OS 10.2.x + +# Build the installer package inside the wrapper application's bundle +if [ "$DarwinMajorVersion" = "8" ]; then + # OS 10.4 packagemaker + /Developer/Tools/packagemaker -build -p ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/BOINC\ Installer.app/Contents/Resources/BOINC.pkg -f ../BOINC_Installer/Pkg_Root -r ../BOINC_Installer/Installer\ Resources/ -i mac_build/Pkg-Info.plist -d mac_Installer/Description.plist -ds +else + # OS 10.5 / OS 10.6 packagemaker + /Developer/usr/bin/packagemaker -r ../BOINC_Installer/Pkg_Root -e ../BOINC_Installer/Installer\ Resources/ -s ../BOINC_Installer/Installer\ Scripts/ -f mac_build/Pkg-Info.plist -t "BOINC Manager" -n "$1.$2.$3" -b -o ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/BOINC\ Installer.app/Contents/Resources/BOINC.pkg + # Remove TokenDefinitions.plist and IFPkgPathMappings in Info.plist, which would cause installer to find a previous copy of BOINCManager and install there + sudo rm -f ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/BOINC\ Installer.app/Contents/Resources/BOINC.pkg/Contents/Resources/TokenDefinitions.plist + defaults delete "$BOINCPath/../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/BOINC Installer.app/Contents/Resources/BOINC.pkg/Contents/Info" IFPkgPathMappings +fi + +# Allow the installer wrapper application to modify the package's Info.plist file +sudo chmod a+rw ../BOINC_Installer/Campus_Party_$1_$2_$3/boinc_$1.$2.$3_macOSX_Campus_Party/BOINC\ Installer.app/Contents/Resources/BOINC.pkg/Contents/Info.plist + +cd ../BOINC_Installer/Campus_Party_$1_$2_$3 +zip -rqy boinc_$1.$2.$3_macOSX_Campus_Party.zip boinc_$1.$2.$3_macOSX_Campus_Party + +#popd +cd "${BOINCPath}" + +return 0