Lines 22-32
Link Here
|
22 |
def __init__(self,spec,addlargs): |
22 |
def __init__(self,spec,addlargs): |
23 |
self.required_values=[] |
23 |
self.required_values=[] |
24 |
self.valid_values=[] |
24 |
self.valid_values=[] |
25 |
self.valid_values.extend(["embedded/empty","embedded/rm","embedded/unmerge","embedded/runscript","embedded/mergeroot","embedded/packages","embedded/use","embedded/fs-type"]) |
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","boot/kernel"]) |
26 |
|
26 |
|
27 |
if addlargs.has_key("embedded/fs-type"): |
27 |
if addlargs.has_key("embedded/fs-type"): |
28 |
self.valid_values.append("embedded/fs-ops") |
28 |
self.valid_values.append("embedded/fs-ops") |
29 |
|
29 |
|
|
|
30 |
# this kernel code is also from livecd stage2 |
31 |
|
32 |
if addlargs.has_key("boot/kernel"): |
33 |
if type(addlargs["boot/kernel"]) == types.StringType: |
34 |
loopy=[addlargs["boot/kernel"]] |
35 |
else: |
36 |
loopy=addlargs["boot/kernel"] |
37 |
|
38 |
for x in loopy: |
39 |
self.required_values.append("boot/kernel/"+x+"/sources") |
40 |
self.required_values.append("boot/kernel/"+x+"/config") |
41 |
self.valid_values.append("boot/kernel/"+x+"/extraversion") |
42 |
self.valid_values.append("boot/kernel/"+x+"/packages") |
43 |
self.valid_values.append("boot/kernel/"+x+"/use") |
44 |
self.valid_values.append("boot/kernel/"+x+"/gk_kernargs") |
45 |
self.valid_values.append("boot/kernel/"+x+"/gk_action") |
46 |
|
30 |
generic_stage_target.__init__(self,spec,addlargs) |
47 |
generic_stage_target.__init__(self,spec,addlargs) |
31 |
self.settings["image_path"]=self.settings["storedir"]+"/builds/"+self.settings["target_subpath"]+"/image" |
48 |
self.settings["image_path"]=self.settings["storedir"]+"/builds/"+self.settings["target_subpath"]+"/image" |
32 |
|
49 |
|
Lines 59-66
Link Here
|
59 |
cmd("/bin/bash "+self.settings["sharedir"]+"/targets/embedded/embedded.sh package","filesystem packaging failed") |
76 |
cmd("/bin/bash "+self.settings["sharedir"]+"/targets/embedded/embedded.sh package","filesystem packaging failed") |
60 |
except CatalystError: |
77 |
except CatalystError: |
61 |
self.unbind() |
78 |
self.unbind() |
62 |
raise CatalystError, "embedded filesystem created aborting due to error." |
79 |
raise CatalystError, "embedded filesystem creation aborting due to error." |
63 |
|
80 |
|
|
|
81 |
# this code is mostly duplication from the livecd stage2 module |
82 |
def pre_build_fs(self): |
83 |
try: |
84 |
if self.settings.has_key("embedded/fs-prepare"): |
85 |
cmd("/bin/bash "+self.settings["embedded/fs-prepare"], "pre filesystem packaging cause an error in execution") |
86 |
except CatalystError: |
87 |
self.unbind() |
88 |
raise CatalystError, "embedded pre filesystem creation script aborting due to error" |
89 |
|
90 |
def post_build_fs(self): |
91 |
try: |
92 |
if self.settings.has_key("embedded/fs-finish"): |
93 |
cmd("/bin/bash "+self.settings["embedded/fs-finish"], "pre filesystem packaging cause an error in execution") |
94 |
except CatalystError: |
95 |
self.unbind() |
96 |
raise CatalystError, "embedded post filesystem creation script aborting due to error" |
97 |
|
98 |
def build_kernel(self): |
99 |
mynames=self.settings["boot/kernel"] |
100 |
if type(mynames)==types.StringType: |
101 |
mynames=[mynames] |
102 |
args=[] |
103 |
args.append(`len(mynames)`) |
104 |
|
105 |
for kname in mynames: |
106 |
args.append(kname) |
107 |
args.append(self.settings["boot/kernel/"+kname+"/sources"]) |
108 |
try: |
109 |
if not os.path.exists(self.settings["boot/kernel/"+kname+"/config"]): |
110 |
self.unbind() |
111 |
raise CatalystError, "Can't find kernel config: " \ |
112 |
+self.settings["boot/kernel/"+kname+"/config"] |
113 |
|
114 |
except TypeError: |
115 |
raise CatalystError, "Required value boot/kernel/config not specified" |
116 |
|
117 |
if self.settings.has_key("boot/kernel/"+kname+"/extraversion"): |
118 |
args.append(self.settings["boot/kernel/"+kname+"/extraversion"]) |
119 |
else: |
120 |
args.append("NULL_VALUE") |
121 |
if self.settings.has_key("boot/kernel/"+kname+"/gk_action"): |
122 |
args.append(self.settings["boot/kernel/"+kname+"/gk_action"]) |
123 |
|
124 |
for extra in ["use","packages","gk_kernargs"]: |
125 |
if self.settings.has_key("boot/kernel/"+kname+"/"+extra): |
126 |
myex=self.settings["boot/kernel/"+kname+"/"+extra] |
127 |
if type(myex)==types.ListType: |
128 |
myex=string.join(myex) |
129 |
try: |
130 |
myf=open(self.settings["chroot_path"]+"/var/tmp/"+kname+"."+extra,"w") |
131 |
except: |
132 |
self.unbind() |
133 |
raise CatalystError,"Couldn't create file /var/tmp/"+kname+"."+extra+" in chroot." |
134 |
if extra=="use": |
135 |
myf.write("export USE=\""+myex+"\"\n") |
136 |
if extra=="gk_kernargs": |
137 |
myf.write("export clst_embedded_gk_kernargs=\""+myex+"\"\n") |
138 |
else: |
139 |
myf.write(myex+"\n") |
140 |
myf.close() |
141 |
try: |
142 |
cmd("cp "+self.settings["boot/kernel/"+kname+"/config"]+" "+ \ |
143 |
self.settings["chroot_path"]+"/var/tmp/"+kname+".config", \ |
144 |
"Couldn't copy kernel config: "+self.settings["boot/kernel/"+kname+"/config"]) |
145 |
|
146 |
except CatalystError: |
147 |
self.unbind() |
148 |
|
149 |
# If we need to pass special options to the bootloader |
150 |
# for this kernel put them into the environment. |
151 |
if self.settings.has_key("boot/kernel/"+kname+"/kernelopts"): |
152 |
myopts=self.settings["boot/kernel/"+kname+"/kernelopts"] |
153 |
|
154 |
if type(myopts) != types.StringType: |
155 |
myopts = string.join(myopts) |
156 |
os.putenv(kname+"_kernelopts", myopts) |
157 |
|
158 |
else: |
159 |
os.putenv(kname+"_kernelopts", "") |
160 |
|
161 |
# execute the script that builds the kernel |
162 |
cmd("/bin/bash "+self.settings["sharedir"]+"/targets/embedded/embedded.sh kernel "+list_bashify(args), |
163 |
"Runscript kernel build failed") |
64 |
|
164 |
|
65 |
def run_local(self): |
165 |
def run_local(self): |
66 |
mypackages=list_bashify(self.settings["embedded/packages"]) |
166 |
mypackages=list_bashify(self.settings["embedded/packages"]) |
Lines 70-78
Link Here
|
70 |
except CatalystError: |
170 |
except CatalystError: |
71 |
self.unbind() |
171 |
self.unbind() |
72 |
raise CatalystError, "Embedded build aborted due to error." |
172 |
raise CatalystError, "Embedded build aborted due to error." |
|
|
173 |
|
174 |
if self.settings.has_key("boot/kernel"): |
175 |
self.build_kernel() |
176 |
|
73 |
self.unmerge() |
177 |
self.unmerge() |
74 |
self.clean() |
178 |
self.clean() |
|
|
179 |
|
180 |
self.pre_build_fs() |
75 |
self.build_fs() |
181 |
self.build_fs() |
|
|
182 |
self.post_build_fs() |
76 |
|
183 |
|
77 |
def set_action_sequence(self): |
184 |
def set_action_sequence(self): |
78 |
self.settings["action_sequence"]=["dir_setup","unpack_and_bind","chroot_setup",\ |
185 |
self.settings["action_sequence"]=["dir_setup","unpack_and_bind","chroot_setup",\ |