Gentoo Archives: gentoo-catalyst

From: "W. Trevor King" <wking@×××××××.us>
To: Catalyst <gentoo-catalyst@l.g.o>
Cc: "W. Trevor King" <wking@×××××××.us>
Subject: [gentoo-catalyst] [PATCH 1/6] generic_stage_target: Split ._build_kernel() out of .build_kernel()
Date: Sat, 09 Feb 2013 20:45:47
Message-Id: 570c8723196efdb5845af0c9fb48357df9a78b7b.1360442556.git.wking@tremily.us
In Reply to: [gentoo-catalyst] [PATCH 0/6] Make external kernel configs optional by "W. Trevor King"
1 From: "W. Trevor King" <wking@×××××××.us>
2
3 The indentation was getting too deep ;). This also makes the
4 single-kernel-building code more digestible, by removing the
5 multiple-kernel looping and error handling from the function you're
6 reading.
7 ---
8 modules/generic_stage_target.py | 196 ++++++++++++++++++++--------------------
9 1 file changed, 99 insertions(+), 97 deletions(-)
10
11 diff --git a/modules/generic_stage_target.py b/modules/generic_stage_target.py
12 index 952fa4b..af7cbe7 100644
13 --- a/modules/generic_stage_target.py
14 +++ b/modules/generic_stage_target.py
15 @@ -1395,6 +1395,7 @@ class generic_stage_target(generic_target):
16 "build aborting due to error."
17
18 def build_kernel(self):
19 + "Build all configured kernels"
20 if "AUTORESUME" in self.settings \
21 and os.path.exists(self.settings["autoresume_path"]+"build_kernel"):
22 print "Resume point detected, skipping build_kernel operation..."
23 @@ -1410,110 +1411,111 @@ class generic_stage_target(generic_target):
24 cmd("/bin/bash "+self.settings["controller_file"]+\
25 " pre-kmerge ","Runscript pre-kmerge failed",\
26 env=self.env)
27 -
28 for kname in mynames:
29 - if "AUTORESUME" in self.settings \
30 - and os.path.exists(self.settings["autoresume_path"]\
31 - +"build_kernel_"+kname):
32 - print "Resume point detected, skipping build_kernel for "+kname+" operation..."
33 - else: # TODO: make this not require a kernel config
34 - try:
35 - if not os.path.exists(self.settings["boot/kernel/"+kname+"/config"]):
36 - self.unbind()
37 - raise CatalystError,\
38 - "Can't find kernel config: "+\
39 - self.settings["boot/kernel/"+kname+\
40 - "/config"]
41 -
42 - except TypeError:
43 - raise CatalystError,\
44 - "Required value boot/kernel/config not specified"
45 -
46 - try:
47 - cmd("cp "+self.settings["boot/kernel/"+kname+\
48 - "/config"]+" "+\
49 - self.settings["chroot_path"]+"/var/tmp/"+\
50 - kname+".config",\
51 - "Couldn't copy kernel config: "+\
52 - self.settings["boot/kernel/"+kname+\
53 - "/config"],env=self.env)
54 -
55 - except CatalystError:
56 - self.unbind()
57 -
58 - """
59 - If we need to pass special options to the bootloader
60 - for this kernel put them into the environment
61 - """
62 - if "boot/kernel/"+kname+"/kernelopts" in self.settings:
63 - myopts=self.settings["boot/kernel/"+kname+\
64 - "/kernelopts"]
65 -
66 - if type(myopts) != types.StringType:
67 - myopts = string.join(myopts)
68 - self.env[kname+"_kernelopts"]=myopts
69 -
70 - else:
71 - self.env[kname+"_kernelopts"]=""
72 -
73 - if "boot/kernel/"+kname+"/extraversion" not in self.settings:
74 - self.settings["boot/kernel/"+kname+\
75 - "/extraversion"]=""
76 -
77 - self.env["clst_kextraversion"]=\
78 - self.settings["boot/kernel/"+kname+\
79 - "/extraversion"]
80 -
81 - if "boot/kernel/"+kname+"/initramfs_overlay" in self.settings:
82 - if os.path.exists(self.settings["boot/kernel/"+\
83 - kname+"/initramfs_overlay"]):
84 - print "Copying initramfs_overlay dir "+\
85 - self.settings["boot/kernel/"+kname+\
86 - "/initramfs_overlay"]
87 -
88 - cmd("mkdir -p "+\
89 - self.settings["chroot_path"]+\
90 - "/tmp/initramfs_overlay/"+\
91 - self.settings["boot/kernel/"+kname+\
92 - "/initramfs_overlay"],env=self.env)
93 -
94 - cmd("cp -R "+self.settings["boot/kernel/"+\
95 - kname+"/initramfs_overlay"]+"/* "+\
96 - self.settings["chroot_path"]+\
97 - "/tmp/initramfs_overlay/"+\
98 - self.settings["boot/kernel/"+kname+\
99 - "/initramfs_overlay"],env=self.env)
100 -
101 - """ Execute the script that builds the kernel """
102 - cmd("/bin/bash "+self.settings["controller_file"]+\
103 - " kernel "+kname,\
104 - "Runscript kernel build failed",env=self.env)
105 -
106 - if "boot/kernel/"+kname+"/initramfs_overlay" in self.settings:
107 - if os.path.exists(self.settings["chroot_path"]+\
108 - "/tmp/initramfs_overlay/"):
109 - print "Cleaning up temporary overlay dir"
110 - cmd("rm -R "+self.settings["chroot_path"]+\
111 - "/tmp/initramfs_overlay/",env=self.env)
112 -
113 - touch(self.settings["autoresume_path"]+\
114 - "build_kernel_"+kname)
115 -
116 - """
117 - Execute the script that cleans up the kernel build
118 - environment
119 - """
120 - cmd("/bin/bash "+self.settings["controller_file"]+\
121 - " post-kmerge ",
122 - "Runscript post-kmerge failed",env=self.env)
123 -
124 + self._build_kernel(kname=kname)
125 touch(self.settings["autoresume_path"]+"build_kernel")
126 -
127 except CatalystError:
128 self.unbind()
129 raise CatalystError,\
130 "build aborting due to kernel build error."
131
132 + def _build_kernel(self, kname):
133 + "Build a single configured kernel by name"
134 + if "AUTORESUME" in self.settings \
135 + and os.path.exists(self.settings["autoresume_path"]\
136 + +"build_kernel_"+kname):
137 + print "Resume point detected, skipping build_kernel for "+kname+" operation..."
138 + else: # TODO: make this not require a kernel config
139 + try:
140 + if not os.path.exists(self.settings["boot/kernel/"+kname+"/config"]):
141 + self.unbind()
142 + raise CatalystError,\
143 + "Can't find kernel config: "+\
144 + self.settings["boot/kernel/"+kname+\
145 + "/config"]
146 +
147 + except TypeError:
148 + raise CatalystError,\
149 + "Required value boot/kernel/config not specified"
150 +
151 + try:
152 + cmd("cp "+self.settings["boot/kernel/"+kname+\
153 + "/config"]+" "+\
154 + self.settings["chroot_path"]+"/var/tmp/"+\
155 + kname+".config",\
156 + "Couldn't copy kernel config: "+\
157 + self.settings["boot/kernel/"+kname+\
158 + "/config"],env=self.env)
159 +
160 + except CatalystError:
161 + self.unbind()
162 +
163 + """
164 + If we need to pass special options to the bootloader
165 + for this kernel put them into the environment
166 + """
167 + if "boot/kernel/"+kname+"/kernelopts" in self.settings:
168 + myopts=self.settings["boot/kernel/"+kname+\
169 + "/kernelopts"]
170 +
171 + if type(myopts) != types.StringType:
172 + myopts = string.join(myopts)
173 + self.env[kname+"_kernelopts"]=myopts
174 +
175 + else:
176 + self.env[kname+"_kernelopts"]=""
177 +
178 + if "boot/kernel/"+kname+"/extraversion" not in self.settings:
179 + self.settings["boot/kernel/"+kname+\
180 + "/extraversion"]=""
181 +
182 + self.env["clst_kextraversion"]=\
183 + self.settings["boot/kernel/"+kname+\
184 + "/extraversion"]
185 +
186 + if "boot/kernel/"+kname+"/initramfs_overlay" in self.settings:
187 + if os.path.exists(self.settings["boot/kernel/"+\
188 + kname+"/initramfs_overlay"]):
189 + print "Copying initramfs_overlay dir "+\
190 + self.settings["boot/kernel/"+kname+\
191 + "/initramfs_overlay"]
192 +
193 + cmd("mkdir -p "+\
194 + self.settings["chroot_path"]+\
195 + "/tmp/initramfs_overlay/"+\
196 + self.settings["boot/kernel/"+kname+\
197 + "/initramfs_overlay"],env=self.env)
198 +
199 + cmd("cp -R "+self.settings["boot/kernel/"+\
200 + kname+"/initramfs_overlay"]+"/* "+\
201 + self.settings["chroot_path"]+\
202 + "/tmp/initramfs_overlay/"+\
203 + self.settings["boot/kernel/"+kname+\
204 + "/initramfs_overlay"],env=self.env)
205 +
206 + """ Execute the script that builds the kernel """
207 + cmd("/bin/bash "+self.settings["controller_file"]+\
208 + " kernel "+kname,\
209 + "Runscript kernel build failed",env=self.env)
210 +
211 + if "boot/kernel/"+kname+"/initramfs_overlay" in self.settings:
212 + if os.path.exists(self.settings["chroot_path"]+\
213 + "/tmp/initramfs_overlay/"):
214 + print "Cleaning up temporary overlay dir"
215 + cmd("rm -R "+self.settings["chroot_path"]+\
216 + "/tmp/initramfs_overlay/",env=self.env)
217 +
218 + touch(self.settings["autoresume_path"]+\
219 + "build_kernel_"+kname)
220 +
221 + """
222 + Execute the script that cleans up the kernel build
223 + environment
224 + """
225 + cmd("/bin/bash "+self.settings["controller_file"]+\
226 + " post-kmerge ",
227 + "Runscript post-kmerge failed",env=self.env)
228 +
229 def bootloader(self):
230 if "AUTORESUME" in self.settings \
231 and os.path.exists(self.settings["autoresume_path"]+"bootloader"):
232 --
233 1.8.1.336.g94702dd