pmbootstrap will now perform strict builds of packages by default, which was previously opt-in behavior enabled either by invoking it with the --strict flag or by setting pmb:strict in the APKBUILD for a package. The change for this was merged to pmbootstrap's main branch today and will be shipping in the next minor release, probably 3.11.0.
Previously, strict mode would zap all chroots before or after building a package, which included e.g. the rootfs used for pmbootstrap install. This was error-prone and re-initializing all of the chroots multiple times made the strict mode quite a bit slower than usual.
This has now been improved: pmbootstrap now only zaps chroots used for package building in strict mode, which fixes several issues and makes it faster than before.
Strict mode greatly improves the correctness of pmbootstrap. Previously, dependencies installed for an earlier build of a package were left installed in the chroot used for building, even for subsequent builds of other packages. This resulted in inconsistent behavior; for example, building a package that had a build dependency on Rust and subsequently compiling a kernel that did not declare a dependency on Rust would result in a kernel configuration that stated Rust was available, even though it wasn't intended to be. With strict mode, the build chroots are always fresh and the build environment deterministic.
Due to the change of defaults, the --strict flag is now deprecated and has no effect. A new flag, --lax, has been added, which restores the previous default behavior.
If you run into issues that you believe to be related to this change, please open an issue in the pmbootstrap issue tracker.
Related:
- !2939: pmb.build: Make strict the default behavior