Merge branch 'fix/1608-bootimg-analyze-force' into 'master'
pmb: add -f (force) parameter to bootimg_analyze We are analyzing the `boot.img` with `file` before we send it to `unpackbootimg`. File does not recognize all kinds of `boot.img` files, which `unpackbootimg` can extract, so we need a way to skip this check. Details: * Add `-f` parameter, continues extraction with a warning if the file seems to be invalid * Tell the user that `-f` can be used if the `boot.img` is invalid and it's not specified * Consistent spelling of `boot.img` instead of `bootimg` in messages Fixes #1608 See merge request postmarketOS/pmbootstrap!1619
This commit is contained in:
commit
b14862f143
|
@ -437,6 +437,9 @@ def arguments():
|
|||
bootimg_analyze = sub.add_parser("bootimg_analyze", help="Extract all the"
|
||||
" information from an existing boot.img")
|
||||
bootimg_analyze.add_argument("path", help="path to the boot.img")
|
||||
bootimg_analyze.add_argument("--force", "-f", action="store_true",
|
||||
help="force even if the file seems to be"
|
||||
" invalid")
|
||||
|
||||
# Use defaults from the user's config file
|
||||
args = parser.parse_args()
|
||||
|
|
|
@ -38,12 +38,22 @@ def bootimg(args, path):
|
|||
file_output = pmb.chroot.user(args, ["file", "-b", "boot.img"], working_dir=temp_path,
|
||||
return_stdout=True).rstrip()
|
||||
if "android bootimg" not in file_output.lower():
|
||||
if "linux kernel" in file_output.lower():
|
||||
raise RuntimeError("File is a Kernel image, you might need the 'heimdall-isorec'"
|
||||
" flash method. See also: "
|
||||
"<https://wiki.postmarketos.org/wiki/Deviceinfo_flash_methods>")
|
||||
if "force" in args and args.force:
|
||||
logging.warning("WARNING: boot.img file seems to be invalid, but"
|
||||
" proceeding anyway (-f specified)")
|
||||
else:
|
||||
raise RuntimeError("File is not an Android bootimg. (" + file_output + ")")
|
||||
logging.info("NOTE: If you are sure that your file is a valid"
|
||||
" boot.img file, you could force the analysis"
|
||||
" with: 'pmbootstrap bootimg_analyze " + path +
|
||||
" -f'")
|
||||
if "linux kernel" in file_output.lower():
|
||||
raise RuntimeError("File is a Kernel image, you might need the"
|
||||
" 'heimdall-isorec' flash method. See also:"
|
||||
" <https://wiki.postmarketos.org/wiki/"
|
||||
"Deviceinfo_flash_methods>")
|
||||
else:
|
||||
raise RuntimeError("File is not an Android boot.img. (" +
|
||||
file_output + ")")
|
||||
|
||||
# Extract all the files
|
||||
pmb.chroot.user(args, ["unpackbootimg", "-i", "boot.img"], working_dir=temp_path)
|
||||
|
|
|
@ -56,7 +56,7 @@ def test_bootimg_kernel(args):
|
|||
def test_bootimg_invalid_file(args):
|
||||
with pytest.raises(RuntimeError) as e:
|
||||
pmb.parse.bootimg(args, __file__)
|
||||
assert "File is not an Android bootimg" in str(e.value)
|
||||
assert "File is not an Android boot.img" in str(e.value)
|
||||
|
||||
|
||||
def test_bootimg_normal(args):
|
||||
|
|
Loading…
Reference in New Issue