Add locking support. Code simplification for unpack and unpack snapshot. Remove...
[catalyst.git] / modules / embedded_target.py
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 $
4
5 """
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.
10
11 It sounds real complicated but basically it runs
12 ROOT=/tmp/submerge emerge --blahblah foo bar
13 """
14
15 import os,string,imp,types,shutil
16 from catalyst_support import *
17 from generic_stage_target import *
18 from stat import *
19
20 class embedded_target(generic_stage_target):
21
22     def __init__(self,spec,addlargs):
23         self.required_values=[]
24         self.valid_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"])
26
27         if addlargs.has_key("embedded/fs-type"):
28             self.valid_values.append("embedded/fs-ops")
29
30         generic_stage_target.__init__(self,spec,addlargs)
31         self.set_build_kernel_vars(addlargs)
32
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"]
40
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"]
44
45     def set_root_path(self):
46         self.settings["root_path"]=normpath("/tmp/mergeroot")
47         print "embedded root path is "+self.settings["root_path"]
48
49     def set_dest_path(self):
50         self.settings["destpath"]=normpath(self.settings["chroot_path"]+self.settings["root_path"])
51                 
52 def register(foo):
53         foo.update({"embedded":embedded_target})
54         return foo