#!/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.133 2006/01/26 23:39:26 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_rc25"
+__version__="2.0.6"
conf_values={}
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
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
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:
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)
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__":
# 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()
sys.exit(2)
else:
conf_values["DEBUG"]="1"
+ conf_values["VERBOSE"]="1"
if o in ("-c", "--config"):
if len(sys.argv) < 3:
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))