AUTORESUME PATCH; modified the chroot-functions.sh script so the chroot will die...
[catalyst.git] / modules / grp_target.py
1 # Copyright 1999-2004 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: /var/cvsroot/gentoo/src/catalyst/modules/grp_target.py,v 1.8 2005/04/14 14:59:48 rocket Exp $
4
5 """
6 The builder class for GRP (Gentoo Reference Platform) builds.
7 """
8
9 import os,types
10 from catalyst_support import *
11 from generic_stage_target import *
12
13 class grp_target(generic_stage_target):
14         def __init__(self,spec,addlargs):
15                 self.required_values=["version_stamp","target","subarch",\
16                         "rel_type","profile","snapshot","source_subpath"]
17                 
18                 self.valid_values=self.required_values[:]
19                 if not addlargs.has_key("grp"):
20                         raise CatalystError,"Required value \"grp\" not specified in spec."
21                 
22                 self.required_values.extend(["grp","grp/use"])
23                 if type(addlargs["grp"])==types.StringType:
24                         addlargs["grp"]=[addlargs["grp"]]
25                         
26                 for x in addlargs["grp"]:
27                         self.required_values.append("grp/"+x+"/packages")
28                         self.required_values.append("grp/"+x+"/type")
29                         
30                 generic_stage_target.__init__(self,spec,addlargs)
31         
32         def set_target_path(self):
33             self.settings["target_path"]=self.settings["storedir"]+"/builds/"+self.settings["target_subpath"]
34         
35         def run_local(self):
36                 for pkgset in self.settings["grp"]:
37                         # example call: "grp.sh run pkgset cd1 xmms vim sys-apps/gleep"
38                         mypackages=list_bashify(self.settings["grp/"+pkgset+"/packages"])
39                         try:
40                                 cmd("/bin/bash "+self.settings["controller_file"]+" run "+self.settings["grp/"+pkgset+"/type"]\
41                                         +" "+pkgset+" "+mypackages)
42                         
43                         except CatalystError:
44                                 self.unbind()
45                                 raise CatalystError,"GRP build aborting due to error."
46
47         def set_action_sequence(self):
48             self.settings["action_sequence"]=["dir_setup","unpack","unpack_snapshot",\
49                                 "config_profile_link","setup_confdir","bind","chroot_setup",\
50                                             "setup_environment","run_local","unmerge","unbind",\
51                                             "remove","empty"]
52
53         
54         def set_use(self):
55             generic_stage_target.set_use(self)
56             if self.settings.has_key("use"):
57                 self.settings["use"].append("bindlist")
58
59         def set_mounts(self):
60             self.mounts.append("/tmp/grp")
61             self.mountmap["/tmp/grp"]=self.settings["target_path"]
62
63 def register(foo):
64         foo.update({"grp":grp_target})
65         return foo