Mac: Update XCode project build rules: DWARF symbols, use gcc 4 compiler more, Client, Manager, installer require OS 10.3.9.

svn path=/trunk/boinc/; revision=13966
This commit is contained in:
Charlie Fenton 2007-10-26 10:01:28 +00:00
parent 4394245d16
commit d0032ae0d8
10 changed files with 306 additions and 1953 deletions

View File

@ -9946,3 +9946,32 @@ David 25 Oct 2007
top_users.php
top_teams.php
top_hosts.php
Charlie 26 Oct 2007
- Mac: Update XCode project build rules to generate DWARF-style symbol
tables, which are much smaller and more efficient. Use gcc-4.0 compiler
for all builds except PowerPC libraries (to maintain compatibility back
to OS 10.3.0 for science applications with older versions of BOINC) and
boinc_cmd (because it uses libboinc.a). BOINC Client and BOINC Manager
now require OS 10.3.9 or later (upgrade to 10.3.9 from OS 10.3.0 through
10.3.8 is a free download from Apple.) More XCode build rule cleanup.
- Mac: Installer displays an error message and quits if OS < 10.3.9.
- Mac SCR: fix GridRepublic branding bug.
clientgui/
mac/
SecurityUtility.cpp
SystemMenu.m
clientscr/
mac_saver_module.cpp
mac_installer/
GR-ReadMe.rtf
Installer.cpp
PostInstall.cpp
ReadMe.rtf
release_boinc.sh
release_GridRepublic.sh
mac_build/
boinc.xcodeproj/
project.pbxproj

View File

@ -22,6 +22,8 @@
#include <sys/param.h> // for MAXPATHLEN
#include <unistd.h> // for getwd, getlogin
#include <Carbon/Carbon.h>
#include "SetupSecurity.h"
// Standalone utility to set up BOINC security owners, groups, permissions

View File

@ -30,8 +30,6 @@
#include <Carbon/Carbon.h>
#include <Cocoa/Cocoa.h>
#define _DEBUG 0
@interface SystemMenu : NSObject {
}
- (void)BuildSysMenu:(MenuRef)menuToCopy;

File diff suppressed because it is too large Load Diff

View File

@ -19,7 +19,7 @@ Starting with version 5.5.4, this software features new, stricter security measu
\
This is a
\f0\b universal binary
\f1\b0 which will run natively on both Intel and PowerPC Macs. GridRepublic Desktop requires Macintosh OS X version 10.3 or greater. \
\f1\b0 which will run natively on both Intel and PowerPC Macs. GridRepublic Desktop requires Macintosh OS X version 10.3.9 or greater. \
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural

View File

@ -39,8 +39,7 @@
void Initialize(void); /* function prototypes */
OSStatus IsLogoutNeeded(Boolean *result);
OSErr UpdateAllVisibleUsers(long brandID);
long GetBrandID(void);
OSErr FindProcess (OSType typeToFind, OSType creatorToFind, ProcessSerialNumberPtr processSN);
static OSErr QuitAppleEventHandler(const AppleEvent *appleEvt, AppleEvent* reply, UInt32 refcon);
void print_to_log_file(const char *format, ...);
void strip_cr(char *buf);
@ -50,9 +49,13 @@ Boolean gQuitFlag = false; /* global */
int main(int argc, char *argv[])
{
char pkgPath[MAXPATHLEN], infoPlistPath[MAXPATHLEN];
char brand[64], s[256];
char *p;
ProcessSerialNumber ourPSN;
ProcessSerialNumber ourPSN, installerPSN;
FSRef ourFSRef;
long response;
short itemHit;
pid_t installerPID = 0;
FSRef infoPlistFileRef;
Boolean isDirectory, result;
CFURLRef xmlURL = NULL;
@ -65,7 +68,6 @@ int main(int argc, char *argv[])
CFStringRef valueLogoutRequired = CFSTR("RequiredLogout");
CFStringRef valueNoRestart = CFSTR("NoRestart");
CFStringRef errorString = NULL;
long response;
Boolean needLogout;
OSStatus err = noErr;
@ -87,11 +89,33 @@ int main(int argc, char *argv[])
p = strrchr(infoPlistPath, '/'); // Point to name of this application (e.g., "BOINC Installer.app")
if (p == NULL)
p = infoPlistPath - 1;
strlcpy(brand, p+1, sizeof(brand));
strlcat(pkgPath, p+1, sizeof(pkgPath));
p = strrchr(pkgPath, ' '); // Strip off space characterand everything following )
p = strrchr(pkgPath, ' '); // Strip off last space character and everything following
if (p)
*p = '\0';
err = Gestalt(gestaltSystemVersion, &response);
if (err != noErr)
return err;
if (response < 0x1039) {
::SetFrontProcess(&ourPSN);
p = strrchr(brand, ' '); // Strip off last space character and everything following
if (p)
*p = '\0';
s[0] = sprintf(s+1, "Sorry, this version of %s requires system 10.3.9 or higher.", brand);
StandardAlert (kAlertStopAlert, (StringPtr)s, NULL, NULL, &itemHit);
err = FindProcess ('APPL', 'xins', &installerPSN);
err = GetProcessPID(&installerPSN , &installerPID);
if (err == noErr)
err = kill(installerPID, SIGKILL);
ExitToShell();
}
strlcat(pkgPath, ".pkg", sizeof(pkgPath));
needLogout = false;
@ -299,19 +323,34 @@ void Initialize() /* Initialize some managers */
}
long GetBrandID()
// ---------------------------------------------------------------------------
/* This runs through the process list looking for the indicated application */
/* Searches for process by file type and signature (creator code) */
// ---------------------------------------------------------------------------
OSErr FindProcess (OSType typeToFind, OSType creatorToFind, ProcessSerialNumberPtr processSN)
{
long iBrandId;
iBrandId = 0; // Default value
FILE *f = fopen("Contents/Resources/Branding", "r");
if (f) {
fscanf(f, "BrandId=%ld\n", &iBrandId);
fclose(f);
ProcessInfoRec tempInfo;
FSSpec procSpec;
Str31 processName;
OSErr myErr = noErr;
/* null out the PSN so we're starting at the beginning of the list */
processSN->lowLongOfPSN = kNoProcess;
processSN->highLongOfPSN = kNoProcess;
/* initialize the process information record */
tempInfo.processInfoLength = sizeof(ProcessInfoRec);
tempInfo.processName = processName;
tempInfo.processAppSpec = &procSpec;
/* loop through all the processes until we */
/* 1) find the process we want */
/* 2) error out because of some reason (usually, no more processes) */
do {
myErr = GetNextProcess(processSN);
if (myErr == noErr)
GetProcessInformation(processSN, &tempInfo);
}
return iBrandId;
while ((tempInfo.processSignature != creatorToFind || tempInfo.processType != typeToFind) &&
myErr == noErr);
return(myErr);
}

View File

@ -128,18 +128,18 @@ int main(int argc, char *argv[])
if (err != noErr)
return err;
if (response < 0x1030) {
if (response < 0x1039) {
::SetFrontProcess(&ourProcess);
// Remove everything we've installed
if (brandID == 1) {
StandardAlert (kAlertStopAlert, "\pSorry, GridRepublic requires system 10.3 or higher.",
StandardAlert (kAlertStopAlert, "\pSorry, this version of GridRepublic requires system 10.3.9 or higher.",
NULL, NULL, &itemHit);
system ("rm -rf /Applications/GridRepublic\\ Desktop.app");
system ("rm -rf /Library/Screen\\ Savers/GridRepublic.saver");
// We don't customize BOINC Data directory name for branding
// system ("rm -rf /Library/Application\\ Support/GridRepublic\\ Data");
system ("rm -rf /Library/Receipts/GridRepublic.pkg");
StandardAlert (kAlertStopAlert, "\pSorry, BOINC requires system 10.3 or higher.",
StandardAlert (kAlertStopAlert, "\pSorry, this version of BOINC requires system 10.3.9 or higher.",
NULL, NULL, &itemHit);
} else {
system ("rm -rf /Applications/BOINCManager.app");

View File

@ -19,7 +19,7 @@ Starting with version 5.5.4, BOINC features new, stricter security measures. Se
\
This is a
\f0\b universal binary
\f1\b0 which will run natively on both Intel and PowerPC Macs. BOINCManager requires Macintosh OS X version 10.3 or greater. \
\f1\b0 which will run natively on both Intel and PowerPC Macs. BOINCManager requires Macintosh OS X version 10.3.9 or greater. \
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural

View File

@ -20,7 +20,7 @@
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
##
# Release Script for Macintosh GridRepublic Desktop 9/5/07 by Charlie Fenton
# Release Script for Macintosh GridRepublic Desktop 10/26/07 by Charlie Fenton
##
## Usage:
@ -230,7 +230,8 @@ sudo chmod -R 555 "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/ex
##### We've decided not to create branded symbol table file; it is identical to standard one
#### mkdir -p "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_SymbolTables"
#### cp -fpR $BUILDPATH/SymbolTables ${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_SymbolTables/
#### cp -fpR $BUILDPATH/boinc.dSYM ${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_SymbolTables/
#### cp -fpR $BUILDPATH/BOINCManager.app.dSYM ${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_SymbolTables/
# Make temporary copies of Pkg-Info.plist and Description.plist for PackageMaker and update for this branding
cp -fp mac_build/Pkg-Info.plist "${NEW_DIR_PATH}"

View File

@ -20,7 +20,7 @@
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
##
# Release Script for Macintosh BOINC Manager 9/5/07 by Charlie Fenton
# Release Script for Macintosh BOINC Manager 10/26/07 by Charlie Fenton
##
## Usage:
@ -183,7 +183,8 @@ cp -fpR $BUILDPATH/setprojectgrp ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$
sudo chown -R root:admin ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_universal-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/boinc_$1.$2.$3_universal-apple-darwin/move_to_boinc_dir/*
cp -fpR $BUILDPATH/SymbolTables ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_SymbolTables/
cp -fpR $BUILDPATH/boinc.dSYM ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_SymbolTables/
cp -fpR $BUILDPATH/BOINCManager.app.dSYM ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_SymbolTables/
cd ../BOINC_Installer/New_Release_$1_$2_$3
zip -rqy boinc_$1.$2.$3_macOSX_universal.zip boinc_$1.$2.$3_macOSX_universal