[48604] users/toby/objcports

toby at macports.org toby at macports.org
Wed Mar 25 23:00:52 PDT 2009


Revision: 48604
          http://trac.macports.org/changeset/48604
Author:   toby at macports.org
Date:     2009-03-25 23:00:52 -0700 (Wed, 25 Mar 2009)
Log Message:
-----------
store variable information in a plist

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

Modified: users/toby/objcports/MPParser.m
===================================================================
--- users/toby/objcports/MPParser.m	2009-03-26 05:05:33 UTC (rev 48603)
+++ users/toby/objcports/MPParser.m	2009-03-26 06:00:52 UTC (rev 48604)
@@ -149,7 +149,7 @@
 command_trampoline(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
 {
 	NSArray *args = [[NSArray alloc] initWithTclObjects:objv count:objc];
-	[(id)clientData performCommand:[args objectAtIndex:0] arguments:[args subarrayWithRange:NSMakeRange(1, [args count] - 1)]];
+	[(MPParser *)clientData performCommand:[args objectAtIndex:0] arguments:[args subarrayWithRange:NSMakeRange(1, [args count] - 1)]];
 	[args release];
 
 	return TCL_OK;
@@ -169,7 +169,9 @@
 static char *
 variable_read(ClientData clientData, Tcl_Interp *interp, const char *name1, const char *name2, int flags)
 {
-	Tcl_SetVar2Ex(interp, name1, name2, Tcl_SubstObj(interp, Tcl_NewStringObj([[(id)clientData variable:[NSString stringWithUTF8String:name1]] UTF8String], -1), TCL_SUBST_ALL), 0);
+	NSString *var = [(MPPort *)clientData variable:[NSString stringWithUTF8String:name1]];
+	assert(var != nil);
+	Tcl_SetVar2Ex(interp, name1, name2, Tcl_SubstObj(interp, Tcl_NewStringObj([var UTF8String], -1), TCL_SUBST_ALL), 0);
 	return NULL;
 }
 

Modified: users/toby/objcports/MPPort.h
===================================================================
--- users/toby/objcports/MPPort.h	2009-03-26 05:05:33 UTC (rev 48603)
+++ users/toby/objcports/MPPort.h	2009-03-26 06:00:52 UTC (rev 48604)
@@ -5,8 +5,8 @@
 	NSString *_portfile;
 	MPParser *_parser;
 
-	NSMutableDictionary *_options;
-	NSMutableDictionary *_constants;
+	NSMutableDictionary *_variableInfo;
+	NSMutableDictionary *_variables;
 
 	NSMutableArray *_platforms;
 	NSMutableDictionary *_variants;

Modified: users/toby/objcports/MPPort.m
===================================================================
--- users/toby/objcports/MPPort.m	2009-03-26 05:05:33 UTC (rev 48603)
+++ users/toby/objcports/MPPort.m	2009-03-26 06:00:52 UTC (rev 48604)
@@ -15,90 +15,8 @@
 	_platforms = [[NSMutableArray alloc] initWithCapacity:0];
 	_variants = [[NSMutableDictionary alloc] initWithCapacity:0];
 
-	_options = [[NSMutableDictionary alloc] initWithCapacity:0];
-	[_options setObject:@"/opt/local" forKey:@"prefix"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"name"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"version"]; // portmain.tcl
-	[_options setObject:@"0" forKey:@"revision"]; // portmain.tcl
-	[_options setObject:@"0" forKey:@"epoch"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"categories"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"maintainers"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"long_description"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"description"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"homepage"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"worksrcdir"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"filesdir"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"distname"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"portdbpath"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"libpath"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"distpath"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"sources_conf"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"os.platform"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"os.version"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"os.major"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"os.arch"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"os.endian"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"platforms"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"default_variants"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"install.user"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"install.group"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"macosx_deployment_target"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"universal_variant"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"os.universal_supported"]; // portmain.tcl
-	[_options setObject:@"" forKey:@"master_sites"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"patch_sites"]; // portfetch.tcl
-	[_options setObject:@".tar.gz" forKey:@"extract.suffix"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"distfiles"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"patchfiles"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"use_zip"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"use_bzip2"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"use_lzma"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"use_dmg"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"dist_subdir"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"fetch.type"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"fetch.user"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"fetch.password"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"fetch.use_epsv"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"fetch.ignore_sslcert"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"master_sites.mirror_subdir"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"patch_sites.mirror_subdir"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"portname"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"cvs.module"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"cvs.root"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"cvs.password"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"cvs.date"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"cvs.tag"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"cvs.method"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"svn.url"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"svn.tag"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"svn.method"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"git.url"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"git.branch"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"hg.url"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"hg.tag"]; // portfetch.tcl
-	[_options setObject:@"" forKey:@"build.target"]; // portbuild.tcl
-	[_options setObject:@"" forKey:@"build.nice"]; // portbuild.tcl
-	[_options setObject:@"" forKey:@"build.jobs"]; // portbuild.tcl
-	[_options setObject:@"" forKey:@"use_parallel_build"];
-	[_options setObject:@"" forKey:@"checksums"];
-	[_options setObject:@"" forKey:@"patchfiles"];
-	[_options setObject:@"" forKey:@"depends_run"];
-	[_options setObject:@"" forKey:@"depends_build"];
-	[_options setObject:@"" forKey:@"depends_lib"];
-	[_options setObject:@"" forKey:@"universal_variant"];
-	[_options setObject:@"" forKey:@"build.target"];
-	[_options setObject:@"" forKey:@"destroot.destdir"];
-	[_options setObject:@"" forKey:@"livecheck.check"];
-	[_options setObject:@"" forKey:@"livecheck.url"];
-	[_options setObject:@"" forKey:@"livecheck.regex"];
-	[_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"];
-	[_options setObject:@"" forKey:@"configure.cflags"];
-	[_options setObject:@"" forKey:@"configure.cppflags"];
-	[_options setObject:@"" forKey:@"configure.universal_args"];
-	[_options setObject:@"" forKey:@"destroot.target"];
+	_variables = [[NSMutableDictionary alloc] initWithCapacity:0];
+	_variableInfo = [[NSMutableDictionary alloc] initWithContentsOfFile:@"variables.plist"];
 
 	NSArray *commands = [NSArray arrayWithObjects:
 		@"cvs", // portfetch.tcl
@@ -111,27 +29,22 @@
 		@"autoconf", // portconfigure.tcl
 		@"xmkmf", // portconfigure.tcl
 		@"build", // portbuild.tcl
-		@"parallel_build", // portbuild.tcl
 		@"test", // porttest.tcl
 		@"destroot", // portdestroot.tcl
 		nil];
 
 	// essentially 'commands' from portutil.tcl
 	for (NSString *command in commands) {
-		[_options setObject:@"" forKey:[NSString stringWithFormat:@"use_%@", command]];
-		[_options setObject:@"" forKey:[NSString stringWithFormat:@"%@.dir", command]];
-		[_options setObject:@"" forKey:[NSString stringWithFormat:@"%@.pre_args", command]];
-		[_options setObject:@"" forKey:[NSString stringWithFormat:@"%@.args", command]];
-		[_options setObject:@"" forKey:[NSString stringWithFormat:@"%@.post_args", command]];
-		[_options setObject:@"" forKey:[NSString stringWithFormat:@"%@.env", command]];
-		[_options setObject:@"" forKey:[NSString stringWithFormat:@"%@.type", command]];
-		[_options setObject:@"" forKey:[NSString stringWithFormat:@"%@.cmd", command]];
+		[_variableInfo setObject:[NSDictionary dictionary] forKey:[NSString stringWithFormat:@"use_%@", command]];
+		[_variableInfo setObject:[NSDictionary dictionary] forKey:[NSString stringWithFormat:@"%@.dir", command]];
+		[_variableInfo setObject:[NSDictionary dictionary] forKey:[NSString stringWithFormat:@"%@.pre_args", command]];
+		[_variableInfo setObject:[NSDictionary dictionary] forKey:[NSString stringWithFormat:@"%@.args", command]];
+		[_variableInfo setObject:[NSDictionary dictionary] forKey:[NSString stringWithFormat:@"%@.post_args", command]];
+		[_variableInfo setObject:[NSDictionary dictionary] forKey:[NSString stringWithFormat:@"%@.env", command]];
+		[_variableInfo setObject:[NSDictionary dictionary] forKey:[NSString stringWithFormat:@"%@.type", command]];
+		[_variableInfo setObject:[NSDictionary dictionary] forKey:[NSString stringWithFormat:@"%@.cmd", command]];
 	}
 
-	_constants = [[NSMutableDictionary alloc] initWithCapacity:0];
-	[_constants setObject:@"XXX" forKey:@"worksrcpath"]; // portmain.tcl
-	[_constants setObject:@"XXX" forKey:@"destroot"];
-
 	_parser = [[MPParser alloc] initWithPort:self];
 
 	return self;
@@ -142,8 +55,8 @@
 	[_parser release];
 	[_portfile release];
 
-	[_options release];
-	[_constants release];
+	[_variableInfo release];
+	[_variables release];
 
 	[_platforms release];
 	[_variants release];
@@ -181,41 +94,52 @@
 
 - (NSArray *)variables
 {
-	return [[_options allKeys] arrayByAddingObjectsFromArray:[_constants allKeys]];
+	return [_variableInfo allKeys];
 }
 
 - (NSString *)variable:(NSString *)name
 {
-	NSString *ret;
-	ret = [_options objectForKey:name];
-	if (ret == nil) {
-		ret = [_constants objectForKey:name];
+	NSString *ret = nil;
+	if ([_variableInfo objectForKey:name] != nil) {
+		ret = [_variables objectForKey:name];
+		if (ret == nil) {
+			ret = @"";
+		}
+		assert([ret isKindOfClass:[NSString class]]);
+	} else {
+		NSLog(@"WARNING: unknown variable %@", name);
 	}
 	return ret;
 }
 
 - (NSArray *)options
 {
-	return [_options allKeys];
+	NSMutableArray *options = [NSMutableArray arrayWithCapacity:0];
+	for (NSString *var in [self variables]) {
+		if (![[[_variableInfo objectForKey:var] objectForKey:@"Constant"] boolValue]) {
+			[options addObject:var];
+		}
+	}
+	return options;
 }
 
 - (void)option:(NSString *)option set:(NSArray *)value
 {
-	[_options setObject:[value componentsJoinedByString:@" "] forKey:option];
+	[_variables setObject:[value componentsJoinedByString:@" "] forKey:option];
 }
 
 - (void)option:(NSString *)option append:(NSArray *)value
 {
-	[_options setObject:[NSString stringWithFormat:@"%@ %@", [_options objectForKey:option], [value componentsJoinedByString:@" "]] forKey:option];
+	[_variables setObject:[NSString stringWithFormat:@"%@ %@", [_variables objectForKey:option], [value componentsJoinedByString:@" "]] forKey:option];
 }
 
 - (void)option:(NSString *)option delete:(NSArray *)value
 {
-	NSMutableArray *tmp = [[[_options objectForKey:option] componentsSeparatedByString:@" "] mutableCopy];
+	NSMutableArray *tmp = [[[_variables objectForKey:option] componentsSeparatedByString:@" "] mutableCopy];
 	for (NSString *v in value) {
 		[tmp removeObject:v];
 	}
-	[_options setObject:[tmp componentsJoinedByString:@" "] forKey:option];
+	[_variables setObject:[tmp componentsJoinedByString:@" "] forKey:option];
 	[tmp release];
 }
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20090325/e2475c93/attachment-0001.html>


More information about the macports-changes mailing list