X-Git-Url: http://git.tremily.us/?a=blobdiff_plain;f=catalyst;h=4b48587af53dc4a397786860f3a65a64d5bdc4ea;hb=8621e56be3b8b9db1233647d2eec0152deb06da4;hp=5473652aefc987226e3b4a9c2052b48a8ff60f24;hpb=69ccfcc5ca6290934a603639187f550aefbec8df;p=catalyst.git diff --git a/catalyst b/catalyst index 5473652a..4b48587a 100755 --- a/catalyst +++ b/catalyst @@ -1,19 +1,25 @@ #!/usr/bin/python -OO # Maintained in full by: +# Catalyst Team +# Release Engineering Team # Andrew Gaffney -# Chris Gianelloni +# Chris Gianelloni +# $Id$ -import os,sys,imp,string,getopt +import os, sys, imp, string, getopt import pdb +import os.path -sys.path.append("./modules") +__selfpath__ = os.path.abspath(os.path.dirname(__file__)) + +sys.path.append(__selfpath__ + "/modules") import catalyst.config import catalyst.util -__maintainer__="Chris Gianelloni " -__version__="2.0.6.902" +__maintainer__="Catalyst " +__version__="2.0.13" conf_values={} @@ -28,6 +34,7 @@ def usage(): print " -h --help print this help message" print " -p --purge clear tmp dirs,package cache and autoresume flags" print " -P --purgeonly clear tmp dirs,package cache and autoresume flags and exit" + print " -T --purgetmponly clear tmp dirs and autoresume flags and exit" print " -s --snapshot generate a release snapshot" print " -V --version display version information" print " -v --verbose verbose output" @@ -46,7 +53,7 @@ def usage(): def version(): print "Catalyst, version "+__version__ print "Copyright 2003-2008 Gentoo Foundation" - print "Copyright 2008 various authors" + print "Copyright 2008-2012 various authors" print "Distributed under the GNU General Public License version 2.1\n" def parse_config(myconfig): @@ -59,7 +66,7 @@ def parse_config(myconfig): "portdir":"/usr/portage","options":"",\ "snapshot_cache":"/var/tmp/catalyst/snapshot_cache",\ "hash_function":"crc32"} - + # first, try the one passed (presumably from the cmdline) if myconfig: if os.path.exists(myconfig): @@ -70,12 +77,12 @@ def parse_config(myconfig): print "!!! catalyst: Could not use specified configuration file "+\ myconfig sys.exit(1) - + # next, try the default location elif os.path.exists("/etc/catalyst/catalyst.conf"): print "Using default Catalyst configuration file, /etc/catalyst/catalyst.conf" config_file="/etc/catalyst/catalyst.conf" - + # can't find a config file (we are screwed), so bail out else: print "!!! catalyst: Could not find a suitable configuration file" @@ -86,14 +93,14 @@ def parse_config(myconfig): # execfile(config_file, myconf, myconf) myconfig = catalyst.config.ConfigParser(config_file) myconf.update(myconfig.get_values()) - + except: print "!!! catalyst: Unable to parse configuration file, "+myconfig sys.exit(1) - + # now, load up the values into conf_values so that we can use them for x in confdefaults.keys(): - if myconf.has_key(x): + if x in myconf: print "Setting",x,"to config file value \""+myconf[x]+"\"" conf_values[x]=myconf[x] else: @@ -105,6 +112,14 @@ def parse_config(myconfig): print "Autoresuming support enabled." conf_values["AUTORESUME"]="1" + if "bindist" in string.split(conf_values["options"]): + print "Binary redistribution enabled" + conf_values["BINDIST"]="1" + else: + print "Bindist is not enabled in catalyst.conf" + print "Binary redistribution of generated stages/isos may be prohibited by law." + print "Please see the use description for bindist on any package you are including." + if "ccache" in string.split(conf_values["options"]): print "Compiler cache support enabled." conf_values["CCACHE"]="1" @@ -133,6 +148,10 @@ def parse_config(myconfig): print "Package cache support enabled." conf_values["PKGCACHE"]="1" + if "preserve_libs" in string.split(conf_values["options"]): + print "Preserving libs during unmerge." + conf_values["PRESERVE_LIBS"]="1" + if "purge" in string.split(conf_values["options"]): print "Purge support enabled." conf_values["PURGE"]="1" @@ -145,23 +164,25 @@ def parse_config(myconfig): print "Snapshot cache support enabled." conf_values["SNAPCACHE"]="1" - if "metadata_overlay" in conf_values["options"].split(): - print "Use of metadata_overlay module for portage enabled." - conf_values["METADATA_OVERLAY"]="1" - # if "tarball" in string.split(conf_values["options"]): # print "Tarball creation enabled." # conf_values["TARBALL"]="1" - if myconf.has_key("digests"): + if "digests" in myconf: conf_values["digests"]=myconf["digests"] - if myconf.has_key("contents"): + if "contents" in myconf: conf_values["contents"]=myconf["contents"] - if myconf.has_key("envscript"): + if "envscript" in myconf: print "Envscript support enabled." conf_values["ENVSCRIPT"]=myconf["envscript"] + if "var_tmpfs_portage" in myconf: + conf_values["var_tmpfs_portage"]=myconf["var_tmpfs_portage"]; + + if "port_logdir" in myconf: + conf_values["port_logdir"]=myconf["port_logdir"]; + def import_modules(): # import catalyst's own modules (i.e. catalyst_support and the arch modules) targetmap={} @@ -172,10 +193,10 @@ def import_modules(): fh=open(conf_values["sharedir"]+"/modules/"+x+".py") module=imp.load_module(x,fh,"modules/"+x+".py",(".py","r",imp.PY_SOURCE)) fh.close() - + except IOError: raise CatalystError,"Can't find "+x+".py plugin in "+\ - conf_values.settings["sharedir"]+"/modules/" + conf_values["sharedir"]+"/modules/" for x in valid_build_targets: try: @@ -183,10 +204,10 @@ def import_modules(): module=imp.load_module(x,fh,"modules/"+x+".py",(".py","r",imp.PY_SOURCE)) module.register(targetmap) fh.close() - + except IOError: raise CatalystError,"Can't find "+x+".py plugin in "+\ - conf_values.settings["sharedir"]+"/modules/" + conf_values["sharedir"]+"/modules/" except ImportError: print "!!! catalyst: Python modules not found in "+\ @@ -197,11 +218,11 @@ def import_modules(): def build_target(addlargs, targetmap): try: - if not targetmap.has_key(addlargs["target"]): + if addlargs["target"] not in targetmap: raise CatalystError,"Target \""+addlargs["target"]+"\" not available." - + mytarget=targetmap[addlargs["target"]](conf_values, addlargs) - + mytarget.run() except: @@ -211,7 +232,7 @@ def build_target(addlargs, targetmap): if __name__ == "__main__": targetmap={} - + version() if os.getuid() != 0: # catalyst cannot be run as a normal user due to chroots, mounts, etc @@ -225,13 +246,13 @@ if __name__ == "__main__": # parse out the command line arguments try: - opts,args = getopt.getopt(sys.argv[1:], "apPhvdc:C:f:FVs:", ["purge", "purgeonly", "help", "version", "debug",\ + opts,args = getopt.getopt(sys.argv[1:], "apPThvdc:C:f:FVs:", ["purge", "purgeonly", "purgetmponly", "help", "version", "debug",\ "clear-autoresume", "config=", "cli=", "file=", "fetch", "verbose","snapshot="]) - + except getopt.GetoptError: usage() sys.exit(2) - + # defaults for commandline opts debug=False verbose=False @@ -247,12 +268,12 @@ if __name__ == "__main__": usage() sys.exit(2) - run = false + run = False for o, a in opts: if o in ("-h", "--help"): usage() sys.exit(1) - + if o in ("-V", "--version"): print "Catalyst version "+__version__ sys.exit(1) @@ -265,19 +286,19 @@ if __name__ == "__main__": myconfig=a if o in ("-C", "--cli"): - run = true + run = True x=sys.argv.index(o)+1 while x < len(sys.argv): mycmdline.append(sys.argv[x]) x=x+1 - + if o in ("-f", "--file"): - run = true + run = True myspecfile=a if o in ("-F", "--fetchonly"): conf_values["FETCH"]="1" - + if o in ("-v", "--verbose"): conf_values["VERBOSE"]="1" @@ -287,16 +308,19 @@ if __name__ == "__main__": usage() sys.exit(2) else: - run = true + run = True mycmdline.append("target=snapshot") mycmdline.append("version_stamp="+a) - + if o in ("-p", "--purge"): conf_values["PURGE"] = "1" if o in ("-P", "--purgeonly"): conf_values["PURGEONLY"] = "1" + if o in ("-T", "--purgetmponly"): + conf_values["PURGETMPONLY"] = "1" + if o in ("-a", "--clear-autoresume"): conf_values["CLEAR_AUTORESUME"] = "1" @@ -309,11 +333,12 @@ if __name__ == "__main__": parse_config(myconfig) sys.path.append(conf_values["sharedir"]+"/modules") from catalyst_support import * - - # Start checking that digests are valid now that the hash_map was imported from catalyst_support - if conf_values.has_key("digests"): + + # Start checking that digests are valid now that the hash_map was imported + # from catalyst_support + if "digests" in conf_values: for i in conf_values["digests"].split(): - if not hash_map.has_key(i): + if i not in hash_map: print print i+" is not a valid digest entry" print "Valid digest entries:" @@ -329,10 +354,11 @@ if __name__ == "__main__": print print "Catalyst aborting...." sys.exit(2) - if conf_values.has_key("hash_function"): - if not hash_map.has_key(conf_values["hash_function"]): + if "hash_function" in conf_values: + if conf_values["hash_function"] not in hash_map: print - print conf_values["hash_function"]+" is not a valid hash_function entry" + print conf_values["hash_function"]+\ + " is not a valid hash_function entry" print "Valid hash_function entries:" print hash_map.keys() print @@ -351,11 +377,11 @@ if __name__ == "__main__": targetmap=import_modules() addlargs={} - + if myspecfile: spec = catalyst.config.SpecParser(myspecfile) addlargs.update(spec.get_values()) - + if mycmdline: try: cmdline = catalyst.config.ConfigParser() @@ -365,13 +391,13 @@ if __name__ == "__main__": print "!!! catalyst: Could not parse commandline, exiting." sys.exit(1) - if not addlargs.has_key("target"): + if "target" not in addlargs: raise CatalystError, "Required value \"target\" not specified." # everything is setup, so the build is a go try: build_target(addlargs, targetmap) - + except CatalystError: print print "Catalyst aborting...."