X-Git-Url: http://git.tremily.us/?a=blobdiff_plain;f=catalyst;h=129162ce21e441b4f844392903f4e712fee88c4e;hb=8ac0828bc4759090c9461df8afc2ea2b2394128b;hp=a31d53a25164aa3f6ee242a60ff1c323f6f32117;hpb=cf2b742da8a3e705890080d0b89723228ab9a4d4;p=catalyst.git diff --git a/catalyst b/catalyst index a31d53a2..129162ce 100755 --- a/catalyst +++ b/catalyst @@ -1,50 +1,56 @@ #!/usr/bin/python -OO -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo/src/catalyst/catalyst,v 1.140 2006/02/07 22:29:18 wolf31o2 Exp $ # Maintained in full by: -# Eric Edgar +# Andrew Gaffney # Chris Gianelloni -import os,sys,imp,string,getopt +import os, sys, imp, string, getopt import pdb +import os.path + +__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_rc32" +__version__="2.0.6.902" conf_values={} def usage(): print "Usage catalyst [options] [-C variable=value...] [ -s identifier]" print " -a --clear-autoresume clear autoresume flags" - print " -c --config use specified configuration file" - print " -C --cli catalyst commandline (MUST BE LAST OPTION)" - print " -d --debug enable debugging" - print " -f --file read specfile" - print " -F --fetchonly fetch files only" - print " -h --help print this help message" - print " -p --purge clear tmp dirs,package cache and autoresume flags" - print " -s --snapshot generate a Portage snapshot" - print " -V --version display version information" - print " -v --verbose verbose output" + print " -c --config use specified configuration file" + print " -C --cli catalyst commandline (MUST BE LAST OPTION)" + print " -d --debug enable debugging" + print " -f --file read specfile" + print " -F --fetchonly fetch files only" + 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 " -s --snapshot generate a release snapshot" + print " -V --version display version information" + print " -v --verbose verbose output" print print "Usage examples:" print print "Using the commandline option (-C, --cli) to build a Portage snapshot:" print "catalyst -C target=snapshot version_stamp=my_date" print - print "Using the snapshot option (-s, --snapshot) to build a Portage snapshot:" - print "catalyst -s 20051208" + print "Using the snapshot option (-s, --snapshot) to build a release snapshot:" + print "catalyst -s 20071121" print print "Using the specfile option (-f, --file) to build a stage target:" print "catalyst -f stage1-specfile.spec" def version(): - print "Gentoo Catalyst, version "+__version__ - print "Copyright 2003-2005 The Gentoo Foundation" - print "Distributed under the GNU General Public License version 2\n" - + print "Catalyst, version "+__version__ + print "Copyright 2003-2008 Gentoo Foundation" + print "Copyright 2008 various authors" + print "Distributed under the GNU General Public License version 2.1\n" def parse_config(myconfig): # search a couple of different areas for the main config file @@ -80,7 +86,9 @@ def parse_config(myconfig): # now, try and parse the config file "config_file" try: - execfile(config_file, myconf, myconf) +# 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 @@ -96,53 +104,71 @@ def parse_config(myconfig): conf_values[x]=confdefaults[x] # parse out the rest of the options from the config file + if "autoresume" in string.split(conf_values["options"]): + print "Autoresuming support enabled." + conf_values["AUTORESUME"]="1" + if "ccache" in string.split(conf_values["options"]): print "Compiler cache support enabled." conf_values["CCACHE"]="1" - if "pkgcache" in string.split(conf_values["options"]): - print "Package cache support enabled." - conf_values["PKGCACHE"]="1" - - if "snapcache" in string.split(conf_values["options"]): - print "Snapshot cache support enabled." - conf_values["SNAPCACHE"]="1" - - if "seedcache" in string.split(conf_values["options"]): - print "Seed cache support enabled." - conf_values["SEEDCACHE"]="1" + if "clear-autoresume" in string.split(conf_values["options"]): + print "Cleaning autoresume flags support enabled." + conf_values["CLEAR_AUTORESUME"]="1" + +# if "compress" in string.split(conf_values["options"]): +# print "Compression enabled." +# conf_values["COMPRESS"]="1" - if "kerncache" in string.split(conf_values["options"]): - print "Kernel cache support enabled." - conf_values["KERNCACHE"]="1" - if "distcc" in string.split(conf_values["options"]): print "Distcc support enabled." conf_values["DISTCC"]="1" - if "autoresume" in string.split(conf_values["options"]): - print "Autoresuming support enabled." - conf_values["AUTORESUME"]="1" + if "icecream" in string.split(conf_values["options"]): + print "Icecream compiler cluster support enabled." + conf_values["ICECREAM"]="1" + + if "kerncache" in string.split(conf_values["options"]): + print "Kernel cache support enabled." + conf_values["KERNCACHE"]="1" + + if "pkgcache" in string.split(conf_values["options"]): + print "Package cache support enabled." + conf_values["PKGCACHE"]="1" if "purge" in string.split(conf_values["options"]): print "Purge support enabled." conf_values["PURGE"]="1" - - if "clear-autoresume" in string.split(conf_values["options"]): - print "Cleaning autoresume flags support enabled." - conf_values["CLEAR_AUTORESUME"]="1" - + + if "seedcache" in string.split(conf_values["options"]): + print "Seed cache support enabled." + conf_values["SEEDCACHE"]="1" + + if "snapcache" in string.split(conf_values["options"]): + 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"): + conf_values["digests"]=myconf["digests"] + if myconf.has_key("contents"): + conf_values["contents"]=myconf["contents"] + if myconf.has_key("envscript"): print "Envscript support enabled." conf_values["ENVSCRIPT"]=myconf["envscript"] - - if myconf.has_key("digests"): - conf_values["digests"]=myconf["digests"] def import_modules(): # import catalyst's own modules (i.e. catalyst_support and the arch modules) targetmap={} - + try: for x in required_build_targets: try: @@ -172,22 +198,6 @@ def import_modules(): return targetmap -def do_spec(myspecfile): - try: - addlargs=read_spec(myspecfile) - except: - sys.exit(1) - - return addlargs - -def do_cli(cmdline): - try: - return arg_parse(cmdline) - - except CatalystError: - print "!!! catalyst: Could not parse commandline, exiting." - sys.exit(1) - def build_target(addlargs, targetmap): try: if not targetmap.has_key(addlargs["target"]): @@ -198,7 +208,9 @@ def build_target(addlargs, targetmap): mytarget.run() except: - raise + catalyst.util.print_traceback() + print "!!! catalyst: Error encountered during run of target " + addlargs["target"] + sys.exit(1) if __name__ == "__main__": targetmap={} @@ -216,8 +228,8 @@ if __name__ == "__main__": # parse out the command line arguments try: - opts,args = getopt.getopt(sys.argv[1:], "apxhvdc:C:f:FVs:", ["purge","help", "version", "debug",\ - "clear_autoresume", "config=", "cli=", "file=", "fetch", "verbose","snapshot="]) + opts,args = getopt.getopt(sys.argv[1:], "apPhvdc:C:f:FVs:", ["purge", "purgeonly", "help", "version", "debug",\ + "clear-autoresume", "config=", "cli=", "file=", "fetch", "verbose","snapshot="]) except getopt.GetoptError: usage() @@ -237,7 +249,8 @@ if __name__ == "__main__": print "!!! catalyst: please specify one of either -f or -C\n" usage() sys.exit(2) - run=0 + + run = False for o, a in opts: if o in ("-h", "--help"): usage() @@ -248,47 +261,28 @@ if __name__ == "__main__": sys.exit(1) if o in ("-d", "--debug"): - if len(sys.argv) < 3: - print "!!! catalyst: please specify one of either -f or -C\n" - usage() - sys.exit(2) - else: - conf_values["DEBUG"]="1" + conf_values["DEBUG"]="1" + conf_values["VERBOSE"]="1" if o in ("-c", "--config"): - if len(sys.argv) < 3: - print "!!! catalyst: please specify one of either -f or -C\n" - usage() - sys.exit(2) - else: - myconfig=a + myconfig=a if o in ("-C", "--cli"): - run=1 + 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=1 + run = True myspecfile=a if o in ("-F", "--fetchonly"): - if len(sys.argv) < 3: - print "!!! catalyst: please specify one of either -f or -C\n" - usage() - sys.exit(2) - else: - conf_values["FETCH"]="1" + conf_values["FETCH"]="1" if o in ("-v", "--verbose"): - if len(sys.argv) < 3: - print "!!! catalyst: please specify one of either -f or -C\n" - usage() - sys.exit(2) - else: - conf_values["VERBOSE"]="1" + conf_values["VERBOSE"]="1" if o in ("-s", "--snapshot"): if len(sys.argv) < 3: @@ -296,25 +290,20 @@ if __name__ == "__main__": usage() sys.exit(2) else: - run=1 + run = True mycmdline.append("target=snapshot") mycmdline.append("version_stamp="+a) if o in ("-p", "--purge"): - if len(sys.argv) < 3: - print "!!! catalyst: please specify one of either -f or -C\n" - usage() - sys.exit(2) - else: - conf_values["PURGE"]="1" + conf_values["PURGE"] = "1" + + if o in ("-P", "--purgeonly"): + conf_values["PURGEONLY"] = "1" + if o in ("-a", "--clear-autoresume"): - if len(sys.argv) < 3: - print "!!! catalyst: please specify one of either -f or -C\n" - usage() - sys.exit(2) - else: - conf_values["CLEAR_AUTORESUME"]="1" - if run != 1: + conf_values["CLEAR_AUTORESUME"] = "1" + + if not run: print "!!! catalyst: please specify one of either -f or -C\n" usage() sys.exit(2) @@ -367,11 +356,18 @@ if __name__ == "__main__": addlargs={} if myspecfile: - addlargs.update(do_spec(myspecfile)) + spec = catalyst.config.SpecParser(myspecfile) + addlargs.update(spec.get_values()) if mycmdline: - addlargs.update(do_cli(mycmdline)) - + try: + cmdline = catalyst.config.ConfigParser() + cmdline.parse_lines(mycmdline) + addlargs.update(cmdline.get_values()) + except CatalystError: + print "!!! catalyst: Could not parse commandline, exiting." + sys.exit(1) + if not addlargs.has_key("target"): raise CatalystError, "Required value \"target\" not specified."