mirror of https://github.com/BOINC/boinc.git
Mac: Updates for compatibility with current CUDA software and OS X through OS 10.7 Lion, etc.
svn path=/branches/boinc_core_release_6_8/; revision=23936
This commit is contained in:
parent
0bb4faac61
commit
1b7c83f224
|
@ -6788,3 +6788,47 @@ Rom 8 July 2011
|
|||
/
|
||||
configure.ac
|
||||
version.h
|
||||
|
||||
Charlie 5 Aug 2011
|
||||
- Mac: Updates for compatibility with current CUDA software and OS X through
|
||||
OS 10.7 Lion, etc.
|
||||
- Mac: Update to libcurl 7.21.7 and c-ares 1.7.4.
|
||||
- Mac: Build x86_64 screensaver directly.
|
||||
- Mac Installer: remove obsolete kludge for generating x86_64 screensaver.
|
||||
- Mac Installer: Update to current installer.
|
||||
- Mac: If obsolete libcudart.dylib not found, try libcuda.dylib.
|
||||
|
||||
client/
|
||||
http_curl.cpp
|
||||
clientgui/
|
||||
mac/
|
||||
SetVersion.cpp
|
||||
res/
|
||||
MacPkgIcon.zip (added)
|
||||
MacPTPPkgIcon.zip (added)
|
||||
MacGRPkgIcon.zip (added)
|
||||
clientscr/
|
||||
mac_saver_module.cpp
|
||||
Mac_Saver_Module.h
|
||||
Mac_Saver_ModuleView.m, .h
|
||||
screensaver.cpp
|
||||
lib/
|
||||
coproc.cpp
|
||||
mac_build/
|
||||
boinc.xcodeproj/
|
||||
project.pbxproj
|
||||
buildc-ares.sh
|
||||
buildcurl.sh
|
||||
setupForBOINC.sh
|
||||
HowToBuildBOINC_XCode.rtf
|
||||
mac_installer/
|
||||
GR-ReadMe.rtf
|
||||
make_GridRepublic.sh
|
||||
make_ProgThruProc.sh
|
||||
PostInstall.cpp
|
||||
postinstall
|
||||
postupgrade
|
||||
PTP-ReadMe.rtf
|
||||
ReadMe.rtf
|
||||
release_boinc.sh
|
||||
WaitPermissions.cpp
|
||||
|
|
|
@ -577,6 +577,14 @@ int HTTP_OP::libcurl_exec(
|
|||
curlErr = curl_easy_setopt(curlEasy, CURLOPT_HTTPGET, 1L);
|
||||
}
|
||||
|
||||
#ifdef __APPLE__
|
||||
// cURL 7.19.7 with c-ares 1.7.0 did not fall back to IPv4 when IPv6
|
||||
// DNS lookup failed on Macs with certain default settings if connected
|
||||
// to the Internet by an AT&T U-Verse 2-Wire Gateway. This work-around
|
||||
// may not be needed any more for cURL 7.21.7, but keep it to be safe.
|
||||
curl_easy_setopt(curlEasy, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
|
||||
#endif
|
||||
|
||||
// turn on debug info if tracing enabled
|
||||
//
|
||||
if (log_flags.http_debug) {
|
||||
|
|
|
@ -227,7 +227,7 @@ int MakeInstallerInfoPlistFile(char* myPath, char* brand) {
|
|||
fprintf(f, "\t<key>IFPkgFlagIsRequired</key>\n\t<integer>0</integer>\n");
|
||||
fprintf(f, "\t<key>IFPkgFlagOverwritePermissions</key>\n\t<integer>0</integer>\n");
|
||||
fprintf(f, "\t<key>IFPkgFlagRelocatable</key>\n\t<integer>0</integer>\n");
|
||||
fprintf(f, "\t<key>IFPkgFlagRestartAction</key>\n\t<string>RequiredLogout</string>\n");
|
||||
fprintf(f, "\t<key>IFPkgFlagRestartAction</key>\n\t<string>NoRestart</string>\n");
|
||||
fprintf(f, "\t<key>IFPkgFlagRootVolumeOnly</key>\n\t<integer>1</integer>\n");
|
||||
fprintf(f, "\t<key>IFPkgFlagUpdateInstalledLanguages</key>\n\t<integer>0</integer>\n");
|
||||
fprintf(f, "\t<key>IFPkgFormatVersion</key>\n\t<real>0.10000000149011612</real>\n");
|
||||
|
@ -243,6 +243,3 @@ int MakeInstallerInfoPlistFile(char* myPath, char* brand) {
|
|||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
const char *BOINC_RCSID_9263a2dc22="$Id$";
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -32,20 +32,22 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
int initBOINCSaver(void);
|
||||
int getSSMessage(char **theMessage, int* coveredFreq);
|
||||
void windowIsCovered();
|
||||
void drawPreview(CGContextRef myContext);
|
||||
void closeBOINCSaver(void);
|
||||
void print_to_log_file(const char *format, ...);
|
||||
void strip_cr(char *buf);
|
||||
void PrintBacktrace(void);
|
||||
void initBOINCSaver(void);
|
||||
int startBOINCSaver(void);
|
||||
int getSSMessage(char **theMessage, int* coveredFreq);
|
||||
void windowIsCovered();
|
||||
void drawPreview(CGContextRef myContext);
|
||||
void closeBOINCSaver(void);
|
||||
void setDefaultDisplayPeriods(void);
|
||||
double getDTime();
|
||||
void print_to_log_file(const char *format, ...);
|
||||
void strip_cr(char *buf);
|
||||
void PrintBacktrace(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: class CScreensaver
|
||||
// Desc: Screensaver class
|
||||
|
@ -72,7 +74,7 @@ protected:
|
|||
void setSSMessageText(const char *msg);
|
||||
void updateSSMessageText(char *msg);
|
||||
void strip_cr(char *buf);
|
||||
char m_gfx_Switcher_Path[MAXPATHLEN];
|
||||
char m_gfx_Switcher_Path[PATH_MAX];
|
||||
bool m_bErrorMode; // Whether to draw moving logo and possibly display an error
|
||||
unsigned int m_hrError; // Error code to display
|
||||
|
||||
|
@ -82,10 +84,6 @@ protected:
|
|||
time_t m_dwBlankTime;
|
||||
int m_iGraphicsStartingMsgCounter;
|
||||
bool m_bDefault_ss_exists;
|
||||
double m_fGFXDefaultPeriod;
|
||||
double m_fGFxSciencePeriod;
|
||||
double m_fGFXChangePeriod;
|
||||
bool m_bShow_default_ss_first;
|
||||
bool m_bScience_gfx_running;
|
||||
bool m_bDefault_gfx_running;
|
||||
bool m_bConnected;
|
||||
|
@ -145,6 +143,11 @@ public:
|
|||
void drawPreview(CGContextRef myContext);
|
||||
void ShutdownSaver();
|
||||
|
||||
double m_fGFXDefaultPeriod;
|
||||
double m_fGFxSciencePeriod;
|
||||
double m_fGFXChangePeriod;
|
||||
bool m_bShow_default_ss_first;
|
||||
|
||||
protected:
|
||||
};
|
||||
|
||||
|
|
|
@ -27,9 +27,15 @@
|
|||
IBOutlet id mConfigureSheet; // our configuration sheet
|
||||
IBOutlet NSButton *mGoToBlankCheckbox;
|
||||
IBOutlet NSTextField *mBlankingTimeTextField;
|
||||
IBOutlet NSTextField *mDefaultPeriodTextField;
|
||||
IBOutlet NSTextField *mSciencePeriodTextField;
|
||||
IBOutlet NSTextField *mChangePeriodTextField;
|
||||
|
||||
int mVersion; // the version of our prefs
|
||||
NSString *mBlankingTimeString;
|
||||
NSString *mDefaultPeriodString;
|
||||
NSString *mSciencePeriodString;
|
||||
NSString *mChangePeriodString;
|
||||
}
|
||||
|
||||
- (IBAction)closeSheetSave:(id) sender;
|
||||
|
@ -37,9 +43,11 @@
|
|||
|
||||
@end
|
||||
|
||||
int initBOINCSaver(void);
|
||||
int getSSMessage(char **theMessage, int* coveredFreq);
|
||||
void windowIsCovered();
|
||||
void drawPreview(CGContextRef myContext);
|
||||
void closeBOINCSaver(void);
|
||||
extern void print_to_log_file(const char *format, ...);
|
||||
void initBOINCSaver(void);
|
||||
int startBOINCSaver(void);
|
||||
int getSSMessage(char **theMessage, int* coveredFreq);
|
||||
void windowIsCovered();
|
||||
void drawPreview(CGContextRef myContext);
|
||||
void closeBOINCSaver(void);
|
||||
double getDTime();
|
||||
extern void print_to_log_file(const char *format, ...);
|
||||
|
|
|
@ -23,10 +23,30 @@
|
|||
#import "Mac_Saver_ModuleView.h"
|
||||
#include <Carbon/Carbon.h>
|
||||
#include <AppKit/AppKit.h>
|
||||
#include <QTKit/QTKitDefines.h> // For NSInteger
|
||||
#include <IOKit/hidsystem/IOHIDLib.h>
|
||||
#include <IOKit/hidsystem/IOHIDParameter.h>
|
||||
#include <IOKit/hidsystem/event_status_driver.h>
|
||||
|
||||
#ifndef NSInteger
|
||||
#if __LP64__ || NS_BUILD_32_LIKE_64
|
||||
typedef long NSInteger;
|
||||
#else
|
||||
typedef int NSInteger;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef CGFLOAT_DEFINED
|
||||
typedef float CGFloat;
|
||||
#endif
|
||||
|
||||
void print_to_log_file(const char *format, ...);
|
||||
void strip_cr(char *buf);
|
||||
|
||||
static SInt32 gSystemVersion = 0;
|
||||
static double gSS_StartTime = 0.0;
|
||||
mach_port_t gEventHandle = 0;
|
||||
|
||||
int gGoToBlank; // True if we are to blank the screen
|
||||
int gBlankingTime; // Delay in minutes before blanking the screen
|
||||
NSString *gPathToBundleResources = NULL;
|
||||
|
@ -38,19 +58,10 @@ int gTopWindowListIndex = -1;
|
|||
NSRect gMovingRect;
|
||||
float gImageXIndent;
|
||||
float gTextBoxHeight;
|
||||
CGFloat gActualTextBoxHeight;
|
||||
NSPoint gCurrentPosition;
|
||||
NSPoint gCurrentDelta;
|
||||
|
||||
ATSUStyle theStyle = NULL;
|
||||
ATSUFontID theFontID;
|
||||
Fixed atsuSize;
|
||||
char myFontName[] = "Helvetica";
|
||||
//char myFontName[] = "Lucida Blackletter";
|
||||
|
||||
ATSUAttributeTag theTags[] = { kATSUFontTag, kATSUSizeTag };
|
||||
ByteCount theSizes[] = { sizeof (ATSUFontID), sizeof(Fixed) };
|
||||
ATSUAttributeValuePtr theValues[] = { &theFontID, &atsuSize };
|
||||
|
||||
CGContextRef myContext;
|
||||
bool isErased;
|
||||
|
||||
|
@ -78,9 +89,19 @@ int signof(float x) {
|
|||
// against any problems that may cause.
|
||||
- (void)startAnimation {
|
||||
NSBundle * myBundle;
|
||||
OSStatus err;
|
||||
int newFrequency;
|
||||
|
||||
#ifdef X86_64
|
||||
gEventHandle = NXOpenEventStatus();
|
||||
#endif
|
||||
|
||||
OSStatus err = Gestalt(gestaltSystemVersion, &gSystemVersion);
|
||||
if (err != noErr) {
|
||||
gSystemVersion = 0;
|
||||
}
|
||||
|
||||
initBOINCSaver();
|
||||
|
||||
if (gBOINC_Logo == NULL) {
|
||||
if (self) {
|
||||
myBundle = [ NSBundle bundleForClass:[self class]];
|
||||
|
@ -143,14 +164,9 @@ int signof(float x) {
|
|||
gCurrentDelta.x = 1.0;
|
||||
gCurrentDelta.y = 1.0;
|
||||
|
||||
gActualTextBoxHeight = MINTEXTBOXHEIGHT;
|
||||
|
||||
[ self setAnimationTimeInterval:1/8.0 ];
|
||||
|
||||
ATSUFindFontFromName(myFontName, strlen(myFontName), kFontFamilyName, kFontMacintoshPlatform,
|
||||
kFontNoScriptCode, kFontNoLanguageCode, &theFontID);
|
||||
|
||||
err = ATSUCreateStyle(&theStyle);
|
||||
atsuSize = Long2Fix (20);
|
||||
err = ATSUSetAttributes(theStyle, 2, theTags, theSizes, theValues);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -161,9 +177,11 @@ int signof(float x) {
|
|||
return;
|
||||
}
|
||||
|
||||
newFrequency = initBOINCSaver();
|
||||
newFrequency = startBOINCSaver();
|
||||
if (newFrequency)
|
||||
[ self setAnimationTimeInterval:1.0/newFrequency ];
|
||||
|
||||
gSS_StartTime = getDTime();
|
||||
}
|
||||
|
||||
// If there are multiple displays, this may get called
|
||||
|
@ -183,10 +201,6 @@ int signof(float x) {
|
|||
}
|
||||
gBOINC_Logo = NULL;
|
||||
|
||||
if (theStyle) {
|
||||
ATSUDisposeStyle(theStyle);
|
||||
}
|
||||
theStyle = NULL;
|
||||
}
|
||||
|
||||
// If there are multiple displays, this may get called
|
||||
|
@ -205,16 +219,20 @@ int signof(float x) {
|
|||
int newFrequency = 0;
|
||||
int coveredFreq = 0;
|
||||
NSRect theFrame = [ self frame ];
|
||||
int myWindowNumber;
|
||||
int windowList[20];
|
||||
int i, n;
|
||||
NSInteger myWindowNumber;
|
||||
NSInteger windowList[20];
|
||||
NSInteger i, n;
|
||||
NSRect currentDrawingRect, eraseRect;
|
||||
NSPoint imagePosition;
|
||||
Rect r;
|
||||
char *msg;
|
||||
CFStringRef cf_msg;
|
||||
AbsoluteTime timeToUnblock, frameStartTime = UpTime();
|
||||
OSStatus err;
|
||||
#ifdef X86_64
|
||||
kern_return_t kernResult = kIOReturnError;
|
||||
UInt64 params;
|
||||
IOByteCount rcnt = sizeof(UInt64);
|
||||
double idleTime = 0;
|
||||
#endif
|
||||
|
||||
if ([ self isPreview ]) {
|
||||
#if 1 // Currently drawRect just draws our logo in the preview window
|
||||
|
@ -235,15 +253,31 @@ int signof(float x) {
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef X86_64
|
||||
// For unkown reasons, OS 10.7 Lion screensaver delays several seconds after
|
||||
// user activity before calling stopAnimation, so we check user activity here
|
||||
if ((gSystemVersion >= 1070) && ((getDTime() - gSS_StartTime) > 2.0)) {
|
||||
kernResult = IOHIDGetParameter( gEventHandle, CFSTR(EVSIOIDLE), sizeof(UInt64), ¶ms, &rcnt );
|
||||
if ( kernResult == kIOReturnSuccess ) {
|
||||
idleTime = ((double)params) / 1000.0 / 1000.0 / 1000.0;
|
||||
if (idleTime < 1.5) {
|
||||
[ self stopAnimation ];
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
myContext = [[NSGraphicsContext currentContext] graphicsPort];
|
||||
// [myContext retain];
|
||||
|
||||
|
||||
NSWindow *myWindow = [ self window ];
|
||||
NSRect windowFrame = [ myWindow frame ];
|
||||
if ( (windowFrame.origin.x != 0) || (windowFrame.origin.y != 0) ) {
|
||||
// Hide window on second display to aid in debugging
|
||||
#ifdef _DEBUG
|
||||
[ myWindow setLevel:kCGMinimumWindowLevel ];
|
||||
NSInteger alpha = 0;
|
||||
[ myWindow setAlphaValue:alpha ]; // For OS 10.6
|
||||
#endif
|
||||
return; // We draw only to main screen
|
||||
}
|
||||
|
@ -321,7 +355,7 @@ int signof(float x) {
|
|||
gCurrentDelta.x = -(float)SSRandomIntBetween(MINDELTA, MAXDELTA) / 16.;
|
||||
gCurrentDelta.y = (float)(SSRandomIntBetween(MINDELTA, MAXDELTA) * signof(gCurrentDelta.y)) / 16.;
|
||||
}
|
||||
if (currentDrawingRect.origin.y <= SAFETYBORDER) {
|
||||
if (currentDrawingRect.origin.y + gTextBoxHeight - gActualTextBoxHeight <= SAFETYBORDER) {
|
||||
gCurrentDelta.y = (float)SSRandomIntBetween(MINDELTA, MAXDELTA) / 16.;
|
||||
gCurrentDelta.x = (float)(SSRandomIntBetween(MINDELTA, MAXDELTA) * signof(gCurrentDelta.x)) / 16.;
|
||||
}
|
||||
|
@ -336,46 +370,46 @@ int signof(float x) {
|
|||
gCurrentDelta.y = 0;
|
||||
#endif
|
||||
|
||||
if (!isErased) {
|
||||
[[NSColor blackColor] set];
|
||||
|
||||
// Erasing only 2 small rectangles reduces screensaver's CPU usage by about 25%
|
||||
imagePosition.x = (float) ((int)gCurrentPosition.x + gImageXIndent);
|
||||
imagePosition.y = (float) (int)gCurrentPosition.y;
|
||||
eraseRect.origin.y = imagePosition.y;
|
||||
eraseRect.size.height = currentDrawingRect.size.height - gTextBoxHeight;
|
||||
|
||||
if (gCurrentDelta.x > 0) {
|
||||
eraseRect.origin.x = imagePosition.x - 1;
|
||||
eraseRect.size.width = gCurrentDelta.x + 1;
|
||||
} else {
|
||||
eraseRect.origin.x = currentDrawingRect.origin.x + currentDrawingRect.size.width - gImageXIndent + gCurrentDelta.x - 1;
|
||||
eraseRect.size.width = -gCurrentDelta.x + 1;
|
||||
}
|
||||
|
||||
eraseRect = NSInsetRect(eraseRect, -1, -1);
|
||||
NSRectFill(eraseRect);
|
||||
|
||||
eraseRect.origin.x = imagePosition.x;
|
||||
eraseRect.size.width = currentDrawingRect.size.width - gImageXIndent - gImageXIndent;
|
||||
|
||||
if (gCurrentDelta.y > 0) {
|
||||
if (!isErased) {
|
||||
[[NSColor blackColor] set];
|
||||
|
||||
// Erasing only 2 small rectangles reduces screensaver's CPU usage by about 25%
|
||||
imagePosition.x = (float) ((int)gCurrentPosition.x + gImageXIndent);
|
||||
imagePosition.y = (float) (int)gCurrentPosition.y;
|
||||
eraseRect.origin.y = imagePosition.y;
|
||||
eraseRect.size.height = gCurrentDelta.y + 1;
|
||||
} else {
|
||||
eraseRect.origin.y = imagePosition.y + currentDrawingRect.size.height - gTextBoxHeight - 1;
|
||||
eraseRect.size.height = -gCurrentDelta.y + 1;
|
||||
}
|
||||
eraseRect = NSInsetRect(eraseRect, -1, -1);
|
||||
NSRectFill(eraseRect);
|
||||
|
||||
eraseRect = currentDrawingRect;
|
||||
eraseRect.size.height = gTextBoxHeight;
|
||||
eraseRect = NSInsetRect(eraseRect, -1, -1);
|
||||
NSRectFill(eraseRect);
|
||||
eraseRect.size.height = currentDrawingRect.size.height - gTextBoxHeight;
|
||||
|
||||
if (gCurrentDelta.x > 0) {
|
||||
eraseRect.origin.x = imagePosition.x - 1;
|
||||
eraseRect.size.width = gCurrentDelta.x + 1;
|
||||
} else {
|
||||
eraseRect.origin.x = currentDrawingRect.origin.x + currentDrawingRect.size.width - gImageXIndent + gCurrentDelta.x - 1;
|
||||
eraseRect.size.width = -gCurrentDelta.x + 1;
|
||||
}
|
||||
|
||||
eraseRect = NSInsetRect(eraseRect, -1, -1);
|
||||
NSRectFill(eraseRect);
|
||||
|
||||
eraseRect.origin.x = imagePosition.x;
|
||||
eraseRect.size.width = currentDrawingRect.size.width - gImageXIndent - gImageXIndent;
|
||||
|
||||
isErased = true;
|
||||
}
|
||||
if (gCurrentDelta.y > 0) {
|
||||
eraseRect.origin.y = imagePosition.y;
|
||||
eraseRect.size.height = gCurrentDelta.y + 1;
|
||||
} else {
|
||||
eraseRect.origin.y = imagePosition.y + currentDrawingRect.size.height - gTextBoxHeight - 1;
|
||||
eraseRect.size.height = -gCurrentDelta.y + 1;
|
||||
}
|
||||
eraseRect = NSInsetRect(eraseRect, -1, -1);
|
||||
NSRectFill(eraseRect);
|
||||
|
||||
eraseRect = currentDrawingRect;
|
||||
eraseRect.size.height = gTextBoxHeight;
|
||||
eraseRect = NSInsetRect(eraseRect, -1, -1);
|
||||
NSRectFill(eraseRect);
|
||||
|
||||
isErased = true;
|
||||
}
|
||||
|
||||
// Get the new drawing area
|
||||
gCurrentPosition.x += gCurrentDelta.x;
|
||||
|
@ -383,28 +417,68 @@ int signof(float x) {
|
|||
|
||||
imagePosition.x = (float) ((int)gCurrentPosition.x + gImageXIndent);
|
||||
imagePosition.y = (float) (int)gCurrentPosition.y;
|
||||
|
||||
// Calculate QuickDraw Rect for current text box
|
||||
r.left = (float) ((int)gCurrentPosition.x);
|
||||
r.right = r.left + gMovingRect.size.width;
|
||||
r.top = viewBounds.size.height - imagePosition.y;
|
||||
r.bottom = r.top + (int)MAXTEXTBOXHEIGHT;
|
||||
r.top += TEXTBOXTOPBORDER; // Add a few pixels space below image
|
||||
|
||||
TXNTextBoxOptionsData theOptions = {kTXNUseCGContextRefMask | kTXNSetFlushnessMask,
|
||||
kATSUCenterAlignment, kATSUNoJustification, 0, myContext };
|
||||
|
||||
cf_msg = CFStringCreateWithCString(NULL, msg, kCFStringEncodingMacRoman);
|
||||
|
||||
[[NSColor whiteColor] set];
|
||||
|
||||
[ gBOINC_Logo compositeToPoint:imagePosition operation:NSCompositeCopy ];
|
||||
|
||||
err = TXNDrawCFStringTextBox ( cf_msg, &r, theStyle, &theOptions);
|
||||
gTextBoxHeight = r.bottom - r.top + TEXTBOXTOPBORDER;
|
||||
if ( (msg != NULL) && (msg[0] != '\0') ) {
|
||||
cf_msg = CFStringCreateWithCString(NULL, msg, kCFStringEncodingMacRoman);
|
||||
|
||||
CGRect bounds = CGRectMake((float) ((int)gCurrentPosition.x),
|
||||
viewBounds.size.height - imagePosition.y + TEXTBOXTOPBORDER,
|
||||
gMovingRect.size.width,
|
||||
MAXTEXTBOXHEIGHT
|
||||
);
|
||||
|
||||
CGContextSaveGState (myContext);
|
||||
CGContextTranslateCTM (myContext, 0, viewBounds.origin.y + viewBounds.size.height);
|
||||
CGContextScaleCTM (myContext, 1.0f, -1.0f);
|
||||
|
||||
|
||||
#ifdef __x86_64__
|
||||
CTFontRef myFont = CTFontCreateWithName(CFSTR("Helvetica"), 20, NULL);
|
||||
|
||||
HIThemeTextInfo textInfo = {kHIThemeTextInfoVersionOne, kThemeStateActive, kThemeSpecifiedFont,
|
||||
kHIThemeTextHorizontalFlushLeft, kHIThemeTextVerticalFlushTop,
|
||||
kHIThemeTextBoxOptionNone, kHIThemeTextTruncationNone, 0, false,
|
||||
0, myFont
|
||||
};
|
||||
|
||||
#else
|
||||
GrafPtr port;
|
||||
GetPort(&port);
|
||||
SetPortTextFont(port, kFontIDHelvetica);
|
||||
SetPortTextSize(port, 20);
|
||||
|
||||
HIThemeTextInfo textInfo = {0, kThemeStateActive, kThemeCurrentPortFont, //kThemeMenuItemCmdKeyFont, //kThemePushButtonFont,
|
||||
kHIThemeTextHorizontalFlushLeft, kHIThemeTextVerticalFlushTop,
|
||||
kHIThemeTextBoxOptionNone, kHIThemeTextTruncationNone, 0, false
|
||||
};
|
||||
#endif
|
||||
|
||||
HIThemeGetTextDimensions(cf_msg, (float)gMovingRect.size.width, &textInfo, NULL, &gActualTextBoxHeight, NULL);
|
||||
gActualTextBoxHeight += TEXTBOXTOPBORDER;
|
||||
|
||||
// Use only APIs available in Mac OS 10.3.9
|
||||
// HIThemeSetTextFill(kThemeTextColorWhite, NULL, myContext, kHIThemeOrientationNormal);
|
||||
// SetThemeTextColor(kThemeTextColorWhite, 32, true);
|
||||
|
||||
CGFloat myWhiteComponents[] = {1.0, 1.0, 1.0, 1.0};
|
||||
CGColorSpaceRef myColorSpace = CGColorSpaceCreateDeviceRGB ();
|
||||
CGColorRef myTextColor = CGColorCreate(myColorSpace, myWhiteComponents);
|
||||
|
||||
CGContextSetFillColorWithColor(myContext, myTextColor);
|
||||
|
||||
HIThemeDrawTextBox(cf_msg, &bounds, &textInfo, myContext, kHIThemeOrientationNormal);
|
||||
|
||||
CGColorRelease(myTextColor);
|
||||
CGColorSpaceRelease(myColorSpace);
|
||||
CGContextRestoreGState (myContext);
|
||||
CFRelease(cf_msg);
|
||||
}
|
||||
|
||||
gTextBoxHeight = MAXTEXTBOXHEIGHT + TEXTBOXTOPBORDER;
|
||||
gMovingRect.size.height = [gBOINC_Logo size].height + gTextBoxHeight;
|
||||
|
||||
CFRelease(cf_msg);
|
||||
isErased = false;
|
||||
|
||||
} else { // Empty or NULL message
|
||||
|
@ -418,12 +492,13 @@ int signof(float x) {
|
|||
}
|
||||
}
|
||||
|
||||
if (newFrequency)
|
||||
if (newFrequency) {
|
||||
[ self setAnimationTimeInterval:(1.0/newFrequency) ];
|
||||
// setAnimationTimeInterval does not seem to be working, so we
|
||||
// throttle the screensaver directly here.
|
||||
timeToUnblock = AddDurationToAbsolute(durationSecond/newFrequency, frameStartTime);
|
||||
MPDelayUntil(&timeToUnblock);
|
||||
// setAnimationTimeInterval does not seem to be working, so we
|
||||
// throttle the screensaver directly here.
|
||||
timeToUnblock = AddDurationToAbsolute(durationSecond/newFrequency, frameStartTime);
|
||||
MPDelayUntil(&timeToUnblock);
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)hasConfigureSheet {
|
||||
|
@ -435,10 +510,10 @@ int signof(float x) {
|
|||
{
|
||||
// if we haven't loaded our configure sheet, load the nib named MyScreenSaver.nib
|
||||
if (!mConfigureSheet)
|
||||
[ NSBundle loadNibNamed:@"BOINCSaver" owner:self ];
|
||||
[ NSBundle loadNibNamed:@"BOINCSaver" owner:self ];
|
||||
// set the UI state
|
||||
[ mGoToBlankCheckbox setState:gGoToBlank ];
|
||||
mBlankingTimeString = [[ NSString alloc ] initWithFormat:@"%d", gBlankingTime ];
|
||||
mBlankingTimeString = [[ NSString alloc ] initWithFormat:@"%d", gBlankingTime ];
|
||||
[ mBlankingTimeTextField setStringValue:mBlankingTimeString ];
|
||||
|
||||
return mConfigureSheet;
|
||||
|
@ -453,7 +528,7 @@ int signof(float x) {
|
|||
// save the UI state
|
||||
gGoToBlank = [ mGoToBlankCheckbox state ];
|
||||
mBlankingTimeString = [ mBlankingTimeTextField stringValue ];
|
||||
gBlankingTime = [ mBlankingTimeString intValue ];
|
||||
gBlankingTime = [ mBlankingTimeString intValue ];
|
||||
|
||||
// write the defaults
|
||||
[ defaults setInteger:gGoToBlank forKey:@"GoToBlank" ];
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
|
||||
// Flags for testing & debugging
|
||||
#define CREATE_LOG 0
|
||||
#define USE_SPECIAL_LOG_FILE 0
|
||||
#define USE_SPECIAL_LOG_FILE 1
|
||||
|
||||
#define TEXTLOGOFREQUENCY 60 /* Number of times per second to update moving logo with text */
|
||||
#define NOTEXTLOGOFREQUENCY 4 /* Times per second to call animateOneFrame if no moving logo with text */
|
||||
|
@ -72,7 +72,6 @@ extern CFStringRef gPathToBundleResources;
|
|||
|
||||
static SaverState saverState = SaverState_Idle;
|
||||
// int gQuitCounter = 0;
|
||||
static long gSystemVersion = 0;
|
||||
|
||||
|
||||
const char * CantLaunchCCMsg = "Unable to launch BOINC application.";
|
||||
|
@ -91,7 +90,7 @@ const char * DefaultGFXAppCrashedMsg = "Default screensaver module had an unrec
|
|||
// If there are multiple displays, this may get called
|
||||
// multiple times (once for each display), so we need to guard
|
||||
// against any problems that may cause.
|
||||
int initBOINCSaver() {
|
||||
void initBOINCSaver() {
|
||||
#ifdef _DEBUG
|
||||
char buf1[256], buf2[256];
|
||||
strcpy(buf1, getenv("HOME"));
|
||||
|
@ -107,11 +106,18 @@ int initBOINCSaver() {
|
|||
|
||||
if (gspScreensaver == NULL) {
|
||||
gspScreensaver = new CScreensaver();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int startBOINCSaver() {
|
||||
if (gspScreensaver) {
|
||||
return gspScreensaver->Create();
|
||||
}
|
||||
return TEXTLOGOFREQUENCY;
|
||||
}
|
||||
|
||||
|
||||
int getSSMessage(char **theMessage, int* coveredFreq) {
|
||||
if (gspScreensaver) {
|
||||
return gspScreensaver->getSSMessage(theMessage, coveredFreq);
|
||||
|
@ -148,9 +154,13 @@ void closeBOINCSaver() {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
double getDTime() {
|
||||
return dtime();
|
||||
}
|
||||
|
||||
|
||||
CScreensaver::CScreensaver() {
|
||||
OSStatus err;
|
||||
|
||||
m_dwBlankScreen = 0;
|
||||
m_dwBlankTime = 0;
|
||||
m_bErrorMode = false;
|
||||
|
@ -171,11 +181,6 @@ CScreensaver::CScreensaver() {
|
|||
m_bResetCoreState = TRUE;
|
||||
rpc = 0;
|
||||
m_bConnected = false;
|
||||
|
||||
err = Gestalt(gestaltSystemVersion, &gSystemVersion);
|
||||
if (err != noErr) {
|
||||
gSystemVersion = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -245,7 +250,7 @@ OSStatus CScreensaver::initBOINCApp() {
|
|||
OSStatus err;
|
||||
static int retryCount = 0;
|
||||
long brandId = 0;
|
||||
|
||||
|
||||
saverState = SaverState_CantLaunchCoreClient;
|
||||
|
||||
brandId = GetBrandID();
|
||||
|
@ -273,8 +278,13 @@ OSStatus CScreensaver::initBOINCApp() {
|
|||
if (++retryCount > 3) // Limit to 3 relaunches to prevent thrashing
|
||||
return -1;
|
||||
|
||||
#ifdef _DEBUG
|
||||
err = -1;
|
||||
#else
|
||||
err = GetpathToBOINCManagerApp(boincPath, sizeof(boincPath));
|
||||
if (err) { // If we couldn't find BOINCManager.app, try default path
|
||||
#endif
|
||||
if (err)
|
||||
{ // If we couldn't find BOINCManager.app, try default path
|
||||
strcpy(boincPath, "/Applications/");
|
||||
if (brandId)
|
||||
strcat(boincPath, m_BrandText);
|
||||
|
@ -544,7 +554,7 @@ void CScreensaver::HandleRPCError() {
|
|||
|
||||
bool CScreensaver::CreateDataManagementThread() {
|
||||
int retval;
|
||||
|
||||
|
||||
if (m_hDataManagementThread == NULL) {
|
||||
retval = pthread_create(&m_hDataManagementThread, NULL, DataManagementProcStub, 0);
|
||||
if (retval) {
|
||||
|
@ -567,7 +577,7 @@ bool CScreensaver::DestroyDataManagementThread() {
|
|||
}
|
||||
|
||||
if (rpc) {
|
||||
rpc->close(); // In case DataManagementProc is hung waiting for RPC
|
||||
rpc->close(); // In case DataManagementProc is hung waiting for RPC
|
||||
}
|
||||
m_hDataManagementThread = NULL; // Don't delay more if this routine is called again.
|
||||
if (m_hGraphicsApplication) {
|
||||
|
@ -750,8 +760,8 @@ void print_to_log_file(const char *format, ...) {
|
|||
f = fopen(buf, "a");
|
||||
if (!f) return;
|
||||
|
||||
freopen(buf, "a", stdout);
|
||||
freopen(buf, "a", stderr);
|
||||
// freopen(buf, "a", stdout);
|
||||
// freopen(buf, "a", stderr);
|
||||
#else
|
||||
#define f stderr
|
||||
#endif
|
||||
|
|
|
@ -261,7 +261,7 @@ int CScreensaver::terminate_v6_screensaver(int& graphics_application)
|
|||
// match that of the target process, though in practice that seems
|
||||
// not to be true on the Mac.
|
||||
|
||||
char current_dir[MAXPATHLEN];
|
||||
char current_dir[PATH_MAX];
|
||||
char gfx_pid[16];
|
||||
pid_t thePID;
|
||||
int i;
|
||||
|
|
|
@ -220,6 +220,9 @@ void COPROC_CUDA::get(
|
|||
|
||||
#ifdef __APPLE__
|
||||
cudalib = dlopen("/usr/local/cuda/lib/libcudart.dylib", RTLD_NOW);
|
||||
if (!cudalib) {
|
||||
cudalib = dlopen("/usr/local/cuda/lib/libcuda.dylib", RTLD_NOW);
|
||||
}
|
||||
#else
|
||||
// libcudart.so is included with the BOINC install for linux,
|
||||
// so look for it in the current dir.
|
||||
|
|
|
@ -1998,6 +1998,7 @@
|
|||
isa = PBXProject;
|
||||
buildConfigurationList = DD9E2381091CBDAE0048316E /* Build configuration list for PBXProject "boinc" */;
|
||||
compatibilityVersion = "Xcode 3.0";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 1;
|
||||
knownRegions = (
|
||||
English,
|
||||
|
@ -2262,7 +2263,7 @@
|
|||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "if [ \"$BUILD_STYLE\" = \"i386_Deployment\" ] || [ \"$BUILD_STYLE\" = \"ppc_Deployment\" ] || [ \"$BUILD_STYLE\" = \"Deployment\" ]; then\n mkdir \"${BUILT_PRODUCTS_DIR}/SymbolTables\"\n if [ \"${BUILT_PRODUCTS_DIR}/BOINCManager.app/Contents/MacOS/BOINCManager\" -nt \"$TARGET_BUILD_DIR/SymbolTables/BOINCManager_i386\" ]; then\n lipo \"${BUILT_PRODUCTS_DIR}/BOINCManager.app/Contents/MacOS/BOINCManager\" -thin i386 -output \"$TARGET_BUILD_DIR/SymbolTables/BOINCManager_i386\"\n lipo \"${BUILT_PRODUCTS_DIR}/BOINCManager.app/Contents/MacOS/BOINCManager\" -thin ppc -output \"$TARGET_BUILD_DIR/SymbolTables/BOINCManager_ppc\"\n /usr/bin/strip \"${BUILT_PRODUCTS_DIR}/BOINCManager.app/Contents/MacOS/BOINCManager\"\n\ttouch \"$TARGET_BUILD_DIR/SymbolTables/BOINCManager_i386\"\n\ttouch \"$TARGET_BUILD_DIR/SymbolTables/BOINCManager_ppc\"\n fi\nfi\n";
|
||||
shellScript = "if [ \"$BUILD_STYLE\" = \"i386_Deployment\" ] || [ \"$BUILD_STYLE\" = \"ppc_Deployment\" ] || [ \"$BUILD_STYLE\" = \"Deployment\" ]; then\n mkdir -p \"${BUILT_PRODUCTS_DIR}/SymbolTables\"\n if [ \"${BUILT_PRODUCTS_DIR}/BOINCManager.app/Contents/MacOS/BOINCManager\" -nt \"$TARGET_BUILD_DIR/SymbolTables/BOINCManager_i386\" ]; then\n lipo \"${BUILT_PRODUCTS_DIR}/BOINCManager.app/Contents/MacOS/BOINCManager\" -thin i386 -output \"$TARGET_BUILD_DIR/SymbolTables/BOINCManager_i386\"\n lipo \"${BUILT_PRODUCTS_DIR}/BOINCManager.app/Contents/MacOS/BOINCManager\" -thin ppc -output \"$TARGET_BUILD_DIR/SymbolTables/BOINCManager_ppc\"\n /usr/bin/strip \"${BUILT_PRODUCTS_DIR}/BOINCManager.app/Contents/MacOS/BOINCManager\"\n\ttouch \"$TARGET_BUILD_DIR/SymbolTables/BOINCManager_i386\"\n\ttouch \"$TARGET_BUILD_DIR/SymbolTables/BOINCManager_ppc\"\n fi\nfi\n";
|
||||
};
|
||||
DD7355180D9110AE0006A9D1 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
|
@ -2277,7 +2278,7 @@
|
|||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "if [ \"$BUILD_STYLE\" = \"i386_Deployment\" ] || [ \"$BUILD_STYLE\" = \"ppc_Deployment\" ] || [ \"$BUILD_STYLE\" = \"Deployment-no64\" ] || [ \"$BUILD_STYLE\" = \"Deployment\" ]; then\n mkdir \"${BUILT_PRODUCTS_DIR}/SymbolTables\"\n if [ \"${BUILT_PRODUCTS_DIR}/$PRODUCT_NAME\" -nt \"$TARGET_BUILD_DIR/SymbolTables/${PRODUCT_NAME}_i386\" ]; then\n lipo \"${BUILT_PRODUCTS_DIR}/$PRODUCT_NAME\" -thin i386 -output \"$TARGET_BUILD_DIR/SymbolTables/${PRODUCT_NAME}_i386\"\n lipo \"${BUILT_PRODUCTS_DIR}/$PRODUCT_NAME\" -thin x86_64 -output \"$TARGET_BUILD_DIR/SymbolTables/${PRODUCT_NAME}_x86_64\"\n lipo \"${BUILT_PRODUCTS_DIR}/$PRODUCT_NAME\" -thin ppc -output \"$TARGET_BUILD_DIR/SymbolTables/${PRODUCT_NAME}_ppc\"\n /usr/bin/strip \"${BUILT_PRODUCTS_DIR}/$PRODUCT_NAME\"\n touch \"$TARGET_BUILD_DIR/SymbolTables/${PRODUCT_NAME}_i386\"\n touch \"$TARGET_BUILD_DIR/SymbolTables/${PRODUCT_NAME}_x86_64\"\n touch \"$TARGET_BUILD_DIR/SymbolTables/${PRODUCT_NAME}_ppc\"\n fi\nfi";
|
||||
shellScript = "if [ \"$BUILD_STYLE\" = \"i386_Deployment\" ] || [ \"$BUILD_STYLE\" = \"ppc_Deployment\" ] || [ \"$BUILD_STYLE\" = \"Deployment-no64\" ] || [ \"$BUILD_STYLE\" = \"Deployment\" ]; then\n mkdir -p \"${BUILT_PRODUCTS_DIR}/SymbolTables\"\n if [ \"${BUILT_PRODUCTS_DIR}/$PRODUCT_NAME\" -nt \"$TARGET_BUILD_DIR/SymbolTables/${PRODUCT_NAME}_i386\" ]; then\n lipo \"${BUILT_PRODUCTS_DIR}/$PRODUCT_NAME\" -thin i386 -output \"$TARGET_BUILD_DIR/SymbolTables/${PRODUCT_NAME}_i386\"\n lipo \"${BUILT_PRODUCTS_DIR}/$PRODUCT_NAME\" -thin x86_64 -output \"$TARGET_BUILD_DIR/SymbolTables/${PRODUCT_NAME}_x86_64\"\n lipo \"${BUILT_PRODUCTS_DIR}/$PRODUCT_NAME\" -thin ppc -output \"$TARGET_BUILD_DIR/SymbolTables/${PRODUCT_NAME}_ppc\"\n /usr/bin/strip \"${BUILT_PRODUCTS_DIR}/$PRODUCT_NAME\"\n touch \"$TARGET_BUILD_DIR/SymbolTables/${PRODUCT_NAME}_i386\"\n touch \"$TARGET_BUILD_DIR/SymbolTables/${PRODUCT_NAME}_x86_64\"\n touch \"$TARGET_BUILD_DIR/SymbolTables/${PRODUCT_NAME}_ppc\"\n fi\nfi";
|
||||
};
|
||||
DD73551E0D9111150006A9D1 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
|
@ -3252,7 +3253,6 @@
|
|||
DD62C37D0A801FB400B3D68A /* Dev_noSandbox */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
OTHER_LDFLAGS = "";
|
||||
PRODUCT_NAME = boinc;
|
||||
};
|
||||
|
@ -3261,7 +3261,6 @@
|
|||
DD62C37E0A801FB400B3D68A /* Deploy_noSandbox */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
OTHER_LDFLAGS = "";
|
||||
PRODUCT_NAME = boinc;
|
||||
};
|
||||
|
@ -3270,7 +3269,6 @@
|
|||
DD62C3810A801FB400B3D68A /* Dev_noSandbox */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
PRODUCT_NAME = boinc_api;
|
||||
};
|
||||
name = Dev_noSandbox;
|
||||
|
@ -3278,7 +3276,6 @@
|
|||
DD62C3820A801FB400B3D68A /* Deploy_noSandbox */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
PRODUCT_NAME = boinc_api;
|
||||
};
|
||||
name = Deploy_noSandbox;
|
||||
|
@ -3335,10 +3332,10 @@
|
|||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEPLOYMENT_POSTPROCESSING = YES;
|
||||
HEADER_SEARCH_PATHS = "../../curl-7.19.4/include";
|
||||
HEADER_SEARCH_PATHS = "../../curl-7.21.7/include";
|
||||
OTHER_LDFLAGS = (
|
||||
"../../curl-7.19.4/lib/.libs/libcurl.a",
|
||||
"../../c-ares-1.6.0/.libs/libcares.a",
|
||||
"../../curl-7.21.7/lib/.libs/libcurl.a",
|
||||
"../../c-ares-1.7.4/.libs/libcares.a",
|
||||
"-lcrypto",
|
||||
"-lssl",
|
||||
"-lldap",
|
||||
|
@ -3360,10 +3357,10 @@
|
|||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEPLOYMENT_POSTPROCESSING = YES;
|
||||
HEADER_SEARCH_PATHS = "../../curl-7.19.4/include";
|
||||
HEADER_SEARCH_PATHS = "../../curl-7.21.7/include";
|
||||
OTHER_LDFLAGS = (
|
||||
"../../curl-7.19.4/lib/.libs/libcurl.a",
|
||||
"../../c-ares-1.6.0/.libs/libcares.a",
|
||||
"../../curl-7.21.7/lib/.libs/libcurl.a",
|
||||
"../../c-ares-1.7.4/.libs/libcares.a",
|
||||
"-lcrypto",
|
||||
"-lssl",
|
||||
"-lldap",
|
||||
|
@ -3451,7 +3448,6 @@
|
|||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DEBUG_INFORMATION_FORMAT = stabs;
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
OTHER_LDFLAGS = "-lboinc";
|
||||
PRODUCT_NAME = boinccmd;
|
||||
};
|
||||
|
@ -3461,7 +3457,6 @@
|
|||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DEBUG_INFORMATION_FORMAT = stabs;
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
OTHER_LDFLAGS = "-lboinc";
|
||||
PRODUCT_NAME = boinccmd;
|
||||
};
|
||||
|
@ -3712,6 +3707,7 @@
|
|||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
|
||||
GCC_VERSION = 4.0;
|
||||
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
|
||||
LIBRARY_STYLE = STATIC;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.4;
|
||||
|
@ -3726,9 +3722,9 @@
|
|||
);
|
||||
PREBINDING = NO;
|
||||
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
"SDKROOT[arch=ppc]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.3.9.sdk";
|
||||
"SDKROOT[arch=ppc]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
"SDKROOT[arch=x86_64]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
|
||||
SDKROOT_ppc = "$(DEVELOPER_SDK_DIR)/MacOSX10.3.9.sdk";
|
||||
SDKROOT_ppc = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
SDKROOT_x86_64 = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
|
||||
STRIP_INSTALLED_PRODUCT = NO;
|
||||
WARNING_CFLAGS = (
|
||||
|
@ -3753,6 +3749,7 @@
|
|||
GCC_FAST_MATH = NO;
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
|
||||
GCC_VERSION = 4.0;
|
||||
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
|
||||
LIBRARY_STYLE = STATIC;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.4;
|
||||
|
@ -3767,9 +3764,9 @@
|
|||
);
|
||||
PREBINDING = NO;
|
||||
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
"SDKROOT[arch=ppc]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.3.9.sdk";
|
||||
"SDKROOT[arch=ppc]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
"SDKROOT[arch=x86_64]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
|
||||
SDKROOT_ppc = "$(DEVELOPER_SDK_DIR)/MacOSX10.3.9.sdk";
|
||||
SDKROOT_ppc = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
SDKROOT_x86_64 = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
|
||||
STRIP_INSTALLED_PRODUCT = YES;
|
||||
WARNING_CFLAGS = (
|
||||
|
@ -4130,6 +4127,7 @@
|
|||
GCC_FAST_MATH = NO;
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
|
||||
GCC_VERSION = 4.0;
|
||||
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
|
||||
LIBRARY_STYLE = STATIC;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.4;
|
||||
|
@ -4145,9 +4143,9 @@
|
|||
);
|
||||
PREBINDING = NO;
|
||||
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
"SDKROOT[arch=ppc]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.3.9.sdk";
|
||||
"SDKROOT[arch=ppc]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
"SDKROOT[arch=x86_64]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
|
||||
SDKROOT_ppc = "$(DEVELOPER_SDK_DIR)/MacOSX10.3.9.sdk";
|
||||
SDKROOT_ppc = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
SDKROOT_x86_64 = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
|
||||
STRIP_INSTALLED_PRODUCT = YES;
|
||||
WARNING_CFLAGS = (
|
||||
|
@ -4185,10 +4183,10 @@
|
|||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEPLOYMENT_POSTPROCESSING = YES;
|
||||
HEADER_SEARCH_PATHS = "../../curl-7.19.4/include";
|
||||
HEADER_SEARCH_PATHS = "../../curl-7.21.7/include";
|
||||
OTHER_LDFLAGS = (
|
||||
"../../curl-7.19.4/lib/.libs/libcurl.a",
|
||||
"../../c-ares-1.6.0/.libs/libcares.a",
|
||||
"../../curl-7.21.7/lib/.libs/libcurl.a",
|
||||
"../../c-ares-1.7.4/.libs/libcares.a",
|
||||
"-lcrypto",
|
||||
"-lssl",
|
||||
"-lldap",
|
||||
|
@ -4204,7 +4202,6 @@
|
|||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DEBUG_INFORMATION_FORMAT = stabs;
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
OTHER_LDFLAGS = "-lboinc";
|
||||
PRODUCT_NAME = boinccmd;
|
||||
};
|
||||
|
@ -4213,7 +4210,6 @@
|
|||
DD96706B0CED9A800009D32B /* Deployment-no64 */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
OTHER_LDFLAGS = "";
|
||||
PRODUCT_NAME = boinc;
|
||||
};
|
||||
|
@ -4222,7 +4218,6 @@
|
|||
DD96706D0CED9A800009D32B /* Deployment-no64 */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
HEADER_SEARCH_PATHS = "../../jpeg-6b";
|
||||
PRODUCT_NAME = boinc_graphics2;
|
||||
};
|
||||
|
@ -4231,7 +4226,6 @@
|
|||
DD96706E0CED9A800009D32B /* Deployment-no64 */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
PRODUCT_NAME = boinc_api;
|
||||
};
|
||||
name = "Deployment-no64";
|
||||
|
@ -4422,7 +4416,6 @@
|
|||
ppc,
|
||||
x86_64,
|
||||
);
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
OTHER_CFLAGS = (
|
||||
"-DMAC_OS_X_VERSION_MAX_ALLOWED=1040",
|
||||
"-D_THREAD_SAFE",
|
||||
|
@ -4461,7 +4454,6 @@
|
|||
ppc,
|
||||
x86_64,
|
||||
);
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
"OTHER_CFLAGS[arch=ppc]" = (
|
||||
"-DMAC_OS_X_VERSION_MAX_ALLOWED=1030",
|
||||
"-D_THREAD_SAFE",
|
||||
|
@ -4494,7 +4486,22 @@
|
|||
DD9843DD09920F220090855B /* Deployment */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = (
|
||||
i386,
|
||||
ppc,
|
||||
x86_64,
|
||||
);
|
||||
GCC_ENABLE_OBJC_GC = supported;
|
||||
INFOPLIST_FILE = "ScreenSaver-Info.plist";
|
||||
"MACOSX_DEPLOYMENT_TARGET[arch=x86_64]" = 10.6;
|
||||
"OTHER_CFLAGS[arch=x86_64]" = (
|
||||
"-DMAC_OS_X_VERSION_MAX_ALLOWED=1060",
|
||||
"-D_THREAD_SAFE",
|
||||
"-DNDEBUG",
|
||||
"-DSANDBOX",
|
||||
"-include",
|
||||
../clientgui/mac/config.h,
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-framework",
|
||||
Foundation,
|
||||
|
@ -4502,6 +4509,8 @@
|
|||
AppKit,
|
||||
);
|
||||
PRODUCT_NAME = BOINCSaver;
|
||||
"SDKROOT[arch=x86_64]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk";
|
||||
SDKROOT_x86_64 = "$(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk";
|
||||
WRAPPER_EXTENSION = saver;
|
||||
};
|
||||
name = Deployment;
|
||||
|
@ -4517,7 +4526,7 @@
|
|||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEPLOYMENT_POSTPROCESSING = YES;
|
||||
HEADER_SEARCH_PATHS = "../../curl-7.19.4/include";
|
||||
HEADER_SEARCH_PATHS = "../../curl-7.21.7/include";
|
||||
"OTHER_CFLAGS[arch=x86_64]" = (
|
||||
"-DMAC_OS_X_VERSION_MAX_ALLOWED=1050",
|
||||
"-D_THREAD_SAFE",
|
||||
|
@ -4527,8 +4536,8 @@
|
|||
../clientgui/mac/config.h,
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"../../curl-7.19.4/lib/.libs/libcurl.a",
|
||||
"../../c-ares-1.6.0/.libs/libcares.a",
|
||||
"../../curl-7.21.7/lib/.libs/libcurl.a",
|
||||
"../../c-ares-1.7.4/.libs/libcares.a",
|
||||
"-lcrypto",
|
||||
"-lssl",
|
||||
"-lldap",
|
||||
|
@ -4581,7 +4590,6 @@
|
|||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DEBUG_INFORMATION_FORMAT = stabs;
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
"OTHER_CFLAGS[arch=ppc]" = (
|
||||
"-DMAC_OS_X_VERSION_MAX_ALLOWED=1030",
|
||||
"-D_THREAD_SAFE",
|
||||
|
@ -4638,6 +4646,7 @@
|
|||
GCC_FAST_MATH = NO;
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
|
||||
GCC_VERSION = 4.0;
|
||||
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
|
||||
LIBRARY_STYLE = STATIC;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.4;
|
||||
|
@ -4655,9 +4664,9 @@
|
|||
);
|
||||
PREBINDING = NO;
|
||||
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
"SDKROOT[arch=ppc]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.3.9.sdk";
|
||||
"SDKROOT[arch=ppc]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
"SDKROOT[arch=x86_64]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
|
||||
SDKROOT_ppc = "$(DEVELOPER_SDK_DIR)/MacOSX10.3.9.sdk";
|
||||
SDKROOT_ppc = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
SDKROOT_x86_64 = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
|
||||
STRIP_INSTALLED_PRODUCT = YES;
|
||||
WARNING_CFLAGS = (
|
||||
|
@ -4671,7 +4680,6 @@
|
|||
DD9E2352091CBDAE0048316E /* Development */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
OTHER_LDFLAGS = "";
|
||||
PRODUCT_NAME = boinc;
|
||||
};
|
||||
|
@ -4680,7 +4688,6 @@
|
|||
DD9E2353091CBDAE0048316E /* ppc_Deployment */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
OTHER_LDFLAGS = "";
|
||||
PRODUCT_NAME = boinc;
|
||||
};
|
||||
|
@ -4689,7 +4696,6 @@
|
|||
DD9E235A091CBDAE0048316E /* Development */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
PRODUCT_NAME = boinc_api;
|
||||
};
|
||||
name = Development;
|
||||
|
@ -4697,7 +4703,6 @@
|
|||
DD9E235B091CBDAE0048316E /* ppc_Deployment */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
PRODUCT_NAME = boinc_api;
|
||||
};
|
||||
name = ppc_Deployment;
|
||||
|
@ -4755,10 +4760,10 @@
|
|||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEPLOYMENT_POSTPROCESSING = YES;
|
||||
HEADER_SEARCH_PATHS = "../../curl-7.19.4/include";
|
||||
HEADER_SEARCH_PATHS = "../../curl-7.21.7/include";
|
||||
OTHER_LDFLAGS = (
|
||||
"../../curl-7.19.4/lib/.libs/libcurl.a",
|
||||
"../../c-ares-1.6.0/.libs/libcares.a",
|
||||
"../../curl-7.21.7/lib/.libs/libcurl.a",
|
||||
"../../c-ares-1.7.4/.libs/libcares.a",
|
||||
"-lcrypto",
|
||||
"-lssl",
|
||||
"-lldap",
|
||||
|
@ -4777,10 +4782,10 @@
|
|||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEPLOYMENT_POSTPROCESSING = YES;
|
||||
HEADER_SEARCH_PATHS = "../../curl-7.19.4/include";
|
||||
HEADER_SEARCH_PATHS = "../../curl-7.21.7/include";
|
||||
OTHER_LDFLAGS = (
|
||||
"../../curl-7.19.4/lib/.libs/libcurl.a",
|
||||
"../../c-ares-1.6.0/.libs/libcares.a",
|
||||
"../../curl-7.21.7/lib/.libs/libcurl.a",
|
||||
"../../c-ares-1.7.4/.libs/libcares.a",
|
||||
"-lcrypto",
|
||||
"-lssl",
|
||||
"-lldap",
|
||||
|
@ -4870,7 +4875,6 @@
|
|||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DEBUG_INFORMATION_FORMAT = stabs;
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
OTHER_LDFLAGS = "-lboinc";
|
||||
PRODUCT_NAME = boinccmd;
|
||||
};
|
||||
|
@ -4880,7 +4884,6 @@
|
|||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DEBUG_INFORMATION_FORMAT = stabs;
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
OTHER_LDFLAGS = "-lboinc";
|
||||
PRODUCT_NAME = boinccmd;
|
||||
};
|
||||
|
@ -4952,6 +4955,7 @@
|
|||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
|
||||
GCC_VERSION = 4.0;
|
||||
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
|
||||
LIBRARY_STYLE = STATIC;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.4;
|
||||
|
@ -4967,9 +4971,9 @@
|
|||
);
|
||||
PREBINDING = NO;
|
||||
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
"SDKROOT[arch=ppc]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.3.9.sdk";
|
||||
"SDKROOT[arch=ppc]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
"SDKROOT[arch=x86_64]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
|
||||
SDKROOT_ppc = "$(DEVELOPER_SDK_DIR)/MacOSX10.3.9.sdk";
|
||||
SDKROOT_ppc = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
SDKROOT_x86_64 = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
|
||||
STRIP_INSTALLED_PRODUCT = NO;
|
||||
WARNING_CFLAGS = (
|
||||
|
@ -4990,6 +4994,7 @@
|
|||
DEPLOYMENT_POSTPROCESSING = YES;
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
|
||||
GCC_VERSION = 4.0;
|
||||
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
|
||||
LIBRARY_STYLE = STATIC;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.4;
|
||||
|
@ -5005,9 +5010,9 @@
|
|||
);
|
||||
PREBINDING = NO;
|
||||
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
"SDKROOT[arch=ppc]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.3.9.sdk";
|
||||
"SDKROOT[arch=ppc]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
"SDKROOT[arch=x86_64]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
|
||||
SDKROOT_ppc = "$(DEVELOPER_SDK_DIR)/MacOSX10.3.9.sdk";
|
||||
SDKROOT_ppc = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
SDKROOT_x86_64 = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
|
||||
STRIP_INSTALLED_PRODUCT = YES;
|
||||
WARNING_CFLAGS = (
|
||||
|
@ -5021,7 +5026,6 @@
|
|||
DDA2D1570952A93E00D0B538 /* i386_Deployment */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
OTHER_LDFLAGS = "";
|
||||
PRODUCT_NAME = boinc;
|
||||
};
|
||||
|
@ -5030,7 +5034,6 @@
|
|||
DDA2D1590952A93E00D0B538 /* i386_Deployment */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
PRODUCT_NAME = boinc_api;
|
||||
};
|
||||
name = i386_Deployment;
|
||||
|
@ -5065,10 +5068,10 @@
|
|||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEPLOYMENT_POSTPROCESSING = YES;
|
||||
HEADER_SEARCH_PATHS = "../../curl-7.19.4/include";
|
||||
HEADER_SEARCH_PATHS = "../../curl-7.21.7/include";
|
||||
OTHER_LDFLAGS = (
|
||||
"../../curl-7.19.4/lib/.libs/libcurl.a",
|
||||
"../../c-ares-1.6.0/.libs/libcares.a",
|
||||
"../../curl-7.21.7/lib/.libs/libcurl.a",
|
||||
"../../c-ares-1.7.4/.libs/libcares.a",
|
||||
"-lcrypto",
|
||||
"-lssl",
|
||||
"-lldap",
|
||||
|
@ -5121,7 +5124,6 @@
|
|||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DEBUG_INFORMATION_FORMAT = stabs;
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
OTHER_LDFLAGS = "-lboinc";
|
||||
PRODUCT_NAME = boinccmd;
|
||||
};
|
||||
|
@ -5166,6 +5168,7 @@
|
|||
GCC_FAST_MATH = NO;
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
|
||||
GCC_VERSION = 4.0;
|
||||
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
|
||||
LIBRARY_STYLE = STATIC;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.4;
|
||||
|
@ -5181,9 +5184,9 @@
|
|||
);
|
||||
PREBINDING = NO;
|
||||
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
"SDKROOT[arch=ppc]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.3.9.sdk";
|
||||
"SDKROOT[arch=ppc]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
"SDKROOT[arch=x86_64]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
|
||||
SDKROOT_ppc = "$(DEVELOPER_SDK_DIR)/MacOSX10.3.9.sdk";
|
||||
SDKROOT_ppc = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
SDKROOT_x86_64 = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
|
||||
STRIP_INSTALLED_PRODUCT = YES;
|
||||
WARNING_CFLAGS = (
|
||||
|
@ -5197,7 +5200,6 @@
|
|||
DDB873FD0C850BC800E0DE1F /* Development */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
HEADER_SEARCH_PATHS = "../../jpeg-6b";
|
||||
PRODUCT_NAME = boinc_graphics2;
|
||||
};
|
||||
|
@ -5206,7 +5208,6 @@
|
|||
DDB873FE0C850BC800E0DE1F /* Dev_noSandbox */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
HEADER_SEARCH_PATHS = "../../jpeg-6b";
|
||||
PRODUCT_NAME = boinc_graphics2;
|
||||
};
|
||||
|
@ -5215,7 +5216,6 @@
|
|||
DDB873FF0C850BC800E0DE1F /* ppc_Deployment */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
HEADER_SEARCH_PATHS = "../../jpeg-6b";
|
||||
PRODUCT_NAME = boinc_graphics2;
|
||||
};
|
||||
|
@ -5224,7 +5224,6 @@
|
|||
DDB874000C850BC800E0DE1F /* i386_Deployment */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
HEADER_SEARCH_PATHS = "../../jpeg-6b";
|
||||
PRODUCT_NAME = boinc_graphics2;
|
||||
};
|
||||
|
@ -5238,7 +5237,6 @@
|
|||
ppc,
|
||||
x86_64,
|
||||
);
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
HEADER_SEARCH_PATHS = "../../jpeg-6b";
|
||||
"OTHER_CFLAGS[arch=ppc]" = (
|
||||
"-DMAC_OS_X_VERSION_MAX_ALLOWED=1030",
|
||||
|
@ -5264,7 +5262,6 @@
|
|||
DDB874020C850BC800E0DE1F /* Deploy_noSandbox */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_VERSION_ppc = 3.3;
|
||||
HEADER_SEARCH_PATHS = "../../jpeg-6b";
|
||||
PRODUCT_NAME = boinc_graphics2;
|
||||
};
|
||||
|
|
|
@ -18,52 +18,26 @@
|
|||
# along with BOINC. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#
|
||||
# Script to build Macintosh Universal Binary library of c-ares-1.6.0 for
|
||||
# Script to build Macintosh Universal Binary library of c-ares-1.7.4 for
|
||||
# use in building BOINC.
|
||||
#
|
||||
# by Charlie Fenton 7/21/06
|
||||
# Updated 12/17/08
|
||||
# Updated 12/3/09 for OS 10.6 Snow Leopard and XCode 3.2.1
|
||||
# Updated 8/4/11 for c-ares 1.7.4
|
||||
#
|
||||
## In Terminal, CD to the c-ares-1.6.0 directory.
|
||||
## cd [path]/c-ares-1.6.0/
|
||||
## In Terminal, CD to the c-ares-1.7.4 directory.
|
||||
## cd [path]/c-ares-1.7.4/
|
||||
## then run this script:
|
||||
## source [path]/buildc-ares.sh [ -clean ] [ -gcc33 ]
|
||||
## source [path]/buildc-ares.sh [ -clean ]
|
||||
##
|
||||
## the -clean argument will force a full rebuild.
|
||||
##
|
||||
## the -gcc33 argument will cause the PowerPC build to use gcc-3.3
|
||||
## otherwise both architectures will be built using gcc_4.0
|
||||
##
|
||||
## Use -gcc33 if you need to link with a project application using BOINC
|
||||
## libraries built with gcc-3.3 for backward compatibility to OS 10.3.0
|
||||
##
|
||||
## Build with gcc-4.0 to link with the BOINC client
|
||||
#
|
||||
|
||||
AlreadyBuilt=0
|
||||
|
||||
if [ "$1" != "-clean" ]; then
|
||||
if [ -f .libs/libcares_ppc.a ] && [ -f .libs/libcares_i386.a ] && [ -f .libs/libcares.a ]; then
|
||||
AlreadyBuilt=1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -d /Developer/SDKs/MacOSX10.5.sdk/ ]; then
|
||||
# Build for x86_64 architecture if OS 10.5 SDK is present
|
||||
if [ ! -f .libs/libcares_x86_64.a ]; then
|
||||
AlreadyBuilt=0
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $AlreadyBuilt -ne 0 ]; then
|
||||
echo "c-ares-1.6.0 already built"
|
||||
echo "c-ares-1.7.4 already built"
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ ! -d /Developer/SDKs/MacOSX10.3.9.sdk/ ]; then
|
||||
echo "ERROR: System 10.3.9 SDK is missing. For details, see build instructions at"
|
||||
echo "boinc/mac_build/HowToBuildBOINC_XCode.rtf or http://boinc.berkeley.edu/trac/wiki/MacBuild"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ ! -d /Developer/SDKs/MacOSX10.4u.sdk/ ]; then
|
||||
|
@ -72,43 +46,20 @@ if [ ! -d /Developer/SDKs/MacOSX10.4u.sdk/ ]; then
|
|||
return 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "-gcc33" ] || [ "$2" = "-gcc33" ]; then
|
||||
usegcc33=1
|
||||
else
|
||||
usegcc33=0
|
||||
fi
|
||||
|
||||
export PATH=/usr/local/bin:$PATH
|
||||
export SDKROOT="/Developer/SDKs/MacOSX10.3.9.sdk"
|
||||
export MACOSX_DEPLOYMENT_TARGET=10.3
|
||||
|
||||
rm -f .libs/libcares.a
|
||||
rm -f .libs/libcares_ppc.a
|
||||
rm -f .libs/libcares_i386.a
|
||||
rm -f .libs/libcares_x86_64.a
|
||||
|
||||
if [ $usegcc33 -ne 0 ]; then
|
||||
|
||||
export CC=/usr/bin/gcc-3.3;export CXX=/usr/bin/g++-3.3
|
||||
export LDFLAGS="-arch ppc -D_NONSTD_SOURCE -isystem /Developer/SDKs/MacOSX10.3.9.sdk -Wl,-syslibroot,/Developer/SDKs/MacOSX10.3.9.sdk"
|
||||
export CPPFLAGS="-arch ppc -D_NONSTD_SOURCE -isystem /Developer/SDKs/MacOSX10.3.9.sdk"
|
||||
export CFLAGS="-arch ppc -D_NONSTD_SOURCE -isystem /Developer/SDKs/MacOSX10.3.9.sdk"
|
||||
|
||||
# curl configure and make expect a path to _installed_ c-ares-1.6.0
|
||||
# so set a temporary install path that does not contain spaces.
|
||||
./configure --enable-shared=NO prefix=/tmp/installed-c-ares --host=ppc
|
||||
if [ $? -ne 0 ]; then return 1; fi
|
||||
|
||||
else
|
||||
|
||||
export CC=/usr/bin/gcc-4.0;export CXX=/usr/bin/g++-4.0
|
||||
export LDFLAGS="-isysroot /Developer/SDKs/MacOSX10.3.9.sdk -Wl,-syslibroot,/Developer/SDKs/MacOSX10.3.9.sdk -arch ppc"
|
||||
export CPPFLAGS="-isysroot /Developer/SDKs/MacOSX10.3.9.sdk -arch ppc"
|
||||
export CFLAGS="-isysroot /Developer/SDKs/MacOSX10.3.9.sdk -arch ppc"
|
||||
export LDFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch ppc"
|
||||
export CPPFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc"
|
||||
export CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc"
|
||||
export SDKROOT="/Developer/SDKs/MacOSX10.4u.sdk"
|
||||
export MACOSX_DEPLOYMENT_TARGET=10.4
|
||||
|
||||
./configure --enable-shared=NO prefix=/tmp/installed-c-ares --host=ppc
|
||||
fi
|
||||
|
||||
if [ $? -ne 0 ]; then return 1; fi
|
||||
|
||||
|
||||
|
@ -116,12 +67,14 @@ make clean
|
|||
|
||||
make
|
||||
if [ $? -ne 0 ]; then return 1; fi
|
||||
# c-ares configure creates a different ares_build.h file for each architecture
|
||||
cp -f ares_build.h ares_build_ppc.h
|
||||
mv -f .libs/libcares.a libcares_ppc.a
|
||||
|
||||
make clean
|
||||
if [ $? -ne 0 ]; then return 1; fi
|
||||
|
||||
##export PATH=/usr/local/bin:$PATH
|
||||
export PATH=/usr/local/bin:$PATH
|
||||
export CC=/usr/bin/gcc-4.0;export CXX=/usr/bin/g++-4.0
|
||||
export LDFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch i386"
|
||||
export CPPFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386"
|
||||
|
@ -141,17 +94,8 @@ export CPPFLAGS=""
|
|||
export CFLAGS=""
|
||||
export SDKROOT=""
|
||||
|
||||
if [ ! -d /Developer/SDKs/MacOSX10.5.sdk/ ]; then
|
||||
mv -f .libs/libcares.a .libs/libcares_i386.a
|
||||
mv -f libcares_ppc.a .libs/
|
||||
lipo -create .libs/libcares_i386.a .libs/libcares_ppc.a -output .libs/libcares.a
|
||||
if [ $? -ne 0 ]; then return 1; fi
|
||||
return 0
|
||||
fi
|
||||
|
||||
|
||||
# Build for x86_64 architecture if OS 10.5 SDK is present
|
||||
|
||||
# c-ares configure creates a different ares_build.h file for each architecture
|
||||
cp -f ares_build.h ares_build_i386.h
|
||||
mv -f .libs/libcares.a libcares_i386.a
|
||||
|
||||
make clean
|
||||
|
@ -177,6 +121,8 @@ export CPPFLAGS=""
|
|||
export CFLAGS=""
|
||||
export SDKROOT=""
|
||||
|
||||
# c-ares configure creates a different ares_build.h file for each architecture
|
||||
cp -f ares_build.h ares_build_x86_64.h
|
||||
mv -f .libs/libcares.a .libs/libcares_x86_64.a
|
||||
mv -f libcares_ppc.a .libs/
|
||||
mv -f libcares_i386.a .libs/
|
||||
|
|
|
@ -18,58 +18,26 @@
|
|||
# along with BOINC. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#
|
||||
# Script to build Macintosh Universal Binary library of curl-7.19.4 for
|
||||
# Script to build Macintosh Universal Binary library of curl-7.21.7 for
|
||||
# use in building BOINC.
|
||||
#
|
||||
# by Charlie Fenton 7/21/06
|
||||
# Updated 3/3/09
|
||||
# Updated 12/3/09 for OS 10.6 Snow Leopard and XCode 3.2.1
|
||||
# Updated 8/4/11 for curl 7.21.7
|
||||
#
|
||||
## In Terminal, CD to the curl-7.19.4 directory.
|
||||
## cd [path]/curl-7.19.4/
|
||||
## In Terminal, CD to the curl-7.21.7 directory.
|
||||
## cd [path]/curl-7.21.7/
|
||||
## then run this script:
|
||||
## source [path]/buildcurl.sh [ -clean ] [ -gcc33 ]
|
||||
## source [path]/buildcurl.sh [ -clean ]
|
||||
##
|
||||
## the -clean argument will force a full rebuild.
|
||||
##
|
||||
## the -gcc33 argument will cause the PowerPC build to use gcc-3.3
|
||||
## otherwise both architectures will be built using gcc_4.0
|
||||
##
|
||||
## Use -gcc33 if you need to link with a project application using BOINC
|
||||
## libraries built with gcc-3.3 for backward compatibility to OS 10.3.0
|
||||
##
|
||||
## Build with gcc-4.0 to link with the BOINC client
|
||||
#
|
||||
|
||||
AlreadyBuilt=0
|
||||
|
||||
if [ "$1" != "-clean" ]; then
|
||||
if [ -f lib/.libs/libcurl_ppc.a ] && [ -f lib/.libs/libcurl_i386.a ] && [ -f lib/.libs/libcurl.a ]; then
|
||||
AlreadyBuilt=1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -d /Developer/SDKs/MacOSX10.5.sdk/ ]; then
|
||||
# Build for x86_64 architecture if OS 10.5 SDK is present
|
||||
if [ ! -f lib/.libs/libcurl_x86_64.a ]; then
|
||||
AlreadyBuilt=0
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $AlreadyBuilt -ne 0 ]; then
|
||||
echo "curl-7.19.4 already built"
|
||||
echo "curl-7.21.7 already built"
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "-gcc33" ] || [ "$2" = "-gcc33" ]; then
|
||||
usegcc33=1
|
||||
else
|
||||
usegcc33=0
|
||||
fi
|
||||
|
||||
if [ ! -d /Developer/SDKs/MacOSX10.3.9.sdk/ ]; then
|
||||
echo "ERROR: System 10.3.9 SDK is missing. For details, see build instructions at"
|
||||
echo "boinc/mac_build/HowToBuildBOINC_XCode.rtf or http://boinc.berkeley.edu/trac/wiki/MacBuild"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ ! -d /Developer/SDKs/MacOSX10.4u.sdk/ ]; then
|
||||
|
@ -81,14 +49,12 @@ fi
|
|||
export PATH=/usr/local/bin:$PATH
|
||||
|
||||
CURL_DIR=`pwd`
|
||||
# curl configure and make expect a path to _installed_ c-ares-1.6.0
|
||||
# curl configure and make expect a path to _installed_ c-ares-1.7.4
|
||||
# so temporarily install c-ares at a path that does not contain spaces.
|
||||
cd ../c-ares-1.6.0
|
||||
cd ../c-ares-1.7.4
|
||||
make install
|
||||
cd "${CURL_DIR}"
|
||||
|
||||
export SDKROOT="/Developer/SDKs/MacOSX10.3.9.sdk"
|
||||
export MACOSX_DEPLOYMENT_TARGET=10.3
|
||||
|
||||
rm -f lib/.libs/libcurl.a
|
||||
rm -f lib/.libs/libcurl_ppc.a
|
||||
|
@ -101,24 +67,17 @@ rm -f include/curl/curlbuild_ppc.h
|
|||
rm -f include/curl/curlbuild_i386.h
|
||||
rm -f include/curl/curlbuild_x86_64.h
|
||||
|
||||
if [ $usegcc33 -ne 0 ]; then
|
||||
|
||||
export CC=/usr/bin/gcc-3.3;export CXX=/usr/bin/g++-3.3
|
||||
export LDFLAGS="-arch ppc -D_NONSTD_SOURCE -isystem /Developer/SDKs/MacOSX10.3.9.sdk -Wl,-syslibroot,/Developer/SDKs/MacOSX10.3.9.sdk"
|
||||
export CPPFLAGS="-arch ppc -D_NONSTD_SOURCE -isystem /Developer/SDKs/MacOSX10.3.9.sdk"
|
||||
export CFLAGS="-arch ppc -D_NONSTD_SOURCE -isystem /Developer/SDKs/MacOSX10.3.9.sdk"
|
||||
|
||||
else
|
||||
|
||||
export CC=/usr/bin/gcc-4.0;export CXX=/usr/bin/g++-4.0
|
||||
export LDFLAGS=" -isysroot /Developer/SDKs/MacOSX10.3.9.sdk -Wl,-syslibroot,/Developer/SDKs/MacOSX10.3.9.sdk -arch ppc"
|
||||
export CPPFLAGS="-isysroot /Developer/SDKs/MacOSX10.3.9.sdk -arch ppc"
|
||||
export CFLAGS="-isysroot /Developer/SDKs/MacOSX10.3.9.sdk -arch ppc"
|
||||
export LDFLAGS=" -isysroot /Developer/SDKs/MacOSX10.4u.sdk -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch ppc"
|
||||
export CPPFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -DMAC_OS_X_VERSION_MAX_ALLOWED=1030 -DMAC_OS_X_VERSION_MIN_REQUIRED=1030"
|
||||
export CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -DMAC_OS_X_VERSION_MAX_ALLOWED=1030 -DMAC_OS_X_VERSION_MIN_REQUIRED=1030"
|
||||
export SDKROOT="/Developer/SDKs/MacOSX10.4u.sdk"
|
||||
export MACOSX_DEPLOYMENT_TARGET=10.3
|
||||
|
||||
fi
|
||||
# c-ares configure creates a different ares_build.h file for each architecture
|
||||
cp -f ../c-ares-1.7.4/ares_build_ppc.h /tmp/installed-c-ares/include/ares_build.h
|
||||
|
||||
./configure --enable-shared=NO --enable-ares=/tmp/installed-c-ares --host=ppc
|
||||
|
||||
if [ $? -ne 0 ]; then return 1; fi
|
||||
|
||||
make clean
|
||||
|
@ -131,37 +90,22 @@ mv -f lib/.libs/libcurl.a lib/libcurl_ppc.a
|
|||
make clean
|
||||
if [ $? -ne 0 ]; then return 1; fi
|
||||
|
||||
##export PATH=/usr/local/bin:$PATH
|
||||
export PATH=/usr/local/bin:$PATH
|
||||
export CC=/usr/bin/gcc-4.0;export CXX=/usr/bin/g++-4.0
|
||||
export LDFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch i386"
|
||||
export CPPFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386"
|
||||
export CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386"
|
||||
export CPPFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -DMAC_OS_X_VERSION_MAX_ALLOWED=1030 -DMAC_OS_X_VERSION_MIN_REQUIRED=1030"
|
||||
export CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -DMAC_OS_X_VERSION_MAX_ALLOWED=1030 -DMAC_OS_X_VERSION_MIN_REQUIRED=1030"
|
||||
export SDKROOT="/Developer/SDKs/MacOSX10.4u.sdk"
|
||||
export MACOSX_DEPLOYMENT_TARGET=10.4
|
||||
|
||||
# c-ares configure creates a different ares_build.h file for each architecture
|
||||
cp -f ../c-ares-1.7.4/ares_build_i386.h /tmp/installed-c-ares/include/ares_build.h
|
||||
|
||||
./configure --enable-shared=NO --enable-ares=/tmp/installed-c-ares --host=i386
|
||||
if [ $? -ne 0 ]; then return 1; fi
|
||||
|
||||
make
|
||||
if [ $? -ne 0 ]; then return 1; fi
|
||||
|
||||
export CC="";export CXX=""
|
||||
export LDFLAGS=""
|
||||
export CPPFLAGS=""
|
||||
export CFLAGS=""
|
||||
export SDKROOT=""
|
||||
|
||||
if [ ! -d /Developer/SDKs/MacOSX10.5.sdk/ ]; then
|
||||
mv -f lib/.libs/libcurl.a lib/.libs/libcurl_i386.a
|
||||
mv -f lib/libcurl_ppc.a lib/.libs/
|
||||
lipo -create lib/.libs/libcurl_i386.a lib/.libs/libcurl_ppc.a -output lib/.libs/libcurl.a
|
||||
if [ $? -ne 0 ]; then return 1; fi
|
||||
return 0
|
||||
fi
|
||||
|
||||
|
||||
# Build for x86_64 architecture if OS 10.5 SDK is present
|
||||
|
||||
mv -f include/curl/curlbuild.h include/curl/curlbuild_i386.h
|
||||
mv -f lib/.libs/libcurl.a lib/libcurl_i386.a
|
||||
|
||||
|
@ -176,6 +120,9 @@ export CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk -arch x86_64"
|
|||
export SDKROOT="/Developer/SDKs/MacOSX10.5.sdk"
|
||||
export MACOSX_DEPLOYMENT_TARGET=10.5
|
||||
|
||||
# c-ares configure creates a different ares_build.h file for each architecture
|
||||
cp -f ../c-ares-1.7.4/ares_build_x86_64.h /tmp/installed-c-ares/include/ares_build.h
|
||||
|
||||
./configure --enable-shared=NO --enable-ares=/tmp/installed-c-ares --host=x86_64
|
||||
if [ $? -ne 0 ]; then return 1; fi
|
||||
|
||||
|
|
|
@ -19,10 +19,10 @@
|
|||
#
|
||||
#
|
||||
# Master script to build Universal Binary libraries needed by BOINC:
|
||||
# curl-7.19.4 with c-ares-1.6.0, jpeg-6b and wxMac-2.8.10
|
||||
# curl-7.21.7 with c-ares-1.7.4, jpeg-6b and wxMac-2.8.10
|
||||
#
|
||||
# by Charlie Fenton 7/21/06
|
||||
# Updated 4/17/08 for curl-7.19.4, c-ares-1.6.0 and wxMac-2.8.10 and Unicode
|
||||
# Updated 8/4/11 for curl-7.21.7, c-ares-1.7.4 and wxMac-2.8.10 and Unicode
|
||||
#
|
||||
# Download these three packages and place them in a common parent
|
||||
# directory with the BOINC source tree.
|
||||
|
@ -48,24 +48,24 @@ SCRIPT_DIR=`pwd`
|
|||
|
||||
echo ""
|
||||
echo "----------------------------------"
|
||||
echo "------- BUILD C-ARES-1.6.0 -------"
|
||||
echo "------- BUILD C-ARES-1.7.4 -------"
|
||||
echo "----------------------------------"
|
||||
echo ""
|
||||
|
||||
cd ../../c-ares-1.6.0/
|
||||
cd ../../c-ares-1.7.4/
|
||||
if [ $? -ne 0 ]; then return 1; fi
|
||||
source "${SCRIPT_DIR}/buildc-ares.sh" ${doclean}
|
||||
if [ $? -ne 0 ]; then return 1; fi
|
||||
|
||||
echo ""
|
||||
echo "----------------------------------"
|
||||
echo "------- BUILD CURL-7.19.4 --------"
|
||||
echo "------- BUILD CURL-7.21.7 --------"
|
||||
echo "----------------------------------"
|
||||
echo ""
|
||||
|
||||
cd "${SCRIPT_DIR}"
|
||||
|
||||
cd ../../curl-7.19.4/
|
||||
cd ../../curl-7.21.7/
|
||||
if [ $? -ne 0 ]; then return 1; fi
|
||||
source "${SCRIPT_DIR}/buildcurl.sh" ${doclean}
|
||||
if [ $? -ne 0 ]; then return 1; fi
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540
|
||||
{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
|
||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
{\colortbl;\red255\green255\blue255;\red2\green87\blue173;}
|
||||
\margl1440\margr1440\vieww9000\viewh9000\viewkind0
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
|
||||
|
||||
|
@ -12,18 +12,25 @@
|
|||
\cf0 http://gridrepublic.org\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
|
||||
\cf0 \
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
|
||||
|
||||
\b Installing GridRepublic Desktop may take several minutes; please be patient.
|
||||
\b \cf0 Installing GridRepublic Desktop may take several minutes; please be patient.
|
||||
\b0 \
|
||||
\
|
||||
|
||||
\b Dual GPU Macbook Pros:
|
||||
\b0 Some newer Macbook Pros have dual graphics processors, one that is more powerful and another that is more energy-efficient, and they switch between them automatically. This can cause your screensaver to flash on and off frequently, and can prevent GridRepublic Desktop from detecting the more powerful GPU which is needed to process some applications. You can force selection either {\field{\*\fldinst{HYPERLINK "http://support.apple.com/kb/HT4110"}}{\fldrslt \cf2 permanently}} or temporarily using a {\field{\*\fldinst{HYPERLINK "http://codykrieger.com/gfxCardStatus/"}}{\fldrslt \cf2 third-party utility}}. But be aware that forcing the use of the NVIDIA GPU may cause faster battery drain; this of course is not an issue when running on AC power.\
|
||||
\
|
||||
If you are upgrading from a version earlier than 6.8.0, you may see a message "Failed to convert file GridRepublic Desktop Preferences to Unicode." This is due to our addition of full Unicode support to the GridRepublic Desktop. If you get this message, you may need to readjust your column widths and other GridRepublic Desktop view options, but no other problems will result. When you quit GridRepublic Desktop, these settings will be saved in the new Unicode format.\
|
||||
\
|
||||
Due to new restrictions imposed by OS 10.6 Snow Leopard, there has been a change in GridRepublic Desktop's security implementation. Non-administrative users can no longer run GridRepublic Desktop unless they are added to group boinc_master. As of GridRepublic Desktop 6.10.5, the GridRepublic Desktop installer asks whether or not you wish to allow this.\
|
||||
Due to new restrictions imposed by OS 10.6 Snow Leopard, there has been a change in GridRepublic Desktop's security implementation. Non-administrative users can no longer run GridRepublic Desktop unless they are added to group boinc_master. As of GridRepublic Desktop 6.8.29, the GridRepublic Desktop installer asks whether or not you wish to allow this.\
|
||||
\
|
||||
For more options, please see the BOINC Macintosh administrator tools at:\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
|
||||
{\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/wiki/Tools_for_Mac_OS_X"}}{\fldrslt \cf0 http://boinc.berkeley.edu/wiki/Tools_for_Mac_OS_X}}\
|
||||
\
|
||||
GridRepublic Desktop on the Mac now supports processing with your graphics card, or GPU. Please see {\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/gpu.php"}}{\fldrslt http://boinc.berkeley.edu/gpu.php}} for more information. If you have a CUDA-capable NVIDIA GPU, you will need to download and install the CUDA driver and libraries for your system from {\field{\*\fldinst{HYPERLINK "http://www.nvidia.com/object/mac-driver-archive.html"}}{\fldrslt http://www.nvidia.com/object/mac-driver-archive.html}}.\
|
||||
\
|
||||
Starting with version 5.5.4, this software features new, stricter security measures. See the
|
||||
\b Security
|
||||
\b0 section below for important information.\
|
||||
|
@ -150,7 +157,7 @@ You can move (
|
|||
\pard\pardeftab720\ql\qnatural
|
||||
\cf0 To completely remove (
|
||||
\b uninstall
|
||||
\b0 ) BOINC from your Macintosh, run the
|
||||
\b0 ) GridRepublic Desktop from your Macintosh, run the
|
||||
\b Uninstall GridRepublic
|
||||
\b0 application which is included with the installer.\
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540
|
||||
{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
|
||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
{\colortbl;\red255\green255\blue255;\red2\green87\blue173;}
|
||||
\margl1440\margr1440\vieww9000\viewh9000\viewkind0
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
|
||||
|
||||
|
@ -12,18 +12,25 @@
|
|||
\cf0 http://gridrepublic.org\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
|
||||
\cf0 \
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
|
||||
|
||||
\b Installing ProgressThruProcessors Desktop may take several minutes; please be patient.
|
||||
\b \cf0 Installing ProgressThruProcessors Desktop may take several minutes; please be patient.
|
||||
\b0 \
|
||||
\
|
||||
|
||||
\b Dual GPU Macbook Pros:
|
||||
\b0 Some newer Macbook Pros have dual graphics processors, one that is more powerful and another that is more energy-efficient, and they switch between them automatically. This can cause your screensaver to flash on and off frequently, and can prevent ProgressThruProcessors Desktop from detecting the more powerful GPU which is needed to process some applications. You can force selection either {\field{\*\fldinst{HYPERLINK "http://support.apple.com/kb/HT4110"}}{\fldrslt \cf2 permanently}} or temporarily using a {\field{\*\fldinst{HYPERLINK "http://codykrieger.com/gfxCardStatus/"}}{\fldrslt \cf2 third-party utility}}. But be aware that forcing the use of the NVIDIA GPU may cause faster battery drain; this of course is not an issue when running on AC power.\
|
||||
\
|
||||
If you are upgrading from a version earlier than 6.8.0, you may see a message "Failed to convert file ProgressThruProcessors Desktop Preferences to Unicode." This is due to our addition of full Unicode support to the ProgressThruProcessors Desktop. If you get this message, you may need to readjust your column widths and other ProgressThruProcessors Desktop view options, but no other problems will result. When you quit ProgressThruProcessors Desktop, these settings will be saved in the new Unicode format.\
|
||||
\
|
||||
Due to new restrictions imposed by OS 10.6 Snow Leopard, there has been a change in ProgressThruProcessors Desktop's security implementation. Non-administrative users can no longer run ProgressThruProcessors Desktop unless they are added to group boinc_master. As of BOINC 6.10.5, the ProgressThruProcessors Desktop installer asks whether or not you wish to allow this.\
|
||||
Due to new restrictions imposed by OS 10.6 Snow Leopard, there has been a change in ProgressThruProcessors Desktop's security implementation. Non-administrative users can no longer run ProgressThruProcessors Desktop unless they are added to group boinc_master. As of ProgressThruProcessors Desktop 6.8.29, the ProgressThruProcessors Desktop installer asks whether or not you wish to allow this.\
|
||||
\
|
||||
For more options, please see the BOINC Macintosh administrator tools at:\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
|
||||
{\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/wiki/Tools_for_Mac_OS_X"}}{\fldrslt \cf0 http://boinc.berkeley.edu/wiki/Tools_for_Mac_OS_X}}\
|
||||
\
|
||||
ProgressThruProcessors Desktop on the Mac now supports processing with your graphics card, or GPU. Please see {\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/gpu.php"}}{\fldrslt http://boinc.berkeley.edu/gpu.php}} for more information. If you have a CUDA-capable NVIDIA GPU, you will need to download and install the CUDA driver and libraries for your system from {\field{\*\fldinst{HYPERLINK "http://www.nvidia.com/object/mac-driver-archive.html"}}{\fldrslt http://www.nvidia.com/object/mac-driver-archive.html}}.\
|
||||
\
|
||||
Starting with version 5.5.4, this software features new, stricter security measures. See the
|
||||
\b Security
|
||||
\b0 section below for important information.\
|
||||
|
@ -37,7 +44,7 @@ This is a
|
|||
\b \cf0 Upgrade warning: You may lose unreported results
|
||||
\b0 if you are running on an
|
||||
\b Intel Mac
|
||||
\b0 and upgrading from a version of GridRepublic or BOINC earlier than 5.3.21 on an Intel Mac, or if you are transferring Progress Thru Processors or BOINC Data from a PowerPC Mac to an Intel Mac, or from an Intel Mac to a PowerPC Mac. To prevent this, open GridRepublic Desktop's window, select the
|
||||
\b0 and upgrading from a version of ProgressThruProcessors Desktop or BOINC earlier than 5.3.21 on an Intel Mac, or if you are transferring Progress Thru Processors or BOINC Data from a PowerPC Mac to an Intel Mac, or from an Intel Mac to a PowerPC Mac. To prevent this, open ProgressThruProcessors Desktop's window, select the
|
||||
\i Projects
|
||||
\i0 tab, select each project and press the
|
||||
\i Update
|
||||
|
@ -58,9 +65,9 @@ Note: on some versions of the Mac OS, you may not be able to exit the Progress T
|
|||
\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\b0 \cf0 Version 5.5.4 of GridRepublic Desktop or BOINC for the Macintosh features new, stricter security measures. This additional security helps protect your computer data from potential theft or accidental or malicious damage by limiting Progress Thru Processors projects' access to your system and data. \
|
||||
\b0 \cf0 Version 5.5.4 of ProgressThruProcessors Desktop or BOINC for the Macintosh features new, stricter security measures. This additional security helps protect your computer data from potential theft or accidental or malicious damage by limiting Progress Thru Processors projects' access to your system and data. \
|
||||
\
|
||||
If you experience problems with this software, you can re-install a version of GridRepublic Desktop or BOINC prior to 5.5.4; this will automatically revert ownership and permissions to the earlier implementation.\
|
||||
If you experience problems with this software, you can re-install a version of ProgressThruProcessors Desktop or BOINC prior to 5.5.4; this will automatically revert ownership and permissions to the earlier implementation.\
|
||||
\
|
||||
Once we have tested this security implementation on the Mac, we plan to extend it to other computer platforms, including Linux and Windows.\
|
||||
\
|
||||
|
@ -122,10 +129,8 @@ The installer now sets Progress Thru Processors Desktop as a Login item for
|
|||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
|
||||
|
||||
\b \cf0 Troubleshooting tip:
|
||||
\b0 If you are upgrading from a version of GridRepublic Desktop or BOINC prior to 5.5.4 and the installer refuses to let you install, trash the file
|
||||
\b /Library/Receipts/
|
||||
\b0 Progress Thru Processors
|
||||
\b .pkg
|
||||
\b0 If you are upgrading from a version of ProgressThruProcessors Desktop or BOINC prior to 5.5.4 and the installer refuses to let you install, trash the file
|
||||
\b /Library/Receipts/Progress Thru Processors.pkg
|
||||
\b0 or
|
||||
\b /Library/Receipts/BOINC.pkg
|
||||
\b0 and try again.\
|
||||
|
@ -152,7 +157,7 @@ You can move (
|
|||
\pard\pardeftab720\ql\qnatural
|
||||
\cf0 To completely remove (
|
||||
\b uninstall
|
||||
\b0 ) BOINC from your Macintosh, run the
|
||||
\b0 ) ProgressThruProcessors Desktop from your Macintosh, run the
|
||||
\b Uninstall Progress Thru Processors
|
||||
\b0 application which is included with the installer.\
|
||||
}
|
|
@ -17,6 +17,42 @@
|
|||
|
||||
/* PostInstall.cpp */
|
||||
|
||||
// Notes on command-line installation to a remote Mac:
|
||||
//
|
||||
// When the installer is run from the Finder, this Postinstall.app will
|
||||
// display up to two dialogs, asking the user whether or not to:
|
||||
// [1] allow non-administrative users to run the BOINC Manager
|
||||
// (asked only if this Mac has any non-administrative users)
|
||||
// [2] set BOINC as the screensaver for all users who can run BOINC
|
||||
// (asked only if BOINC screensaver is not already set for them)
|
||||
//
|
||||
// The installer can also be run from the command line. This is useful
|
||||
// for installation on remote Macs. However, there is no way to respond
|
||||
// to dialogs during a command-line install.
|
||||
//
|
||||
// The command-line installer sets the following environment variable:
|
||||
// COMMAND_LINE_INSTALL=1
|
||||
// The postinstall script, postupgrade script, and this Postinstall.app
|
||||
// detect this environment variable and do the following:
|
||||
// * Redirect the Postinstall.app log output to a file
|
||||
// /tmp/BOINCInstallLog.txt
|
||||
// * Suppress the 2 dialogs
|
||||
// * test for the existence of a file /tmp/nonadminusersok.txt; if the
|
||||
// file exists, allow non-administrative users to run BOINC Manager
|
||||
// * test for the existence of a file /tmp/setboincsaver.txt; if the
|
||||
// file exists, set BOINC as the screensaver for all BOINC users.
|
||||
//
|
||||
// Example: To install on a remote Mac from the command line, allowing
|
||||
// non-admin users to run the BOINC Manager and setting BOINC as the
|
||||
// screensaver:
|
||||
// * First SCP the "BOINC Installer.pkg" to the remote Mac's /tmp
|
||||
// directory, then SSh into the remote mac and enter the following
|
||||
// $ touch /tmp/nonadminusersok.txt
|
||||
// $ touch /tmp/setboincsaver.txt
|
||||
// $ sudo installer -pkg "/tmp/BOINC Installer.pkg" -tgt /
|
||||
// $ sudo reboot
|
||||
//
|
||||
|
||||
#define CREATE_LOG 1 /* for debugging */
|
||||
|
||||
#include <Carbon/Carbon.h>
|
||||
|
@ -40,6 +76,7 @@
|
|||
#include "SetupSecurity.h"
|
||||
|
||||
|
||||
#define admin_group_name "admin"
|
||||
#define boinc_master_user_name "boinc_master"
|
||||
#define boinc_master_group_name "boinc_master"
|
||||
#define boinc_project_user_name "boinc_project"
|
||||
|
@ -55,6 +92,8 @@ void SetSkinInUserPrefs(char *userName, char *skinName);
|
|||
Boolean CheckDeleteFile(char *name);
|
||||
void SetEUIDBackToUser (void);
|
||||
static char * PersistentFGets(char *buf, size_t buflen, FILE *f);
|
||||
Boolean IsUserMemberOfGroup(const char *userName, const char *groupName);
|
||||
int CountGroupMembershipEntries(const char *userName, const char *groupName);
|
||||
OSErr UpdateAllVisibleUsers(long brandID);
|
||||
long GetBrandID(void);
|
||||
int TestRPCBind(void);
|
||||
|
@ -72,6 +111,7 @@ extern int check_security(char *bundlePath, char *dataPath, int use_sandbox, int
|
|||
#define NUMBRANDS 3
|
||||
|
||||
/* globals */
|
||||
static Boolean gCommandLineInstall = false;
|
||||
static Boolean gQuitFlag = false;
|
||||
static Boolean currentUserCanRunBOINC = false;
|
||||
static char loginName[256];
|
||||
|
@ -112,7 +152,6 @@ int main(int argc, char *argv[])
|
|||
OSStatus err, err_fsref;
|
||||
FILE *f;
|
||||
char s[256];
|
||||
char *q;
|
||||
#ifdef SANDBOX
|
||||
uid_t saved_euid, saved_uid, b_m_uid;
|
||||
passwd *pw;
|
||||
|
@ -128,26 +167,35 @@ int main(int argc, char *argv[])
|
|||
brandName[0] = "BOINC";
|
||||
saverName[0] = "BOINCSaver";
|
||||
saverNameEscaped[0] = "BOINCSaver";
|
||||
receiptNameEscaped[0] = "/Library/Receipts/BOINC.pkg";
|
||||
receiptNameEscaped[0] = "/Library/Receipts/BOINC\\ Installer.pkg";
|
||||
|
||||
appName[1] = "/Applications/GridRepublic Desktop.app";
|
||||
appNameEscaped[1] = "/Applications/GridRepublic\\ Desktop.app";
|
||||
brandName[1] = "GridRepublic";
|
||||
saverName[1] = "GridRepublic";
|
||||
saverNameEscaped[1] = "GridRepublic";
|
||||
receiptNameEscaped[1] = "/Library/Receipts/GridRepublic.pkg";
|
||||
receiptNameEscaped[1] = "/Library/Receipts/GridRepublic\\ Installer.pkg";
|
||||
|
||||
appName[2] = "/Applications/Progress Thru Processors Desktop.app";
|
||||
appNameEscaped[2] = "/Applications/Progress\\ Thru\\ Processors\\ Desktop.app";
|
||||
brandName[2] = "Progress Thru Processors";
|
||||
saverName[2] = "Progress Thru Processors";
|
||||
saverNameEscaped[2] = "Progress\\ Thru\\ Processors";
|
||||
receiptNameEscaped[2] = "/Library/Receipts/Progress\\ Thru\\ Processors.pkg";
|
||||
receiptNameEscaped[2] = "/Library/Receipts/Progress\\ Thru\\ Processors\\ Installer.pkg";
|
||||
|
||||
::GetCurrentProcess (&ourProcess);
|
||||
|
||||
|
||||
puts("Starting PostInstall app\n");
|
||||
fflush(stdout);
|
||||
// getlogin() gives unreliable results under OS 10.6.2, so use environment
|
||||
strncpy(loginName, getenv("USER"), sizeof(loginName)-1);
|
||||
printf("login name = %s\n", loginName);
|
||||
|
||||
if (getenv("COMMAND_LINE_INSTALL") != NULL) {
|
||||
gCommandLineInstall = true;
|
||||
puts("command-line install\n");
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
err = Gestalt(gestaltSystemVersion, &OSVersion);
|
||||
if (err != noErr)
|
||||
|
@ -178,11 +226,11 @@ int main(int argc, char *argv[])
|
|||
brandID = 0;
|
||||
}
|
||||
|
||||
if (OSVersion < 0x1039) {
|
||||
if (OSVersion < 0x1040) {
|
||||
::SetFrontProcess(&ourProcess);
|
||||
// Remove everything we've installed
|
||||
// "\pSorry, this version of GridRepublic requires system 10.3.9 or higher."
|
||||
s[0] = sprintf(s+1, "Sorry, this version of %s requires system 10.3.9 or higher.", brandName[brandID]);
|
||||
// "\pSorry, this version of GridRepublic requires system 10.4.0 or higher."
|
||||
s[0] = sprintf(s+1, "Sorry, this version of %s requires system 10.4.0 or higher.", brandName[brandID]);
|
||||
StandardAlert (kAlertStopAlert, (StringPtr)s, NULL, NULL, &itemHit);
|
||||
|
||||
// "rm -rf /Applications/GridRepublic\\ Desktop.app"
|
||||
|
@ -258,7 +306,7 @@ int main(int argc, char *argv[])
|
|||
|
||||
// Find an appropriate admin user to set as owner of installed files
|
||||
// First, try the user currently logged in
|
||||
grp = getgrnam("admin");
|
||||
grp = getgrnam(admin_group_name);
|
||||
i = 0;
|
||||
while ((p = grp->gr_mem[i]) != NULL) { // Step through all users in group admin
|
||||
if (strcmp(p, loginName) == 0) {
|
||||
|
@ -328,6 +376,7 @@ int main(int argc, char *argv[])
|
|||
|
||||
#ifdef SANDBOX
|
||||
err = CheckLogoutRequirement(&finalInstallAction);
|
||||
printf("CheckLogoutRequirement returned %d\n", finalInstallAction);
|
||||
|
||||
if (finalInstallAction == launchWhenDone) {
|
||||
// Wait for BOINC's RPC socket address to become available to user boinc_master, in
|
||||
|
@ -335,7 +384,7 @@ int main(int argc, char *argv[])
|
|||
saved_uid = getuid();
|
||||
saved_euid = geteuid();
|
||||
|
||||
pw = getpwnam("boinc_master");
|
||||
pw = getpwnam(boinc_master_user_name);
|
||||
b_m_uid = pw->pw_uid;
|
||||
seteuid(b_m_uid);
|
||||
|
||||
|
@ -348,38 +397,12 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
|
||||
seteuid(saved_euid);
|
||||
|
||||
return 0;
|
||||
FSRef theFSRef;
|
||||
|
||||
ProcessSerialNumber ourPSN;
|
||||
ProcessInfoRec pInfo;
|
||||
FSRef ourFSRef, theFSRef;
|
||||
char thePath[MAXPATHLEN];
|
||||
|
||||
// Get the full path to this PostInstall application's bundle
|
||||
err = GetCurrentProcess (&ourPSN);
|
||||
if (err)
|
||||
return -1000; // Should never happen
|
||||
|
||||
memset(&pInfo, 0, sizeof(pInfo));
|
||||
pInfo.processInfoLength = sizeof( ProcessInfoRec );
|
||||
err = GetProcessInformation(&ourPSN, &pInfo);
|
||||
if (err)
|
||||
return -1001; // Should never happen
|
||||
|
||||
err = GetProcessBundleLocation(&ourPSN, &ourFSRef);
|
||||
if (err)
|
||||
return -1002; // Should never happen
|
||||
|
||||
err = FSRefMakePath (&ourFSRef, (UInt8*)thePath, sizeof(thePath));
|
||||
if (err)
|
||||
return -1003; // Should never happen
|
||||
|
||||
q = strrchr(thePath, '/');
|
||||
if (q == NULL)
|
||||
return -1004; // Should never happen
|
||||
|
||||
*++q = '\0';
|
||||
strlcat(thePath, "WaitPermissions.app", sizeof(thePath));
|
||||
err = FSPathMakeRef((StringPtr)thePath, &theFSRef, NULL);
|
||||
err = FSPathMakeRef((StringPtr)"/Library/Application Support/BOINC Data/WaitPermissions.app",
|
||||
&theFSRef, NULL);
|
||||
|
||||
// When we first create the boinc_master group and add the current user to the
|
||||
// new group, there is a delay before the new group membership is recognized.
|
||||
|
@ -402,11 +425,15 @@ int main(int argc, char *argv[])
|
|||
sleep(1);
|
||||
}
|
||||
|
||||
CreateStandardAlert(kAlertNoteAlert, CFSTR("Finishing install. Please wait ..."), CFSTR("This may take a few more minutes."), NULL, &theWin);
|
||||
HideDialogItem(theWin, kStdOkItemIndex);
|
||||
RemoveDialogItems(theWin, kStdOkItemIndex, 1, false);
|
||||
RunStandardAlert(theWin, &myFilterProc, &itemHit);
|
||||
|
||||
if (gCommandLineInstall) {
|
||||
printf("Finishing install. Please wait ...\n");
|
||||
printf("This may take a few more minutes.\n");
|
||||
} else {
|
||||
CreateStandardAlert(kAlertNoteAlert, CFSTR("Finishing install. Please wait ..."), CFSTR("This may take a few more minutes."), NULL, &theWin);
|
||||
HideDialogItem(theWin, kStdOkItemIndex);
|
||||
RemoveDialogItems(theWin, kStdOkItemIndex, 1, false);
|
||||
RunStandardAlert(theWin, &myFilterProc, &itemHit);
|
||||
}
|
||||
}
|
||||
#endif // SANDBOX
|
||||
|
||||
|
@ -454,7 +481,6 @@ int DeleteReceipt()
|
|||
|
||||
Initialize();
|
||||
err = CheckLogoutRequirement(&finalInstallAction);
|
||||
|
||||
err = FindProcess ('APPL', 'xins', &installerPSN);
|
||||
if (err == noErr)
|
||||
err = GetProcessPID(&installerPSN , &installerPID);
|
||||
|
@ -509,9 +535,6 @@ OSStatus CheckLogoutRequirement(int *finalAction)
|
|||
CFStringRef errorString = NULL;
|
||||
OSStatus err = noErr;
|
||||
#ifdef SANDBOX
|
||||
char *p;
|
||||
group *grp = NULL;
|
||||
int i;
|
||||
Boolean isMember = false;
|
||||
#endif // SANDBOX
|
||||
|
||||
|
@ -522,18 +545,13 @@ OSStatus CheckLogoutRequirement(int *finalAction)
|
|||
}
|
||||
|
||||
#ifdef SANDBOX
|
||||
grp = getgrnam("boinc_master");
|
||||
if (loginName && grp) {
|
||||
i = 0;
|
||||
while ((p = grp->gr_mem[i]) != NULL) { // Step through all users in group boinc_master
|
||||
if (strcmp(p, loginName) == 0) {
|
||||
isMember = true; // Logged in user is a member of group boinc_master
|
||||
break;
|
||||
}
|
||||
++i;
|
||||
if (loginName[0]) {
|
||||
if (IsUserMemberOfGroup(loginName, boinc_master_group_name)) {
|
||||
isMember = true; // Logged in user is a member of group boinc_master
|
||||
}
|
||||
}
|
||||
|
||||
printf("In CheckLogoutRequirement: isMember=%d, currentUserCanRunBOINC=%d\n", (int)isMember, (int)currentUserCanRunBOINC);
|
||||
if (!isMember && !currentUserCanRunBOINC) {
|
||||
*finalAction = nothingrequired;
|
||||
return noErr;
|
||||
|
@ -591,10 +609,7 @@ OSStatus CheckLogoutRequirement(int *finalAction)
|
|||
// our previously created boinc_master or boinc_project user or group. This could
|
||||
// also happen when the user installs new software. So we must check for such
|
||||
// duplicate UserIDs and groupIDs; if found, we delete our user or group so that
|
||||
// the PostInstall application will cerate a new one that does not conflict.
|
||||
|
||||
// NOTE: getgrnam and getgrgid use one static memory area to return their results,
|
||||
// so each call to getgrnam or getgrgid overwrites the data from any previous calls.
|
||||
// the PostInstall application will create a new one that does not conflict.
|
||||
void CheckUserAndGroupConflicts()
|
||||
{
|
||||
#ifdef SANDBOX
|
||||
|
@ -607,11 +622,6 @@ void CheckUserAndGroupConflicts()
|
|||
char cmd[256], buf[256];
|
||||
int entryCount;
|
||||
|
||||
// "dscl . -search /Groups PrimaryGroupID xx" returned a different format before OS 10.4
|
||||
if (OSVersion < 0x1040) {
|
||||
return;
|
||||
}
|
||||
|
||||
entryCount = 0;
|
||||
grp = getgrnam(boinc_master_group_name);
|
||||
if (grp) {
|
||||
|
@ -653,7 +663,7 @@ void CheckUserAndGroupConflicts()
|
|||
}
|
||||
|
||||
if (entryCount > 1) {
|
||||
system ("dscl . -delete /groups/boinc_project");
|
||||
system ("dscl . -delete /groups/boinc_project");
|
||||
// User boinc_project must have group boinc_project as its primary group.
|
||||
// Since this group no longer exists, delete the user as well.
|
||||
system ("dscl . -delete /users/boinc_project");
|
||||
|
@ -674,7 +684,7 @@ void CheckUserAndGroupConflicts()
|
|||
}
|
||||
pclose(f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (entryCount > 1) {
|
||||
system ("dscl . -delete /users/boinc_master");
|
||||
|
@ -898,6 +908,59 @@ static Boolean ShowMessage(Boolean allowCancel, const char *format, ...) {
|
|||
}
|
||||
|
||||
|
||||
Boolean IsUserMemberOfGroup(const char *userName, const char *groupName) {
|
||||
group *grp;
|
||||
short i = 0;
|
||||
char *p;
|
||||
|
||||
grp = getgrnam(groupName);
|
||||
if (!grp) {
|
||||
printf("getgrnam(%s) failed\n", groupName);
|
||||
return false; // Group not found
|
||||
}
|
||||
|
||||
while ((p = grp->gr_mem[i]) != NULL) { // Step through all users in group admin
|
||||
if (strcmp(p, userName) == 0) {
|
||||
return true;
|
||||
}
|
||||
++i;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// OS 10.7 dscl merge command has a bug that it adds the user to the group even if
|
||||
// it was already a member, resulting in duplicate (multiple) entries. Earlier BOINC
|
||||
// versions did not check for this, so we remove duplicate entries if present.
|
||||
int CountGroupMembershipEntries(const char *userName, const char *groupName) {
|
||||
int count = 0;
|
||||
char cmd[512], buf[2048];
|
||||
FILE *f;
|
||||
char *p;
|
||||
|
||||
// getgrnam(groupName)->gr_mem[] only returns one entry, so we must use dscl
|
||||
sprintf(cmd, "dscl . -read /Groups/%s GroupMembership", groupName);
|
||||
f = popen(cmd, "r");
|
||||
if (f == NULL)
|
||||
return 0;
|
||||
|
||||
while (PersistentFGets(buf, sizeof(buf), f))
|
||||
{
|
||||
p = buf;
|
||||
while (p) {
|
||||
p = strstr(p, userName);
|
||||
if (p) {
|
||||
++ count;
|
||||
p += strlen(userName);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
|
||||
// Find all visible users.
|
||||
// If user is a member of group admin, add user to groups boinc_master and boinc_project.
|
||||
// Optionally add non-admin users to group boinc_master but not to group boinc_project.
|
||||
|
@ -913,91 +976,75 @@ OSErr UpdateAllVisibleUsers(long brandID)
|
|||
Boolean deleteLoginItem;
|
||||
char skinName[256];
|
||||
char s[256];
|
||||
group grpAdmin, *grpAdminPtr;
|
||||
char adminBuf[32768];
|
||||
group grpBOINC_master, *grpBOINC_masterPtr;
|
||||
char bmBuf[32768];
|
||||
Boolean saverAlreadySetForAll = true;
|
||||
Boolean setSaverForAllUsers = false;
|
||||
Boolean allNonAdminUsersAreSet = true;
|
||||
Boolean allowNonAdminUsersToRunBOINC = false;
|
||||
Boolean found = false;
|
||||
FILE *f;
|
||||
OSStatus err;
|
||||
Boolean isGroupMember;
|
||||
int err;
|
||||
Boolean isAdminGroupMember, isBMGroupMember, isBPGroupMember;
|
||||
struct stat sbuf;
|
||||
#ifdef SANDBOX
|
||||
char *p;
|
||||
short i;
|
||||
|
||||
err = getgrnam_r("admin", &grpAdmin, adminBuf, sizeof(adminBuf), &grpAdminPtr);
|
||||
if (err) { // Should never happen unless buffer too small
|
||||
puts("getgrnam(\"admin\") failed\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
err = getgrnam_r("boinc_master", &grpBOINC_master, bmBuf, sizeof(bmBuf), &grpBOINC_masterPtr);
|
||||
if (err) { // Should never happen unless buffer too small
|
||||
puts("getgrnam(\"boinc_master\") failed\n");
|
||||
return -1;
|
||||
}
|
||||
#endif // SANDBOX
|
||||
|
||||
char cmd[256];
|
||||
int i;
|
||||
int BMGroupMembershipCount, BPGroupMembershipCount;
|
||||
#endif
|
||||
|
||||
FindSkinName(skinName, sizeof(skinName));
|
||||
|
||||
// Step through all users
|
||||
puts("Beginning first pass through all users\n");
|
||||
|
||||
dirp = opendir("/Users");
|
||||
if (dirp == NULL) { // Should never happen
|
||||
puts("opendir(\"/Users\") failed\n");
|
||||
puts("[1] opendir(\"/Users\") failed\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Step through all users
|
||||
while (true) {
|
||||
dp = readdir(dirp);
|
||||
if (dp == NULL)
|
||||
break; // End of list
|
||||
|
||||
printf("[1] Checking user %s\n", dp->d_name);
|
||||
|
||||
if (dp->d_name[0] == '.')
|
||||
continue; // Ignore names beginning with '.'
|
||||
|
||||
// getpwnam works with either the full / login name (pw->pw_gecos)
|
||||
// or the short / Posix name (pw->pw_name)
|
||||
pw = getpwnam(dp->d_name);
|
||||
if (pw == NULL) // "Deleted Users", "Shared", etc.
|
||||
if (pw == NULL) { // "Deleted Users", "Shared", etc.
|
||||
printf("[1] %s not in getpwnam data base\n", dp->d_name);
|
||||
continue;
|
||||
}
|
||||
|
||||
#ifdef SANDBOX
|
||||
isGroupMember = false;
|
||||
i = 0;
|
||||
while ((p = grpAdmin.gr_mem[i]) != NULL) { // Step through all users in group admin
|
||||
if (strcmp(p, dp->d_name) == 0) {
|
||||
// User is a member of group admin, so add user to groups boinc_master and boinc_project
|
||||
err = AddAdminUserToGroups(p);
|
||||
if (err != noErr)
|
||||
return err;
|
||||
isGroupMember = true;
|
||||
break;
|
||||
}
|
||||
++i;
|
||||
}
|
||||
printf("[1] User %s: Posix name=%s, Full name=%s\n", dp->d_name, pw->pw_name, pw->pw_gecos);
|
||||
|
||||
if (!isGroupMember) {
|
||||
i = 0;
|
||||
while ((p = grpBOINC_master.gr_mem[i]) != NULL) { // Step through all users in group boinc_master
|
||||
if (strcmp(p, dp->d_name) == 0) {
|
||||
// User is a member of group boinc_master
|
||||
isGroupMember = true;
|
||||
break;
|
||||
}
|
||||
++i;
|
||||
#ifdef SANDBOX
|
||||
isAdminGroupMember = false;
|
||||
isBMGroupMember = false;
|
||||
|
||||
isAdminGroupMember = IsUserMemberOfGroup(pw->pw_name, admin_group_name);
|
||||
if (isAdminGroupMember) {
|
||||
// User is a member of group admin, so add user to groups boinc_master and boinc_project
|
||||
printf("[1] User %s is a member of group admin\n", pw->pw_name);
|
||||
} else {
|
||||
isBMGroupMember = IsUserMemberOfGroup(pw->pw_name, boinc_master_group_name);
|
||||
if (isBMGroupMember) {
|
||||
// User is a member of group boinc_master
|
||||
printf("[1] Non-admin user %s is a member of group boinc_master\n", pw->pw_name);
|
||||
} else {
|
||||
allNonAdminUsersAreSet = false;
|
||||
}
|
||||
}
|
||||
if (!isGroupMember) {
|
||||
allNonAdminUsersAreSet = false;
|
||||
}
|
||||
#else // SANDBOX
|
||||
isGroupMember = true;
|
||||
#endif // SANDBOX
|
||||
|
||||
if (isGroupMember) {
|
||||
if (strcmp(loginName, dp->d_name) == 0) {
|
||||
if (isAdminGroupMember || isBMGroupMember) {
|
||||
if ((strcmp(loginName, dp->d_name) == 0) || (strcmp(loginName, pw->pw_name) == 0)) {
|
||||
currentUserCanRunBOINC = true;
|
||||
}
|
||||
|
||||
|
@ -1008,7 +1055,7 @@ OSErr UpdateAllVisibleUsers(long brandID)
|
|||
f = popen("defaults -currentHost read com.apple.screensaver moduleName", "r");
|
||||
} else {
|
||||
sprintf(s, "sudo -u %s defaults -currentHost read com.apple.screensaver moduleDict -dict",
|
||||
dp->d_name);
|
||||
pw->pw_name);
|
||||
f = popen(s, "r");
|
||||
}
|
||||
|
||||
|
@ -1033,30 +1080,59 @@ OSErr UpdateAllVisibleUsers(long brandID)
|
|||
closedir(dirp);
|
||||
|
||||
ResynchSystem();
|
||||
|
||||
if (! allNonAdminUsersAreSet) {
|
||||
if (ShowMessage(true,
|
||||
"Users who are permitted to administer this computer will automatically be allowed to "
|
||||
"run and control %s.\n\n"
|
||||
"Do you also want non-administrative users to be able to run and control %s on this Mac?",
|
||||
brandName[brandID], brandName[brandID])
|
||||
) {
|
||||
allowNonAdminUsersToRunBOINC = true;
|
||||
currentUserCanRunBOINC = true;
|
||||
saverAlreadySetForAll = false;
|
||||
|
||||
if (allNonAdminUsersAreSet) {
|
||||
puts("[2] All non-admin users are already members of group boinc_master\n");
|
||||
} else {
|
||||
if (gCommandLineInstall) {
|
||||
err = stat("/tmp/nonadminusersok.txt", &sbuf);
|
||||
if (err == noErr) {
|
||||
puts("nonadminusersok.txt file detected\n");
|
||||
fflush(stdout);
|
||||
unlink("/tmp/nonadminusersok.txt");
|
||||
allowNonAdminUsersToRunBOINC = true;
|
||||
currentUserCanRunBOINC = true;
|
||||
saverAlreadySetForAll = false;
|
||||
}
|
||||
} else {
|
||||
if (ShowMessage(true,
|
||||
"Users who are permitted to administer this computer will automatically be allowed to "
|
||||
"run and control %s.\n\n"
|
||||
"Do you also want non-administrative users to be able to run and control %s on this Mac?",
|
||||
brandName[brandID], brandName[brandID])
|
||||
) {
|
||||
allowNonAdminUsersToRunBOINC = true;
|
||||
currentUserCanRunBOINC = true;
|
||||
saverAlreadySetForAll = false;
|
||||
printf("[2] User answered Yes to allowing non-admin users to run %s\n", brandName[brandID]);
|
||||
} else {
|
||||
printf("[2] User answered No to allowing non-admin users to run %s\n", brandName[brandID]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (! saverAlreadySetForAll) {
|
||||
setSaverForAllUsers = ShowMessage(true,
|
||||
if (gCommandLineInstall) {
|
||||
err = stat("/tmp/setboincsaver.txt", &sbuf);
|
||||
if (err == noErr) {
|
||||
puts("setboincsaver.txt file detected\n");
|
||||
fflush(stdout);
|
||||
unlink("/tmp/setboincsaver.txt");
|
||||
setSaverForAllUsers = true;
|
||||
}
|
||||
} else {
|
||||
setSaverForAllUsers = ShowMessage(true,
|
||||
"Do you want to set %s as the screensaver for all %s users on this Mac?",
|
||||
brandName[brandID], brandName[brandID]);
|
||||
brandName[brandID], brandName[brandID]);
|
||||
}
|
||||
}
|
||||
|
||||
// Step through all users a second time, setting non-admin users and / or our screensaver
|
||||
puts("Beginning second pass through all users\n");
|
||||
|
||||
dirp = opendir("/Users");
|
||||
if (dirp == NULL) { // Should never happen
|
||||
puts("opendir(\"/Users\") failed\n");
|
||||
puts("[2] opendir(\"/Users\") failed\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -1064,50 +1140,89 @@ OSErr UpdateAllVisibleUsers(long brandID)
|
|||
dp = readdir(dirp);
|
||||
if (dp == NULL)
|
||||
break; // End of list
|
||||
|
||||
printf("[2] Checking user %s\n", dp->d_name);
|
||||
|
||||
if (dp->d_name[0] == '.')
|
||||
continue; // Ignore names beginning with '.'
|
||||
|
||||
pw = getpwnam(dp->d_name);
|
||||
if (pw == NULL) // "Deleted Users", "Shared", etc.
|
||||
if (pw == NULL) { // "Deleted Users", "Shared", etc.
|
||||
printf("[2] %s not in getpwnam data base\n", dp->d_name);
|
||||
continue;
|
||||
}
|
||||
|
||||
printf("[2] User %s: Posix name=%s, Full name=%s\n", dp->d_name, pw->pw_name, pw->pw_gecos);
|
||||
|
||||
#ifdef SANDBOX
|
||||
isGroupMember = false;
|
||||
isAdminGroupMember = false;
|
||||
isBMGroupMember = false;
|
||||
isBPGroupMember = false;
|
||||
|
||||
i = 0;
|
||||
while ((p = grpAdmin.gr_mem[i]) != NULL) { // Step through all users in group admin
|
||||
if (strcmp(p, dp->d_name) == 0) {
|
||||
// User is a member of group admin
|
||||
isGroupMember = true;
|
||||
break;
|
||||
}
|
||||
++i;
|
||||
isAdminGroupMember = IsUserMemberOfGroup(pw->pw_name, admin_group_name);
|
||||
if (isAdminGroupMember) {
|
||||
// User is a member of group admin, so add user to groups boinc_master and boinc_project
|
||||
printf("[2] User %s is a member of group admin\n", pw->pw_name);
|
||||
}
|
||||
|
||||
// If allNonAdminUsersAreSet, some older versions added non-admin users only to
|
||||
// group boinc_master; make sure they are also members of group boinc_project
|
||||
if (! isGroupMember) {
|
||||
if (allowNonAdminUsersToRunBOINC || allNonAdminUsersAreSet) {
|
||||
// Add to group boinc_master but not group boinc_project
|
||||
err = AddAdminUserToGroups(dp->d_name);
|
||||
isGroupMember = true;
|
||||
// If allNonAdminUsersAreSet, some older BOINC versions added non-admin users only to group
|
||||
// boinc_master; ensure all permitted BOINC users are also members of group boinc_project
|
||||
if (isAdminGroupMember || allowNonAdminUsersToRunBOINC || allNonAdminUsersAreSet) {
|
||||
// OS 10.7 dscl merge command has a bug that it adds the user to the group even if
|
||||
// it was already a member, resulting in duplicate (multiple) entries. Earlier BOINC
|
||||
// versions did not check for this, so we remove duplicate entries if present.
|
||||
BMGroupMembershipCount = CountGroupMembershipEntries(pw->pw_name, boinc_master_group_name);
|
||||
printf("[2] User %s found in group %s member list %d times\n",
|
||||
pw->pw_name, boinc_master_group_name, BMGroupMembershipCount);
|
||||
if (BMGroupMembershipCount == 0) {
|
||||
sprintf(cmd, "dscl . -merge /groups/%s users %s", boinc_master_group_name, pw->pw_name);
|
||||
err = system(cmd);
|
||||
printf("[2] %s returned %d\n", cmd, err);
|
||||
isBMGroupMember = true;
|
||||
} else {
|
||||
isBMGroupMember = true;
|
||||
for (i=1; i<BMGroupMembershipCount; ++i) {
|
||||
sprintf(cmd, "dscl . -delete /groups/%s GroupMembership %s", boinc_master_group_name, pw->pw_name);
|
||||
err = system(cmd);
|
||||
printf("[2] %s returned %d\n", cmd, err);
|
||||
}
|
||||
}
|
||||
|
||||
BPGroupMembershipCount = CountGroupMembershipEntries(pw->pw_name, boinc_project_group_name);
|
||||
printf("[2] User %s found in group %s member list %d times\n",
|
||||
pw->pw_name, boinc_project_group_name, BPGroupMembershipCount);
|
||||
if (BPGroupMembershipCount == 0) {
|
||||
sprintf(cmd, "dscl . -merge /groups/%s users %s", boinc_project_group_name, pw->pw_name);
|
||||
err = system(cmd);
|
||||
printf("[2] %s returned %d\n", cmd, err);
|
||||
isBPGroupMember = true;
|
||||
} else {
|
||||
isBPGroupMember = true;
|
||||
for (i=1; i<BPGroupMembershipCount; ++i) {
|
||||
sprintf(cmd, "dscl . -delete /groups/%s GroupMembership %s", boinc_project_group_name, pw->pw_name);
|
||||
err = system(cmd);
|
||||
printf("[2] %s returned %d\n", cmd, err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#else // SANDBOX
|
||||
isGroupMember = true;
|
||||
isBMGroupMember = true;
|
||||
#endif // SANDBOX
|
||||
|
||||
saved_uid = geteuid();
|
||||
seteuid(pw->pw_uid); // Temporarily set effective uid to this user
|
||||
deleteLoginItem = CheckDeleteFile(dp->d_name);
|
||||
if (!isGroupMember) {
|
||||
if (CheckDeleteFile(pw->pw_name)) {
|
||||
deleteLoginItem = true;
|
||||
}
|
||||
if (!isBMGroupMember) {
|
||||
deleteLoginItem = true;
|
||||
}
|
||||
|
||||
SetLoginItem(brandID, deleteLoginItem); // Set login item for this user
|
||||
|
||||
if (isGroupMember) {
|
||||
if (isBMGroupMember) {
|
||||
SetSkinInUserPrefs(dp->d_name, skinName);
|
||||
|
||||
if (setSaverForAllUsers) {
|
||||
|
@ -1118,7 +1233,7 @@ OSErr UpdateAllVisibleUsers(long brandID)
|
|||
saverNameEscaped[brandID]);
|
||||
} else {
|
||||
sprintf(s, "sudo -u %s defaults -currentHost write com.apple.screensaver moduleDict -dict moduleName %s path /Library/Screen\\ Savers/%s.saver",
|
||||
dp->d_name, saverNameEscaped[brandID], saverNameEscaped[brandID]);
|
||||
pw->pw_name, saverNameEscaped[brandID], saverNameEscaped[brandID]);
|
||||
}
|
||||
system (s);
|
||||
}
|
||||
|
@ -1432,4 +1547,3 @@ void print_to_log_file(const char *format, ...) {
|
|||
|
||||
#endif
|
||||
}
|
||||
const char *BOINC_RCSID_c7abe0490e="$Id$";
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540
|
||||
{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
|
||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
{\colortbl;\red255\green255\blue255;\red2\green87\blue173;}
|
||||
\margl1440\margr1440\vieww9000\viewh9000\viewkind0
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc
|
||||
|
||||
|
@ -16,14 +16,22 @@
|
|||
\b \cf0 Installing BOINC may take several minutes; please be patient.
|
||||
\b0 \
|
||||
\
|
||||
If you are upgrading from a version earlier than 6.8.0, you may see a message "Failed to convert file BOINC Manager Preferences to Unicode." This is due to our addition of full Unicode support to the BOINC Manager. If you get this message, you may need to readjust your column widths and other BOINC Manager view options, but no other problems will result. When you quit BOINC Manager, these settings will be saved in the new Unicode format.\
|
||||
|
||||
\b Dual GPU Macbook Pros:
|
||||
\b0 Some newer Macbook Pros have dual graphics processors, one that is more powerful and another that is more energy-efficient, and they switch between them automatically. This can cause your screensaver to flash on and off frequently, and can prevent BOINC from detecting the more powerful GPU which is needed to process some applications. You can force selection either {\field{\*\fldinst{HYPERLINK "http://support.apple.com/kb/HT4110"}}{\fldrslt \cf2 permanently}} or temporarily using a {\field{\*\fldinst{HYPERLINK "http://codykrieger.com/gfxCardStatus/"}}{\fldrslt \cf2 third-party utility}}. But be aware that forcing the use of the NVIDIA GPU may cause faster battery drain; this of course is not an issue when running on AC power.\
|
||||
\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
|
||||
\cf0 If you are upgrading from a version earlier than 6.8.0, you may see a message "Failed to convert file BOINC Manager Preferences to Unicode." This is due to our addition of full Unicode support to the BOINC Manager. If you get this message, you may need to readjust your column widths and other BOINC Manager view options, but no other problems will result. When you quit BOINC Manager, these settings will be saved in the new Unicode format.\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
|
||||
\cf0 \
|
||||
Due to new restrictions imposed by OS 10.6 Snow Leopard, there has been a change in BOINC's security implementation. Non-administrative users can no longer run BOINC Manager unless they are added to group boinc_master. As of BOINC 6.10.5, the BOINC installer asks whether or not you wish to allow this.\
|
||||
\
|
||||
For more options, please see the BOINC Macintosh administrator tools at:\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
|
||||
{\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/wiki/Tools_for_Mac_OS_X"}}{\fldrslt \cf0 http://boinc.berkeley.edu/wiki/Tools_for_Mac_OS_X}}\
|
||||
\
|
||||
BOINC on the Mac now supports processing with your graphics card, or GPU. Please see {\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/gpu.php"}}{\fldrslt http://boinc.berkeley.edu/gpu.php}} for more information. If you have a CUDA-capable NVIDIA GPU, you will need to download and install the CUDA driver and libraries for your system from {\field{\*\fldinst{HYPERLINK "http://www.nvidia.com/object/mac-driver-archive.html"}}{\fldrslt http://www.nvidia.com/object/mac-driver-archive.html}}.\
|
||||
\
|
||||
Starting with version 5.5.4, BOINC features new, stricter security measures. See the
|
||||
\b Security
|
||||
\b0 section below for important information.\
|
||||
|
|
|
@ -47,6 +47,8 @@ int main(int argc, char *argv[])
|
|||
int retval = 0;
|
||||
DIR *dirp;
|
||||
|
||||
printf("WaitPermissions launched\n");
|
||||
|
||||
for (i=0; i<180; i++) { // Limit delay to 3 minutes
|
||||
|
||||
retval = stat("/Library/Application Support/BOINC Data/projects", &sbuf);
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
##
|
||||
# Script to convert Macintosh BOINC installer to GridRepublic Desktop installer
|
||||
# updated 2/2/10 by Charlie Fenton
|
||||
# updated 2/17/11 by Charlie Fenton for BOINC 6.12.7 and later
|
||||
##
|
||||
|
||||
## Usage:
|
||||
|
@ -28,14 +28,13 @@
|
|||
## the Uninstall BOINC application to be converted
|
||||
## GR_ReadMe.rtf
|
||||
## gridrepublic.icns
|
||||
## GR_install.icns
|
||||
## MacGRPkgIcon.zip
|
||||
## GR_uninstall.icns
|
||||
## COPYING
|
||||
## COPYING.LESSER (for version 6.3.x and later only)
|
||||
## COPYING.LESSER
|
||||
## COPYRIGHT
|
||||
## skins directory containing GridRepublic skin (optional)
|
||||
## acct_mgr_url.xml (to have BOINC automatically connect to Account Manager)
|
||||
## PostInstall.app (needed only for version 6.2.x or earlier)
|
||||
## gridrepublic.tiff (for screensaver coordinator)
|
||||
## gridrepublic_ss_logo.png (for screensaver coordinator)
|
||||
## GR_saver directory containing GridRepublic default screensaver and associated files, including:
|
||||
|
@ -66,7 +65,7 @@ README_FILE="GR-ReadMe.rtf"
|
|||
## BRANDING_FILE="GR-Branding"
|
||||
BRANDING_INFO="BrandId=1"
|
||||
ICNS_FILE="gridrepublic.icns"
|
||||
INSTALLER_ICNS_FILE="GR_install.icns"
|
||||
INSTALLER_ICNS_FILE="MacGRPkgIcon.zip"
|
||||
UNINSTALLER_ICNS_FILE="GR_uninstall.icns"
|
||||
SAVER_DIR="GR_saver"
|
||||
SAVER_SYSPREF_ICON="gridrepublic.tiff"
|
||||
|
@ -74,7 +73,7 @@ SAVER_LOGO="gridrepublic_ss_logo.png"
|
|||
BRAND_NAME="GridRepublic"
|
||||
MANAGER_NAME="GridRepublic Desktop"
|
||||
LC_BRAND_NAME="gridrepublic"
|
||||
SOURCE_PKG_PATH="BOINC Installer.app/Contents/Resources/BOINC.pkg/Contents"
|
||||
SOURCE_PKG_PATH="BOINC Installer.pkg/Contents"
|
||||
|
||||
if [ $# -lt 3 ]; then
|
||||
echo "Usage:"
|
||||
|
@ -132,24 +131,18 @@ else
|
|||
fi
|
||||
|
||||
# Create the installer's preinstall and preupgrade scripts from the standard preinstall script
|
||||
# Older versions of BOINC installer did not use preinstall and preupgrade scripts, so check first
|
||||
if [ -f "${SOURCE_PKG_PATH}/Resources/preinstall" ]; then
|
||||
cp -fp "${SOURCE_PKG_PATH}/Resources/preinstall" "${SCRIPTS_PATH}/"
|
||||
cp -fp "${SOURCE_PKG_PATH}/Resources/preinstall" "${SCRIPTS_PATH}/"
|
||||
|
||||
sed -i "" s/BOINCManager/"${MANAGER_NAME}"/g "${SCRIPTS_PATH}/preinstall"
|
||||
sed -i "" s/BOINCSaver/"${BRAND_NAME}"/g "${SCRIPTS_PATH}/preinstall"
|
||||
sed -i "" s/BOINCManager/"${MANAGER_NAME}"/g "${SCRIPTS_PATH}/preinstall"
|
||||
sed -i "" s/BOINCSaver/"${BRAND_NAME}"/g "${SCRIPTS_PATH}/preinstall"
|
||||
|
||||
cp -fp "${SCRIPTS_PATH}/preinstall" "${SCRIPTS_PATH}/preupgrade"
|
||||
fi
|
||||
cp -fp "${SCRIPTS_PATH}/preinstall" "${SCRIPTS_PATH}/preupgrade"
|
||||
|
||||
cp -fp "${SOURCE_PKG_PATH}/Resources/postinstall" "${SCRIPTS_PATH}/"
|
||||
cp -fp "${SOURCE_PKG_PATH}/Resources/postupgrade" "${SCRIPTS_PATH}/"
|
||||
if [ "$1" = "6" ] && [ "$2" = "2" ]; then
|
||||
cp -fpR "PostInstall.app" "${IR_PATH}/"
|
||||
else
|
||||
cp -fpR "${SOURCE_PKG_PATH}/Resources/PostInstall.app" "${IR_PATH}/"
|
||||
cp -fpR "${SOURCE_PKG_PATH}/Resources/WaitPermissions.app" "${IR_PATH}/"
|
||||
fi
|
||||
|
||||
cp -fpR "${SOURCE_PKG_PATH}/Resources/PostInstall.app" "${IR_PATH}/"
|
||||
|
||||
cp -fp "${SOURCE_PKG_PATH}/Resources/all_projects_list.xml" "${IR_PATH}/"
|
||||
|
||||
##### We've decided not to customize BOINC Data directory name for branding
|
||||
|
@ -184,6 +177,7 @@ sudo mv -f "${PR_PATH}/Applications/${MANAGER_NAME}.app/Contents/MacOS/BOINCMana
|
|||
# Update the Manager's info.plist, InfoPlist.strings files
|
||||
sudo sed -i "" s/BOINCManager/"${MANAGER_NAME}"/g "${PR_PATH}/Applications/${MANAGER_NAME}.app/Contents/Info.plist"
|
||||
sudo sed -i "" s/BOINCMgr.icns/"${ICNS_FILE}"/g "${PR_PATH}/Applications/${MANAGER_NAME}.app/Contents/Info.plist"
|
||||
# InfoPlist.strings file uses UTF-16 encoding
|
||||
sudo chmod a+w "${PR_PATH}/Applications/${MANAGER_NAME}.app/Contents/Resources/English.lproj/InfoPlist.strings"
|
||||
sudo iconv -f UTF-16 -t UTF-8 "${PR_PATH}/Applications/${MANAGER_NAME}.app/Contents/Resources/English.lproj/InfoPlist.strings" > "${PR_PATH}/tempUTF81"
|
||||
sudo sed -i "" s/BOINC/"${MANAGER_NAME}"/g "${PR_PATH}/tempUTF81"
|
||||
|
@ -207,6 +201,7 @@ sudo mv -f "${PR_PATH}/Library/Screen Savers/${BRAND_NAME}.saver/Contents/MacOS/
|
|||
|
||||
# Update screensaver coordinator's info.plist, InfoPlist.strings files
|
||||
sudo sed -i "" s/BOINCSaver/"${BRAND_NAME}"/g "${PR_PATH}/Library/Screen Savers/${BRAND_NAME}.saver/Contents/Info.plist"
|
||||
# InfoPlist.strings file uses UTF-16 encoding
|
||||
sudo chmod a+w "${PR_PATH}/Library/Screen Savers/${BRAND_NAME}.saver/Contents/Resources/English.lproj/InfoPlist.strings"
|
||||
sudo iconv -f UTF-16 -t UTF-8 "${PR_PATH}/Library/Screen Savers/${BRAND_NAME}.saver/Contents/Resources/English.lproj/InfoPlist.strings" > "${PR_PATH}/tempUTF82"
|
||||
sudo sed -i "" s/BOINC/"${BRAND_NAME}"/g "${PR_PATH}/tempUTF82"
|
||||
|
@ -234,6 +229,7 @@ sudo mv -f "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Un
|
|||
# Update Uninstall application's info.plist, InfoPlist.strings files
|
||||
sudo sed -i "" s/BOINC/"${BRAND_NAME}"/g "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app/Contents/Info.plist"
|
||||
sudo sed -i "" s/MacUninstaller.icns/"${UNINSTALLER_ICNS_FILE}"/g "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app/Contents/Info.plist"
|
||||
# InfoPlist.strings file uses UTF-16 encoding
|
||||
sudo chmod a+w "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app/Contents/Resources/English.lproj/InfoPlist.strings"
|
||||
sudo iconv -f UTF-16 -t UTF-8 "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app/Contents/Resources/English.lproj/InfoPlist.strings" > "${PR_PATH}/tempUTF83"
|
||||
sudo sed -i "" s/BOINC/"${BRAND_NAME}"/g "${PR_PATH}/tempUTF83"
|
||||
|
@ -247,7 +243,7 @@ sudo rm -f "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Un
|
|||
sudo rm -f "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app/Contents/Resources/Uninstall BOINC.rsrc"
|
||||
|
||||
sudo chown -R root:admin "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app"
|
||||
sudo chmod -R 555 "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app"
|
||||
sudo chmod -R 755 "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app"
|
||||
|
||||
## Fix up ownership and permissions
|
||||
sudo chown -R root:admin "${PR_PATH}"/*
|
||||
|
@ -272,12 +268,10 @@ sudo cp -fp "COPYRIGHT" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_univer
|
|||
sudo chown -R 501:admin "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYRIGHT.txt"
|
||||
sudo chmod -R 644 "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYRIGHT.txt"
|
||||
|
||||
# COPYING.LESSER is part of GNU License v3, included only with BOINC 6.3.x and later
|
||||
if [ -f "COPYING.LESSER" ]; then
|
||||
sudo cp -fp "COPYING.LESSER" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYING.LESSER.txt"
|
||||
sudo chown -R 501:admin "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYING.LESSER.txt"
|
||||
sudo chmod -R 644 "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYING.LESSER.txt"
|
||||
fi
|
||||
# COPYING.LESSER is part of GNU License v3
|
||||
sudo cp -fp "COPYING.LESSER" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYING.LESSER.txt"
|
||||
sudo chown -R 501:admin "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYING.LESSER.txt"
|
||||
sudo chmod -R 644 "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYING.LESSER.txt"
|
||||
|
||||
# Make temporary copies of Pkg-Info.plist and Description.plist for PackageMaker and update for this branding
|
||||
sudo cp -fp "${SOURCE_PKG_PATH}/Info.plist" "${NEW_DIR_PATH}/Pkg-Info.plist"
|
||||
|
@ -299,40 +293,25 @@ plutil -convert xml1 "`pwd`/${NEW_DIR_PATH}/Pkg-Info.plist"
|
|||
defaults write "`pwd`/${NEW_DIR_PATH}/Description" "IFPkgDescriptionTitle" "$MANAGER_NAME"
|
||||
plutil -convert xml1 "`pwd`/${NEW_DIR_PATH}/Description.plist"
|
||||
|
||||
# Copy the installer wrapper application "${BRAND_NAME} Installer.app"
|
||||
sudo cp -fpR "BOINC Installer.app" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app"
|
||||
sudo rm -dfR "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/BOINC.pkg"
|
||||
|
||||
# Update the installer wrapper application's info.plist, InfoPlist.strings files
|
||||
sudo sed -i "" s/BOINC/"${BRAND_NAME}"/g "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Info.plist"
|
||||
sudo sed -i "" s/MacInstaller.icns/"${INSTALLER_ICNS_FILE}"/g "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Info.plist"
|
||||
sudo chmod a+w "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/English.lproj/InfoPlist.strings"
|
||||
sudo iconv -f UTF-16 -t UTF-8 "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/English.lproj/InfoPlist.strings" > "${PR_PATH}/tempUTF84"
|
||||
sudo sed -i "" s/BOINC/"${MANAGER_NAME}"/g "${PR_PATH}/tempUTF84"
|
||||
sudo iconv -f UTF-8 -t UTF-16 "${PR_PATH}/tempUTF84" > "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/English.lproj/InfoPlist.strings"
|
||||
sudo rm -f "${PR_PATH}/tempUTF84"
|
||||
|
||||
# Replace the installer wrapper application's MacInstaller.icns file
|
||||
sudo cp -fp "${INSTALLER_ICNS_FILE}" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/${INSTALLER_ICNS_FILE}"
|
||||
sudo rm -f "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/MacInstaller.icns"
|
||||
|
||||
# Rename the installer wrapper application's executable inside the bundle
|
||||
sudo mv -f "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/MacOS/BOINC Installer" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/MacOS/${BRAND_NAME} Installer"
|
||||
|
||||
# Build the installer package inside the wrapper application's bundle
|
||||
# Build the installer package
|
||||
if [ "$PACKAGEMAKER_VERSION" = "3" ]; then
|
||||
# Packagemaker Version 3
|
||||
## /Developer/usr/bin/packagemaker -r ../BOINC_Installer/Pkg_Root -e ../BOINC_Installer/Installer\ Resources/ -s ../BOINC_Installer/Installer\ Scripts/ -f mac_build/Pkg-Info.plist -t "BOINC Manager" -n "$1.$2.$3" -b -o ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC\ Installer.app/Contents/Resources/BOINC.pkg
|
||||
/Developer/usr/bin/packagemaker -r "${PR_PATH}" -e "${IR_PATH}" -s "${SCRIPTS_PATH}" -f "${NEW_DIR_PATH}/Pkg-Info.plist" -t "${MANAGER_NAME}" -n "$1.$2.$3" -b -o "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/${BRAND_NAME}.pkg"
|
||||
## /Developer/usr/bin/packagemaker -r ../BOINC_Installer/Pkg_Root -e ../BOINC_Installer/Installer\ Resources/ -s ../BOINC_Installer/Installer\ Scripts/ -f mac_build/Pkg-Info.plist -t "BOINC Manager" -n "$1.$2.$3" -b -o ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC\ Installer.pkg
|
||||
/Developer/usr/bin/packagemaker -r "${PR_PATH}" -e "${IR_PATH}" -s "${SCRIPTS_PATH}" -f "${NEW_DIR_PATH}/Pkg-Info.plist" -t "${MANAGER_NAME}" -n "$1.$2.$3" -b -o "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.pkg"
|
||||
# Remove TokenDefinitions.plist and IFPkgPathMappings in Info.plist, which would cause installer to find a previous copy of ${MANAGER_NAME} and install there
|
||||
sudo rm -f "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/${BRAND_NAME}.pkg/Contents/Resources/TokenDefinitions.plist"
|
||||
defaults delete "`pwd`/${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/${BRAND_NAME}.pkg/Contents/Info" IFPkgPathMappings
|
||||
sudo rm -f "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.pkg/Contents/Resources/TokenDefinitions.plist"
|
||||
defaults delete "`pwd`/${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.pkg/Contents/Info" IFPkgPathMappings
|
||||
else
|
||||
# Packagemaker Version 2
|
||||
## /Developer/Tools/packagemaker -build -p ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC\ Installer.app/Contents/Resources/BOINC.pkg -f ../BOINC_Installer/Pkg_Root -r ../BOINC_Installer/Installer\ Resources/ -i mac_build/Pkg-Info.plist -d mac_Installer/Description.plist -ds
|
||||
/Developer/Tools/packagemaker -build -p "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/${BRAND_NAME}.pkg" -f "${PR_PATH}" -r "${IR_PATH}" -i "${NEW_DIR_PATH}/Pkg-Info.plist" -d "${NEW_DIR_PATH}/Description.plist" -ds
|
||||
## /Developer/Tools/packagemaker -build -p ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC\ Installer.pkg -f ../BOINC_Installer/Pkg_Root -r ../BOINC_Installer/Installer\ Resources/ -i mac_build/Pkg-Info.plist -d mac_Installer/Description.plist -ds
|
||||
/Developer/Tools/packagemaker -build -p "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.pkg" -f "${PR_PATH}" -r "${IR_PATH}" -i "${NEW_DIR_PATH}/Pkg-Info.plist" -d "${NEW_DIR_PATH}/Description.plist" -ds
|
||||
fi
|
||||
|
||||
# Add our custom icon to installer package
|
||||
ditto -xk "${INSTALLER_ICNS_FILE}" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.pkg"
|
||||
SetFile -a CE "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.pkg"
|
||||
SetFile -a V "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.pkg/"Icon*
|
||||
|
||||
## for debugging
|
||||
## if [ $? -ne 0 ]; then
|
||||
## echo ""
|
||||
|
@ -344,12 +323,6 @@ fi
|
|||
## echo ""
|
||||
## fi
|
||||
|
||||
# Allow the installer wrapper application to modify the package's Info.plist file
|
||||
sudo chmod u+w,g+w,o+w "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/${BRAND_NAME}.pkg/Contents/Info.plist"
|
||||
|
||||
# Update the installer wrapper application's creation date
|
||||
sudo touch "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app"
|
||||
|
||||
# Remove temporary copies of Pkg-Info.plist and Description.plist
|
||||
sudo rm ${NEW_DIR_PATH}/Pkg-Info.plist
|
||||
sudo rm ${NEW_DIR_PATH}/Description.plist
|
||||
|
@ -361,15 +334,16 @@ sudo rm -dfR "${SCRIPTS_PATH}"
|
|||
|
||||
# Compress the products
|
||||
cd ${NEW_DIR_PATH}
|
||||
zip -rqy ${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal.zip ${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal
|
||||
## Use ditto instead of zip utility to preserve resource forks and Finder attributes (custom icon, hide extension)
|
||||
ditto -ck --sequesterRsrc --keepParent "${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal" "${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal.zip"
|
||||
##### We've decided not to create branded command-line executables; they are identical to standard ones
|
||||
#### zip -rqy ${LC_BRAND_NAME}_$1.$2.$3_universal-apple-darwin.zip ${LC_BRAND_NAME}_$1.$2.$3_universal-apple-darwin
|
||||
#### ditto -ck --sequesterRsrc --keepParent "${LC_BRAND_NAME}_$1.$2.$3_universal-apple-darwin" "${LC_BRAND_NAME}_$1.$2.$3_universal-apple-darwin.zip"
|
||||
##### We've decided not to create branded symbol table file; it is identical to standard one
|
||||
#### zip -rqy ${LC_BRAND_NAME}_$1.$2.$3_macOSX_SymbolTables.zip ${LC_BRAND_NAME}_$1.$2.$3_macOSX_SymbolTables
|
||||
#### ditto -ck --sequesterRsrc --keepParent "${LC_BRAND_NAME}_$1.$2.$3_macOSX_SymbolTables" "${LC_BRAND_NAME}_$1.$2.$3_macOSX_SymbolTables.zip"
|
||||
|
||||
# Force Finder to recognize changed icons by deleting the uncompressed products and expanding the zip file
|
||||
sudo rm -dfR ${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal
|
||||
open ${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal.zip
|
||||
sudo rm -dfR "${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal"
|
||||
open "${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal.zip"
|
||||
|
||||
popd
|
||||
exit 0
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
##
|
||||
# Script to convert Macintosh BOINC installer to Progress Thru Processors Desktop installer
|
||||
# updated 2/10/10 by Charlie Fenton
|
||||
# updated 2/17/11 by Charlie Fenton for BOINC 6.12.7 and later
|
||||
##
|
||||
|
||||
## Usage:
|
||||
|
@ -28,14 +28,13 @@
|
|||
## the Uninstall BOINC application to be converted
|
||||
## PTP_ReadMe.rtf
|
||||
## ProgThruProc.icns
|
||||
## PTP_install.icns
|
||||
## MacPTPPkgIcon.zip
|
||||
## PTP_uninstall.icns
|
||||
## COPYING
|
||||
## COPYING.LESSER (for version 6.3.x and later only)
|
||||
## COPYING.LESSER
|
||||
## COPYRIGHT
|
||||
## skins directory containing Progress Thru Processors skin (optional)
|
||||
## acct_mgr_url.xml (to have BOINC automatically connect to Account Manager)
|
||||
## PostInstall.app (needed only for version 6.2.x or earlier)
|
||||
## ProgThruProc.tiff (for screensaver coordinator)
|
||||
## ProgThruProc_ss_logo (for screensaver coordinator)
|
||||
## PTP_saver directory containing Progress Thru Processors default screensaver and associated files, including:
|
||||
|
@ -66,7 +65,7 @@ README_FILE="PTP-ReadMe.rtf"
|
|||
## BRANDING_FILE="PTP-Branding"
|
||||
BRANDING_INFO="BrandId=2"
|
||||
ICNS_FILE="ProgThruProc.icns"
|
||||
INSTALLER_ICNS_FILE="PTP_install.icns"
|
||||
INSTALLER_ICNS_FILE="MacPTPPkgIcon.zip"
|
||||
UNINSTALLER_ICNS_FILE="PTP_uninstall.icns"
|
||||
SAVER_DIR="PTP_saver"
|
||||
SAVER_SYSPREF_ICON="ProgThruProc.tiff"
|
||||
|
@ -74,7 +73,7 @@ SAVER_LOGO="ProgThruProc_ss_logo.png"
|
|||
BRAND_NAME="Progress Thru Processors"
|
||||
MANAGER_NAME="Progress Thru Processors Desktop"
|
||||
LC_BRAND_NAME="Progress Thru Processors"
|
||||
SOURCE_PKG_PATH="BOINC Installer.app/Contents/Resources/BOINC.pkg/Contents"
|
||||
SOURCE_PKG_PATH="BOINC Installer.pkg/Contents"
|
||||
|
||||
if [ $# -lt 3 ]; then
|
||||
echo "Usage:"
|
||||
|
@ -132,30 +131,26 @@ else
|
|||
fi
|
||||
|
||||
# Create the installer's preinstall and preupgrade scripts from the standard preinstall script
|
||||
# Older versions of BOINC installer did not use preinstall and preupgrade scripts, so check first
|
||||
if [ -f "${SOURCE_PKG_PATH}/Resources/preinstall" ]; then
|
||||
cp -fp "${SOURCE_PKG_PATH}/Resources/preinstall" "${SCRIPTS_PATH}/"
|
||||
cp -fp "${SOURCE_PKG_PATH}/Resources/preinstall" "${SCRIPTS_PATH}/"
|
||||
|
||||
sed -i "" s/BOINCManager/"${MANAGER_NAME}"/g "${SCRIPTS_PATH}/preinstall"
|
||||
sed -i "" s/BOINCSaver/"${BRAND_NAME}"/g "${SCRIPTS_PATH}/preinstall"
|
||||
sed -i "" s/BOINCManager/"${MANAGER_NAME}"/g "${SCRIPTS_PATH}/preinstall"
|
||||
sed -i "" s/BOINCSaver/"${BRAND_NAME}"/g "${SCRIPTS_PATH}/preinstall"
|
||||
|
||||
cp -fp "${SCRIPTS_PATH}/preinstall" "${SCRIPTS_PATH}/preupgrade"
|
||||
fi
|
||||
cp -fp "${SCRIPTS_PATH}/preinstall" "${SCRIPTS_PATH}/preupgrade"
|
||||
|
||||
cp -fp "${SOURCE_PKG_PATH}/Resources/postinstall" "${SCRIPTS_PATH}/"
|
||||
cp -fp "${SOURCE_PKG_PATH}/Resources/postupgrade" "${SCRIPTS_PATH}/"
|
||||
if [ "$1" = "6" ] && [ "$2" = "2" ]; then
|
||||
cp -fpR "PostInstall.app" "${IR_PATH}/"
|
||||
else
|
||||
cp -fpR "${SOURCE_PKG_PATH}/Resources/PostInstall.app" "${IR_PATH}/"
|
||||
cp -fpR "${SOURCE_PKG_PATH}/Resources/WaitPermissions.app" "${IR_PATH}/"
|
||||
fi
|
||||
|
||||
cp -fpR "${SOURCE_PKG_PATH}/Resources/PostInstall.app" "${IR_PATH}/"
|
||||
|
||||
cp -fp "${SOURCE_PKG_PATH}/Resources/all_projects_list.xml" "${IR_PATH}/"
|
||||
|
||||
##### We've decided not to customize BOINC Data directory name for branding
|
||||
#### mkdir -p "${PR_PATH}/Library/Application Support/${BRAND_NAME} Data"
|
||||
#### mkdir -p "${PR_PATH}/Library/Application Support/${BRAND_NAME} Data/locale"
|
||||
|
||||
mkdir -p "${PR_PATH}/Library/Application Support/BOINC Data"
|
||||
|
||||
## If skins folder is present. copy it into BOINC Data folder
|
||||
if [ -d "skins" ]; then
|
||||
sudo cp -fR "skins" "${PR_PATH}/Library/Application Support/BOINC Data/"
|
||||
|
@ -251,7 +246,7 @@ sudo rm -f "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Un
|
|||
sudo rm -f "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app/Contents/Resources/Uninstall BOINC.rsrc"
|
||||
|
||||
sudo chown -R root:admin "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app"
|
||||
sudo chmod -R 555 "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app"
|
||||
sudo chmod -R 755 "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/Uninstall ${BRAND_NAME}.app"
|
||||
|
||||
## Fix up ownership and permissions
|
||||
sudo chown -R root:admin "${PR_PATH}"/*
|
||||
|
@ -276,12 +271,10 @@ sudo cp -fp "COPYRIGHT" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_univer
|
|||
sudo chown -R 501:admin "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYRIGHT.txt"
|
||||
sudo chmod -R 644 "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYRIGHT.txt"
|
||||
|
||||
# COPYING.LESSER is part of GNU License v3, included only with BOINC 6.3.x and later
|
||||
if [ -f "COPYING.LESSER" ]; then
|
||||
sudo cp -fp "COPYING.LESSER" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYING.LESSER.txt"
|
||||
sudo chown -R 501:admin "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYING.LESSER.txt"
|
||||
sudo chmod -R 644 "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYING.LESSER.txt"
|
||||
fi
|
||||
# COPYING.LESSER is part of GNU License v3
|
||||
sudo cp -fp "COPYING.LESSER" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYING.LESSER.txt"
|
||||
sudo chown -R 501:admin "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYING.LESSER.txt"
|
||||
sudo chmod -R 644 "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/extras/COPYING.LESSER.txt"
|
||||
|
||||
# Make temporary copies of Pkg-Info.plist and Description.plist for PackageMaker and update for this branding
|
||||
sudo cp -fp "${SOURCE_PKG_PATH}/Info.plist" "${NEW_DIR_PATH}/Pkg-Info.plist"
|
||||
|
@ -303,41 +296,25 @@ plutil -convert xml1 "`pwd`/${NEW_DIR_PATH}/Pkg-Info.plist"
|
|||
defaults write "`pwd`/${NEW_DIR_PATH}/Description" "IFPkgDescriptionTitle" "$MANAGER_NAME"
|
||||
plutil -convert xml1 "`pwd`/${NEW_DIR_PATH}/Description.plist"
|
||||
|
||||
# Copy the installer wrapper application "${BRAND_NAME} Installer.app"
|
||||
sudo cp -fpR "BOINC Installer.app" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app"
|
||||
sudo rm -dfR "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/BOINC.pkg"
|
||||
|
||||
# Update the installer wrapper application's info.plist, InfoPlist.strings files
|
||||
sudo sed -i "" s/BOINC/"${BRAND_NAME}"/g "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Info.plist"
|
||||
sudo sed -i "" s/MacInstaller.icns/"${INSTALLER_ICNS_FILE}"/g "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Info.plist"
|
||||
# InfoPlist.strings file uses UTF-16 encoding
|
||||
sudo chmod a+w "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/English.lproj/InfoPlist.strings"
|
||||
sudo iconv -f UTF-16 -t UTF-8 "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/English.lproj/InfoPlist.strings" > "${PR_PATH}/tempUTF84"
|
||||
sudo sed -i "" s/BOINC/"${MANAGER_NAME}"/g "${PR_PATH}/tempUTF84"
|
||||
sudo iconv -f UTF-8 -t UTF-16 "${PR_PATH}/tempUTF84" > "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/English.lproj/InfoPlist.strings"
|
||||
sudo rm -f "${PR_PATH}/tempUTF84"
|
||||
|
||||
# Replace the installer wrapper application's MacInstaller.icns file
|
||||
sudo cp -fp "${INSTALLER_ICNS_FILE}" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/${INSTALLER_ICNS_FILE}"
|
||||
sudo rm -f "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/MacInstaller.icns"
|
||||
|
||||
# Rename the installer wrapper application's executable inside the bundle
|
||||
sudo mv -f "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/MacOS/BOINC Installer" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/MacOS/${BRAND_NAME} Installer"
|
||||
|
||||
# Build the installer package inside the wrapper application's bundle
|
||||
# Build the installer package
|
||||
if [ "$PACKAGEMAKER_VERSION" = "3" ]; then
|
||||
# Packagemaker Version 3
|
||||
## /Developer/usr/bin/packagemaker -r ../BOINC_Installer/Pkg_Root -e ../BOINC_Installer/Installer\ Resources/ -s ../BOINC_Installer/Installer\ Scripts/ -f mac_build/Pkg-Info.plist -t "BOINC Manager" -n "$1.$2.$3" -b -o ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC\ Installer.app/Contents/Resources/BOINC.pkg
|
||||
/Developer/usr/bin/packagemaker -r "${PR_PATH}" -e "${IR_PATH}" -s "${SCRIPTS_PATH}" -f "${NEW_DIR_PATH}/Pkg-Info.plist" -t "${MANAGER_NAME}" -n "$1.$2.$3" -b -o "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/${BRAND_NAME}.pkg"
|
||||
## /Developer/usr/bin/packagemaker -r ../BOINC_Installer/Pkg_Root -e ../BOINC_Installer/Installer\ Resources/ -s ../BOINC_Installer/Installer\ Scripts/ -f mac_build/Pkg-Info.plist -t "BOINC Manager" -n "$1.$2.$3" -b -o ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC\ Installer.pkg
|
||||
/Developer/usr/bin/packagemaker -r "${PR_PATH}" -e "${IR_PATH}" -s "${SCRIPTS_PATH}" -f "${NEW_DIR_PATH}/Pkg-Info.plist" -t "${MANAGER_NAME}" -n "$1.$2.$3" -b -o "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.pkg"
|
||||
# Remove TokenDefinitions.plist and IFPkgPathMappings in Info.plist, which would cause installer to find a previous copy of ${MANAGER_NAME} and install there
|
||||
sudo rm -f "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/${BRAND_NAME}.pkg/Contents/Resources/TokenDefinitions.plist"
|
||||
defaults delete "`pwd`/${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/${BRAND_NAME}.pkg/Contents/Info" IFPkgPathMappings
|
||||
sudo rm -f "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.pkg/Contents/Resources/TokenDefinitions.plist"
|
||||
defaults delete "`pwd`/${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.pkg/Contents/Info" IFPkgPathMappings
|
||||
else
|
||||
# Packagemaker Version 2
|
||||
## /Developer/Tools/packagemaker -build -p ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC\ Installer.app/Contents/Resources/BOINC.pkg -f ../BOINC_Installer/Pkg_Root -r ../BOINC_Installer/Installer\ Resources/ -i mac_build/Pkg-Info.plist -d mac_Installer/Description.plist -ds
|
||||
/Developer/Tools/packagemaker -build -p "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/${BRAND_NAME}.pkg" -f "${PR_PATH}" -r "${IR_PATH}" -i "${NEW_DIR_PATH}/Pkg-Info.plist" -d "${NEW_DIR_PATH}/Description.plist" -ds
|
||||
## /Developer/Tools/packagemaker -build -p ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC\ Installer.pkg -f ../BOINC_Installer/Pkg_Root -r ../BOINC_Installer/Installer\ Resources/ -i mac_build/Pkg-Info.plist -d mac_Installer/Description.plist -ds
|
||||
/Developer/Tools/packagemaker -build -p "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.pkg" -f "${PR_PATH}" -r "${IR_PATH}" -i "${NEW_DIR_PATH}/Pkg-Info.plist" -d "${NEW_DIR_PATH}/Description.plist" -ds
|
||||
fi
|
||||
|
||||
# Add our custom icon to installer package
|
||||
ditto -xk "${INSTALLER_ICNS_FILE}" "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.pkg"
|
||||
SetFile -a CE "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.pkg"
|
||||
SetFile -a V "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.pkg/"Icon*
|
||||
|
||||
## for debugging
|
||||
## if [ $? -ne 0 ]; then
|
||||
## echo ""
|
||||
|
@ -349,12 +326,6 @@ fi
|
|||
## echo ""
|
||||
## fi
|
||||
|
||||
# Allow the installer wrapper application to modify the package's Info.plist file
|
||||
sudo chmod u+w,g+w,o+w "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app/Contents/Resources/${BRAND_NAME}.pkg/Contents/Info.plist"
|
||||
|
||||
# Update the installer wrapper application's creation date
|
||||
sudo touch "${NEW_DIR_PATH}/${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal/${BRAND_NAME} Installer.app"
|
||||
|
||||
# Remove temporary copies of Pkg-Info.plist and Description.plist
|
||||
sudo rm ${NEW_DIR_PATH}/Pkg-Info.plist
|
||||
sudo rm ${NEW_DIR_PATH}/Description.plist
|
||||
|
@ -366,11 +337,12 @@ sudo rm -dfR "${SCRIPTS_PATH}"
|
|||
|
||||
# Compress the products
|
||||
cd ${NEW_DIR_PATH}
|
||||
zip -rqy "${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal.zip" "${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal"
|
||||
## Use ditto instead of zip utility to preserve resource forks and Finder attributes (custom icon, hide extension)
|
||||
ditto -ck --sequesterRsrc --keepParent "${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal" "${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal.zip"
|
||||
##### We've decided not to create branded command-line executables; they are identical to standard ones
|
||||
#### zip -rqy "${LC_BRAND_NAME}_$1.$2.$3_universal-apple-darwin.zip" "${LC_BRAND_NAME}_$1.$2.$3_universal-apple-darwin"
|
||||
#### ditto -ck --sequesterRsrc --keepParent "${LC_BRAND_NAME}_$1.$2.$3_universal-apple-darwin" "${LC_BRAND_NAME}_$1.$2.$3_universal-apple-darwin.zip"
|
||||
##### We've decided not to create branded symbol table file; it is identical to standard one
|
||||
#### zip -rqy "${LC_BRAND_NAME}_$1.$2.$3_macOSX_SymbolTables.zip" "${LC_BRAND_NAME}_$1.$2.$3_macOSX_SymbolTables"
|
||||
#### ditto -ck --sequesterRsrc --keepParent "${LC_BRAND_NAME}_$1.$2.$3_macOSX_SymbolTables" "${LC_BRAND_NAME}_$1.$2.$3_macOSX_SymbolTables.zip"
|
||||
|
||||
# Force Finder to recognize changed icons by deleting the uncompressed products and expanding the zip file
|
||||
sudo rm -dfR "${LC_BRAND_NAME}_$1.$2.$3_macOSX_universal"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
##
|
||||
# post-Install Script for Macintosh BOINC Manager for OS X revised 2/10/10
|
||||
# post-Install Script for Macintosh BOINC Manager for OS X revised 12/6/10
|
||||
##
|
||||
|
||||
echo "initial directory = $PWD"
|
||||
|
@ -17,9 +17,16 @@ if [ -f "Contents/Resources/acct_mgr_url.xml" ]; then
|
|||
cp -fp Contents/Resources/acct_mgr_url.xml "/Library/Application Support/BOINC Data/acct_mgr_url.xml"
|
||||
fi
|
||||
|
||||
# Run the Postinstall Application
|
||||
Run the Postinstall Application
|
||||
if [ "${COMMAND_LINE_INSTALL}" = "1" ]; then
|
||||
rm -f /tmp/BOINCInstallLog.txt
|
||||
Contents/Resources/PostInstall.app/Contents/MacOS/PostInstall -part1 >> /tmp/BOINCInstallLog.txt
|
||||
sleep 2
|
||||
Contents/Resources/PostInstall.app/Contents/MacOS/PostInstall -part2 & >> /tmp/BOINCInstallLog.txt
|
||||
else
|
||||
Contents/Resources/PostInstall.app/Contents/MacOS/PostInstall -part1
|
||||
|
||||
sleep 2
|
||||
Contents/Resources/PostInstall.app/Contents/MacOS/PostInstall -part2 &
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
##
|
||||
# post-Upgrade Script for Macintosh BOINC Manager for OS X revised 2/10/10
|
||||
# post-Upgrade Script for Macintosh BOINC Manager for OS X revised 12/6/10
|
||||
##
|
||||
|
||||
echo "initial directory = $PWD"
|
||||
|
@ -18,8 +18,15 @@ if [ -f "Contents/Resources/acct_mgr_url.xml" ]; then
|
|||
fi
|
||||
|
||||
# Run the Postinstall Application
|
||||
if [ "${COMMAND_LINE_INSTALL}" = "1" ]; then
|
||||
rm -f /tmp/BOINCInstallLog.txt
|
||||
Contents/Resources/PostInstall.app/Contents/MacOS/PostInstall -part1 >> /tmp/BOINCInstallLog.txt
|
||||
sleep 2
|
||||
Contents/Resources/PostInstall.app/Contents/MacOS/PostInstall -part2 & >> /tmp/BOINCInstallLog.txt
|
||||
else
|
||||
Contents/Resources/PostInstall.app/Contents/MacOS/PostInstall -part1
|
||||
|
||||
sleep 2
|
||||
Contents/Resources/PostInstall.app/Contents/MacOS/PostInstall -part2 &
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
##
|
||||
# Release Script for Macintosh BOINC Manager 10/31/07 by Charlie Fenton
|
||||
## updated 11/18/09 by Charlie Fenton for OS 10.6 Snow Leopard
|
||||
## updated 8/4/11 by Charlie Fenton
|
||||
##
|
||||
## NOTE: This script uses PackageMaker, which is installed as part of the
|
||||
## XCode developer tools. So you must have installed XCode Developer
|
||||
|
@ -90,7 +91,6 @@ cp -fp mac_installer/postinstall ../BOINC_Installer/Installer\ Scripts/
|
|||
cp -fp mac_installer/postupgrade ../BOINC_Installer/Installer\ Scripts/
|
||||
|
||||
cp -fpR $BUILDPATH/PostInstall.app ../BOINC_Installer/Installer\ Resources/
|
||||
cp -fpR $BUILDPATH/WaitPermissions.app ../BOINC_Installer/Installer\ Resources/
|
||||
|
||||
mkdir -p ../BOINC_Installer/Pkg_Root
|
||||
mkdir -p ../BOINC_Installer/Pkg_Root/Applications
|
||||
|
@ -102,6 +102,8 @@ mkdir -p ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/lo
|
|||
mkdir -p ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/switcher
|
||||
mkdir -p ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/skins
|
||||
|
||||
cp -fpR $BUILDPATH/WaitPermissions.app ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/
|
||||
|
||||
cp -fpR $BUILDPATH/switcher ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/switcher/
|
||||
cp -fpR $BUILDPATH/setprojectgrp ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/switcher/
|
||||
## cp -fpR $BUILDPATH/AppStats ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/switcher/
|
||||
|
@ -126,18 +128,6 @@ cp -fpR $BUILDPATH/BOINCManager.app ../BOINC_Installer/Pkg_Root/Applications/
|
|||
|
||||
cp -fpR $BUILDPATH/BOINCSaver.saver ../BOINC_Installer/Pkg_Root/Library/Screen\ Savers/
|
||||
|
||||
## If x86_64 version of screen saver for OS 10.6 exists, merge it into our screen saver
|
||||
if [ -x ../_boinc_SnowLeopard/mac_build/build/Deployment/BOINCSaver.saver/Contents/MacOS/BOINCSaver ]; then
|
||||
if [ "$4" != "-dev" ]; then
|
||||
rm -f ../BOINC_Installer/Pkg_Root/Library/Screen\ Savers/BOINCSaver.saver/Contents/MacOS/BOINCSaver
|
||||
rm -fR ../BOINC_Installer/temp/
|
||||
mkdir -p ../BOINC_Installer/temp/
|
||||
lipo ../_boinc_SnowLeopard/mac_build/build/Deployment/BOINCSaver.saver/Contents/MacOS/BOINCSaver -thin x86_64 -output ../BOINC_Installer/temp/saver64
|
||||
lipo ../BOINC_Installer/temp/saver64 $BUILDPATH/BOINCSaver.saver/Contents/MacOS/BOINCSaver -create -output ../BOINC_Installer/Pkg_Root/Library/Screen\ Savers/BOINCSaver.saver/Contents/MacOS/BOINCSaver
|
||||
rm -fR ../BOINC_Installer/temp/
|
||||
fi
|
||||
fi
|
||||
|
||||
## Copy the localization files into the installer tree
|
||||
## Old way copies CVS and *.po files which are not needed
|
||||
## cp -fpR locale/ ../BOINC_Installer/Pkg_Root/Library/Application\ Support/BOINC\ Data/locale
|
||||
|
@ -185,10 +175,7 @@ sudo chmod -R 644 ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_
|
|||
|
||||
cp -fpR $BUILDPATH/Uninstall\ BOINC.app ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/extras
|
||||
sudo chown -R root:admin ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/extras/Uninstall\ BOINC.app
|
||||
sudo chmod -R 555 ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/extras/Uninstall\ BOINC.app
|
||||
|
||||
# Copy the installer wrapper application "BOINC Installer.app"
|
||||
cp -fpR $BUILDPATH/BOINC\ Installer.app ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/
|
||||
sudo chmod -R 755 ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/extras/Uninstall\ BOINC.app
|
||||
|
||||
DarwinVersion=`uname -r`;
|
||||
DarwinMajorVersion=`echo $DarwinVersion | sed 's/\([0-9]*\)[.].*/\1/' `;
|
||||
|
@ -203,26 +190,22 @@ DarwinMajorVersion=`echo $DarwinVersion | sed 's/\([0-9]*\)[.].*/\1/' `;
|
|||
# Darwin version 6.x corresponds to OS 10.2.x
|
||||
|
||||
# Build the installer package inside the wrapper application's bundle
|
||||
if [ "$DarwinMajorVersion" = "8" ]; then
|
||||
# OS 10.4 packagemaker
|
||||
/Developer/Tools/packagemaker -build -p ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC\ Installer.app/Contents/Resources/BOINC.pkg -f ../BOINC_Installer/Pkg_Root -r ../BOINC_Installer/Installer\ Resources/ -i mac_build/Pkg-Info.plist -d mac_Installer/Description.plist -ds
|
||||
else
|
||||
# OS 10.5 / OS 10.6 packagemaker
|
||||
/Developer/usr/bin/packagemaker -r ../BOINC_Installer/Pkg_Root -e ../BOINC_Installer/Installer\ Resources/ -s ../BOINC_Installer/Installer\ Scripts/ -f mac_build/Pkg-Info.plist -t "BOINC Manager" -n "$1.$2.$3" -b -o ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC\ Installer.app/Contents/Resources/BOINC.pkg
|
||||
/Developer/usr/bin/packagemaker -r ../BOINC_Installer/Pkg_Root -e ../BOINC_Installer/Installer\ Resources/ -s ../BOINC_Installer/Installer\ Scripts/ -f mac_build/Pkg-Info.plist -t "BOINC Manager" -n "$1.$2.$3" -b -o ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC\ Installer.pkg
|
||||
# Remove TokenDefinitions.plist and IFPkgPathMappings in Info.plist, which would cause installer to find a previous copy of BOINCManager and install there
|
||||
sudo rm -f ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC\ Installer.app/Contents/Resources/BOINC.pkg/Contents/Resources/TokenDefinitions.plist
|
||||
defaults delete "$BOINCPath/../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC Installer.app/Contents/Resources/BOINC.pkg/Contents/Info" IFPkgPathMappings
|
||||
fi
|
||||
|
||||
# Allow the installer wrapper application to modify the package's Info.plist file
|
||||
sudo chmod a+rw ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC\ Installer.app/Contents/Resources/BOINC.pkg/Contents/Info.plist
|
||||
sudo rm -f ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC\ Installer.pkg/Contents/Resources/TokenDefinitions.plist
|
||||
defaults delete "$BOINCPath/../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC Installer.pkg/Contents/Info" IFPkgPathMappings
|
||||
# Add our custom icon
|
||||
ditto -xk clientgui/res/MacPkgIcon.zip ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC\ Installer.pkg/
|
||||
SetFile -a CE "$BOINCPath/../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC Installer.pkg"
|
||||
SetFile -a V "$BOINCPath/../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_macOSX_universal/BOINC Installer.pkg/"Icon*
|
||||
|
||||
# Build the stand-alone client distribution
|
||||
cp -fpR mac_build/Mac_SA_Insecure.sh ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_universal-apple-darwin/
|
||||
cp -fpR mac_build/Mac_SA_Secure.sh ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_universal-apple-darwin/
|
||||
cp -fpR COPYING ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_universal-apple-darwin/
|
||||
cp -fpR COPYING.LESSER ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_universal-apple-darwin/
|
||||
cp -fpR COPYRIGHT ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_universal-apple-darwin/
|
||||
cp -fpR COPYING ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_universal-apple-darwin/COPYING.txt
|
||||
cp -fpR COPYING.LESSER ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_universal-apple-darwin/COPYING.LESSER.txt
|
||||
cp -fpR COPYRIGHT ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_universal-apple-darwin/COPYRIGHT.txt
|
||||
cp -fp mac_Installer/License.rtf ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_universal-apple-darwin/
|
||||
sudo chown -R 501:admin ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_universal-apple-darwin/*
|
||||
sudo chmod -R 644 ../BOINC_Installer/New_Release_$1_$2_$3/boinc_$1.$2.$3_universal-apple-darwin/*
|
||||
|
@ -243,9 +226,10 @@ sudo chmod -R u+rw-s,g+r-ws,o+r-w ../BOINC_Installer/New_Release_$1_$2_$3/boinc_
|
|||
cp -fpR $BUILDPATH/SymbolTables/ ../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
|
||||
zip -rqy boinc_$1.$2.$3_universal-apple-darwin.zip boinc_$1.$2.$3_universal-apple-darwin
|
||||
zip -rqy boinc_$1.$2.$3_macOSX_SymbolTables.zip boinc_$1.$2.$3_macOSX_SymbolTables
|
||||
## Use ditto instead of zip utility to preserve resource forks and Finder attributes (custom icon, hide extension)
|
||||
ditto -ck --sequesterRsrc --keepParent boinc_$1.$2.$3_macOSX_universal boinc_$1.$2.$3_macOSX_universal.zip
|
||||
ditto -ck --sequesterRsrc --keepParent boinc_$1.$2.$3_universal-apple-darwin boinc_$1.$2.$3_universal-apple-darwin.zip
|
||||
ditto -ck --sequesterRsrc --keepParent boinc_$1.$2.$3_macOSX_SymbolTables boinc_$1.$2.$3_macOSX_SymbolTables.zip
|
||||
|
||||
#popd
|
||||
cd "${BOINCPath}"
|
||||
|
|
|
@ -208,11 +208,17 @@ static OSStatus DoUninstall(void) {
|
|||
system ("rm -rf \"/Applications/Progress\\ Thru\\ Processors\\ Desktop.app\"");
|
||||
system ("rm -rf \"/Library/Screen Savers/Progress\\ Thru\\ Processors.saver\"");
|
||||
|
||||
|
||||
// Delete any receipt from an older installer (which had
|
||||
// a wrapper application around the installer package.)
|
||||
system ("rm -rf /Library/Receipts/GridRepublic.pkg");
|
||||
system ("rm -rf /Library/Receipts/Progress\\ Thru\\ Processors.pkg");
|
||||
system ("rm -rf /Library/Receipts/BOINC.pkg");
|
||||
|
||||
// Delete any receipt from a newer installer (a bare package.)
|
||||
system ("rm -rf /Library/Receipts/GridRepublic\\ Installer.pkg");
|
||||
system ("rm -rf /Library/Receipts/Progress\\ Thru\\ Processors\\ Installer.pkg");
|
||||
system ("rm -rf /Library/Receipts/BOINC\\ Installer.pkg");
|
||||
|
||||
// Phase 5: Set BOINC Data owner and group to logged in user
|
||||
// We don't customize BOINC Data directory name for branding
|
||||
// system ("rm -rf \"/Library/Application Support/BOINC Data\"");
|
||||
|
|
Loading…
Reference in New Issue