Lines 1-6
Link Here
|
1 |
# Copyright 1999-2004 Gentoo Foundation |
1 |
# Distributed under the GNU General Public License version 2 |
2 |
# Distributed under the terms of the GNU General Public License v2 |
2 |
# Copyright 2003-2004 Gentoo Technologies, Inc. |
3 |
# $Header: /var/cvsroot/gentoo/src/catalyst/modules/embedded_target.py,v 1.6 2004/12/17 21:18:06 wolf31o2 Exp $ |
3 |
# $Header: /home/cvsroot/gentoo/src/catalyst/modules/embedded_target.py,v 1.1 2004/05/17 01:21:17 zhen Exp $ |
4 |
|
4 |
|
5 |
""" |
5 |
""" |
6 |
This class works like a 'stage3'. A stage2 tarball is unpacked, but instead |
6 |
This class works like a 'stage3'. A stage2 tarball is unpacked, but instead |
Lines 22-32
Link Here
|
22 |
def __init__(self,spec,addlargs): |
21 |
def __init__(self,spec,addlargs): |
23 |
self.required_values=[] |
22 |
self.required_values=[] |
24 |
self.valid_values=[] |
23 |
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"]) |
24 |
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 |
|
25 |
|
27 |
if addlargs.has_key("embedded/fs-type"): |
26 |
if addlargs.has_key("embedded/fs-type"): |
28 |
self.valid_values.append("embedded/fs-ops") |
27 |
self.valid_values.append("embedded/fs-ops") |
29 |
|
28 |
|
|
|
29 |
# this kernel code is also from livecd stage2 |
30 |
|
31 |
if addlargs.has_key("boot/kernel"): |
32 |
if type(addlargs["boot/kernel"]) == types.StringType: |
33 |
loopy=[addlargs["boot/kernel"]] |
34 |
else: |
35 |
loopy=addlargs["boot/kernel"] |
36 |
|
37 |
for x in loopy: |
38 |
self.required_values.append("boot/kernel/"+x+"/sources") |
39 |
self.required_values.append("boot/kernel/"+x+"/config") |
40 |
self.valid_values.append("boot/kernel/"+x+"/extraversion") |
41 |
self.valid_values.append("boot/kernel/"+x+"/packages") |
42 |
self.valid_values.append("boot/kernel/"+x+"/use") |
43 |
self.valid_values.append("boot/kernel/"+x+"/gk_kernargs") |
44 |
self.valid_values.append("boot/kernel/"+x+"/gk_action") |
45 |
|
30 |
generic_stage_target.__init__(self,spec,addlargs) |
46 |
generic_stage_target.__init__(self,spec,addlargs) |
31 |
self.settings["image_path"]=self.settings["storedir"]+"/builds/"+self.settings["target_subpath"]+"/image" |
47 |
self.settings["image_path"]=self.settings["storedir"]+"/builds/"+self.settings["target_subpath"]+"/image" |
32 |
|
48 |
|
Lines 59-66
Link Here
|
59 |
cmd("/bin/bash "+self.settings["sharedir"]+"/targets/embedded/embedded.sh package","filesystem packaging failed") |
75 |
cmd("/bin/bash "+self.settings["sharedir"]+"/targets/embedded/embedded.sh package","filesystem packaging failed") |
60 |
except CatalystError: |
76 |
except CatalystError: |
61 |
self.unbind() |
77 |
self.unbind() |
62 |
raise CatalystError, "embedded filesystem created aborting due to error." |
78 |
raise CatalystError, "embedded filesystem creation aborting due to error." |
63 |
|
79 |
|
|
|
80 |
def build_kernel(self): |
81 |
mynames=self.settings["boot/kernel"] |
82 |
if type(mynames)==types.StringType: |
83 |
mynames=[mynames] |
84 |
args=[] |
85 |
args.append(`len(mynames)`) |
86 |
|
87 |
for kname in mynames: |
88 |
args.append(kname) |
89 |
args.append(self.settings["boot/kernel/"+kname+"/sources"]) |
90 |
try: |
91 |
if not os.path.exists(self.settings["boot/kernel/"+kname+"/config"]): |
92 |
self.unbind() |
93 |
raise CatalystError, "Can't find kernel config: " \ |
94 |
+self.settings["boot/kernel/"+kname+"/config"] |
95 |
|
96 |
except TypeError: |
97 |
raise CatalystError, "Required value boot/kernel/config not specified" |
98 |
|
99 |
if self.settings.has_key("boot/kernel/"+kname+"/extraversion"): |
100 |
args.append(self.settings["boot/kernel/"+kname+"/extraversion"]) |
101 |
else: |
102 |
args.append("NULL_VALUE") |
103 |
if self.settings.has_key("boot/kernel/"+kname+"/gk_action"): |
104 |
args.append(self.settings["boot/kernel/"+kname+"/gk_action"]) |
105 |
|
106 |
for extra in ["use","packages","gk_kernargs"]: |
107 |
if self.settings.has_key("boot/kernel/"+kname+"/"+extra): |
108 |
myex=self.settings["boot/kernel/"+kname+"/"+extra] |
109 |
if type(myex)==types.ListType: |
110 |
myex=string.join(myex) |
111 |
try: |
112 |
myf=open(self.settings["chroot_path"]+"/var/tmp/"+kname+"."+extra,"w") |
113 |
except: |
114 |
self.unbind() |
115 |
raise CatalystError,"Couldn't create file /var/tmp/"+kname+"."+extra+" in chroot." |
116 |
if extra=="use": |
117 |
myf.write("export USE=\""+myex+"\"\n") |
118 |
if extra=="gk_kernargs": |
119 |
myf.write("export clst_embedded_gk_kernargs=\""+myex+"\"\n") |
120 |
else: |
121 |
myf.write(myex+"\n") |
122 |
myf.close() |
123 |
try: |
124 |
cmd("cp "+self.settings["boot/kernel/"+kname+"/config"]+" "+ \ |
125 |
self.settings["chroot_path"]+"/var/tmp/"+kname+".config", \ |
126 |
"Couldn't copy kernel config: "+self.settings["boot/kernel/"+kname+"/config"]) |
127 |
|
128 |
except CatalystError: |
129 |
self.unbind() |
130 |
|
131 |
# If we need to pass special options to the bootloader |
132 |
# for this kernel put them into the environment. |
133 |
if self.settings.has_key("boot/kernel/"+kname+"/kernelopts"): |
134 |
myopts=self.settings["boot/kernel/"+kname+"/kernelopts"] |
135 |
|
136 |
if type(myopts) != types.StringType: |
137 |
myopts = string.join(myopts) |
138 |
os.putenv(kname+"_kernelopts", myopts) |
139 |
|
140 |
else: |
141 |
os.putenv(kname+"_kernelopts", "") |
142 |
|
143 |
# execute the script that builds the kernel |
144 |
cmd("/bin/bash "+self.settings["sharedir"]+"/targets/embedded/embedded.sh kernel "+list_bashify(args), |
145 |
"Runscript kernel build failed") |
64 |
|
146 |
|
65 |
def run_local(self): |
147 |
def run_local(self): |
66 |
mypackages=list_bashify(self.settings["embedded/packages"]) |
148 |
mypackages=list_bashify(self.settings["embedded/packages"]) |
Lines 70-77
Link Here
|
70 |
except CatalystError: |
152 |
except CatalystError: |
71 |
self.unbind() |
153 |
self.unbind() |
72 |
raise CatalystError, "Embedded build aborted due to error." |
154 |
raise CatalystError, "Embedded build aborted due to error." |
|
|
155 |
|
156 |
if self.settings.has_key("boot/kernel"): |
157 |
self.build_kernel() |
158 |
|
73 |
self.unmerge() |
159 |
self.unmerge() |
74 |
self.clean() |
160 |
self.clean() |
|
|
161 |
|
75 |
self.build_fs() |
162 |
self.build_fs() |
76 |
|
163 |
|
77 |
def register(foo): |
164 |
def register(foo): |