test fix
[catalyst.git] / catalyst
index 6fa738895c6266f5b473d040f36d3f48e416085e..8337824ece92454a3e340f0b0aa58dacef6008ad 100755 (executable)
--- a/catalyst
+++ b/catalyst
@@ -2,57 +2,87 @@
 
 import os,sys,imp,string
 
-#This allows plugins (and this code) to import modules in the /modules dir
-sys.path.append(os.getcwd()+"/modules")
+def usage():
+       print "Usage: catalyst [-f file] [variable=value ...]"
+       print " -h --help               print this usage and exit"
+       print " -v --version            display version information"
+       print " -f --file               read specified file for build instructions"
+       print " variable=value          specify a variable/value pair"
 
-from catalyst_support import *
+def vers():
+       print "Gentoo catalyst, version "+version
+       print "Copyright 2003-2004 Gentoo Technologies, Inc."
+       print "Distributed under the GNU General Public License version 2"
 
-def usage():
-       print "usage: meep!"
+version="1.0"
 
 if len(sys.argv)==1 or sys.argv[1] in ["-h","--help"]:
        usage()
        sys.exit(1)
-
-import targets
-targetmap={}
-targets.register(targetmap)
-
-print "Available targets:",string.join(targetmap.keys())
-
+elif sys.argv[1] in ["-v","--version"]:
+       vers()
+       sys.exit(1)
 if os.getuid()!=0:
        #non-root callers can't go any further than here. 
-       die("This script requires root privileges to operate.") 
+       print "catalyst: This script requires root privileges to operate."
+       sys.exit(1)
 
 myspec={}
-#these would come from /etc/catalyst.conf:
-myspec["storedir"]="/var/tmp/catalyst"
-myspec["sharedir"]="/usr/share/catalyst"
-#these would come from there too?:
-myspec["distdir"]="/mnt/misc/distfiles"
-myspec["portdir"]="/usr/portage"
-myspec["options"]="ccache pkgcache"
+myconf={}
+if os.path.exists("/etc/catalyst.conf"):
+       try:
+               execfile("/etc/catalyst.conf",myconf,myconf)
+       except:
+               print "catalyst: Unable to /etc/catalyst.conf config file (syntax error)"
+               sys.exit(1)
+
+confdefaults={ "storedir":"/var/tmp/catalyst","sharedir":"/usr/share/catalyst","distdir":"/usr/portage/distfiles",
+"portdir":"/usr/portage","options":"ccache"}
+
+for x in confdefaults.keys():
+       if myconf.has_key(x):
+               print "Setting",x,"to config file value \""+myconf[x]+"\""
+               myspec[x]=myconf[x]
+       else:
+               print "Setting",x,"to default value \""+confdefaults[x]+"\""
+               myspec[x]=confdefaults[x]
+
+#This allows plugins (and this code) to import modules in the /modules dir
+sys.path.append(myspec["sharedir"]+"/modules")
+try:
+       from catalyst_support import *
+       import targets
+except ImportError:
+       print "catalyst: python modules not found in "+myspec["sharedir"]+"/modules; exiting."
+       sys.exit(1)
+
+targetmap={}
+targets.register(targetmap)
+
 if "ccache" in string.split(myspec["options"]):
+       if not os.path.exists("/root/.ccache"):
+               os.makedirs("/root/.ccache")
+       print "Compiler cache support enabled."
        myspec["CCACHE"]="1"
 if "pkgcache" in string.split(myspec["options"]):
+       print "Package cache support enabled."
        myspec["PKGCACHE"]="1"
-#determine target, call target constructor and hand it the rest of the arguments
 
-try:
+if sys.argv[1] in ["-f", "--file" ]:
+       try:
+               addlargs=read_spec(sys.argv[2])
+       except:
+               raise CatalystError,"Unable to read spec file: "+sys.argv[2]
+       unparsedargs=sys.argv[3:]
+else:
        addlargs={}
-       arg_parse(myspec,addlargs)
+       unparsedargs=sys.argv[1:]
+try:
+       arg_parse(myspec,addlargs,unparsedargs)
        if not targetmap.has_key(myspec["target"]):
                raise CatalystError,"Target \""+myspec["target"]+"\" not available."
        mytarget=targetmap[myspec["target"]](myspec,addlargs)
        
-       #let's display our spec information in all its glory
-       print
-       spec_dump(myspec)
-       print
-       
        mytarget.run()
 except CatalystError:
        sys.exit(1)
-# Examples:
-# ./catalyst subarch=pentium4 version_stamp=20031016 target=stage3 rel_type=default rel_version=1.4 snapshot=20031016 source_subpath=default-x86-1.4/stage2-pentium4-20031016
-# ./catalyst target=snapshot version_stamp=20031028