[39048] branches/gsoc08-framework/MacPorts_Framework

armahg at macports.org armahg at macports.org
Wed Aug 6 12:33:16 PDT 2008


Revision: 39048
          http://trac.macosforge.org/projects/macports/changeset/39048
Author:   armahg at macports.org
Date:     2008-08-06 12:33:15 -0700 (Wed, 06 Aug 2008)
Log Message:
-----------
Modified BASFixFaliure to now take in file URL's rather than tool names. This took care of CFBundle resource path retrieval errors. Completed implementation of MPHelperTool. MPHelperTool is now able to run privileged operations (with minimum initialization of passed AuthorizationRef). Now to work on IPC between MPHelperTool and MacPorts.Framework.

Modified Paths:
--------------
    branches/gsoc08-framework/MacPorts_Framework/BetterAuthorizationSampleLib.c
    branches/gsoc08-framework/MacPorts_Framework/BetterAuthorizationSampleLib.h
    branches/gsoc08-framework/MacPorts_Framework/MPHelperCommon.h
    branches/gsoc08-framework/MacPorts_Framework/MPHelperTool.m
    branches/gsoc08-framework/MacPorts_Framework/MPInterpreter.m
    branches/gsoc08-framework/MacPorts_Framework/MPMacPortsTest.h
    branches/gsoc08-framework/MacPorts_Framework/MPMacPortsTest.m
    branches/gsoc08-framework/MacPorts_Framework/MacPorts.Framework.xcodeproj/project.pbxproj

Modified: branches/gsoc08-framework/MacPorts_Framework/BetterAuthorizationSampleLib.c
===================================================================
--- branches/gsoc08-framework/MacPorts_Framework/BetterAuthorizationSampleLib.c	2008-08-06 19:05:18 UTC (rev 39047)
+++ branches/gsoc08-framework/MacPorts_Framework/BetterAuthorizationSampleLib.c	2008-08-06 19:33:15 UTC (rev 39048)
@@ -2329,72 +2329,74 @@
     return retval;
 }
 
-static OSStatus GetToolPath(CFStringRef bundleID, CFStringRef toolName, char *toolPath, size_t toolPathSize)
-    // Given a bundle identifier and the name of a tool embedded within that bundle, 
-    // get a file system path to the tool.
-{
-    OSStatus    err;
-    CFBundleRef bundle;
-    Boolean     success;
-    CFURLRef    toolURL;
-	
-	assert(bundleID != NULL);
-    assert(toolName != NULL);
-    assert(toolPath != NULL);
-    assert(toolPathSize > 0);
-    
-    toolURL = NULL;
+//static OSStatus GetToolPath(CFStringRef bundleID, CFStringRef toolName, char *toolPath, size_t toolPathSize)
+//    // Given a bundle identifier and the name of a tool embedded within that bundle, 
+//    // get a file system path to the tool.
+//{
+//    OSStatus    err;
+//    CFBundleRef bundle;
+//    Boolean     success;
+//    CFURLRef    toolURL;
+//	
+//	assert(bundleID != NULL);
+//    assert(toolName != NULL);
+//    assert(toolPath != NULL);
+//    assert(toolPathSize > 0);
+//    
+//    toolURL = NULL;
+//
+//	
+//    err = noErr;
+//    bundle = CFBundleGetBundleWithIdentifier(bundleID);
+//    if (bundle == NULL) {
+//        err = coreFoundationUnknownErr;
+//    }
+//	
+//    if (err == noErr) {
+//		//Modify this code to load the bundle if its not already loaded
+//		
+//		if (CFBundleIsExecutableLoaded(bundle)) {
+//			toolURL = CFBundleCopyResourceURL(bundle, toolName, NULL, NULL);  
+//		}
+//		else{ //We need to load the bundle first
+//			Boolean loaded = CFBundleLoadExecutable(bundle);
+//			
+//			if (loaded && bundle != NULL) {
+//				toolURL = CFBundleCopyResourceURL(bundle, toolName, NULL, NULL); 
+//			}
+//			else { // we couldn't load the bundle .. this IS bad
+//				err = coreFoundationUnknownErr;
+//			}
+//		}
+//		
+//
+//	 assert(toolURL != NULL);
+//        
+//		if (toolURL == NULL) {
+//            err = coreFoundationUnknownErr;
+//        }
+//    }
+//    if (err == noErr) {
+//        success = CFURLGetFileSystemRepresentation(toolURL, true, (UInt8 *) toolPath, toolPathSize);
+//        if ( ! success ) {
+//            err = coreFoundationUnknownErr;
+//        }
+//    }
+//    
+//    if (toolURL != NULL) {
+//        CFRelease(toolURL);
+//    }
+//    
+//    return err;
+//}
 
-	
-    err = noErr;
-    bundle = CFBundleGetBundleWithIdentifier(bundleID);
-    if (bundle == NULL) {
-        err = coreFoundationUnknownErr;
-    }
-	
-    if (err == noErr) {
-		//Modify this code to load the bundle if its not already loaded
-		
-		if (CFBundleIsExecutableLoaded(bundle)) {
-			toolURL = CFBundleCopyResourceURL(bundle, toolName, NULL, NULL);  
-		}
-		else{ //We need to load the bundle first
-			Boolean loaded = CFBundleLoadExecutable(bundle);
-			
-			if (loaded && bundle != NULL) {
-				toolURL = CFBundleCopyResourceURL(bundle, toolName, NULL, NULL); 
-			}
-			else { // we couldn't load the bundle .. this IS bad
-				err = coreFoundationUnknownErr;
-			}
-		}
-		
 
-	 assert(toolURL != NULL);
-        
-		if (toolURL == NULL) {
-            err = coreFoundationUnknownErr;
-        }
-    }
-    if (err == noErr) {
-        success = CFURLGetFileSystemRepresentation(toolURL, true, (UInt8 *) toolPath, toolPathSize);
-        if ( ! success ) {
-            err = coreFoundationUnknownErr;
-        }
-    }
-    
-    if (toolURL != NULL) {
-        CFRelease(toolURL);
-    }
-    
-    return err;
-}
 
 extern OSStatus BASFixFailure(
 	AuthorizationRef			auth,
 	CFStringRef					bundleID,
-	CFStringRef					installToolName,
-	CFStringRef					helperToolName,
+	CFURLRef					installToolURL,
+	CFURLRef					helperToolURL,
 	BASFailCode					failCode
 )
     // See comment in header.
@@ -2402,15 +2404,15 @@
 	OSStatus    retval;
     Boolean     success;
     char        bundleIDC[PATH_MAX];
-    char        installToolPath[PATH_MAX];
-    char        helperToolPath[PATH_MAX];
+    char        installToolPathC[PATH_MAX];
+    char        helperToolPathC[PATH_MAX];
 
     // Pre-conditions
     
     assert(auth != NULL);
     assert(bundleID != NULL);
-    assert(installToolName != NULL);
-    assert(helperToolName  != NULL);
+    assert(installToolURL != NULL);
+    assert(helperToolURL  != NULL);
     
     // Get the bundle identifier as a UTF-8 C string.  Also, get paths for both of 
     // the tools.
@@ -2421,20 +2423,32 @@
         retval = coreFoundationUnknownErr;
     }
     if (retval == noErr) {
-        retval = GetToolPath(bundleID, installToolName, installToolPath, sizeof(installToolPath));
+		success = CFURLGetFileSystemRepresentation(installToolURL, true, (UInt8 *) installToolPathC, sizeof(installToolPathC));
+		if ( ! success )
+			retval = coreFoundationUnknownErr;
     }
-    if (retval == noErr) {
-        retval = GetToolPath(bundleID, helperToolName,  helperToolPath,  sizeof(helperToolPath));
+	if (retval == noErr) {
+		success = CFURLGetFileSystemRepresentation(helperToolURL, true, (UInt8 *) helperToolPathC, sizeof(helperToolPathC));
+		if ( ! success )
+			retval = coreFoundationUnknownErr;
     }
-    
+	
+//	if (retval == noErr) {
+//        retval = GetToolPath(bundleID, installToolURL, installToolPath, sizeof(installToolPath));
+//    }
+//    if (retval == noErr) {
+//        retval = GetToolPath(bundleID, helperToolURL,  helperToolPath,  sizeof(helperToolPath));
+//    }
+	
+	
     // Depending on the failure code, either run the enable command or the install 
     // from scratch command.
     
     if (retval == noErr) {
         if (failCode == kBASFailDisabled) {
-            retval = RunInstallToolAsRoot(auth, installToolPath, kBASInstallToolEnableCommand, bundleIDC, NULL);
+            retval = RunInstallToolAsRoot(auth, installToolPathC, kBASInstallToolEnableCommand, bundleIDC, NULL);
         } else {
-            retval = BASInstall(auth, bundleIDC, installToolPath, helperToolPath);
+            retval = BASInstall(auth, bundleIDC, installToolPathC, helperToolPathC);
         }
     }
 

Modified: branches/gsoc08-framework/MacPorts_Framework/BetterAuthorizationSampleLib.h
===================================================================
--- branches/gsoc08-framework/MacPorts_Framework/BetterAuthorizationSampleLib.h	2008-08-06 19:05:18 UTC (rev 39047)
+++ branches/gsoc08-framework/MacPorts_Framework/BetterAuthorizationSampleLib.h	2008-08-06 19:33:15 UTC (rev 39048)
@@ -635,8 +635,8 @@
 extern OSStatus BASFixFailure(
 	AuthorizationRef			auth,
 	CFStringRef					bundleID,
-	CFStringRef					installToolName,
-	CFStringRef					helperToolName,
+	CFURLRef					installToolURL,
+	CFURLRef					helperToolURL,
 	BASFailCode					failCode
 );
 

Modified: branches/gsoc08-framework/MacPorts_Framework/MPHelperCommon.h
===================================================================
--- branches/gsoc08-framework/MacPorts_Framework/MPHelperCommon.h	2008-08-06 19:05:18 UTC (rev 39047)
+++ branches/gsoc08-framework/MacPorts_Framework/MPHelperCommon.h	2008-08-06 19:33:15 UTC (rev 39048)
@@ -29,7 +29,12 @@
 	
 	//String to be Evlauted
 	#define kTclStringToBeEvaluated		"TclString"					//CFString 
+
+	//Tcl MacPorts Package Initialization Path
+	#define kTclInterpreterInitPath		"TclInitPath"				//CFString
 	
+	//Tcl interpInit.tcl Path
+	#define kInterpInitFilePath			"InterpInitTclFilePath"		//CFString
 
 	//response keys
 	#define kTclStringEvaluationResult	"TclStringEvaluationResult"		//CFString

Modified: branches/gsoc08-framework/MacPorts_Framework/MPHelperTool.m
===================================================================
--- branches/gsoc08-framework/MacPorts_Framework/MPHelperTool.m	2008-08-06 19:05:18 UTC (rev 39047)
+++ branches/gsoc08-framework/MacPorts_Framework/MPHelperTool.m	2008-08-06 19:33:15 UTC (rev 39048)
@@ -32,16 +32,163 @@
  *	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  *	POSSIBILITY OF SUCH DAMAGE.
  */
+#define MP_DEFAULT_PKG_PATH		@"/Library/Tcl"
 
+
 #import <Foundation/Foundation.h>
+#include <CoreServices/CoreServices.h>
+#include "BetterAuthorizationSampleLib.h"
+#include <tcl.h>
+#include "MPHelperCommon.h"
 
 
 
+static OSStatus DoEvaluateTclString (
+	 AuthorizationRef			auth,
+	 const void *				userData,
+	 CFDictionaryRef				request,
+	 CFMutableDictionaryRef		response,
+	 aslclient					asl,
+	 aslmsg						aslMsg
+)
+{
+	
+	OSStatus		retval = noErr;
+	
+	
+	//Pre conditions
+	assert(auth != NULL);
+	//userData may be NULL
+	assert(request != NULL);
+	assert(response != NULL);
+	//asl may be null
+	//aslMsg may be null
+	
+	//Get the string that was passed in the request dictionary
+	NSString *  tclCmd = (NSString *) (CFStringRef)CFDictionaryGetValue(request, CFSTR(kTclStringToBeEvaluated));
+	if (tclCmd == nil) {
+		retval = coreFoundationUnknownErr;
+	}
+	
+	//Get the tcl Interpreter pkg path
+	NSString * tclPkgPath = (NSString *) (CFStringRef) CFDictionaryGetValue(request, CFSTR(kTclInterpreterInitPath));
+	if (tclCmd == nil) {
+		retval == coreFoundationUnknownErr;
+	}
+	else
+		CFDictionaryAddValue(response, CFSTR("TclCommandInput"), (CFStringRef)tclCmd);
+	
+	//Initialize Tcl Interpreter 
+	Tcl_Interp * interpreter = Tcl_CreateInterp();
+	if(interpreter == NULL) {
+		NSLog(@"Error in Tcl_CreateInterp, aborting.");
+		
+		//For Debugging
+		CFDictionaryAddValue(response, CFSTR("TclInterpreterCreate"), CFSTR("NO"));
+		retval =  coreFoundationUnknownErr;
+	}
+	else {//For Debugging
+		CFDictionaryAddValue(response, CFSTR("TclInterpreterCreate"), CFSTR("YES"));
+	}
+	
+	if(Tcl_Init(interpreter) == TCL_ERROR) {
+		NSLog(@"Error in Tcl_Init: %s", Tcl_GetStringResult(interpreter));
+		Tcl_DeleteInterp(interpreter);
+		retval = coreFoundationUnknownErr;
+		//For Dbg
+		CFDictionaryAddValue(response, CFSTR("TclInterpreterInit"), CFSTR("NO"));
+	}
+	else {//For Dbg.
+		CFDictionaryAddValue(response, CFSTR("TclInterpreterInit"), CFSTR("YES"));
+	}
+	 
+	
+	NSString * mport_fastload = [[@"source [file join \"" stringByAppendingString:tclPkgPath]
+								 stringByAppendingString:@"\" macports1.0 macports_fastload.tcl]"];
+	if(Tcl_Eval(interpreter, [mport_fastload UTF8String]) == TCL_ERROR) {
+		NSLog(@"Error in Tcl_EvalFile macports_fastload.tcl: %s", Tcl_GetStringResult(interpreter));
+		Tcl_DeleteInterp(interpreter);
+		retval = coreFoundationUnknownErr;
+		
+		//For Dbg
+		CFDictionaryAddValue(response, CFSTR("MPFastload"), CFSTR("NO"));
+	}
+	else {
+		CFDictionaryAddValue(response, CFSTR("MPFastload"), CFSTR("YES"));
+	}
+	
+	/*	
+	Tcl_CreateObjCommand(interpreter, "notifications", Notifications_Command, NULL, NULL);
+	if (Tcl_PkgProvide(interpreter, "notifications", "1.0") != TCL_OK) {
+		NSLog(@"Error in Tcl_PkgProvide: %s", Tcl_GetStringResult(interpreter));
+		Tcl_DeleteInterp(interpreter);
+	}
+	*/
+	
+	NSString * interpInitFilePath = (NSString *) (CFStringRef) CFDictionaryGetValue(request, CFSTR(kInterpInitFilePath));
+	if (interpInitFilePath == nil) {
+		CFDictionaryAddValue(response, CFSTR("interpInitFilePath"), CFSTR("NO"));
+		retval = coreFoundationUnknownErr;
+	}
+	else
+		CFDictionaryAddValue(response, CFSTR("interpInitFilePath"), (CFStringRef)interpInitFilePath);
+	
+	if( Tcl_EvalFile(interpreter, [interpInitFilePath UTF8String]) == TCL_ERROR) {
+		NSLog(@"Error in Tcl_EvalFile init.tcl: %s", Tcl_GetStringResult(interpreter));
+		Tcl_DeleteInterp(interpreter);
+		retval = coreFoundationUnknownErr;
+		CFDictionaryAddValue(response, CFSTR("interpInit.tcl Evaluation"), CFSTR("NO"));
+	}
+	else {
+		CFDictionaryAddValue(response, CFSTR("interpInit.tcl Evaluation"), CFSTR("YES"));
+	}
+	
+	
+	///Evaluate String and set return string value
+	NSString * result;
+	
+	if( Tcl_Eval(interpreter, [tclCmd UTF8String]) == TCL_ERROR ) {
+		//Do some error handling
+		retval = coreFoundationUnknownErr;
+		result = [@"TCL COMMAND EXECUTION FAILED BOO!:" 
+				  stringByAppendingString:[NSString stringWithUTF8String:Tcl_GetStringResult(interpreter)]];
+		CFDictionaryAddValue(response, CFSTR(kTclStringEvaluationResult), (CFStringRef)result);
+	}
+	else {
+		retval = noErr;
+		result = [@"TCL COMMAND EXECUTION SUCCEEDED YAAY!:" 
+				  stringByAppendingString:[NSString stringWithUTF8String:Tcl_GetStringResult(interpreter)]];
+		CFDictionaryAddValue(response, CFSTR(kTclStringEvaluationResult), (CFStringRef)result);
+	}
+	
+
+	assert(response != NULL);
+
+	
+	return retval;
+}
+
+/////////////////////////////////////////////////////////////////
+#pragma mark ***** Tool Infrastructure
+
+/*
+ IMPORTANT
+ ---------
+ This array must be exactly parallel to the kMPHelperCommandSet array 
+ in "MPHelperCommon.c".
+ */
+
+static const BASCommandProc kMPHelperCommandProcs[] = {
+	DoEvaluateTclString,	
+	NULL
+};
+
 int main(int argc, char const * argv[]) {
 	NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
 
+	int result = BASHelperToolMain(kMPHelperCommandSet, kMPHelperCommandProcs);
 	
 	[pool release];
 	
-	return 0;
+	return result;
 }
\ No newline at end of file

Modified: branches/gsoc08-framework/MacPorts_Framework/MPInterpreter.m
===================================================================
--- branches/gsoc08-framework/MacPorts_Framework/MPInterpreter.m	2008-08-06 19:05:18 UTC (rev 39047)
+++ branches/gsoc08-framework/MacPorts_Framework/MPInterpreter.m	2008-08-06 19:33:15 UTC (rev 39048)
@@ -237,10 +237,18 @@
 - (void) log :(in bycopy id) logOutput {
 	NSLog(@"MPInterpreterProtocol Logging : %@", logOutput);
 }
+
 #pragma mark -
 
 #pragma mark MPInterpreter Code
 
+//This variable is set during initialization and is
+//not changed thereafter. Is sole purpose is to enable
+//passing the path to macports1.0 package to the helper
+//tool
+static NSString * tclInterpreterPkgPath = nil;
+
+
 - (id) init {
 	return [self initWithPkgPath:MP_DEFAULT_PKG_PATH];
 }
@@ -288,6 +296,9 @@
 		helperToolInterpCommand = @"";
 		helperToolCommandResult = @"";
 		
+		//Initialize the MacPorts Tcl Package Path string
+		tclInterpreterPkgPath = [NSString stringWithString:path];
+		
 		//Initialize the Run Loop because we don't know if framework will be
 		//run in a Foundation Kit or App Kit. Hopefully this won't hurt if the
 		//run loop is already running. We are doing this so that our NSConnection
@@ -314,6 +325,7 @@
 
 
 + (MPInterpreter*)sharedInterpreter {
+	
 	return [self sharedInterpreterWithPkgPath:MP_DEFAULT_PKG_PATH];
 }
 
@@ -488,9 +500,16 @@
 	
 	response = NULL;
 	
+	//Retrieving the path for interpInit.tcl for our helper tool
+	NSString * interpInitPath = [[NSBundle bundleForClass:[MPInterpreter class]] 
+								 pathForResource:@"interpInit" ofType:@"tcl"];
+	
 	request = [NSDictionary dictionaryWithObjectsAndKeys:
 			   @kMPHelperEvaluateTclCommand, @kBASCommandKey,
-			   statement, @kTclStringToBeEvaluated, nil];
+			   statement, @kTclStringToBeEvaluated, 
+			   tclInterpreterPkgPath, @kTclInterpreterInitPath ,
+			   interpInitPath, @kInterpInitFilePath, nil];
+	
 	assert(request != NULL);
 	
 	bundleID = [[NSBundle bundleForClass:[self class]] bundleIdentifier];
@@ -502,7 +521,7 @@
 					   (CFStringRef) bundleID, 
 					   NULL);
 	
-	NSLog(@"BEFORE Tool Execution request is %@ , resonse is %@ \n\n", request, response);
+	NSLog(@"BEFORE Tool Execution request is %@ , response is %@ \n\n", request, response);
 	err = BASExecuteRequestInHelperTool(internalMacPortsAuthRef, 
 										kMPHelperCommandSet, 
 										(CFStringRef) bundleID, 
@@ -514,10 +533,25 @@
 	if ( (err != noErr) && (err != userCanceledErr) ) {
 		failCode = BASDiagnoseFailure(internalMacPortsAuthRef, (CFStringRef) bundleID);
 		
+		
+		//Need to pass in URL's to helper and install tools since I
+		//modified BASFixFaliure
+		NSBundle * mpBundle = [NSBundle bundleForClass:[self class]];
+		//NSLog(@"mpBundle is %@", [mpBundle description]);
+		
+		NSString * installToolPath = [mpBundle pathForResource:@"MPHelperInstallTool" ofType:nil];
+		NSURL * installToolURL = [NSURL fileURLWithPath:installToolPath];
+		
+		NSString * helperToolPath = [mpBundle pathForResource:@"MPHelperTool" ofType:nil];
+		NSURL * helperToolURL = [NSURL fileURLWithPath:helperToolPath];
+		//NSLog(@"Helper and Install tool URL's are \n %@ and \n %@ respectively",
+			//  [helperToolURL description] , [installToolURL description]);
+		
+		
 		err = BASFixFailure(internalMacPortsAuthRef, 
 							(CFStringRef) bundleID, 
-							CFSTR("MPHelperInstallTool"), 
-							CFSTR("MPHelperTool"), 
+							(CFURLRef) installToolURL,
+							(CFURLRef) helperToolURL,
 							failCode);
 		
 		if (err == noErr) {
@@ -535,7 +569,7 @@
 	assert(response != NULL);
 	CFStringRef newresult = CFDictionaryGetValue(response, CFSTR(kTclStringEvaluationResult));
 	
-	NSLog(@"AFTER Tool Execution request is %@ , resonse is %@ \n\n", request, response);
+	NSLog(@"AFTER Tool Execution request is %@ , response is %@ \n\n", request, response);
 	//NSLog(@"response dictionary is %@", response);
 	return (NSString *) newresult;
 	

Modified: branches/gsoc08-framework/MacPorts_Framework/MPMacPortsTest.h
===================================================================
--- branches/gsoc08-framework/MacPorts_Framework/MPMacPortsTest.h	2008-08-06 19:05:18 UTC (rev 39047)
+++ branches/gsoc08-framework/MacPorts_Framework/MPMacPortsTest.h	2008-08-06 19:33:15 UTC (rev 39048)
@@ -49,7 +49,7 @@
 -(void) testPathToPortIndex;
 //-(void) testDepends;
 //-(void) testSearch;
--(void) testSync;
+//-(void) testSync;
 -(void) testVersion;
 //-(void) testInstall;
 //-(void) testMPHelperTool;

Modified: branches/gsoc08-framework/MacPorts_Framework/MPMacPortsTest.m
===================================================================
--- branches/gsoc08-framework/MacPorts_Framework/MPMacPortsTest.m	2008-08-06 19:05:18 UTC (rev 39047)
+++ branches/gsoc08-framework/MacPorts_Framework/MPMacPortsTest.m	2008-08-06 19:33:15 UTC (rev 39048)
@@ -75,7 +75,7 @@
 }
 
 
--(void) testSync {
+/*-(void) testSync {
 	NSError * syncError = nil;
 	[testPort sync:&syncError];
 	

Modified: branches/gsoc08-framework/MacPorts_Framework/MacPorts.Framework.xcodeproj/project.pbxproj
===================================================================
--- branches/gsoc08-framework/MacPorts_Framework/MacPorts.Framework.xcodeproj/project.pbxproj	2008-08-06 19:05:18 UTC (rev 39047)
+++ branches/gsoc08-framework/MacPorts_Framework/MacPorts.Framework.xcodeproj/project.pbxproj	2008-08-06 19:33:15 UTC (rev 39048)
@@ -38,6 +38,7 @@
 		48E993940C82CAAE00219DDF /* MPMacPorts.h in Headers */ = {isa = PBXBuildFile; fileRef = 48E993920C82CAAE00219DDF /* MPMacPorts.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		48E993950C82CAAE00219DDF /* MPMacPorts.m in Sources */ = {isa = PBXBuildFile; fileRef = 48E993930C82CAAE00219DDF /* MPMacPorts.m */; };
 		48E9939F0C82CEB000219DDF /* init.tcl in Resources */ = {isa = PBXBuildFile; fileRef = 48E9939E0C82CEB000219DDF /* init.tcl */; };
+		6E22BD420E4A30C700CA76C4 /* mycredentials in Resources */ = {isa = PBXBuildFile; fileRef = 6E22BD410E4A30C700CA76C4 /* mycredentials */; };
 		6E270D090E158CED00BAE687 /* MPNotifications.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E270D070E158CED00BAE687 /* MPNotifications.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		6E270D0A0E158CED00BAE687 /* MPNotifications.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E270D080E158CED00BAE687 /* MPNotifications.m */; };
 		6E44A00D0E2DAD66007DE8EC /* ToDo.txt in Resources */ = {isa = PBXBuildFile; fileRef = 6E44A00C0E2DAD66007DE8EC /* ToDo.txt */; };
@@ -72,6 +73,8 @@
 		6ED12A550E3E55DF0026773D /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6ED12A540E3E55DF0026773D /* Security.framework */; };
 		6ED12A560E3E55DF0026773D /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6ED12A540E3E55DF0026773D /* Security.framework */; };
 		6ED12AF10E3E9E210026773D /* Tcl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EA0F56E0DFEB55E00C15082 /* Tcl.framework */; };
+		6EE93E670E493AC600AECE9E /* interpInit.tcl in Resources */ = {isa = PBXBuildFile; fileRef = 6EE93E660E493AC600AECE9E /* interpInit.tcl */; };
+		6EE93FAB0E495C2200AECE9E /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6ECD970D0E465C7800488335 /* Security.framework */; };
 		8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C1666FE841158C02AAC07 /* InfoPlist.strings */; };
 		8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; };
 /* End PBXBuildFile section */
@@ -95,7 +98,7 @@
 			isa = PBXContainerItemProxy;
 			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
 			proxyType = 1;
-			remoteGlobalIDString = 6ECD97040E465C0F00488335 /* SimpleDOMPHelperTool */;
+			remoteGlobalIDString = 6ECD97040E465C0F00488335;
 			remoteInfo = SimpleDOMPHelperTool;
 		};
 		6ED12A520E3E55A50026773D /* PBXContainerItemProxy */ = {
@@ -136,6 +139,7 @@
 		48E9939E0C82CEB000219DDF /* init.tcl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = init.tcl; sourceTree = "<group>"; };
 		48F811BE0CE4636A009630DE /* MPRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPRegistry.h; sourceTree = "<group>"; };
 		48F811BF0CE4638C009630DE /* MPRegistry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPRegistry.m; sourceTree = "<group>"; };
+		6E22BD410E4A30C700CA76C4 /* mycredentials */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = mycredentials; sourceTree = "<group>"; };
 		6E270D070E158CED00BAE687 /* MPNotifications.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPNotifications.h; sourceTree = "<group>"; };
 		6E270D080E158CED00BAE687 /* MPNotifications.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPNotifications.m; sourceTree = "<group>"; };
 		6E44A00C0E2DAD66007DE8EC /* ToDo.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ToDo.txt; sourceTree = "<group>"; };
@@ -163,6 +167,8 @@
 		6ED12A4A0E3E552F0026773D /* MPHelperTool */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = MPHelperTool; sourceTree = BUILT_PRODUCTS_DIR; };
 		6ED12A540E3E55DF0026773D /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = "<absolute>"; };
 		6ED12AA60E3E7E900026773D /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
+		6EE93E660E493AC600AECE9E /* interpInit.tcl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = interpInit.tcl; sourceTree = "<group>"; };
+		6EE93E780E495B3100AECE9E /* Tcl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Tcl.framework; path = Library/Frameworks/Tcl.framework; sourceTree = SDKROOT; };
 		8DC2EF5A0486A6940098B216 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
 		8DC2EF5B0486A6940098B216 /* MacPorts.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MacPorts.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 /* End PBXFileReference section */
@@ -173,6 +179,7 @@
 			buildActionMask = 2147483647;
 			files = (
 				6E49F37F0DFFAFF80030C3AF /* MacPorts.framework in Frameworks */,
+				6EE93FAB0E495C2200AECE9E /* Security.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -246,6 +253,7 @@
 				6EC2609D0E42950C0013BC48 /* CoreFoundation.framework */,
 				6EB6FC900E45DEA80057962C /* Foundation.framework */,
 				6ECD970D0E465C7800488335 /* Security.framework */,
+				6EE93E780E495B3100AECE9E /* Tcl.framework */,
 			);
 			name = "MacPorts Foundation";
 			sourceTree = "<group>";
@@ -269,6 +277,7 @@
 				6EAFD8B70DEC614E00E97270 /* dummycommit.test */,
 				6E44A00C0E2DAD66007DE8EC /* ToDo.txt */,
 				6EB6FB260E448EE20057962C /* TestFile.test */,
+				6EE93E660E493AC600AECE9E /* interpInit.tcl */,
 			);
 			name = Resources;
 			sourceTree = "<group>";
@@ -341,6 +350,7 @@
 				6E88D1CB0DF4B90B00684E9F /* MPMacPortsTest.m */,
 				6ECD99C40E48B91B00488335 /* MPHelperToolTest.h */,
 				6ECD99C50E48B91B00488335 /* MPHelperToolTest.m */,
+				6E22BD410E4A30C700CA76C4 /* mycredentials */,
 			);
 			name = Tests;
 			sourceTree = "<group>";
@@ -420,6 +430,7 @@
 				489DD8F00C94365F00595506 /* Sources */,
 				489DD8F10C94365F00595506 /* Frameworks */,
 				489DD8F20C94365F00595506 /* ShellScript */,
+				6E22BC280E4A06C000CA76C4 /* ShellScript */,
 			);
 			buildRules = (
 			);
@@ -557,6 +568,8 @@
 				48E9939F0C82CEB000219DDF /* init.tcl in Resources */,
 				6E44A00D0E2DAD66007DE8EC /* ToDo.txt in Resources */,
 				6EB6FB270E448EE20057962C /* TestFile.test in Resources */,
+				6EE93E670E493AC600AECE9E /* interpInit.tcl in Resources */,
+				6E22BD420E4A30C700CA76C4 /* mycredentials in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -566,6 +579,7 @@
 		489DD8F20C94365F00595506 /* ShellScript */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
+			comments = "cd ~\nif [ -f /Library/LaunchDaemons/org.macports.frameworks.macports.plist ]\nthen\n\techo removing BAStuff\n\tsh mptooluninstall.sh\n\techo done removing BAStuff\nelse\n\techo nothing to Remove\nfi";
 			files = (
 			);
 			inputPaths = (
@@ -574,8 +588,21 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n\n#rm -rf notifications.dylib\n\n\n\ncd ~\nif [ -f /Library/LaunchDaemons/org.macports.frameworks.macports.plist ]\nthen\n\techo removing BAStuff\n\tsh mptooluninstall.sh\n\techo done removing BAStuff\nelse\n\techo nothing to Remove\nfi";
+			shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n\n#rm -rf notifications.dylib\n\n\n";
 		};
+		6E22BC280E4A06C000CA76C4 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "#chmod  777 $BUILT_PRODUCTS_DIR/Test.octest \n#chmod -R 777 $BUILT_PRODUCTS_DIR/Test.octest \n#ls -lR $BUILT_PRODUCTS_DIR/Test.octest\n";
+		};
 		6E49F4F40E00DD520030C3AF /* ShellScript */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macports-changes/attachments/20080806/d47ea752/attachment-0001.html 


More information about the macports-changes mailing list