summaryrefslogtreecommitdiffstats
path: root/scripts/wic
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/wic')
-rwxr-xr-xscripts/wic77
1 files changed, 44 insertions, 33 deletions
diff --git a/scripts/wic b/scripts/wic
index 10a03eeea6..10ce440529 100755
--- a/scripts/wic
+++ b/scripts/wic
@@ -58,6 +58,23 @@ from wic.utils.errors import WicError
58from wic import engine 58from wic import engine
59from wic import help as hlp 59from wic import help as hlp
60 60
61
62def wic_logger():
63 """Create and convfigure wic logger."""
64 logger = logging.getLogger('wic')
65 logger.setLevel(logging.INFO)
66
67 handler = logging.StreamHandler()
68
69 formatter = logging.Formatter('%(levelname)s: %(message)s')
70 handler.setFormatter(formatter)
71
72 logger.addHandler(handler)
73
74 return logger
75
76logger = wic_logger()
77
61def rootfs_dir_to_args(krootfs_dir): 78def rootfs_dir_to_args(krootfs_dir):
62 """ 79 """
63 Get a rootfs_dir dict and serialize to string 80 Get a rootfs_dir dict and serialize to string
@@ -125,12 +142,12 @@ def wic_create_subcommand(args, usage_str):
125 (options, args) = parser.parse_args(args) 142 (options, args) = parser.parse_args(args)
126 143
127 if len(args) != 1: 144 if len(args) != 1:
128 logging.error("Wrong number of arguments, exiting\n") 145 logger.error("Wrong number of arguments, exiting\n")
129 parser.print_help() 146 parser.print_help()
130 sys.exit(1) 147 sys.exit(1)
131 148
132 if options.build_rootfs and not bitbake_main: 149 if options.build_rootfs and not bitbake_main:
133 logging.error("Can't build roofs as bitbake is not in the $PATH") 150 logger.error("Can't build roofs as bitbake is not in the $PATH")
134 sys.exit(1) 151 sys.exit(1)
135 152
136 if not options.image_name: 153 if not options.image_name:
@@ -142,8 +159,8 @@ def wic_create_subcommand(args, usage_str):
142 if not val: 159 if not val:
143 missed.append(opt) 160 missed.append(opt)
144 if missed: 161 if missed:
145 print("The following build artifacts are not specified:") 162 logger.error("The following build artifacts are not specified: %s",
146 print(" " + ", ".join(missed)) 163 ", ".join(missed))
147 sys.exit(1) 164 sys.exit(1)
148 165
149 if options.image_name: 166 if options.image_name:
@@ -154,23 +171,22 @@ def wic_create_subcommand(args, usage_str):
154 if options.vars_dir: 171 if options.vars_dir:
155 BB_VARS.vars_dir = options.vars_dir 172 BB_VARS.vars_dir = options.vars_dir
156 173
157 if options.build_check: 174 if options.build_check and not engine.verify_build_env():
158 print("Checking basic build environment...") 175 logger.error("Couldn't verify build environment, exiting\n")
159 if not engine.verify_build_env(): 176 sys.exit(1)
160 print("Couldn't verify build environment, exiting\n")
161 sys.exit(1)
162 else:
163 print("Done.\n")
164 177
165 bootimg_dir = "" 178 bootimg_dir = ""
166 179
180 if options.debug:
181 logger.setLevel(logging.DEBUG)
182
167 if options.image_name: 183 if options.image_name:
168 if options.build_rootfs: 184 if options.build_rootfs:
169 argv = ["bitbake", options.image_name] 185 argv = ["bitbake", options.image_name]
170 if options.debug: 186 if options.debug:
171 argv.append("--debug") 187 argv.append("--debug")
172 188
173 print("Building rootfs...\n") 189 logger.info("Building rootfs...\n")
174 if bitbake_main(BitBakeConfigParameters(argv), 190 if bitbake_main(BitBakeConfigParameters(argv),
175 cookerdata.CookerConfiguration()): 191 cookerdata.CookerConfiguration()):
176 sys.exit(1) 192 sys.exit(1)
@@ -181,18 +197,18 @@ def wic_create_subcommand(args, usage_str):
181 "wic-tools", cache=False) 197 "wic-tools", cache=False)
182 else: 198 else:
183 if options.build_rootfs: 199 if options.build_rootfs:
184 print("Image name is not specified, exiting. (Use -e/--image-name to specify it)\n") 200 logger.error("Image name is not specified, exiting. (Use -e/--image-name to specify it)\n")
185 sys.exit(1) 201 sys.exit(1)
186 native_sysroot = options.native_sysroot 202 native_sysroot = options.native_sysroot
187 203
188 if not native_sysroot or not os.path.isdir(native_sysroot): 204 if not native_sysroot or not os.path.isdir(native_sysroot):
189 print("Building wic-tools...\n") 205 logger.info("Building wic-tools...\n")
190 if bitbake_main(BitBakeConfigParameters("bitbake wic-tools".split()), 206 if bitbake_main(BitBakeConfigParameters("bitbake wic-tools".split()),
191 cookerdata.CookerConfiguration()): 207 cookerdata.CookerConfiguration()):
192 sys.exit(1) 208 sys.exit(1)
193 native_sysroot = get_bitbake_var("RECIPE_SYSROOT_NATIVE", "wic-tools") 209 native_sysroot = get_bitbake_var("RECIPE_SYSROOT_NATIVE", "wic-tools")
194 if not native_sysroot: 210 if not native_sysroot:
195 print("Unable to find the location of the native tools sysroot to use\n") 211 logger.info("Unable to find the location of the native tools sysroot to use\n")
196 sys.exit(1) 212 sys.exit(1)
197 213
198 wks_file = args[0] 214 wks_file = args[0]
@@ -200,7 +216,7 @@ def wic_create_subcommand(args, usage_str):
200 if not wks_file.endswith(".wks"): 216 if not wks_file.endswith(".wks"):
201 wks_file = engine.find_canned_image(scripts_path, wks_file) 217 wks_file = engine.find_canned_image(scripts_path, wks_file)
202 if not wks_file: 218 if not wks_file:
203 print("No image named %s found, exiting. (Use 'wic list images' "\ 219 logger.error("No image named %s found, exiting. (Use 'wic list images' "\
204 "to list available images, or specify a fully-qualified OE "\ 220 "to list available images, or specify a fully-qualified OE "\
205 "kickstart (.wks) filename)\n" % args[0]) 221 "kickstart (.wks) filename)\n" % args[0])
206 sys.exit(1) 222 sys.exit(1)
@@ -213,16 +229,16 @@ def wic_create_subcommand(args, usage_str):
213 kernel_dir = options.kernel_dir 229 kernel_dir = options.kernel_dir
214 native_sysroot = options.native_sysroot 230 native_sysroot = options.native_sysroot
215 if rootfs_dir and not os.path.isdir(rootfs_dir): 231 if rootfs_dir and not os.path.isdir(rootfs_dir):
216 print("--roofs-dir (-r) not found, exiting\n") 232 logger.error("--roofs-dir (-r) not found, exiting\n")
217 sys.exit(1) 233 sys.exit(1)
218 if not os.path.isdir(bootimg_dir): 234 if not os.path.isdir(bootimg_dir):
219 print("--bootimg-dir (-b) not found, exiting\n") 235 logger.error("--bootimg-dir (-b) not found, exiting\n")
220 sys.exit(1) 236 sys.exit(1)
221 if not os.path.isdir(kernel_dir): 237 if not os.path.isdir(kernel_dir):
222 print("--kernel-dir (-k) not found, exiting\n") 238 logger.error("--kernel-dir (-k) not found, exiting\n")
223 sys.exit(1) 239 sys.exit(1)
224 if not os.path.isdir(native_sysroot): 240 if not os.path.isdir(native_sysroot):
225 print("--native-sysroot (-n) not found, exiting\n") 241 logger.error("--native-sysroot (-n) not found, exiting\n")
226 sys.exit(1) 242 sys.exit(1)
227 else: 243 else:
228 not_found = not_found_dir = "" 244 not_found = not_found_dir = ""
@@ -235,12 +251,11 @@ def wic_create_subcommand(args, usage_str):
235 if not_found: 251 if not_found:
236 if not not_found_dir: 252 if not not_found_dir:
237 not_found_dir = "Completely missing artifact - wrong image (.wks) used?" 253 not_found_dir = "Completely missing artifact - wrong image (.wks) used?"
238 print("Build artifacts not found, exiting.") 254 logger.error("Build artifacts not found, exiting.")
239 print(" (Please check that the build artifacts for the machine") 255 logger.info(" (Please check that the build artifacts for the machine")
240 print(" selected in local.conf actually exist and that they") 256 logger.info(" selected in local.conf actually exist and that they")
241 print(" are the correct artifacts for the image (.wks file)).\n") 257 logger.info(" are the correct artifacts for the image (.wks file)).\n")
242 print("The artifact that couldn't be found was %s:\n %s" % \ 258 logger.info("The artifact that couldn't be found was %s:\n %s", not_found, not_found_dir)
243 (not_found, not_found_dir))
244 sys.exit(1) 259 sys.exit(1)
245 260
246 krootfs_dir = options.rootfs_dir 261 krootfs_dir = options.rootfs_dir
@@ -250,7 +265,7 @@ def wic_create_subcommand(args, usage_str):
250 265
251 rootfs_dir = rootfs_dir_to_args(krootfs_dir) 266 rootfs_dir = rootfs_dir_to_args(krootfs_dir)
252 267
253 print("Creating image(s)...\n") 268 logger.info("Creating image(s)...\n")
254 engine.wic_create(wks_file, rootfs_dir, bootimg_dir, kernel_dir, 269 engine.wic_create(wks_file, rootfs_dir, bootimg_dir, kernel_dir,
255 native_sysroot, options) 270 native_sysroot, options)
256 271
@@ -264,7 +279,7 @@ def wic_list_subcommand(args, usage_str):
264 args = parser.parse_args(args)[1] 279 args = parser.parse_args(args)[1]
265 280
266 if not engine.wic_list(args, scripts_path): 281 if not engine.wic_list(args, scripts_path):
267 logging.error("Bad list arguments, exiting\n") 282 logger.error("Bad list arguments, exiting\n")
268 parser.print_help() 283 parser.print_help()
269 sys.exit(1) 284 sys.exit(1)
270 285
@@ -301,10 +316,6 @@ subcommands = {
301} 316}
302 317
303 318
304def start_logging(loglevel):
305 logging.basicConfig(filename='wic.log', filemode='w', level=loglevel)
306
307
308def main(argv): 319def main(argv):
309 parser = optparse.OptionParser(version="wic version %s" % __version__, 320 parser = optparse.OptionParser(version="wic version %s" % __version__,
310 usage=hlp.wic_usage) 321 usage=hlp.wic_usage)
@@ -326,6 +337,6 @@ if __name__ == "__main__":
326 try: 337 try:
327 sys.exit(main(sys.argv[1:])) 338 sys.exit(main(sys.argv[1:]))
328 except WicError as err: 339 except WicError as err:
329 print("ERROR:", err, file=sys.stderr) 340 logger.error(err)
330 sys.exit(1) 341 sys.exit(1)
331 342