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/netboot_target.py,v 1.12 2005/12/28 16:58:43 rocket Exp $
6 Builder class for a netboot build.
10 from catalyst_support import *
11 from generic_stage_target import *
13 class netboot_target(generic_stage_target):
14 def __init__(self,spec,addlargs):
16 "netboot/kernel/sources",
17 "netboot/kernel/config",
18 "netboot/kernel/prebuilt",
20 "netboot/busybox_config",
22 "netboot/extra_files",
25 self.required_values=[]
28 if addlargs.has_key("netboot/packages"):
29 if type(addlargs["netboot/packages"]) == types.StringType:
30 loopy=[addlargs["netboot/packages"]]
32 loopy=addlargs["netboot/packages"]
35 # self.required_values.append("netboot/packages/"+x+"/files")
37 raise CatalystError,"configuration error in netboot/packages."
42 generic_stage_target.__init__(self,spec,addlargs)
43 self.set_build_kernel_vars(addlargs)
44 if addlargs.has_key("netboot/busybox_config"):
45 file_locate(self.settings, ["netboot/busybox_config"])
47 # Custom Kernel Tarball --- use that instead ...
49 # unless the user wants specific CFLAGS/CXXFLAGS, let's use -Os
51 for envvar in "CFLAGS", "CXXFLAGS":
52 if not os.environ.has_key(envvar) and not addlargs.has_key(envvar):
53 self.settings[envvar] = "-Os -pipe"
56 def set_root_path(self):
57 # ROOT= variable for emerges
58 self.settings["root_path"]=normpath("/tmp/image")
59 print "netboot root path is "+self.settings["root_path"]
61 # def build_packages(self):
63 # if self.settings.has_key("netboot/packages"):
64 # mypack=list_bashify(self.settings["netboot/packages"])
66 # cmd("/bin/bash "+self.settings["controller_file"]+" packages "+mypack,env=self.env)
67 # except CatalystError:
69 # raise CatalystError,"netboot build aborting due to error."
71 def build_busybox(self):
73 if self.settings.has_key("netboot/busybox_config"):
74 mycmd = self.settings["netboot/busybox_config"]
78 cmd("/bin/bash "+self.settings["controller_file"]+" busybox "+ mycmd,env=self.env)
81 raise CatalystError,"netboot build aborting due to error."
84 def copy_files_to_image(self):
87 if self.settings.has_key("netboot/packages"):
88 if type(self.settings["netboot/packages"]) == types.StringType:
89 loopy=[self.settings["netboot/packages"]]
91 loopy=self.settings["netboot/packages"]
94 if self.settings.has_key("netboot/packages/"+x+"/files"):
95 if type(self.settings["netboot/packages/"+x+"/files"]) == types.ListType:
96 myfiles.extend(self.settings["netboot/packages/"+x+"/files"])
98 myfiles.append(self.settings["netboot/packages/"+x+"/files"])
100 if self.settings.has_key("netboot/extra_files"):
101 if type(self.settings["netboot/extra_files"]) == types.ListType:
102 myfiles.extend(self.settings["netboot/extra_files"])
104 myfiles.append(self.settings["netboot/extra_files"])
107 cmd("/bin/bash "+self.settings["controller_file"]+\
108 " image " + list_bashify(myfiles),env=self.env)
109 except CatalystError:
111 raise CatalystError,"netboot build aborting due to error."
114 def create_netboot_files(self):
117 cmd("/bin/bash "+self.settings["controller_file"]+" finish",env=self.env)
118 except CatalystError:
120 raise CatalystError,"netboot build aborting due to error."
123 print "netboot: build finished !"
126 def set_action_sequence(self):
127 self.settings["action_sequence"]=["unpack","unpack_snapshot",
128 "config_profile_link","setup_confdir","bind","chroot_setup",\
129 "setup_environment","build_packages","build_busybox",\
130 "build_kernel","copy_files_to_image",\
131 "clean","create_netboot_files","unbind","clear_autoresume"]
134 foo.update({"netboot":netboot_target})