[48440] users/toby/objcports

toby at macports.org toby at macports.org
Sat Mar 21 23:35:36 PDT 2009


Revision: 48440
          http://trac.macports.org/changeset/48440
Author:   toby at macports.org
Date:     2009-03-21 23:35:34 -0700 (Sat, 21 Mar 2009)
Log Message:
-----------
misc

Modified Paths:
--------------
    users/toby/objcports/MPParser.h
    users/toby/objcports/MPParser.m
    users/toby/objcports/MPPort.h
    users/toby/objcports/MPPort.m

Modified: users/toby/objcports/MPParser.h
===================================================================
--- users/toby/objcports/MPParser.h	2009-03-22 06:09:47 UTC (rev 48439)
+++ users/toby/objcports/MPParser.h	2009-03-22 06:35:34 UTC (rev 48440)
@@ -4,15 +4,8 @@
 {
 	MPPort *_port;
 	Tcl_Interp *_interp;
-
-	// information gathered during parsing, not stored in interpreter
-	NSMutableDictionary *_variants;
-	NSMutableArray *_platforms; // just a list, for dupe checking
 }
 
 - (id)initWithPort:(MPPort *)port;
 
-- (NSArray *)variants;
-- (NSArray *)platforms;
-
 @end

Modified: users/toby/objcports/MPParser.m
===================================================================
--- users/toby/objcports/MPParser.m	2009-03-22 06:09:47 UTC (rev 48439)
+++ users/toby/objcports/MPParser.m	2009-03-22 06:35:34 UTC (rev 48440)
@@ -7,25 +7,20 @@
 #include "MPStringAdditions.h"
 
 static void command_create(Tcl_Interp *interp, const char *cmdName, ClientData clientData);
-
 static char *variable_read(ClientData clientData, Tcl_Interp *interp, const char *name1, const char *name2, int flags);
-
 static int _nslog(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]);
-static void _info(Tcl_Interp *interp, const char *command); // debugging
 
 @implementation MPParser
 
 - (id)initWithPort:(MPPort *)port
 {
 	self = [super init];
+
 	_port = [port retain];
+
 	_interp = Tcl_CreateInterp();
-	_variants = [[NSMutableDictionary alloc] initWithCapacity:0];
-	_platforms = [[NSMutableArray alloc] initWithCapacity:0];
+	Tcl_MakeSafe(_interp); // XXX: should probably remove even more functionality
 
-	// XXX: should probably remove even more functionality
-	Tcl_MakeSafe(_interp);
-
 	@try {
 		Tcl_Preserve(_interp);
 
@@ -52,9 +47,8 @@
 
 		Tcl_CreateObjCommand(_interp, "nslog", _nslog, NULL, NULL); // XXX: debugging
 
-		const char *portfile = [[_port portfile] UTF8String];
-		if (Tcl_EvalFile(_interp, portfile) != TCL_OK) {
-			NSLog(@"Tcl_EvalFile(%s): %s", portfile, Tcl_GetStringResult(_interp));
+		if (Tcl_EvalFile(_interp, [[_port portfile] UTF8String]) != TCL_OK) {
+			NSLog(@"Tcl_EvalFile(): %s", Tcl_GetStringResult(_interp));
 		}
 
 		Tcl_Release(_interp);
@@ -64,34 +58,17 @@
 		[self release];
 		self = nil;
 	}
-	@finally {
-		_info(_interp, "[info globals]");
-		_info(_interp, "[info commands]");
-		//NSLog(@"%@", _variants);
-	}
 
 	return self;
 }
 
 - (void)dealloc
 {
-	[_variants release];
-	[_platforms release];
 	Tcl_DeleteInterp(_interp);
 	[_port release];
 	[super dealloc];
 }
 
-- (NSArray *)variants
-{
-	return [_variants allKeys];
-}
-
-- (NSArray *)platforms
-{
-	return _platforms;
-}
-
 - (void)performCommand:(NSString *)command arguments:(NSArray *)args
 {
 	if ([command isEqualToString:@"PortSystem"]) {
@@ -125,10 +102,7 @@
 			release ? [NSString stringWithFormat:@"_%ld", release] : @"",
 			arch ? [NSString stringWithFormat:@"_%@", arch] : @""];
 
-		// XXX: dupe check
-		[_platforms addObject:platformFull];
-		// XXX: check match, right now pretend all platforms are true
-		if (YES) {
+		if ([_port addPlatform:platformFull]) {
 			Tcl_Eval(_interp, [[args lastObject] UTF8String]);
 		}
 	} else if ([command isEqualToString:@"variant"]) {
@@ -145,16 +119,13 @@
 
 		name = [args objectAtIndex:0];
 
+		// this isn't quite right, conflicts can take multiple "arguments"
 		props = [NSMutableDictionary dictionaryWithCapacity:count-2];
  		for (i = 1; i < count - 1; i += 2) {
 			[props setObject:[args objectAtIndex:i+1] forKey:[args objectAtIndex:i]];
 		}
 
-		// XXX: check for dupes (w/ platforms too)
-		[_variants setObject:props forKey:name];
-
-		// XXX: make sure it's set, like platforms just pretend
-		if (YES) {
+		if ([_port addVariant:name properties:props]) {
 			Tcl_Eval(_interp, [[args lastObject] UTF8String]);
 		}
 	} else if ([_port isTarget:command]) {
@@ -210,15 +181,3 @@
 
 	return TCL_OK;
 }
-
-static void
-_info(Tcl_Interp *interp, const char *command)
-{
-	Tcl_Obj *result;
-	int objc;
-	Tcl_Obj **objv;
-
-	Tcl_ExprObj(interp, Tcl_NewStringObj(command, -1), &result);
-	Tcl_ListObjGetElements(interp, result, &objc, &objv);
-	//NSLog(@"%@", [NSArray arrayWithTclObjects:objv count:objc]);
-}

Modified: users/toby/objcports/MPPort.h
===================================================================
--- users/toby/objcports/MPPort.h	2009-03-22 06:09:47 UTC (rev 48439)
+++ users/toby/objcports/MPPort.h	2009-03-22 06:35:34 UTC (rev 48440)
@@ -11,6 +11,9 @@
 
 	NSMutableDictionary *_options;
 	NSMutableDictionary *_constants;
+
+	NSMutableArray *_platforms;
+	NSMutableDictionary *_variants;
 }
 
 - (id)initWithPortfile:(NSString *)port options:(NSDictionary *)options;
@@ -28,8 +31,10 @@
 - (void)option:(NSString *)option append:(NSArray *)value;
 - (void)option:(NSString *)option delete:(NSArray *)value;
 
-// Access to underlying parser...
-- (NSArray *)variants;
+- (BOOL)addPlatform:(NSString *)platform;
 - (NSArray *)platforms;
 
+- (BOOL)addVariant:(NSString *)variant properties:(NSDictionary *)props;
+- (NSArray *)variants;
+
 @end

Modified: users/toby/objcports/MPPort.m
===================================================================
--- users/toby/objcports/MPPort.m	2009-03-22 06:09:47 UTC (rev 48439)
+++ users/toby/objcports/MPPort.m	2009-03-22 06:35:34 UTC (rev 48440)
@@ -11,6 +11,9 @@
 	self = [super init];
 	_portfile = [portfile retain];
 
+	_platforms = [[NSMutableArray alloc] initWithCapacity:0];
+	_variants = [[NSMutableDictionary alloc] initWithCapacity:0];
+
 	_targets = [[NSMutableArray alloc] initWithCapacity:0];
 	[_targets addObject:@"fetch"];
 	[_targets addObject:@"extract"];
@@ -127,17 +130,17 @@
 	[_options setObject:@"" forKey:@"livecheck.distname"];
 	[_options setObject:@"" forKey:@"test.run"]; // porttest.tcl
 	[_options setObject:@"test" forKey:@"test.target"]; // porttest.tcl
+	[_options setObject:@"" forKey:@"configure.compiler"];
 
 	_constants = [[NSMutableDictionary alloc] initWithCapacity:0];
 	[_constants setObject:@"XXX" forKey:@"worksrcpath"]; // portmain.tcl
+	[_constants setObject:@"XXX" forKey:@"destroot"];
 
 	// XXX: option_proc setup?
 	// options_export?
 
 	_parser = [[MPParser alloc] initWithPort:self];
 
-	//NSLog(@"%@", _options);
-
 	return self;
 }
 
@@ -151,6 +154,9 @@
 	[_options release];
 	[_constants release];
 
+	[_platforms release];
+	[_variants release];
+
 	[super dealloc];
 }
 
@@ -227,14 +233,30 @@
 	[tmp release];
 }
 
-- (NSArray *)variants
+- (BOOL)addPlatform:(NSString *)platform
 {
-	return [_parser variants];
+	// XXX: dupe check
+	[_platforms addObject:platform];
+	// XXX: check match, right now pretend all platforms are true
+	return YES;
 }
 
 - (NSArray *)platforms
 {
-	return [_parser platforms];
+	return _platforms;
 }
 
+- (BOOL)addVariant:(NSString *)variant properties:(NSDictionary *)props
+{
+	// XXX: check for dupes (w/ platforms too)
+	[_variants setObject:props forKey:variant];
+	// XXX: make sure it's set, like platforms just pretend
+	return YES;
+}
+
+- (NSArray *)variants
+{
+	return [_variants allKeys];
+}
+
 @end
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20090321/aae2b6ac/attachment-0001.html>


More information about the macports-changes mailing list