3 Builder class for a netboot build.
7 from catalyst_support import *
8 from generic_stage_target import *
10 class netboot_target(generic_stage_target):
11 def __init__(self,spec,addlargs):
13 "netboot/kernel/sources",
14 "netboot/kernel/config",
15 "netboot/kernel/prebuilt",
17 "netboot/busybox_config",
19 "netboot/extra_files",
22 self.required_values=[]
25 if addlargs.has_key("netboot/packages"):
26 if type(addlargs["netboot/packages"]) == types.StringType:
27 loopy=[addlargs["netboot/packages"]]
29 loopy=addlargs["netboot/packages"]
32 # self.required_values.append("netboot/packages/"+x+"/files")
34 raise CatalystError,"configuration error in netboot/packages."
39 generic_stage_target.__init__(self,spec,addlargs)
40 self.set_build_kernel_vars(addlargs)
41 if addlargs.has_key("netboot/busybox_config"):
42 file_locate(self.settings, ["netboot/busybox_config"])
44 # Custom Kernel Tarball --- use that instead ...
46 # unless the user wants specific CFLAGS/CXXFLAGS, let's use -Os
48 for envvar in "CFLAGS", "CXXFLAGS":
49 if not os.environ.has_key(envvar) and not addlargs.has_key(envvar):
50 self.settings[envvar] = "-Os -pipe"
53 def set_root_path(self):
54 # ROOT= variable for emerges
55 self.settings["root_path"]=normpath("/tmp/image")
56 print "netboot root path is "+self.settings["root_path"]
58 # def build_packages(self):
60 # if self.settings.has_key("netboot/packages"):
61 # mypack=list_bashify(self.settings["netboot/packages"])
63 # cmd("/bin/bash "+self.settings["controller_file"]+" packages "+mypack,env=self.env)
64 # except CatalystError:
66 # raise CatalystError,"netboot build aborting due to error."
68 def build_busybox(self):
70 if self.settings.has_key("netboot/busybox_config"):
71 mycmd = self.settings["netboot/busybox_config"]
75 cmd("/bin/bash "+self.settings["controller_file"]+" busybox "+ mycmd,env=self.env)
78 raise CatalystError,"netboot build aborting due to error."
81 def copy_files_to_image(self):
84 if self.settings.has_key("netboot/packages"):
85 if type(self.settings["netboot/packages"]) == types.StringType:
86 loopy=[self.settings["netboot/packages"]]
88 loopy=self.settings["netboot/packages"]
91 if self.settings.has_key("netboot/packages/"+x+"/files"):
92 if type(self.settings["netboot/packages/"+x+"/files"]) == types.ListType:
93 myfiles.extend(self.settings["netboot/packages/"+x+"/files"])
95 myfiles.append(self.settings["netboot/packages/"+x+"/files"])
97 if self.settings.has_key("netboot/extra_files"):
98 if type(self.settings["netboot/extra_files"]) == types.ListType:
99 myfiles.extend(self.settings["netboot/extra_files"])
101 myfiles.append(self.settings["netboot/extra_files"])
104 cmd("/bin/bash "+self.settings["controller_file"]+\
105 " image " + list_bashify(myfiles),env=self.env)
106 except CatalystError:
108 raise CatalystError,"netboot build aborting due to error."
111 def create_netboot_files(self):
114 cmd("/bin/bash "+self.settings["controller_file"]+" finish",env=self.env)
115 except CatalystError:
117 raise CatalystError,"netboot build aborting due to error."
120 print "netboot: build finished !"
123 def set_action_sequence(self):
124 self.settings["action_sequence"]=["unpack","unpack_snapshot",
125 "config_profile_link","setup_confdir","bind","chroot_setup",\
126 "setup_environment","build_packages","build_busybox",\
127 "build_kernel","copy_files_to_image",\
128 "clean","create_netboot_files","unbind","clear_autoresume"]
131 foo.update({"netboot":netboot_target})