More indecisiveness..move util.spec to config.SpecParser
[catalyst.git] / catalyst
index 6505799c4b9d3e5b67222c8197db6139e1b9f55f..518a82e281a82a4f6d4c2f0d65e1bb1ea430adb5 100755 (executable)
--- a/catalyst
+++ b/catalyst
@@ -1,17 +1,18 @@
 #!/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.147 2006/02/17 14:50:15 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_rc39"
+__version__="2.0.6"
 
 conf_values={}
 
@@ -25,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
@@ -34,17 +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-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
@@ -96,53 +97,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,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)
@@ -198,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__":
@@ -216,8 +229,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:], "aphvdc:C:f:FVs:", ["purge","help", "version", "debug",\
+                       "clear-autoresume", "config=", "cli=", "file=", "fetch", "verbose","snapshot="])
        
        except getopt.GetoptError:
                usage()
@@ -254,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:
@@ -367,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))