1 # Copyright 1999-2005 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: /var/cvsroot/gentoo/src/catalyst/modules/embedded_target.py,v 1.14 2005/08/09 14:12:26 rocket Exp $
6 This class works like a 'stage3'. A stage2 tarball is unpacked, but instead
7 of building a stage3, it emerges a 'system' into another directory
8 inside the 'stage2' system. This way we do not have to emerge gcc/portage
9 into the staged system.
11 It sounds real complicated but basically it runs
12 ROOT=/tmp/submerge emerge --blahblah foo bar
15 import os,string,imp,types,shutil
16 from catalyst_support import *
17 from generic_stage_target import *
20 class embedded_target(generic_stage_target):
22 def __init__(self,spec,addlargs):
23 self.required_values=[]
25 self.valid_values.extend(["embedded/empty","embedded/rm","embedded/unmerge","embedded/fs-prepare","embedded/fs-finish","embedded/mergeroot","embedded/packages","embedded/use","embedded/fs-type","embedded/runscript","boot/kernel"])
27 if addlargs.has_key("embedded/fs-type"):
28 self.valid_values.append("embedded/fs-ops")
30 generic_stage_target.__init__(self,spec,addlargs)
31 self.set_build_kernel_vars(addlargs)
33 def set_action_sequence(self):
34 self.settings["action_sequence"]=["dir_setup","unpack","unpack_snapshot",\
35 "config_profile_link","setup_confdir",\
36 "portage_overlay","bind","chroot_setup",\
37 "setup_environment","build_kernel","build_packages",\
38 "bootloader","root_overlay","fsscript","unmerge",\
39 "unbind","remove","empty","clean","capture","clear_autoresume"]
41 def set_stage_path(self):
42 self.settings["stage_path"]=normpath(self.settings["chroot_path"]+"/tmp/mergeroot")
43 print "embedded stage path is "+self.settings["stage_path"]
45 def set_root_path(self):
46 self.settings["root_path"]=normpath("/tmp/mergeroot")
47 print "embedded root path is "+self.settings["root_path"]
49 def set_dest_path(self):
50 self.settings["destpath"]=normpath(self.settings["chroot_path"]+self.settings["root_path"])
53 foo.update({"embedded":embedded_target})