forked from Mirror/pmbootstrap
pmbootstrap lint: avoid looping and copying files (MR 2100)
Before this commit, package folders were copied into the chroot one by one in order to run apkbuild-lint on them. This logic is replaced by mounting pmaports.git into the chroot and using a single apkbuild-lint invocation to lint the supplied packages. Both of these changes result in a performance improvement, especially when linting multiple packages at once. Before this change: $ time ./pmbootstrap.py -q lint $(cd ../pmaports/cross; echo *) \ > /dev/null real 0m5,261s user 0m7,046s sys 0m1,842s Using the pmaports.git mount but calling apkbuild-lint in a loop: $ time ./pmbootstrap.py -q lint $(cd ../pmaports/cross; echo *) \ > /dev/null real 0m4,089s user 0m6,418s sys 0m1,219s After this change: $ time ./pmbootstrap.py -q lint $(cd ../pmaports/cross; echo *) \ > /dev/null real 0m3,518s user 0m5,968s sys 0m0,959s Additionally, running apkbuild-lint from the pmaports.git mount point has the benefit that every printed violation contains a nice source identifier à la "./cross/grub-x86/APKBUILD". This makes it possible to differentiate between different packages even though only a single apkbuild-lint invocation is used. Relates: postmarketOS/pmaports#564
This commit is contained in:
parent
0b95779e30
commit
ac4c967e18
5 changed files with 48 additions and 16 deletions
|
@ -32,7 +32,7 @@ def test_pmbootstrap_lint(args, tmpdir):
|
|||
shutil.copyfile(apkbuild_orig, apkbuild_tmp)
|
||||
|
||||
# Lint passes
|
||||
assert pmb.helpers.lint.check(args, "hello-world") == ""
|
||||
assert pmb.helpers.lint.check(args, ["hello-world"]) == ""
|
||||
|
||||
# Change "pmb:cross-native" to non-existing "pmb:invalid-opt"
|
||||
pmb.helpers.run.user(args, ["sed", "s/pmb:cross-native/pmb:invalid-opt/g",
|
||||
|
@ -40,4 +40,4 @@ def test_pmbootstrap_lint(args, tmpdir):
|
|||
|
||||
# Lint error
|
||||
err_str = "invalid option 'pmb:invalid-opt'"
|
||||
assert err_str in pmb.helpers.lint.check(args, "hello-world")
|
||||
assert err_str in pmb.helpers.lint.check(args, ["hello-world"])
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue