Add armv6j_hardfp
[catalyst.git] / catalyst
index 50a7af7fd03416023d92ac1e7c0b70f6f89cb0bd..11b52d90891f56bc287d85a5e468d8d9a576cbe4 100755 (executable)
--- a/catalyst
+++ b/catalyst
@@ -2,7 +2,8 @@
 
 # Maintained in full by:
 # Andrew Gaffney <agaffney@gentoo.org>
-# Chris Gianelloni <wolf31o2@gentoo.org>
+# Chris Gianelloni <wolf31o2@wolf31o2.org>
+# $Id$
 
 import os, sys, getopt
 
@@ -16,10 +17,10 @@ from catalyst.output import *
 from catalyst.error import *
 from catalyst.hash import hash_map
 
-__maintainer__="Chris Gianelloni <wolf31o2@gentoo.org>"
+__maintainer__="Chris Gianelloni <wolf31o2@wolf31o2.org>"
 __version__="2.99"
 
-conf_values={}
+conf_values = {}
 config = catalyst.config.config()
 
 def usage():
@@ -54,10 +55,9 @@ def show_version():
        msg("Copyright 2008 various authors")
        msg("Distributed under the GNU General Public License version 2.1")
 
-def parse_config(myconfig):
+def parse_config():
        # search a couple of different areas for the main config file
        myconf = {}
-       config_file = ""
 
        confdefaults = {
                "storedir": "/var/tmp/catalyst",
@@ -70,17 +70,16 @@ def parse_config(myconfig):
        }
 
        # first, try the one passed (presumably from the cmdline)
-       if myconfig:
-               if os.path.exists(myconfig):
-                       msg("Using command line specified Catalyst configuration file, " + myconfig)
-                       config_file = myconfig
+       if "config_file" in conf_values:
+               if os.path.exists(conf_values["config_file"]):
+                       msg("Using command line specified Catalyst configuration file, " + conf_values["config_file"])
                else:
-                       die("specified configuration file " + myconfig + " does not exist")
+                       die("specified configuration file " + conf_values["config_file"] + " does not exist")
 
        # next, try the default location
        elif os.path.exists("/etc/catalyst/catalyst.conf"):
                msg("Using default Catalyst configuration file, /etc/catalyst/catalyst.conf")
-               config_file="/etc/catalyst/catalyst.conf"
+               conf_values["config_file"] = "/etc/catalyst/catalyst.conf"
 
        # can't find a config file (we are screwed), so bail out
        else:
@@ -93,20 +92,20 @@ def parse_config(myconfig):
 
        # now, try and parse the config file "config_file"
        try:
-               myconfig = catalyst.config.ConfigParser(config_file)
+               myconfig = catalyst.config.ConfigParser(conf_values["config_file"])
                myconf.update(myconfig.get_values())
 
        except:
-               die("Unable to parse configuration file, " + myconfig)
+               die("Unable to parse configuration file, " + conf_values["config_file"])
 
        # now, load up the values into conf_values so that we can use them
        for x in confdefaults.keys():
                if x in myconf:
                        msg("Setting " + x + " to config file value '" + myconf[x] + "'")
-                       conf_values[x]=myconf[x]
+                       conf_values[x] = myconf[x]
                else:
-                       msg("Setting " + x + " to default value '"+confdefaults[x] + "'")
-                       conf_values[x]=confdefaults[x]
+                       msg("Setting " + x + " to default value '" + confdefaults[x] + "'")
+                       conf_values[x] = confdefaults[x]
 
        options = (
                ("autoresume", "AUTORESUME", "Autoresuming support enabled."),
@@ -120,7 +119,6 @@ def parse_config(myconfig):
                ("purge", "PURGE", "Purge support enabled."),
                ("seedcache", "SEEDCACHE", "Seed cache support enabled."),
                ("snapcache", "SNAPCACHE", "Snapshot cache support enabled."),
-               ("metadata_overlay", "METADATA_OVERLAY", "Use of metadata_overlay module for portage enabled."),
 #              ("tarball", "TARBALL", "Tarball creation enabled.")
        )
 
@@ -133,28 +131,14 @@ def parse_config(myconfig):
                        conf_values[x[1]] = "1"
 
        if "digests" in myconf:
-               conf_values["digests"]=myconf["digests"]
+               conf_values["digests"] = myconf["digests"]
+
        if "contents" in myconf:
-               conf_values["contents"]=myconf["contents"]
+               conf_values["contents"] = myconf["contents"]
 
        if "envscript" in myconf:
                msg("Envscript support enabled.")
-               conf_values["ENVSCRIPT"]=myconf["envscript"]
-
-def build_target(addlargs, targetmap):
-       try:
-               if not addlargs["target"] in targetmap:
-                       raise CatalystError,"Target \""+addlargs["target"]+"\" not available."
-
-               config.get_spec().set_target(addlargs["target"])
-               mytarget=targetmap[addlargs["target"]](conf_values, addlargs)
-
-               mytarget.run()
-
-       except:
-               catalyst.util.print_traceback()
-               warn("Error encountered during run of target " + addlargs["target"])
-               raise
+               conf_values["ENVSCRIPT"] = myconf["envscript"]
 
 def verify_digest_and_hash_functions():
        # Start checking that digests are valid now that the hash_map was imported from catalyst_support
@@ -195,14 +179,7 @@ def verify_digest_and_hash_functions():
                        msg("Catalyst aborting....")
                        sys.exit(2)
 
-if __name__ == "__main__":
-
-       show_version()
-
-       if os.getuid() != 0:
-               # catalyst cannot be run as a normal user due to chroots, mounts, etc
-               die("This script requires root privileges to operate", 2)
-
+def parse_commandline():
        # parse out the command line arguments
        try:
                opts,args = getopt.getopt(sys.argv[1:], "apPhvdc:C:f:FVs:", ["purge", "purgeonly", "help", "version", "debug",\
@@ -213,13 +190,7 @@ if __name__ == "__main__":
                sys.exit(2)
 
        # defaults for commandline opts
-       debug=False
-       verbose=False
-       fetch=False
-       myconfig=""
-       myspecfile=""
-       mycmdline=[]
-       myopts=[]
+       conf_values["command_line"] = []
 
        # check preconditions
        if len(opts) == 0:
@@ -242,24 +213,24 @@ if __name__ == "__main__":
                        conf_values["VERBOSE"]="1"
 
                if o in ("-c", "--config"):
-                       myconfig=a
+                       conf_values["config_file"] = a
 
                if o in ("-C", "--cli"):
                        run = True
-                       x=sys.argv.index(o)+1
+                       x = sys.argv.index(o) + 1
                        while x < len(sys.argv):
-                               mycmdline.append(sys.argv[x])
-                               x=x+1
+                               conf_values["command_line"].append(sys.argv[x])
+                               x = x + 1
 
                if o in ("-f", "--file"):
                        run = True
-                       myspecfile=a
+                       conf_values["spec_file"] = a
 
                if o in ("-F", "--fetchonly"):
-                       conf_values["FETCH"]="1"
+                       conf_values["FETCH"] = "1"
 
                if o in ("-v", "--verbose"):
-                       conf_values["VERBOSE"]="1"
+                       conf_values["VERBOSE"] = "1"
 
                if o in ("-s", "--snapshot"):
                        if len(sys.argv) < 3:
@@ -268,8 +239,8 @@ if __name__ == "__main__":
                                sys.exit(2)
                        else:
                                run = True
-                               mycmdline.append("target=snapshot")
-                               mycmdline.append("version_stamp="+a)
+                               conf_values["command_line"].append("target=snapshot")
+                               conf_values["command_line"].append("version_stamp="+a)
 
                if o in ("-p", "--purge"):
                        conf_values["PURGE"] = "1"
@@ -285,40 +256,44 @@ if __name__ == "__main__":
                usage()
                sys.exit(2)
 
-       parse_config(myconfig)
+if __name__ == "__main__":
+
+       show_version()
+
+       if os.getuid() != 0:
+               # catalyst cannot be run as a normal user due to chroots, mounts, etc
+               die("This script requires root privileges to operate", 2)
+
+       parse_commandline()
+
+       parse_config()
 
        verify_digest_and_hash_functions()
 
        targetmap = catalyst.target.build_target_map()
-
-       addlargs={}
        spec = catalyst.config.Spec()
 
-       if myspecfile:
-               specparser = catalyst.config.SpecParser(myspecfile)
+       if "spec_file" in conf_values:
+               specparser = catalyst.config.SpecParser(conf_values["spec_file"])
                spec_values = specparser.get_values()
-               addlargs.update(spec_values)
                spec.parse_values(spec_values)
 
-       if mycmdline:
+       if "command_line" in conf_values:
                try:
                        cmdline = catalyst.config.ConfigParser()
-                       cmdline.parse_lines(mycmdline)
+                       cmdline.parse_lines(conf_values["command_line"])
                        cmdline_values = cmdline.get_values()
-                       addlargs.update(cmdline.get_values())
                        spec.parse_values(cmdline_values)
                except CatalystError:
                        die("Could not parse commandline, exiting.")
 
        config.set_spec(spec)
        config.set_conf(conf_values)
-
-       if not "target" in addlargs:
-               raise CatalystError, "Required value \"target\" not specified."
+       config.set_targetmap(targetmap)
 
        # everything is setup, so the build is a go
        try:
-               build_target(addlargs, targetmap)
+               catalyst.target.build_targets()
 
        except CatalystError:
                msg()