Lines 104-110
Link Here
|
104 |
self.set_target_path() |
104 |
self.set_target_path() |
105 |
self.set_source_path() |
105 |
self.set_source_path() |
106 |
self.set_chroot_path() |
106 |
self.set_chroot_path() |
107 |
|
107 |
self.set_action_sequence() |
|
|
108 |
self.set_use() |
109 |
self.set_stage_path() |
110 |
|
108 |
# this next line checks to make sure that the specified variables exist on disk. |
111 |
# this next line checks to make sure that the specified variables exist on disk. |
109 |
file_locate(self.settings,["source_path","snapshot_path","distdir"],expand=0) |
112 |
file_locate(self.settings,["source_path","snapshot_path","distdir"],expand=0) |
110 |
|
113 |
|
Lines 116-124
Link Here
|
116 |
self.mounts=[ "/proc","/dev","/dev/pts","/usr/portage/distfiles" ] |
119 |
self.mounts=[ "/proc","/dev","/dev/pts","/usr/portage/distfiles" ] |
117 |
self.mountmap={"/proc":"/proc", "/dev":"/dev", "/dev/pts":"/dev/pts",\ |
120 |
self.mountmap={"/proc":"/proc", "/dev":"/dev", "/dev/pts":"/dev/pts",\ |
118 |
"/usr/portage/distfiles":self.settings["distdir"]} |
121 |
"/usr/portage/distfiles":self.settings["distdir"]} |
119 |
if self.settings["target"]=="grp": |
122 |
self.set_mounts() |
120 |
self.mounts.append("/tmp/grp") |
|
|
121 |
self.mountmap["/tmp/grp"]=self.settings["target_path"] |
122 |
|
123 |
|
123 |
# configure any user specified options (either in catalyst.conf or on the cmdline) |
124 |
# configure any user specified options (either in catalyst.conf or on the cmdline) |
124 |
if self.settings.has_key("PKGCACHE"): |
125 |
if self.settings.has_key("PKGCACHE"): |
Lines 158-163
Link Here
|
158 |
|
159 |
|
159 |
def set_chroot_path(self): |
160 |
def set_chroot_path(self): |
160 |
self.settings["chroot_path"]=self.settings["storedir"]+"/tmp/"+self.settings["target_subpath"] |
161 |
self.settings["chroot_path"]=self.settings["storedir"]+"/tmp/"+self.settings["target_subpath"] |
|
|
162 |
|
163 |
def set_action_sequence(self): |
164 |
#Default action sequence for run method |
165 |
self.settings["action_sequence"]=["dir_setup","unpack_and_bind","chroot_setup",\ |
166 |
"setup_environment","run_local","preclean","unbind","clean","capture"] |
167 |
|
168 |
def set_use(self): |
169 |
pass |
170 |
|
171 |
def set_stage_path(self): |
172 |
self.settings["stage_path"]=self.settings["chroot_path"] |
161 |
|
173 |
|
162 |
def mount_safety_check(self): |
174 |
def mount_safety_check(self): |
163 |
mypath=self.settings["chroot_path"] |
175 |
mypath=self.settings["chroot_path"] |
Lines 193-199
Link Here
|
193 |
print "Setting up directories..." |
205 |
print "Setting up directories..." |
194 |
self.mount_safety_check() |
206 |
self.mount_safety_check() |
195 |
|
207 |
|
196 |
if not self.settings["target"] == "livecd-stage2": |
208 |
if os.path.exists(self.settings["chroot_path"]): |
197 |
cmd("rm -rf "+self.settings["chroot_path"],\ |
209 |
cmd("rm -rf "+self.settings["chroot_path"],\ |
198 |
"Could not remove existing directory: "+self.settings["chroot_path"]) |
210 |
"Could not remove existing directory: "+self.settings["chroot_path"]) |
199 |
|
211 |
|
Lines 295-330
Link Here
|
295 |
myf.write("# Please consult /etc/make.conf.example for a more detailed example\n") |
307 |
myf.write("# Please consult /etc/make.conf.example for a more detailed example\n") |
296 |
myf.write('CFLAGS="'+self.settings["CFLAGS"]+'"\n') |
308 |
myf.write('CFLAGS="'+self.settings["CFLAGS"]+'"\n') |
297 |
myf.write('CHOST="'+self.settings["CHOST"]+'"\n') |
309 |
myf.write('CHOST="'+self.settings["CHOST"]+'"\n') |
298 |
|
|
|
299 |
# figure out what our USE vars are for building |
310 |
# figure out what our USE vars are for building |
300 |
myusevars=[] |
311 |
myusevars=[] |
301 |
if self.settings.has_key("HOSTUSE"): |
312 |
if self.settings.has_key("HOSTUSE"): |
302 |
myusevars.extend(self.settings["HOSTUSE"]) |
313 |
myusevars.extend(self.settings["HOSTUSE"]) |
303 |
|
314 |
|
304 |
if self.settings["target"]=="grp": |
315 |
if self.settings.has_key("use"): |
305 |
myusevars.append("bindist") |
316 |
myusevars.extend(self.settings["use"]) |
306 |
myusevars.extend(self.settings["grp/use"]) |
|
|
307 |
myf.write('USE="'+string.join(myusevars)+'"\n') |
308 |
|
309 |
elif self.settings["target"]=="tinderbox": |
310 |
myusevars.extend(self.settings["tinderbox/use"]) |
311 |
myf.write('USE="'+string.join(myusevars)+'"\n') |
312 |
|
313 |
elif self.settings["target"]=="livecd-stage1": |
314 |
myusevars.extend(self.settings["livecd/use"]) |
315 |
myf.write('USE="'+string.join(myusevars)+'"\n') |
316 |
|
317 |
elif self.settings["target"]=="embedded": |
318 |
myusevars.extend(self.settings["embedded/use"]) |
319 |
myf.write('USE="'+string.join(myusevars)+'"\n') |
317 |
myf.write('USE="'+string.join(myusevars)+'"\n') |
320 |
|
318 |
|
321 |
if self.settings.has_key("CXXFLAGS"): |
319 |
if self.settings.has_key("CXXFLAGS"): |
322 |
myf.write('CXXFLAGS="'+self.settings["CXXFLAGS"]+'"\n') |
320 |
myf.write('CXXFLAGS="'+self.settings["CXXFLAGS"]+'"\n') |
323 |
|
321 |
|
324 |
else: |
322 |
else: |
325 |
myf.write('CXXFLAGS="${CFLAGS}"\n') |
323 |
myf.write('CXXFLAGS="${CFLAGS}"\n') |
326 |
myf.close() |
324 |
myf.close() |
327 |
|
325 |
|
328 |
def clean(self): |
326 |
def clean(self): |
329 |
destpath=self.settings["chroot_path"] |
327 |
destpath=self.settings["chroot_path"] |
330 |
|
328 |
|
Lines 371-387
Link Here
|
371 |
|
369 |
|
372 |
print "Creating stage tarball..." |
370 |
print "Creating stage tarball..." |
373 |
|
371 |
|
374 |
if self.settings["target"]=="stage1": |
372 |
cmd("tar cjf "+self.settings["target_path"]+" -C "+self.settings["stage_path"]+\ |
375 |
cmd("tar cjf "+self.settings["target_path"]+" -C "+self.settings["chroot_path"]+\ |
373 |
" .","Couldn't create stage tarball") |
376 |
"/tmp/stage1root .","Couldn't create stage tarball") |
|
|
377 |
|
378 |
elif self.settings["target"]=="embedded": |
379 |
cmd("tar cjf "+self.settings["target_path"]+" -C "+self.settings["chroot_path"]+\ |
380 |
"/tmp/mergeroot .","Couldn't create stage tarball") |
381 |
|
382 |
else: |
383 |
cmd("tar cjf "+self.settings["target_path"]+" -C "+self.settings["chroot_path"]+\ |
384 |
" .","Couldn't create stage tarball") |
385 |
|
374 |
|
386 |
def run_local(self): |
375 |
def run_local(self): |
387 |
try: |
376 |
try: |
Lines 391-407
Link Here
|
391 |
except CatalystError: |
380 |
except CatalystError: |
392 |
self.unbind() |
381 |
self.unbind() |
393 |
raise CatalystError,"Stage build aborting due to error." |
382 |
raise CatalystError,"Stage build aborting due to error." |
394 |
|
383 |
|
395 |
def run(self): |
384 |
def setup_environment(self): |
396 |
self.dir_setup() |
|
|
397 |
self.unpack_and_bind() |
398 |
try: |
399 |
self.chroot_setup() |
400 |
|
401 |
except: |
402 |
self.unbind() |
403 |
raise |
404 |
|
405 |
# modify the current environment. This is an ugly hack that should be fixed. We need this |
385 |
# modify the current environment. This is an ugly hack that should be fixed. We need this |
406 |
# to use the os.system() call since we can't specify our own environ: |
386 |
# to use the os.system() call since we can't specify our own environ: |
407 |
for x in self.settings.keys(): |
387 |
for x in self.settings.keys(): |
Lines 413-436
Link Here
|
413 |
os.environ[varname]=self.settings[x] |
393 |
os.environ[varname]=self.settings[x] |
414 |
elif type(self.settings[x])==types.ListType: |
394 |
elif type(self.settings[x])==types.ListType: |
415 |
os.environ[varname]=string.join(self.settings[x]) |
395 |
os.environ[varname]=string.join(self.settings[x]) |
416 |
|
396 |
|
417 |
self.run_local() |
397 |
def run(self): |
418 |
if self.settings["target"] in ["stage1","stage2","stage3","livecd-stage1","livecd-stage2"]: |
|
|
419 |
self.preclean() |
420 |
|
421 |
if self.settings["target"] in ["livecd-stage2"]: |
422 |
self.unmerge() |
423 |
|
424 |
# unbind everything here so that we can clean() |
425 |
self.unbind() |
426 |
|
427 |
if self.settings["target"] in ["stage1","stage2","stage3","livecd-stage1","livecd-stage2"]: |
428 |
# clean is for removing things after bind-mounts are |
429 |
# unmounted (general file removal and cleanup) |
430 |
self.clean() |
431 |
|
432 |
if self.settings["target"] in ["stage1","stage2","stage3","embedded"]: |
433 |
self.capture() |
434 |
|
398 |
|
435 |
if self.settings["target"] in ["livecd-stage2"]: |
399 |
for x in self.settings["action_sequence"]: |
436 |
self.cdroot_setup() |
400 |
print "Running action sequence: "+x |
|
|
401 |
if x == 'chroot_setup': |
402 |
try: |
403 |
self.chroot_setup() |
404 |
except: |
405 |
self.unbind() |
406 |
else: |
407 |
apply(getattr(self,x)) |