diff options
| -rwxr-xr-x | scripts/wic | 77 |
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 | |||
| 58 | from wic import engine | 58 | from wic import engine |
| 59 | from wic import help as hlp | 59 | from wic import help as hlp |
| 60 | 60 | ||
| 61 | |||
| 62 | def 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 | |||
| 76 | logger = wic_logger() | ||
| 77 | |||
| 61 | def rootfs_dir_to_args(krootfs_dir): | 78 | def 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 | ||
| 304 | def start_logging(loglevel): | ||
| 305 | logging.basicConfig(filename='wic.log', filemode='w', level=loglevel) | ||
| 306 | |||
| 307 | |||
| 308 | def main(argv): | 319 | def 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 | ||
