More indecisiveness..move util.spec to config.SpecParser
[catalyst.git] / catalyst
index 0a237c7a99302bd41a45ebe3822d6991d980ea73..518a82e281a82a4f6d4c2f0d65e1bb1ea430adb5 100755 (executable)
--- a/catalyst
+++ b/catalyst
@@ -1,15 +1,18 @@
 #!/usr/bin/python -OO
-# $Header: /var/cvsroot/gentoo/src/catalyst/catalyst,v 1.162 2006/10/02 20:41:53 wolf31o2 Exp $
 
 # Maintained in full by:
-# Eric Edgar <rocket@gentoo.org>
+# Andrew Gaffney <agaffney@gentoo.org>
 # Chris Gianelloni <wolf31o2@gentoo.org>
 
 import os,sys,imp,string,getopt
 import pdb
 
+sys.path.append("./modules")
+
+import catalyst
+
 __maintainer__="Chris Gianelloni <wolf31o2@gentoo.org>"
-__version__="2.0"
+__version__="2.0.6"
 
 conf_values={}
 
@@ -23,7 +26,7 @@ def usage():
        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 " -s --snapshot           generate a release snapshot"
        print " -V --version            display version information"
        print " -v --verbose            verbose output"
        print
@@ -32,16 +35,17 @@ def usage():
        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-2006 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
@@ -105,14 +109,18 @@ def parse_config(myconfig):
                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 "compress" in string.split(conf_values["options"]):
+#              print "Compression enabled."
+#              conf_values["COMPRESS"]="1"
 
        if "distcc" in string.split(conf_values["options"]):
                print "Distcc support enabled."
                conf_values["DISTCC"]="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"
@@ -133,12 +141,18 @@ def parse_config(myconfig):
                print "Snapshot cache support enabled."
                conf_values["SNAPCACHE"]="1"
 
-       if "tarball" in string.split(conf_values["options"]):
-               print "Tarball creation enabled."
-               conf_values["TARBALL"]="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."
@@ -177,14 +191,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)
@@ -203,6 +209,8 @@ def build_target(addlargs, targetmap):
                mytarget.run()
 
        except:
+               # TODO: Capture traceback, so we can display this error after printing of the traceback
+               print "!!! catalyst: Error encountered during run of target " + addlargs["target"]
                raise
 
 if __name__ == "__main__":
@@ -222,7 +230,7 @@ if __name__ == "__main__":
        # parse out the command line arguments
        try:
                opts,args = getopt.getopt(sys.argv[1:], "aphvdc:C:f:FVs:", ["purge","help", "version", "debug",\
-                       "clear_autoresume", "config=", "cli=", "file=", "fetch", "verbose","snapshot="])
+                       "clear-autoresume", "config=", "cli=", "file=", "fetch", "verbose","snapshot="])
        
        except getopt.GetoptError:
                usage()
@@ -259,6 +267,7 @@ if __name__ == "__main__":
                                sys.exit(2)
                        else:
                                conf_values["DEBUG"]="1"
+                               conf_values["VERBOSE"]="1"
 
                if o in ("-c", "--config"):
                        if len(sys.argv) < 3:
@@ -372,7 +381,8 @@ 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))