Skip to content

pmbootstrap lint: avoid looping and copying files

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: pmaports#564 (closed)

Edited by Johannes Marbach

Merge request reports