[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