Replace content on master with content from catalyst_2
[catalyst.git] / modules / embedded_target.py
1
2 """
3 This class works like a 'stage3'.  A stage2 tarball is unpacked, but instead
4 of building a stage3, it emerges a 'system' into another directory
5 inside the 'stage2' system.  This way we do not have to emerge gcc/portage
6 into the staged system.
7
8 It sounds real complicated but basically it runs
9 ROOT=/tmp/submerge emerge --blahblah foo bar
10 """
11
12 import os,string,imp,types,shutil
13 from catalyst_support import *
14 from generic_stage_target import *
15 from stat import *
16
17 class embedded_target(generic_stage_target):
18
19         def __init__(self,spec,addlargs):
20                 self.required_values=[]
21                 self.valid_values=[]
22                 self.valid_values.extend(["embedded/empty","embedded/rm","embedded/unmerge","embedded/fs-prepare","embedded/fs-finish","embedded/mergeroot","embedded/packages","embedded/fs-type","embedded/runscript","boot/kernel","embedded/linuxrc"])
23                 self.valid_values.extend(["embedded/use"])
24                 if addlargs.has_key("embedded/fs-type"):
25                         self.valid_values.append("embedded/fs-ops")
26
27                 generic_stage_target.__init__(self,spec,addlargs)
28                 self.set_build_kernel_vars(addlargs)
29
30         def set_action_sequence(self):
31                 self.settings["action_sequence"]=["dir_setup","unpack","unpack_snapshot",\
32                                         "config_profile_link","setup_confdir",\
33                                         "portage_overlay","bind","chroot_setup",\
34                                         "setup_environment","build_kernel","build_packages",\
35                                         "bootloader","root_overlay","fsscript","unmerge",\
36                                         "unbind","remove","empty","clean","capture","clear_autoresume"]
37
38         def set_stage_path(self):
39                 self.settings["stage_path"]=normpath(self.settings["chroot_path"]+"/tmp/mergeroot")
40                 print "embedded stage path is "+self.settings["stage_path"]
41
42         def set_root_path(self):
43                 self.settings["root_path"]=normpath("/tmp/mergeroot")
44                 print "embedded root path is "+self.settings["root_path"]
45
46 def register(foo):
47         foo.update({"embedded":embedded_target})
48         return foo