From 54ce6eb82da9c4a46f600d909e851f04fb619ca4 Mon Sep 17 00:00:00 2001 From: Jonathan Armstrong Date: Tue, 26 Jun 2018 07:54:56 -0500 Subject: [PATCH 01/16] Adding generic script to build a branded mac installer and files needed for WCG brand --- clientgui/res/WCGrid.icns | Bin 0 -> 228751 bytes mac_installer/WCGrid-Branding | 1 + mac_installer/WCGridInstaller.environment | 21 ++ mac_installer/release_brand.sh | 401 ++++++++++++++++++++++ 4 files changed, 423 insertions(+) create mode 100644 clientgui/res/WCGrid.icns create mode 100644 mac_installer/WCGrid-Branding create mode 100644 mac_installer/WCGridInstaller.environment create mode 100755 mac_installer/release_brand.sh diff --git a/clientgui/res/WCGrid.icns b/clientgui/res/WCGrid.icns new file mode 100644 index 0000000000000000000000000000000000000000..a3f2e346a84eb52a237d2cff34920c9574b5d5bc GIT binary patch literal 228751 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

Ca*-PQ2H$He`ZU!PfFfON0#jql2>VuZc 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
GkNbuSFXZ^E3f&u618MW&n=AFvAxb>9L=GZX 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 z. + +## +# Script to create a branded installer such as World Community Grid +# +## Note 1: This script currently does not have support for "BOINC+VirtualBox.mpkg" +## and "BOINC + VirtualBox.mpkg" +## + +## Usage: +## First a brand description file must be created for the desired brand with the variable below defined +## SHORTBRANDNAME="wcgrid" ##Used to name the branded files and directories in the BOINC_Installer directory +## LONGBRANDNAME="World Community Grid" ##Used to name the installer package +## MANAGERAPPNAME="World Community Grid" ##The name of the branded manager, replaces BOINC Manager +## MANAGERICON="WCGridMgr" ##The icon for the branded manager, replaces BOINCMgr.icns +## SSAVERAPPNAME="World Community Grid" ##The branded screen saver name +## SSAVERPREVIEW="wcgrid.jpg" ##The image used as the preview for the screen saver in system preferences +## SSAVERTHUMBNAIL="wcgrid-thumbnail" ##The image used as the thumbnail for the screen saver in system preferences +## SSAVERLOGO="wcg_ss_logo.jpg" ##The image used in the generic screen saver +## SKINDIR="World Community Grid" ##The branded skin name to use +## UNINSTALLERAPPNAME="Uninstall World Community Grid" ##The name of the uninstaller app +## UNINSTALLERICON="WCGridUninstaller.icns" ##The icon for the branded uninstaller +## UNINSTALLERTRASHICON="WCGridUninstaller.icns" ##The icon for uninstaller PutInTrash +## INSTALLERAPPNAME="World Community Grid Installer" ##The name of the installer app +## INSTALLERICON="WCGridInstaller.icns" ##The icon for the branded installer +## READMEFILE="WCGrid-ReadMe.rtf" ##The branded readme file +## BRANDINGFILE="WCGrid-Branding" ##The branding file +## +## NOTE: This script requires Mac OS 10.6 or later, and uses XCode developer +## tools. So you must have installed XCode Developer Tools on the Mac +## before running this script. +## +## If you wish to code sign the installer and uninstaller, create a file +## ~/BOINCCodeSignIdentity.txt whose first line is the code signing identity +## +## cd to the boinc directory: +## +## Invoke this script with the three parts of version number as arguments and the full path to the brand description file. +## For example, if the version is 3.2.1: +## source [path_to_this_script] 3 2 1 ./mac_installer/WCGridInstaller.environment +## +## This will create a directory "BOINC_Installer" in the parent directory of +## the current directory + +if [ $# -lt 4 ]; then +echo "Usage:" +echo " cd [path]/boinc" +echo " source [path_to_this_script] major_version minor_version revision_number brand_description_file" +echo " ex) ./mac_installer/release_brand.sh 7 11 0 mac_installer/WCGridInstaller.environment" +return 1 +fi + +#source brand description file +if [ ! -f ${4} ]; then + echo Brand description file ${4} not found + return 1 +fi +. ${4} + +BOINCPath=$PWD + +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 11.x.y corresponds to OS 10.7.x +# Darwin version 10.x.y corresponds to OS 10.6.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 + +if [ "$DarwinMajorVersion" -gt 10 ]; then + # XCode 4.1 on OS 10.7 builds only Intel binaries + arch="x86_64" + + # XCode 3.x and 4.x use different paths for their build products. + # Our scripts in XCode's script build phase write those paths to + # files to help this release script find the build products. + if [ "$4" = "-dev" ]; then + exec 7<"mac_build/Build_Development_Dir" + read -u 7 BUILDPATH + else + exec 7<"mac_build/Build_Deployment_Dir" + read -u 7 BUILDPATH + fi + +else + # XCode 3.2 on OS 10.6 does sbuild Intel and PowerPC Universal binaries + arch="universal" + + # XCode 3.x and 4.x use different paths for their 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 +fi + +sudo rm -dfR ../BOINC_Installer/Installer\ Resources/ +sudo rm -dfR ../BOINC_Installer/Installer\ Scripts/ +sudo rm -dfR ../BOINC_Installer/Pkg_Root +sudo rm -dfR ../BOINC_Installer/locale +sudo rm -dfR ../BOINC_Installer/Installer\ templates +sudo rm -dfR ../BOINC_Installer/expandedVBox + +mkdir -p ../BOINC_Installer/Installer\ Resources/ +mkdir -p ../BOINC_Installer/Installer\ Scripts/ +mkdir -p ../BOINC_Installer/Installer\ templates + +cp -fp mac_installer/License.rtf ../BOINC_Installer/Installer\ Resources/ +cp -fp mac_installer/${READMEFILE} ../BOINC_Installer/Installer\ Resources/ReadMe.rtf + +cp -fp mac_installer/complist.plist mac_installer/complist.plist.${SHORTBRANDNAME} +sed -i "" s/BOINCManager.app/"${MANAGERAPPNAME}.app"/g mac_installer/complist.plist.${SHORTBRANDNAME} +sed -i "" s/BOINCSaver.saver/"${SSAVERAPPNAME}.saver"/g mac_installer/complist.plist.${SHORTBRANDNAME} +cp -fp mac_installer/complist.plist.${SHORTBRANDNAME} ../BOINC_Installer/Installer\ templates/complist.plist + + +cp -fp mac_installer/myDistribution mac_installer/myDistribution.${SHORTBRANDNAME} +sed -i "" s/BOINCManager.app/"${MANAGERAPPNAME}.app"/g mac_installer/myDistribution.${SHORTBRANDNAME} +sed -i "" s/BOINCSaver.saver/"${SSAVERAPPNAME}.saver"/g mac_installer/myDistribution.${SHORTBRANDNAME} +sed -i "" s/"BOINC Manager"/"${MANAGERAPPNAME}"/g mac_installer/myDistribution.${SHORTBRANDNAME} +cp -fp mac_installer/myDistribution.${SHORTBRANDNAME} ../BOINC_Installer/Installer\ templates/myDistribution + +# Update version number +sed -i "" s/""/"$1.$2.$3"/g ../BOINC_Installer/Installer\ Resources/ReadMe.rtf +sed -i "" s/"x.y.z"/"$1.$2.$3"/g ../BOINC_Installer/Installer\ templates/myDistribution + +#### 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/ +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 + +# We must create virtualbox directory so installer will set up its +# ownership and permissions correctly, because vboxwrapper won't +# have permission to set owner to boinc_master. +#mkdir -p ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/projects/virtualbox + +cp -fpRL "${BUILDPATH}/switcher" ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/switcher/ +cp -fpRL "${BUILDPATH}/setprojectgrp" ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/switcher/ + +cd "${BOINCPath}/clientgui/skins" +cp -fpRL Default ../../../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/skins/ +cp -fpRL "${SKINDIR}" ../../../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/skins/ +cd "${BOINCPath}" + +cp -fp curl/ca-bundle.crt ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/ + +cp -fp win_build/installerv2/redist/all_projects_list.xml ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/installer_projects_list.xml + +cp -fp clientscr/res/boinc_logo_black.jpg ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/ +cp -fp api/ttf/liberation-fonts-ttf-2.00.0/LiberationSans-Regular.ttf ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/LiberationSans-Regular.ttf +cp -fp clientscr/ss_config.xml ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/ +cp -fpRL "${BUILDPATH}/boincscr" ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/ + +cp -fpRL "${BUILDPATH}/BOINCManager.app/." "../BOINC_Installer/Pkg_Root/Applications/${MANAGERAPPNAME}.app/" +sed -i "" s/BOINCManager/"${MANAGERAPPNAME}"/g "../BOINC_Installer/Pkg_Root/Applications/${MANAGERAPPNAME}.app/Contents/Info.plist" +sed -i "" s/BOINCMgr/"${MANAGERICON}"/g "../BOINC_Installer/Pkg_Root/Applications/${MANAGERAPPNAME}.app/Contents/Info.plist" +mv "../BOINC_Installer/Pkg_Root/Applications/${MANAGERAPPNAME}.app/Contents/MacOS/BOINCManager" "../BOINC_Installer/Pkg_Root/Applications/${MANAGERAPPNAME}.app/Contents/MacOS/${MANAGERAPPNAME}" +cp -fpRL clientgui/res/${MANAGERICON}.icns "../BOINC_Installer/Pkg_Root/Applications/${MANAGERAPPNAME}.app/Contents/Resources/" +rm -rf "../BOINC_Installer/Pkg_Root/Applications/${MANAGERAPPNAME}.app/Contents/Resources/BOINCMgr.icns" +sed -i "" s/"BOINC Manager"/"${MANAGERAPPNAME}"/g "../BOINC_Installer/Pkg_Root/Applications/${MANAGERAPPNAME}.app/Contents/Resources/English.lproj/InfoPlist.strings" + +#JDA Need Branding +cp -fpRL ./mac_installer/${BRANDINGFILE} ../BOINC_Installer/Installer\ Resources/Branding +cp -fpRL ./mac_installer/${BRANDINGFILE} "../BOINC_Installer/Pkg_Root/Applications/${MANAGERAPPNAME}.app/Contents/Resources/Branding" +cp -fpRL ./mac_installer/${BRANDINGFILE} ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/Branding + + +## OS 10.6 and OS10.7 require screensavers built with Garbage Collection, but Xcode 5.0.2 +## was the last version of Xcode which supported building with Garbage Collection, so we +## have saved the screensaver executable with GC as a binary. Add it to the screen saver +## passed to the BOINC installer. At install time, he BOINC installer will select the +## correct binary for the version of OS X and delete the other one. This scripy assumes +## that $BUILDPATH/BOINCSaver.saver was built to use Automatic Reference Counting (ARC) +## and not built to use GC. + +cp -fpRL "${BUILDPATH}/BOINCSaver.saver/." "../BOINC_Installer/Pkg_Root/Library/Screen Savers/${SSAVERAPPNAME}.saver/" +ditto -xk ./clientscr/BOINCSaver_MacOS10_6_7.zip "../BOINC_Installer/Pkg_Root/Library/Screen Savers/${SSAVERAPPNAME}.saver/Contents/MacOS" +mv "../BOINC_Installer/Pkg_Root/Library/Screen Savers/${SSAVERAPPNAME}.saver/Contents/MacOS/BOINCSaver" "../BOINC_Installer/Pkg_Root/Library/Screen Savers/${SSAVERAPPNAME}.saver/Contents/MacOS/${SSAVERAPPNAME}" + +sed -i "" s/BOINCSaver/"${SSAVERAPPNAME}"/g "../BOINC_Installer/Pkg_Root/Library/Screen Savers/${SSAVERAPPNAME}.saver/Contents/Info.plist" +cp -fpRL clientscr/res/${SSAVERPREVIEW} "../BOINC_Installer/Pkg_Root/Library/Screen Savers/${SSAVERAPPNAME}.saver/Contents/Resources/boinc.jpg" +cp -fpRL clientscr/res/${SSAVERTHUMBNAIL}.png "../BOINC_Installer/Pkg_Root/Library/Screen Savers/${SSAVERAPPNAME}.saver/Contents/Resources/thumbnail.png" +cp -fpRL clientscr/res/${SSAVERTHUMBNAIL}\@2x.png "../BOINC_Installer/Pkg_Root/Library/Screen Savers/${SSAVERAPPNAME}.saver/Contents/Resources/thumbnail\@2x.png" +cp -fpRL clientscr/res/${SSAVERLOGO} "../BOINC_Installer/Pkg_Root/Library/Screen Savers/${SSAVERAPPNAME}.saver/Contents/Resources/boinc_ss_logo.png" +cp -fpRL clientscr/res/${SSAVERLOGO} ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/ +sed -i "" s/BOINC/"${SSAVERAPPNAME}"/g "../BOINC_Installer/Pkg_Root/Library/Screen Savers/${SSAVERAPPNAME}.saver/Contents/Resources/English.lproj/InfoPlist.strings" + + +## Copy the localization files into the installer tree +## Old way copies CVS and *.po files which are not needed +## cp -fpRL 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/* + + +## If you wish to code sign the client, manager, installer and uninstaller, +## create a file ~/BOINCCodeSignIdentities.txt whose first line is the +## application code signing identity and whose second line is the installer +## code signing identity. +## If you wish to also code sign the installer package, add a second line +## to ~/BOINCCodeSignIdentities.txt with the installer code signing identity. +## +## Code signing using a registered Apple Developer ID is necessary for GateKeeper +## with default settings to allow running downloaded applications under OS 10.8 +## Although code signing the installer application is sufficient to satisfy +## GateKeeper, OS X's software firewall can interfere with RPCs between the +## client and manager. Signing them may make this less likely to be a problem. +if [ -e "${HOME}/BOINCCodeSignIdentities.txt" ]; then + exec 8<"${HOME}/BOINCCodeSignIdentities.txt" + read APPSIGNINGIDENTITY <&8 + read INSTALLERSIGNINGIDENTITY <&8 + + # Code Sign the BOINC client if we have a signing identity + sudo codesign -f -s "${APPSIGNINGIDENTITY}" "../BOINC_Installer/Pkg_Root/Applications/BOINCManager.app/Contents/Resources/boinc" + + # Code Sign the BOINC Manager if we have a signing identity + sudo codesign -f -s "${APPSIGNINGIDENTITY}" "../BOINC_Installer/Pkg_Root/Applications/BOINCManager.app" +fi + +sudo rm -dfR ../BOINC_Installer/New_Release_$1_$2_$3/ + +mkdir -p ../BOINC_Installer/New_Release_$1_$2_$3/ +mkdir -p ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch +mkdir -p ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras +mkdir -p ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin +mkdir -p ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_SymbolTables + +cp -fp ../BOINC_Installer/Installer\ Resources/ReadMe.rtf ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch +sudo chown -R 501:admin ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/ReadMe.rtf +sudo chmod -R 644 ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/ReadMe.rtf + +cp -fp COPYING ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYING.txt +sudo chown -R 501:admin ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYING.txt +sudo chmod -R 644 ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYING.txt + +cp -fp COPYING.LESSER ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYING.LESSER.txt +sudo chown -R 501:admin ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYING.LESSER.txt +sudo chmod -R 644 ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYING.LESSER.txt + +cp -fp COPYRIGHT ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYRIGHT.txt +sudo chown -R 501:admin ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYRIGHT.txt +sudo chmod -R 644 ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYRIGHT.txt + +cp -fpRL "${BUILDPATH}/Uninstall BOINC.app/." "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/" +# Copy the localization files for the uninstaller into its bundle +find locale -name 'BOINC-Setup.mo' | cut -d '/' -f 2 | awk '{print "\"../BOINC_Installer/locale/"$0"\""}' | xargs mkdir -p + +find locale -name 'BOINC-Setup.mo' | cut -d '/' -f 2,3 | awk '{print "cp \"locale/"$0"\" \"../BOINC_Installer/locale/"$0"\""}' | bash + +sudo cp -fpRL ../BOINC_Installer/locale "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Resources" +sed -i "" s/"Uninstall BOINC"/"${UNINSTALLERAPPNAME}"/g "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Info.plist" +sed -i "" s/"MacUninstaller"/"${UNINSTALLERICON}"/g "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Info.plist" +mv "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/MacOS/Uninstall BOINC" "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/MacOS/${UNINSTALLERAPPNAME}" +sed -i "" s/"Uninstall BOINC"/"${UNINSTALLERAPPNAME}"/g "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Resources/English.lproj/InfoPlist.strings" +cp -fpRL ./clientgui/res/${UNINSTALLERICON}.icns "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Resources/" +rm -rf "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Resources/MacUninstaller.icns" +cp -fpRL ./clientgui/res/${UNINSTALLERTRASHICON}.icns "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Resources/PutInTrash.icns" + +sudo chown -R root:admin "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app" +sudo chmod -R u+r-w,g+r-w,o+r-w "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app" + +# Copy the installer wrapper application "BOINC Installer.app" +cp -fpRL "${BUILDPATH}/BOINC Installer.app/." "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/" +sed -i "" s/"BOINC Installer"/"${INSTALLERAPPNAME}"/g "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Info.plist" +sed -i "" s/"MacInstaller"/"${INSTALLERICON}"/g "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Info.plist" +cp -fpRL ./clientgui/res/${INSTALLERICON}.icns "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/" +rm -rf "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/MacInstaller.icns" +mv "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/MacOS/BOINC Installer" "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/MacOS/${INSTALLERAPPNAME}" +sed -i "" s/"BOINC Installer"/"${INSTALLERAPPNAME}"/g "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/English.lproj/InfoPlist.strings" + +cp -fpR "${BUILDPATH}/PostInstall.app" "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources" + +# Build the installer package inside the wrapper application's bundle + +cd "../BOINC_Installer/Installer templates" + +pkgbuild --quiet --scripts "../Installer Scripts" --ownership recommended --identifier edu.berkeley.boinc --root "../Pkg_Root" --component-plist "./complist.plist" "./BOINC.pkg" + +if [ -n "${INSTALLERSIGNINGIDENTITY}" ]; then + productbuild --sign "${INSTALLERSIGNINGIDENTITY}" --quiet --resources "../Installer Resources/" --version "BOINC Manager $1.$2.$3" --distribution "./myDistribution" "../New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/BOINC Installer.app/Contents/Resources/BOINC.pkg" +else + productbuild --quiet --resources "../Installer Resources/" --version "${MANAGERAPPNAME} $1.$2.$3" --distribution "./myDistribution" "../New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/${LONGBRANDNAME}.pkg" +fi +cd "${BOINCPath}" + +# Build the stand-alone client distribution +cp -fpRL mac_build/Mac_SA_Insecure.sh ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/ +cp -fpRL mac_build/Mac_SA_Secure.sh ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/ +cp -fpRL COPYING ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/COPYING.txt +cp -fpRL COPYING.LESSER ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/COPYING.LESSER.txt +cp -fpRL COPYRIGHT ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/COPYRIGHT.txt +cp -fp mac_installer/License.rtf ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/ +sudo chown -R 501:admin ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/* +sudo chmod -R 644 ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/* + +mkdir -p ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir +cp -fpRL "${BUILDPATH}/boinc" ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/ +cp -fpRL "${BUILDPATH}/boinccmd" ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/ +cp -fpRL curl/ca-bundle.crt ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/ + +mkdir -p ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/switcher +cp -fpRL "${BUILDPATH}/switcher" ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/switcher/ +cp -fpRL "${BUILDPATH}/setprojectgrp" ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/switcher/ + +sudo chown -R root:admin ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/* +sudo chmod -R u+rw-s,g+r-ws,o+r-w ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/* + +cp -fpRL "${BUILDPATH}/SymbolTables/" ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_SymbolTables/ + +## If you wish to code sign the installer and uninstaller, create a file +## ~/BOINCCodeSignIdentities.txt whose first line is the code signing identity +## +## Code signing using a registered Apple Developer ID is necessary for GateKeeper +## with default settings to allow running downloaded applications under OS 10.8 +if [ -n "${APPSIGNINGIDENTITY}" ]; then + # Code Sign the BOINC installer application if we have a signing identity + sudo codesign -f -s "${APPSIGNINGIDENTITY}" "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/BOINC Installer.app" + + # Code Sign the BOINC uninstaller application if we have a signing identity + sudo codesign -f -s "${APPSIGNINGIDENTITY}" "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/Uninstall BOINC.app" +fi + +cd ../BOINC_Installer/New_Release_$1_$2_$3 + +## Make everything in directory user-writable so project web code using auto-attach +## can delete it after inflating, modifying installer name and recompressing it. +sudo chmod -R u+w ./${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch + +## Use ditto instead of zip utility to preserve resource forks and Finder attributes (custom icon, hide extension) +ditto -ck --sequesterRsrc --keepParent ${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch ${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch.zip +ditto -ck --sequesterRsrc --keepParent ${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin ${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin.zip +ditto -ck --sequesterRsrc --keepParent ${SHORTBRANDNAME}_$1.$2.$3_macOSX_SymbolTables ${SHORTBRANDNAME}_$1.$2.$3_macOSX_SymbolTables.zip + +#popd +cd "${BOINCPath}" + +sudo rm -dfR ../BOINC_Installer/Installer\ Resources/ +sudo rm -dfR ../BOINC_Installer/Installer\ Scripts/ +sudo rm -dfR ../BOINC_Installer/Pkg_Root +sudo rm -dfR ../BOINC_Installer/locale +sudo rm -dfR ../BOINC_Installer/Installer\ templates +sudo rm -dfR ../BOINC_Installer/expandedVBox +sudo rm -dfR mac_installer/complist.plist.${SHORTBRANDNAME} +sudo rm -dfR mac_installer/myDistribution.${SHORTBRANDNAME} + +return 0 From 2260ee53922dd95b3c2b848eda4586d256626b53 Mon Sep 17 00:00:00 2001 From: Jonathan Armstrong Date: Wed, 27 Jun 2018 14:19:58 -0500 Subject: [PATCH 02/16] Fixed copying branding file to PostInstall.app and added copy of new installer icns file to PostInstall app. --- mac_installer/release_brand.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mac_installer/release_brand.sh b/mac_installer/release_brand.sh index 7b4c1b998d..29036c1330 100755 --- a/mac_installer/release_brand.sh +++ b/mac_installer/release_brand.sh @@ -199,8 +199,6 @@ cp -fpRL clientgui/res/${MANAGERICON}.icns "../BOINC_Installer/Pkg_Root/Applicat rm -rf "../BOINC_Installer/Pkg_Root/Applications/${MANAGERAPPNAME}.app/Contents/Resources/BOINCMgr.icns" sed -i "" s/"BOINC Manager"/"${MANAGERAPPNAME}"/g "../BOINC_Installer/Pkg_Root/Applications/${MANAGERAPPNAME}.app/Contents/Resources/English.lproj/InfoPlist.strings" -#JDA Need Branding -cp -fpRL ./mac_installer/${BRANDINGFILE} ../BOINC_Installer/Installer\ Resources/Branding cp -fpRL ./mac_installer/${BRANDINGFILE} "../BOINC_Installer/Pkg_Root/Applications/${MANAGERAPPNAME}.app/Contents/Resources/Branding" cp -fpRL ./mac_installer/${BRANDINGFILE} ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/Branding @@ -325,6 +323,9 @@ sed -i "" s/"BOINC Installer"/"${INSTALLERAPPNAME}"/g "../BOINC_Installer/New_Re cp -fpR "${BUILDPATH}/PostInstall.app" "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources" +cp -fpRL ./mac_installer/${BRANDINGFILE} "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/PostInstall.app/Contents/Resources/Branding" +cp -fpRL ./clientgui/res/${INSTALLERICON}.icns "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/PostInstall.app/Contents/Resources/MacInstaller.icns" + # Build the installer package inside the wrapper application's bundle cd "../BOINC_Installer/Installer templates" From 0ce507eefb71d1321c6c3da6c928f15fb8a79819 Mon Sep 17 00:00:00 2001 From: Jonathan Armstrong Date: Thu, 28 Jun 2018 09:22:38 -0500 Subject: [PATCH 03/16] Moved Branding out of file and into enviornment variable and moved modification of plist and distribution file to temporary intaller directory --- mac_installer/WCGrid-Branding | 1 - mac_installer/WCGridInstaller.environment | 2 +- mac_installer/release_brand.sh | 28 +++++++++++------------ 3 files changed, 14 insertions(+), 17 deletions(-) delete mode 100644 mac_installer/WCGrid-Branding diff --git a/mac_installer/WCGrid-Branding b/mac_installer/WCGrid-Branding deleted file mode 100644 index bbbe5a012a..0000000000 --- a/mac_installer/WCGrid-Branding +++ /dev/null @@ -1 +0,0 @@ -BrandId=4 diff --git a/mac_installer/WCGridInstaller.environment b/mac_installer/WCGridInstaller.environment index 3e6da37fba..5820fea45d 100644 --- a/mac_installer/WCGridInstaller.environment +++ b/mac_installer/WCGridInstaller.environment @@ -18,4 +18,4 @@ INSTALLERAPPNAME="World Community Grid Installer" INSTALLERICON="WCGrid" READMEFILE="WCGrid-ReadMe.rtf" -BRANDINGFILE="WCGrid-Branding" +BRANDING_INFO="BrandId=4" diff --git a/mac_installer/release_brand.sh b/mac_installer/release_brand.sh index 29036c1330..af94bb4216 100755 --- a/mac_installer/release_brand.sh +++ b/mac_installer/release_brand.sh @@ -138,17 +138,16 @@ mkdir -p ../BOINC_Installer/Installer\ templates cp -fp mac_installer/License.rtf ../BOINC_Installer/Installer\ Resources/ cp -fp mac_installer/${READMEFILE} ../BOINC_Installer/Installer\ Resources/ReadMe.rtf -cp -fp mac_installer/complist.plist mac_installer/complist.plist.${SHORTBRANDNAME} -sed -i "" s/BOINCManager.app/"${MANAGERAPPNAME}.app"/g mac_installer/complist.plist.${SHORTBRANDNAME} -sed -i "" s/BOINCSaver.saver/"${SSAVERAPPNAME}.saver"/g mac_installer/complist.plist.${SHORTBRANDNAME} -cp -fp mac_installer/complist.plist.${SHORTBRANDNAME} ../BOINC_Installer/Installer\ templates/complist.plist +cp -fp mac_installer/complist.plist ../BOINC_Installer/Installer\ templates/complist.plist +sed -i "" s/BOINCManager.app/"${MANAGERAPPNAME}.app"/g ../BOINC_Installer/Installer\ templates/complist.plist +sed -i "" s/BOINCSaver.saver/"${SSAVERAPPNAME}.saver"/g ../BOINC_Installer/Installer\ templates/complist.plist -cp -fp mac_installer/myDistribution mac_installer/myDistribution.${SHORTBRANDNAME} -sed -i "" s/BOINCManager.app/"${MANAGERAPPNAME}.app"/g mac_installer/myDistribution.${SHORTBRANDNAME} -sed -i "" s/BOINCSaver.saver/"${SSAVERAPPNAME}.saver"/g mac_installer/myDistribution.${SHORTBRANDNAME} -sed -i "" s/"BOINC Manager"/"${MANAGERAPPNAME}"/g mac_installer/myDistribution.${SHORTBRANDNAME} -cp -fp mac_installer/myDistribution.${SHORTBRANDNAME} ../BOINC_Installer/Installer\ templates/myDistribution +cp -fp mac_installer/myDistribution ../BOINC_Installer/Installer\ templates/myDistribution +sed -i "" s/BOINCManager.app/"${MANAGERAPPNAME}.app"/g ../BOINC_Installer/Installer\ templates/myDistribution +sed -i "" s/BOINCSaver.saver/"${SSAVERAPPNAME}.saver"/g ../BOINC_Installer/Installer\ templates/myDistribution +sed -i "" s/"BOINC Manager"/"${MANAGERAPPNAME}"/g ../BOINC_Installer/Installer\ templates/myDistribution + # Update version number sed -i "" s/""/"$1.$2.$3"/g ../BOINC_Installer/Installer\ Resources/ReadMe.rtf @@ -199,8 +198,9 @@ cp -fpRL clientgui/res/${MANAGERICON}.icns "../BOINC_Installer/Pkg_Root/Applicat rm -rf "../BOINC_Installer/Pkg_Root/Applications/${MANAGERAPPNAME}.app/Contents/Resources/BOINCMgr.icns" sed -i "" s/"BOINC Manager"/"${MANAGERAPPNAME}"/g "../BOINC_Installer/Pkg_Root/Applications/${MANAGERAPPNAME}.app/Contents/Resources/English.lproj/InfoPlist.strings" -cp -fpRL ./mac_installer/${BRANDINGFILE} "../BOINC_Installer/Pkg_Root/Applications/${MANAGERAPPNAME}.app/Contents/Resources/Branding" -cp -fpRL ./mac_installer/${BRANDINGFILE} ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/Branding +echo ${BRANDING_INFO} > "../BOINC_Installer/Pkg_Root/Applications/${MANAGERAPPNAME}.app/Contents/Resources/Branding" +echo ${BRANDING_INFO} > ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/Branding + ## OS 10.6 and OS10.7 require screensavers built with Garbage Collection, but Xcode 5.0.2 @@ -218,7 +218,7 @@ mv "../BOINC_Installer/Pkg_Root/Library/Screen Savers/${SSAVERAPPNAME}.saver/Con sed -i "" s/BOINCSaver/"${SSAVERAPPNAME}"/g "../BOINC_Installer/Pkg_Root/Library/Screen Savers/${SSAVERAPPNAME}.saver/Contents/Info.plist" cp -fpRL clientscr/res/${SSAVERPREVIEW} "../BOINC_Installer/Pkg_Root/Library/Screen Savers/${SSAVERAPPNAME}.saver/Contents/Resources/boinc.jpg" cp -fpRL clientscr/res/${SSAVERTHUMBNAIL}.png "../BOINC_Installer/Pkg_Root/Library/Screen Savers/${SSAVERAPPNAME}.saver/Contents/Resources/thumbnail.png" -cp -fpRL clientscr/res/${SSAVERTHUMBNAIL}\@2x.png "../BOINC_Installer/Pkg_Root/Library/Screen Savers/${SSAVERAPPNAME}.saver/Contents/Resources/thumbnail\@2x.png" +cp -fpRL clientscr/res/${SSAVERTHUMBNAIL}\@2x.png "../BOINC_Installer/Pkg_Root/Library/Screen Savers/${SSAVERAPPNAME}.saver/Contents/Resources/thumbnail@2x.png" cp -fpRL clientscr/res/${SSAVERLOGO} "../BOINC_Installer/Pkg_Root/Library/Screen Savers/${SSAVERAPPNAME}.saver/Contents/Resources/boinc_ss_logo.png" cp -fpRL clientscr/res/${SSAVERLOGO} ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/ sed -i "" s/BOINC/"${SSAVERAPPNAME}"/g "../BOINC_Installer/Pkg_Root/Library/Screen Savers/${SSAVERAPPNAME}.saver/Contents/Resources/English.lproj/InfoPlist.strings" @@ -323,7 +323,7 @@ sed -i "" s/"BOINC Installer"/"${INSTALLERAPPNAME}"/g "../BOINC_Installer/New_Re cp -fpR "${BUILDPATH}/PostInstall.app" "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources" -cp -fpRL ./mac_installer/${BRANDINGFILE} "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/PostInstall.app/Contents/Resources/Branding" +echo ${BRANDING_INFO} > "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/PostInstall.app/Contents/Resources/Branding" cp -fpRL ./clientgui/res/${INSTALLERICON}.icns "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/PostInstall.app/Contents/Resources/MacInstaller.icns" # Build the installer package inside the wrapper application's bundle @@ -396,7 +396,5 @@ sudo rm -dfR ../BOINC_Installer/Pkg_Root sudo rm -dfR ../BOINC_Installer/locale sudo rm -dfR ../BOINC_Installer/Installer\ templates sudo rm -dfR ../BOINC_Installer/expandedVBox -sudo rm -dfR mac_installer/complist.plist.${SHORTBRANDNAME} -sudo rm -dfR mac_installer/myDistribution.${SHORTBRANDNAME} return 0 From 90b77f29ed92f359e45332ac4c93345ee4315bf3 Mon Sep 17 00:00:00 2001 From: Jonathan Armstrong Date: Thu, 28 Jun 2018 12:35:58 -0500 Subject: [PATCH 04/16] Updating skin for World Community Grid --- clientgui/skins/World Community Grid/skin.xml | 35 +++++++++++++++++- .../skins/World Community Grid/wcg_about.ico | Bin 0 -> 5244 bytes 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 clientgui/skins/World Community Grid/wcg_about.ico diff --git a/clientgui/skins/World Community Grid/skin.xml b/clientgui/skins/World Community Grid/skin.xml index 2d4234df01..e9878af393 100644 --- a/clientgui/skins/World Community Grid/skin.xml +++ b/clientgui/skins/World Community Grid/skin.xml @@ -27,11 +27,44 @@ 0:100:157 - World Community Grid - BOINC Manager + World Community Grid World Community Grid World Community Grid https://www.worldcommunitygrid.org https://www.worldcommunitygrid.org/boinc.do + wcg_about.ico + + + wcg_play.png + + + + + + wcg_32.png + + + + + + wcg_stop.png + + + + + + wcg_pause.png + + + 1 + + + World Community Grid - Add Project + + + World Community Grid - Use Account Manager + + diff --git a/clientgui/skins/World Community Grid/wcg_about.ico b/clientgui/skins/World Community Grid/wcg_about.ico new file mode 100644 index 0000000000000000000000000000000000000000..4a78a950fdadcdcf6e653e016ea85133419d7457 GIT binary patch literal 5244 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 wW3t=9J}sp4p3 Date: Fri, 29 Jun 2018 01:13:16 -0700 Subject: [PATCH 05/16] Fixed logic for Dock "snooze" and "disconnected badges" to properly follow branded status bar (taskbar) icon. Display branded icon in About dialog. Fixed comment in script to reflect change from BRANDINGFILE to BRANDING_INFO in explanation of format of brand description file. Fixed bugs in script when signing client, manager, installer, uninstaller and / or installer package. Changed name of destination directory for built script products to avoid overwriting builds for other brands or unbranded builds. --- clientgui/BOINCTaskBar.cpp | 32 ++++++-- clientgui/DlgAbout.cpp | 4 - mac_installer/release_brand.sh | 130 ++++++++++++++++----------------- 3 files changed, 90 insertions(+), 76 deletions(-) diff --git a/clientgui/BOINCTaskBar.cpp b/clientgui/BOINCTaskBar.cpp index df045d0454..255766c61b 100644 --- a/clientgui/BOINCTaskBar.cpp +++ b/clientgui/BOINCTaskBar.cpp @@ -87,9 +87,24 @@ CTaskBarIcon::CTaskBarIcon(wxString title, wxIconBundle* icon, wxIconBundle* ico wxTaskBarIconEx(wxT("BOINCManagerSystray"), 1) #endif { - m_iconTaskBarNormal = icon->GetIcon(GetBestIconSize(), wxIconBundle::FALLBACK_NEAREST_LARGER); - m_iconTaskBarDisconnected = iconDisconnected->GetIcon(GetBestIconSize(), wxIconBundle::FALLBACK_NEAREST_LARGER); - m_iconTaskBarSnooze = iconSnooze->GetIcon(GetBestIconSize(), wxIconBundle::FALLBACK_NEAREST_LARGER); +#ifdef __WXMAC__ + m_iconType = iconType; + m_pNotificationRequest = NULL; + if (iconType == wxTBI_DOCK) { + // This code expects the wxTBI_CUSTOM_STATUSITEM CTaskBarIcon + // to be constructed before the wxTBI_DOCK CTaskBarIcon. + // + // Ensure that m_pTaskBarIcon and m_pMacDockIcon use same copy of each icon. + m_iconTaskBarNormal = wxGetApp().GetTaskBarIcon()->m_iconTaskBarNormal; + m_iconTaskBarDisconnected = wxGetApp().GetTaskBarIcon()->m_iconTaskBarDisconnected; + m_iconTaskBarSnooze = wxGetApp().GetTaskBarIcon()->m_iconTaskBarSnooze; + } else +#endif + { + m_iconTaskBarNormal = icon->GetIcon(GetBestIconSize(), wxIconBundle::FALLBACK_NEAREST_LARGER); + m_iconTaskBarDisconnected = iconDisconnected->GetIcon(GetBestIconSize(), wxIconBundle::FALLBACK_NEAREST_LARGER); + m_iconTaskBarSnooze = iconSnooze->GetIcon(GetBestIconSize(), wxIconBundle::FALLBACK_NEAREST_LARGER); + } m_SnoozeGPUMenuItem = NULL; m_bTaskbarInitiatedShutdown = false; @@ -98,10 +113,6 @@ CTaskBarIcon::CTaskBarIcon(wxString title, wxIconBundle* icon, wxIconBundle* ico m_dtLastNotificationAlertExecuted = wxDateTime((time_t)0); m_iLastNotificationUnreadMessageCount = 0; -#ifdef __WXMAC__ - m_iconType = iconType; - m_pNotificationRequest = NULL; -#endif } @@ -348,6 +359,13 @@ void CTaskBarIcon::OnReloadSkin(CTaskbarEvent& WXUNUSED(event)) { m_iconTaskBarNormal = pSkinAdvanced->GetApplicationIcon()->GetIcon(GetBestIconSize(), wxIconBundle::FALLBACK_NEAREST_LARGER); m_iconTaskBarDisconnected = pSkinAdvanced->GetApplicationDisconnectedIcon()->GetIcon(GetBestIconSize(), wxIconBundle::FALLBACK_NEAREST_LARGER); m_iconTaskBarSnooze = pSkinAdvanced->GetApplicationSnoozeIcon()->GetIcon(GetBestIconSize(), wxIconBundle::FALLBACK_NEAREST_LARGER); + +#ifdef __WXMAC__ + // Ensure that m_pTaskBarIcon and m_pMacDockIcon use same copy of each icon. + wxGetApp().GetMacDockIcon()->m_iconTaskBarNormal = m_iconTaskBarNormal; + wxGetApp().GetMacDockIcon()->m_iconTaskBarDisconnected = m_iconTaskBarDisconnected; + wxGetApp().GetMacDockIcon()->m_iconTaskBarSnooze = m_iconTaskBarSnooze; +#endif } diff --git a/clientgui/DlgAbout.cpp b/clientgui/DlgAbout.cpp index 5ce22b3053..527b3c1ea9 100644 --- a/clientgui/DlgAbout.cpp +++ b/clientgui/DlgAbout.cpp @@ -121,15 +121,11 @@ bool CDlgAbout::Create(wxWindow* parent, wxWindowID id, const wxString& caption, ); m_AboutBOINCTitleCtrl->SetLabel(buf); -#if 0 m_AboutBOINCLogoCtrl->SetBitmap(wxBitmap(*(pSkinAdvanced->GetApplicationLogo()))); - m_AboutBOINCSloganCtrl->SetLabel(wxEmptyString); - m_AboutBOINCURLCtrl->SetLabel( pSkinAdvanced->GetOrganizationWebsite().c_str() ); -#endif GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); diff --git a/mac_installer/release_brand.sh b/mac_installer/release_brand.sh index af94bb4216..2584e9dd7c 100755 --- a/mac_installer/release_brand.sh +++ b/mac_installer/release_brand.sh @@ -41,7 +41,7 @@ ## INSTALLERAPPNAME="World Community Grid Installer" ##The name of the installer app ## INSTALLERICON="WCGridInstaller.icns" ##The icon for the branded installer ## READMEFILE="WCGrid-ReadMe.rtf" ##The branded readme file -## BRANDINGFILE="WCGrid-Branding" ##The branding file +## BRANDING_INFO="BrandId=4" ##Info to write into the branding file ## ## NOTE: This script requires Mac OS 10.6 or later, and uses XCode developer ## tools. So you must have installed XCode Developer Tools on the Mac @@ -264,67 +264,67 @@ if [ -e "${HOME}/BOINCCodeSignIdentities.txt" ]; then read INSTALLERSIGNINGIDENTITY <&8 # Code Sign the BOINC client if we have a signing identity - sudo codesign -f -s "${APPSIGNINGIDENTITY}" "../BOINC_Installer/Pkg_Root/Applications/BOINCManager.app/Contents/Resources/boinc" + sudo codesign -f -s "${APPSIGNINGIDENTITY}" "../BOINC_Installer/Pkg_Root/Applications/${MANAGERAPPNAME}.app/Contents/Resources/boinc" # Code Sign the BOINC Manager if we have a signing identity - sudo codesign -f -s "${APPSIGNINGIDENTITY}" "../BOINC_Installer/Pkg_Root/Applications/BOINCManager.app" + sudo codesign -f -s "${APPSIGNINGIDENTITY}" "../BOINC_Installer/Pkg_Root/Applications/${MANAGERAPPNAME}.app" fi -sudo rm -dfR ../BOINC_Installer/New_Release_$1_$2_$3/ +sudo rm -dfR ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/ -mkdir -p ../BOINC_Installer/New_Release_$1_$2_$3/ -mkdir -p ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch -mkdir -p ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras -mkdir -p ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin -mkdir -p ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_SymbolTables +mkdir -p ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/ +mkdir -p ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch +mkdir -p ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras +mkdir -p ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin +mkdir -p ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_SymbolTables -cp -fp ../BOINC_Installer/Installer\ Resources/ReadMe.rtf ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch -sudo chown -R 501:admin ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/ReadMe.rtf -sudo chmod -R 644 ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/ReadMe.rtf +cp -fp ../BOINC_Installer/Installer\ Resources/ReadMe.rtf ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch +sudo chown -R 501:admin ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/ReadMe.rtf +sudo chmod -R 644 ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/ReadMe.rtf -cp -fp COPYING ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYING.txt -sudo chown -R 501:admin ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYING.txt -sudo chmod -R 644 ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYING.txt +cp -fp COPYING ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYING.txt +sudo chown -R 501:admin ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYING.txt +sudo chmod -R 644 ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYING.txt -cp -fp COPYING.LESSER ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYING.LESSER.txt -sudo chown -R 501:admin ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYING.LESSER.txt -sudo chmod -R 644 ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYING.LESSER.txt +cp -fp COPYING.LESSER ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYING.LESSER.txt +sudo chown -R 501:admin ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYING.LESSER.txt +sudo chmod -R 644 ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYING.LESSER.txt -cp -fp COPYRIGHT ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYRIGHT.txt -sudo chown -R 501:admin ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYRIGHT.txt -sudo chmod -R 644 ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYRIGHT.txt +cp -fp COPYRIGHT ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYRIGHT.txt +sudo chown -R 501:admin ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYRIGHT.txt +sudo chmod -R 644 ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/COPYRIGHT.txt -cp -fpRL "${BUILDPATH}/Uninstall BOINC.app/." "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/" +cp -fpRL "${BUILDPATH}/Uninstall BOINC.app/." "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/" # Copy the localization files for the uninstaller into its bundle find locale -name 'BOINC-Setup.mo' | cut -d '/' -f 2 | awk '{print "\"../BOINC_Installer/locale/"$0"\""}' | xargs mkdir -p find locale -name 'BOINC-Setup.mo' | cut -d '/' -f 2,3 | awk '{print "cp \"locale/"$0"\" \"../BOINC_Installer/locale/"$0"\""}' | bash -sudo cp -fpRL ../BOINC_Installer/locale "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Resources" -sed -i "" s/"Uninstall BOINC"/"${UNINSTALLERAPPNAME}"/g "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Info.plist" -sed -i "" s/"MacUninstaller"/"${UNINSTALLERICON}"/g "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Info.plist" -mv "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/MacOS/Uninstall BOINC" "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/MacOS/${UNINSTALLERAPPNAME}" -sed -i "" s/"Uninstall BOINC"/"${UNINSTALLERAPPNAME}"/g "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Resources/English.lproj/InfoPlist.strings" -cp -fpRL ./clientgui/res/${UNINSTALLERICON}.icns "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Resources/" -rm -rf "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Resources/MacUninstaller.icns" -cp -fpRL ./clientgui/res/${UNINSTALLERTRASHICON}.icns "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Resources/PutInTrash.icns" +sudo cp -fpRL ../BOINC_Installer/locale "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Resources" +sed -i "" s/"Uninstall BOINC"/"${UNINSTALLERAPPNAME}"/g "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Info.plist" +sed -i "" s/"MacUninstaller"/"${UNINSTALLERICON}"/g "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Info.plist" +mv "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/MacOS/Uninstall BOINC" "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/MacOS/${UNINSTALLERAPPNAME}" +sed -i "" s/"Uninstall BOINC"/"${UNINSTALLERAPPNAME}"/g "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Resources/English.lproj/InfoPlist.strings" +cp -fpRL ./clientgui/res/${UNINSTALLERICON}.icns "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Resources/" +rm -rf "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Resources/MacUninstaller.icns" +cp -fpRL ./clientgui/res/${UNINSTALLERTRASHICON}.icns "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app/Contents/Resources/PutInTrash.icns" -sudo chown -R root:admin "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app" -sudo chmod -R u+r-w,g+r-w,o+r-w "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app" +sudo chown -R root:admin "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app" +sudo chmod -R u+r-w,g+r-w,o+r-w "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app" # Copy the installer wrapper application "BOINC Installer.app" -cp -fpRL "${BUILDPATH}/BOINC Installer.app/." "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/" -sed -i "" s/"BOINC Installer"/"${INSTALLERAPPNAME}"/g "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Info.plist" -sed -i "" s/"MacInstaller"/"${INSTALLERICON}"/g "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Info.plist" -cp -fpRL ./clientgui/res/${INSTALLERICON}.icns "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/" -rm -rf "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/MacInstaller.icns" -mv "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/MacOS/BOINC Installer" "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/MacOS/${INSTALLERAPPNAME}" -sed -i "" s/"BOINC Installer"/"${INSTALLERAPPNAME}"/g "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/English.lproj/InfoPlist.strings" +cp -fpRL "${BUILDPATH}/BOINC Installer.app/." "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/" +sed -i "" s/"BOINC Installer"/"${INSTALLERAPPNAME}"/g "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Info.plist" +sed -i "" s/"MacInstaller"/"${INSTALLERICON}"/g "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Info.plist" +cp -fpRL ./clientgui/res/${INSTALLERICON}.icns "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/" +rm -rf "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/MacInstaller.icns" +mv "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/MacOS/BOINC Installer" "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/MacOS/${INSTALLERAPPNAME}" +sed -i "" s/"BOINC Installer"/"${INSTALLERAPPNAME}"/g "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/English.lproj/InfoPlist.strings" -cp -fpR "${BUILDPATH}/PostInstall.app" "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources" +cp -fpR "${BUILDPATH}/PostInstall.app" "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources" -echo ${BRANDING_INFO} > "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/PostInstall.app/Contents/Resources/Branding" -cp -fpRL ./clientgui/res/${INSTALLERICON}.icns "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/PostInstall.app/Contents/Resources/MacInstaller.icns" +echo ${BRANDING_INFO} > "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/PostInstall.app/Contents/Resources/Branding" +cp -fpRL ./clientgui/res/${INSTALLERICON}.icns "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/PostInstall.app/Contents/Resources/MacInstaller.icns" # Build the installer package inside the wrapper application's bundle @@ -333,35 +333,35 @@ cd "../BOINC_Installer/Installer templates" pkgbuild --quiet --scripts "../Installer Scripts" --ownership recommended --identifier edu.berkeley.boinc --root "../Pkg_Root" --component-plist "./complist.plist" "./BOINC.pkg" if [ -n "${INSTALLERSIGNINGIDENTITY}" ]; then - productbuild --sign "${INSTALLERSIGNINGIDENTITY}" --quiet --resources "../Installer Resources/" --version "BOINC Manager $1.$2.$3" --distribution "./myDistribution" "../New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/BOINC Installer.app/Contents/Resources/BOINC.pkg" + productbuild --sign "${INSTALLERSIGNINGIDENTITY}" --quiet --resources "../Installer Resources/" --version "${MANAGERAPPNAME} $1.$2.$3" --distribution "./myDistribution" "../New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/${LONGBRANDNAME}.pkg" else - productbuild --quiet --resources "../Installer Resources/" --version "${MANAGERAPPNAME} $1.$2.$3" --distribution "./myDistribution" "../New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/${LONGBRANDNAME}.pkg" + productbuild --quiet --resources "../Installer Resources/" --version "${MANAGERAPPNAME} $1.$2.$3" --distribution "./myDistribution" "../New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app/Contents/Resources/${LONGBRANDNAME}.pkg" fi cd "${BOINCPath}" # Build the stand-alone client distribution -cp -fpRL mac_build/Mac_SA_Insecure.sh ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/ -cp -fpRL mac_build/Mac_SA_Secure.sh ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/ -cp -fpRL COPYING ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/COPYING.txt -cp -fpRL COPYING.LESSER ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/COPYING.LESSER.txt -cp -fpRL COPYRIGHT ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/COPYRIGHT.txt -cp -fp mac_installer/License.rtf ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/ -sudo chown -R 501:admin ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/* -sudo chmod -R 644 ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/* +cp -fpRL mac_build/Mac_SA_Insecure.sh ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/ +cp -fpRL mac_build/Mac_SA_Secure.sh ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/ +cp -fpRL COPYING ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/COPYING.txt +cp -fpRL COPYING.LESSER ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/COPYING.LESSER.txt +cp -fpRL COPYRIGHT ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/COPYRIGHT.txt +cp -fp mac_installer/License.rtf ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/ +sudo chown -R 501:admin ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/* +sudo chmod -R 644 ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/* -mkdir -p ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir -cp -fpRL "${BUILDPATH}/boinc" ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/ -cp -fpRL "${BUILDPATH}/boinccmd" ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/ -cp -fpRL curl/ca-bundle.crt ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/ +mkdir -p ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir +cp -fpRL "${BUILDPATH}/boinc" ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/ +cp -fpRL "${BUILDPATH}/boinccmd" ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/ +cp -fpRL curl/ca-bundle.crt ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/ -mkdir -p ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/switcher -cp -fpRL "${BUILDPATH}/switcher" ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/switcher/ -cp -fpRL "${BUILDPATH}/setprojectgrp" ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/switcher/ +mkdir -p ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/switcher +cp -fpRL "${BUILDPATH}/switcher" ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/switcher/ +cp -fpRL "${BUILDPATH}/setprojectgrp" ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/switcher/ -sudo chown -R root:admin ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/* -sudo chmod -R u+rw-s,g+r-ws,o+r-w ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/* +sudo chown -R root:admin ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/* +sudo chmod -R u+rw-s,g+r-ws,o+r-w ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_$arch-apple-darwin/move_to_boinc_dir/* -cp -fpRL "${BUILDPATH}/SymbolTables/" ../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_SymbolTables/ +cp -fpRL "${BUILDPATH}/SymbolTables/" ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_SymbolTables/ ## If you wish to code sign the installer and uninstaller, create a file ## ~/BOINCCodeSignIdentities.txt whose first line is the code signing identity @@ -370,13 +370,13 @@ cp -fpRL "${BUILDPATH}/SymbolTables/" ../BOINC_Installer/New_Release_$1_$2_$3/${ ## with default settings to allow running downloaded applications under OS 10.8 if [ -n "${APPSIGNINGIDENTITY}" ]; then # Code Sign the BOINC installer application if we have a signing identity - sudo codesign -f -s "${APPSIGNINGIDENTITY}" "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/BOINC Installer.app" + sudo codesign -f -s "${APPSIGNINGIDENTITY}" "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/${INSTALLERAPPNAME}.app" # Code Sign the BOINC uninstaller application if we have a signing identity - sudo codesign -f -s "${APPSIGNINGIDENTITY}" "../BOINC_Installer/New_Release_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/Uninstall BOINC.app" + sudo codesign -f -s "${APPSIGNINGIDENTITY}" "../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3/${SHORTBRANDNAME}_$1.$2.$3_macOSX_$arch/extras/${UNINSTALLERAPPNAME}.app" fi -cd ../BOINC_Installer/New_Release_$1_$2_$3 +cd ../BOINC_Installer/New_Release_${SHORTBRANDNAME}_$1_$2_$3 ## Make everything in directory user-writable so project web code using auto-attach ## can delete it after inflating, modifying installer name and recompressing it. From 7ff75fc5b0e7ccdeedefabae04febb225e2c5f0e Mon Sep 17 00:00:00 2001 From: Charlie Fenton Date: Fri, 29 Jun 2018 04:14:02 -0700 Subject: [PATCH 06/16] Recognize "World Community Grid.app" as part of BOINC when calculating BOINC and non-BOINC system resource usage --- lib/procinfo_mac.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/procinfo_mac.cpp b/lib/procinfo_mac.cpp index 5c7c9bc359..6c68aa1045 100644 --- a/lib/procinfo_mac.cpp +++ b/lib/procinfo_mac.cpp @@ -41,6 +41,7 @@ using std::vector; #define GRIDREPUBLIC_BRAND_ID 1 #define PROGRESSTHRUPROCESSORS_BRAND_ID 2 #define CHARITYENGINE_BRAND_ID 3 +#define WORLDCOMMUNITYGRID_BRAND_ID 4 // build table of all processes in system @@ -164,6 +165,11 @@ int procinfo_setup(PROC_MAP& pm) { p.is_boinc_app = true; } break; + case WORLDCOMMUNITYGRID_BRAND_ID: + if (!strcasestr(p.command, "World Community Grid")) { + p.is_boinc_app = true; + } + break; } pm.insert(std::pair(p.id, p)); } From 0266fae8c862cd3072677dcb5b122d90e948e8e3 Mon Sep 17 00:00:00 2001 From: Charlie Fenton Date: Tue, 3 Jul 2018 21:49:11 -0700 Subject: [PATCH 07/16] Mgr: Fix code to restore lost support for tag under <attach_to_account_manager> tag in skin, so that the Attach to Project Wizard and Attach to Account Manager Wizard dialogs can have different titles --- clientgui/SkinManager.cpp | 5 +++++ clientgui/SkinManager.h | 3 +++ clientgui/WizardAttach.cpp | 19 +++++++++++++++++-- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/clientgui/SkinManager.cpp b/clientgui/SkinManager.cpp index e75e45a588..4fca4577e5 100644 --- a/clientgui/SkinManager.cpp +++ b/clientgui/SkinManager.cpp @@ -756,6 +756,7 @@ CSkinWizardATAM::~CSkinWizardATAM() { void CSkinWizardATAM::Clear() { + m_strTitle = wxEmptyString; m_strAccountInfoMessage = wxEmptyString; } @@ -770,6 +771,10 @@ int CSkinWizardATAM::Parse(MIOFILE& in) { m_strAccountInfoMessage = wxString(strBuffer.c_str(), wxConvUTF8); continue; } + else if (parse_str(buf, "<title>", strBuffer)) { + m_strTitle = wxString(strBuffer.c_str(), wxConvUTF8); + continue; + } } InitializeDelayedValidation(); diff --git a/clientgui/SkinManager.h b/clientgui/SkinManager.h index 905d0e091f..5ad6b9fb5a 100644 --- a/clientgui/SkinManager.h +++ b/clientgui/SkinManager.h @@ -254,8 +254,11 @@ public: wxString GetAccountInfoMessage() { return m_strAccountInfoMessage; } + wxString GetWizardTitle() { return m_strTitle; } + private: wxString m_strAccountInfoMessage; + wxString m_strTitle; }; diff --git a/clientgui/WizardAttach.cpp b/clientgui/WizardAttach.cpp index 4fb999fa10..9b9d28268d 100644 --- a/clientgui/WizardAttach.cpp +++ b/clientgui/WizardAttach.cpp @@ -309,11 +309,26 @@ bool CWizardAttach::SyncToAccountManager() { ACCT_MGR_INFO ami; CMainDocument* pDoc = wxGetApp().GetDocument(); - wxASSERT(pDoc); - wxASSERT(wxDynamicCast(pDoc, CMainDocument)); + CSkinAdvanced* pSkinAdvanced = wxGetApp().GetSkinManager()->GetAdvanced(); + CSkinWizardATAM* pSkinWizardATAM = wxGetApp().GetSkinManager()->GetWizards()->GetWizardATAM(); + wxASSERT(pDoc); + wxASSERT(wxDynamicCast(pDoc, CMainDocument)); + wxASSERT(pSkinAdvanced); + wxASSERT(pSkinWizardATAM); + wxASSERT(wxDynamicCast(pSkinAdvanced, CSkinAdvanced)); + wxASSERT(wxDynamicCast(pSkinWizardATAM, CSkinWizardATAM)); + + + if (!pSkinWizardATAM->GetWizardTitle().IsEmpty()) { + SetTitle(pSkinWizardATAM->GetWizardTitle()); + } else { + SetTitle(pSkinAdvanced->GetApplicationName()); + } + IsAttachToProjectWizard = false; IsAccountManagerWizard = true; + pDoc->rpc.acct_mgr_info(ami); From 9f942cacff1edcae47f6e0d1082efe99c93bfd8e Mon Sep 17 00:00:00 2001 From: marius <mmillea@ucdavis.edu> Date: Sat, 7 Jul 2018 16:51:16 +0200 Subject: [PATCH 08/16] add virtualization info to host info page --- html/inc/host.inc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/html/inc/host.inc b/html/inc/host.inc index de0133e592..7b9ba12044 100644 --- a/html/inc/host.inc +++ b/html/inc/host.inc @@ -122,6 +122,7 @@ function show_host($host, $user, $ipprivate) { if ($host->serialnum) { row2(tra("Coprocessors"), gpu_desc($host->serialnum)); } + row2(tra("Virtualization"), vbox_desc($host->serialnum)); row2(tra("Operating System"), "$host->os_name <br> $host->os_version"); $v = boinc_version($host->serialnum); if ($v) { @@ -250,6 +251,21 @@ function host_nresults($host) { return BoincResult::count("hostid=$host->id"); } +function vbox_desc($x){ + if (preg_match("/\[vbox\|(.*)\|([01])\|([01])\]/",$x,$matches)){ + $desc = "Virtualbox [".$matches[1]."] ".tra("installed").", "; + if ($matches[2]=="1" and $matches[3]=="1") { + return $desc.tra("CPU has hardware virtualization support and it is enabled"); + } elseif ($matches[2]=="1" and $matches[3]=="0") { + return $desc.tra("CPU has hardware virtualization support but it is disabled"); + } elseif ($matches[2]=="0") { + return $desc.tra("CPU does not have hardware virtualization support"); + } + } else { + return tra("None"); + } +} + // Given string of the form [BOINC|vers][type|model|count|RAM|driver-vers][vbox|vers], // return a human-readable version of the GPU info // From 8ff7f01a1f1f5594d65e79cc2f12a59276099a94 Mon Sep 17 00:00:00 2001 From: Charlie Fenton <charlief@example.com> Date: Wed, 4 Jul 2018 13:59:00 +0300 Subject: [PATCH 09/16] [Manager] Fix time verification to allow '24:00' value in Preferences dialog Time verification simplification. Signed-off-by: Vitalii Koshura <lestat.de.lionkur@gmail.com> --- clientgui/DlgAdvPreferences.cpp | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/clientgui/DlgAdvPreferences.cpp b/clientgui/DlgAdvPreferences.cpp index d9248704f7..d254f5e2de 100644 --- a/clientgui/DlgAdvPreferences.cpp +++ b/clientgui/DlgAdvPreferences.cpp @@ -1006,33 +1006,17 @@ bool CDlgAdvPreferences::IsValidFloatValueBetween(const wxString& value, double /* checks if the value is a valid time */ bool CDlgAdvPreferences::IsValidTimeValue(const wxString& value) { - for(unsigned int i=0; i < value.Length();i++) { - if(!IsValidTimeChar(value[i])) { + for (unsigned int i = 0; i < value.Length(); i++) { + if (!IsValidTimeChar(value[i])) { return false; } } - //verify correct format and range of time values - int h = -1, m = -1; - //verify the format itself - int parsed = sscanf(value.c_str(), "%d:%d", &h, &m); - if (parsed != 2) { - return false; - } - //verify hours - if (h < 0 || h > 23) { - return false; - } - //verify minutes - if (m < 0 || m > 59) { - return false; - } //all chars are valid, now what is with the value as a whole ? + if (value == wxT("24:00")) return true; wxDateTime dt; - const wxChar* stopChar = dt.ParseFormat(value,wxT("%H:%M")); - if(stopChar==NULL && value != wxT("24:00")) { - // conversion failed - return false; - } + const wxChar* stopChar = dt.ParseFormat(value, wxT("%H:%M")); + if (stopChar == NULL) return false; // conversion failed + if (*stopChar != '\0') return false; // conversion failed return true; } From c5cf28a9758b48650c75f49829b53ff0c54d6934 Mon Sep 17 00:00:00 2001 From: Vitalii Koshura <lestat.de.lionkur@gmail.com> Date: Sat, 7 Jul 2018 23:52:57 +0300 Subject: [PATCH 10/16] [Manager] Always reconnect remote client without user prompt This fixes #2440 in the way discussed in #2441 Signed-off-by: Vitalii Koshura <lestat.de.lionkur@gmail.com> --- clientgui/BOINCBaseFrame.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/clientgui/BOINCBaseFrame.cpp b/clientgui/BOINCBaseFrame.cpp index 66523f4d81..45db23e9e4 100644 --- a/clientgui/BOINCBaseFrame.cpp +++ b/clientgui/BOINCBaseFrame.cpp @@ -556,6 +556,10 @@ void CBOINCBaseFrame::ShowConnectionFailedAlert() { return; } } + } else { + // Don't ask whether to reconnect to remote client + pDoc->Reconnect(); + return; } // %s is the application name From b2a51d78210e9a75230db0257df8efe9b26e57af Mon Sep 17 00:00:00 2001 From: Charlie Fenton <charlief@example.com> Date: Mon, 9 Jul 2018 03:43:34 -0700 Subject: [PATCH 11/16] Fix checks for optional -dev argument ($5 not $4), tweak comments and update copyright year. --- mac_installer/release_brand.sh | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/mac_installer/release_brand.sh b/mac_installer/release_brand.sh index 2584e9dd7c..189bb38941 100755 --- a/mac_installer/release_brand.sh +++ b/mac_installer/release_brand.sh @@ -1,8 +1,8 @@ -#!/bin/csh +#!/bin/bash # This file is part of BOINC. # http://boinc.berkeley.edu -# Copyright (C) 2008 University of California +# Copyright (C) 2018 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 @@ -50,20 +50,26 @@ ## If you wish to code sign the installer and uninstaller, create a file ## ~/BOINCCodeSignIdentity.txt whose first line is the code signing identity ## -## cd to the boinc directory: +## 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 and the full path to the brand description file. -## For example, if the version is 3.2.1: -## source [path_to_this_script] 3 2 1 ./mac_installer/WCGridInstaller.environment +## Then invoke this script with the three parts of version number as arguments and the full path +## to the brand description file. For example, if the version is 3.2.1: +## source ./mac_installer/release_brand.sh 3 2 1 ./mac_installer/WCGridInstaller.environment ## ## This will create a directory "BOINC_Installer" in the parent directory of ## the current directory +## +## For testing only, you can use the development build by adding a fifth argument -dev +## For example, if the version is 3.2.1: +## source /mac_installer/release_brand.sh 3 2 1 ./mac_installer/WCGridInstaller.environment -dev if [ $# -lt 4 ]; then echo "Usage:" -echo " cd [path]/boinc" -echo " source [path_to_this_script] major_version minor_version revision_number brand_description_file" -echo " ex) ./mac_installer/release_brand.sh 7 11 0 mac_installer/WCGridInstaller.environment" +echo " cd <path>/boinc" +echo " source path_to_this_script major_version minor_version revision_number brand_description_file [-dev]" +echo "example:" +echo " source ./mac_installer/release_brand.sh 7 11 0 ./mac_installer/WCGridInstaller.environment" return 1 fi @@ -96,7 +102,7 @@ if [ "$DarwinMajorVersion" -gt 10 ]; then # XCode 3.x and 4.x use different paths for their build products. # Our scripts in XCode's script build phase write those paths to # files to help this release script find the build products. - if [ "$4" = "-dev" ]; then + if [ "$5" = "-dev" ]; then exec 7<"mac_build/Build_Development_Dir" read -u 7 BUILDPATH else @@ -105,11 +111,11 @@ if [ "$DarwinMajorVersion" -gt 10 ]; then fi else - # XCode 3.2 on OS 10.6 does sbuild Intel and PowerPC Universal binaries + # XCode 3.2 on OS 10.6 does build Intel and PowerPC Universal binaries arch="universal" # XCode 3.x and 4.x use different paths for their build products. - if [ "$4" = "-dev" ]; then + if [ "$5" = "-dev" ]; then if [ -d mac_build/build/Development/ ]; then BUILDPATH="mac_build/build/Development" else From 9d036e7651432769d1744788fe4192313e3aef89 Mon Sep 17 00:00:00 2001 From: Charlie Fenton <charlief@example.com> Date: Mon, 9 Jul 2018 15:47:00 -0700 Subject: [PATCH 12/16] Fix branding in About dialog license statement --- clientgui/DlgAbout.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/clientgui/DlgAbout.cpp b/clientgui/DlgAbout.cpp index 527b3c1ea9..9040f98ace 100644 --- a/clientgui/DlgAbout.cpp +++ b/clientgui/DlgAbout.cpp @@ -1,6 +1,6 @@ // This file is part of BOINC. // http://boinc.berkeley.edu -// Copyright (C) 2017 University of California +// Copyright (C) 2018 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 @@ -140,6 +140,10 @@ bool CDlgAbout::Create(wxWindow* parent, wxWindowID id, const wxString& caption, void CDlgAbout::CreateControls() { ////@begin CDlgAbout content construction + CSkinAdvanced* pSkinAdvanced = wxGetApp().GetSkinManager()->GetAdvanced(); + wxASSERT(pSkinAdvanced); + wxASSERT(wxDynamicCast(pSkinAdvanced, CSkinAdvanced)); + CDlgAbout* itemDialog1 = this; wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL); @@ -188,8 +192,14 @@ void CDlgAbout::CreateControls() { itemStaticText13->Create( itemDialog1, wxID_STATIC, _("(C) 2003-2018 University of California, Berkeley.\nAll Rights Reserved."), wxDefaultPosition, wxDefaultSize, 0 ); itemFlexGridSizer7->Add(itemStaticText13, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5); + wxString buf = wxEmptyString; + buf.Printf( + _("%s is distributed under the GNU Lesser General Public License v3.0."), + pSkinAdvanced->GetApplicationShortName().c_str() + ); + wxStaticText* itemStaticText14 = new wxStaticText; - itemStaticText14->Create( itemDialog1, wxID_STATIC, _("BOINC is distributed under the GNU Lesser General Public License v3.0."), wxDefaultPosition, wxDefaultSize, 0 ); + itemStaticText14->Create( itemDialog1, wxID_STATIC, buf, wxDefaultPosition, wxDefaultSize, 0 ); itemBoxSizer2->Add(itemStaticText14, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxHORIZONTAL); From afc165146d3e03382f3ed8f7891957c6b7bb7b94 Mon Sep 17 00:00:00 2001 From: Juha Sointusalo <juha.sointusalo@gmail.com> Date: Tue, 10 Jul 2018 23:36:38 +0300 Subject: [PATCH 13/16] lib: fix wide char conversion functions When MultiByteToWideChar and WideCharToMultiByte are told to process entire input strings the functions include null terminators in required buffer sizes. std::string on the other hand stores embedded null characters in the string it manages if it's requested to do so. The way the code constructs std::string's from wide char function outputs makes null terminators part of the strings. This breaks concatenating strings together. Fix the code by not copying the last character, i.e. the null terminator, to std::string. --- lib/win_util.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/win_util.cpp b/lib/win_util.cpp index 28253c55df..33d02a1193 100644 --- a/lib/win_util.cpp +++ b/lib/win_util.cpp @@ -125,7 +125,7 @@ std::wstring boinc_ascii_to_wide(const std::string& str) { int length_wide = MultiByteToWideChar(CP_ACP, 0, str.data(), -1, NULL, 0); wchar_t *string_wide = static_cast<wchar_t*>(_alloca((length_wide * sizeof(wchar_t)) + sizeof(wchar_t))); MultiByteToWideChar(CP_ACP, 0, str.data(), -1, string_wide, length_wide); - std::wstring result(string_wide, length_wide); + std::wstring result(string_wide, length_wide - 1); return result; } @@ -133,7 +133,7 @@ std::string boinc_wide_to_ascii(const std::wstring& str) { int length_ansi = WideCharToMultiByte(CP_UTF8, 0, str.data(), -1, NULL, 0, NULL, NULL); char* string_ansi = static_cast<char*>(_alloca(length_ansi + sizeof(char))); WideCharToMultiByte(CP_UTF8, 0, str.data(), -1, string_ansi, length_ansi, NULL, NULL); - std::string result(string_ansi, length_ansi); + std::string result(string_ansi, length_ansi - 1); return result; } From 5d894ff197f7e903d083c5efac25ee3bf358d22f Mon Sep 17 00:00:00 2001 From: Charlie Fenton <charlief@example.com> Date: Wed, 11 Jul 2018 03:53:19 -0700 Subject: [PATCH 14/16] Manager: in the About dialog "For more information, visit" hyperlink, set the value of the link to the same string as the text displayed for the link when using a branded skin. --- clientgui/DlgAbout.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/clientgui/DlgAbout.cpp b/clientgui/DlgAbout.cpp index 9040f98ace..a711077a46 100644 --- a/clientgui/DlgAbout.cpp +++ b/clientgui/DlgAbout.cpp @@ -126,6 +126,9 @@ bool CDlgAbout::Create(wxWindow* parent, wxWindowID id, const wxString& caption, m_AboutBOINCURLCtrl->SetLabel( pSkinAdvanced->GetOrganizationWebsite().c_str() ); + m_AboutBOINCURLCtrl->SetURL( + pSkinAdvanced->GetOrganizationWebsite().c_str() + ); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); From 6e9d2282376293ac773aa281503bc84f58896db6 Mon Sep 17 00:00:00 2001 From: marius <mmillea@ucdavis.edu> Date: Wed, 11 Jul 2018 18:58:31 +0200 Subject: [PATCH 15/16] support old-style virtualization info --- html/inc/host.inc | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/html/inc/host.inc b/html/inc/host.inc index 7b9ba12044..bc55e5ccb0 100644 --- a/html/inc/host.inc +++ b/html/inc/host.inc @@ -251,15 +251,26 @@ function host_nresults($host) { return BoincResult::count("hostid=$host->id"); } + +// Parse the Virtualbox version information from inside the serialnum field. +// Prior to BOINC commit 6121ce1, the DB entry looked like e.g. "[vbox|5.0.0]" +// where Virtualbox 5.0.0 gave the version number. After 6121ce1, the entry was +// "[vbox|5.0.0|1|1]", where now two additional flags give information about +// hardware virtualization support. Older clients may have the old-style +// serialnum in the DB despite the server being upgraded. function vbox_desc($x){ - if (preg_match("/\[vbox\|(.*)\|([01])\|([01])\]/",$x,$matches)){ - $desc = "Virtualbox [".$matches[1]."] ".tra("installed").", "; - if ($matches[2]=="1" and $matches[3]=="1") { - return $desc.tra("CPU has hardware virtualization support and it is enabled"); - } elseif ($matches[2]=="1" and $matches[3]=="0") { - return $desc.tra("CPU has hardware virtualization support but it is disabled"); - } elseif ($matches[2]=="0") { - return $desc.tra("CPU does not have hardware virtualization support"); + if (preg_match("/\[vbox\|(.*?)(\|([01])\|([01]))?\]/",$x,$matches)){ + $desc = "Virtualbox (".$matches[1].") ".tra("installed"); + if (sizeof($matches)>2){ + if ($matches[3]=="1" and $matches[4]=="1") { + return $desc.tra(", CPU has hardware virtualization support and it is enabled"); + } elseif ($matches[3]=="1" and $matches[4]=="0") { + return $desc.tra(", CPU has hardware virtualization support but it is disabled"); + } elseif ($matches[3]=="0") { + return $desc.tra(", CPU does not have hardware virtualization support"); + } + } else { + return $desc; } } else { return tra("None"); From 1238d7841d4203914031f9bfc7847cdb40b4c0a8 Mon Sep 17 00:00:00 2001 From: marius <mmillea@ucdavis.edu> Date: Wed, 11 Jul 2018 19:01:50 +0200 Subject: [PATCH 16/16] minor comment fix --- html/inc/host.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html/inc/host.inc b/html/inc/host.inc index bc55e5ccb0..a9701fd73c 100644 --- a/html/inc/host.inc +++ b/html/inc/host.inc @@ -254,7 +254,7 @@ function host_nresults($host) { // Parse the Virtualbox version information from inside the serialnum field. // Prior to BOINC commit 6121ce1, the DB entry looked like e.g. "[vbox|5.0.0]" -// where Virtualbox 5.0.0 gave the version number. After 6121ce1, the entry was +// where 5.0.0 gave the Virtualbox version number. After 6121ce1, the entry was // "[vbox|5.0.0|1|1]", where now two additional flags give information about // hardware virtualization support. Older clients may have the old-style // serialnum in the DB despite the server being upgraded.