forked from Mirror/pmbootstrap
pmbootstrap init: kernel selection / remove linux-pmos-lts (#1363)
* As discussed in IRC/matrix, we're removing `linux-postmarketos-lts` for now. The kernel isn't used right now, and we save lots of maintenance effort with not updating it every week or so. * new config option `"kernel"` with possible values: `"downstream", "mainline", "stable"` (downstream is always `linux-$devicename`) * ask for the kernel during `pmbootstrap init` if the device package has kernel subpackages and install it in `_install.py` * postmarketos-mkinitfs: display note instead of exit with error when the `deviceinfo_dtb` file is missing (because we expect it to be missing for downstream kernels) * device-sony-amami: * add kernel subpackages for downstream, mainline * set `deviceinfo_dtb` * device-qemu-amd64: add kernel subpackages for stable, lts, mainline * test cases and test data for new functions * test case that checks all aports for right usage of the feature: * don't mix specifying kernels in depends *and* subpackages * 1 kernel in depends is maximum * kernel subpackages must have a valid name * Test if devices packages reference at least one kernel * Remove `_build_device_depends_note()` which informs the user that `--ignore-depends` can be used with device packages to avoid building the kernel. The idea was to make the transition easier after a change we did months ago, and now the kernel doesn't always get built before building the device package so it's not relevant anymore. * pmb/chroot/other.py: * Add autoinstall=True to kernel_flavors_installed(). When the flag is set, the function makes sure that at least one kernel for the device is installed. * Remove kernel_flavor_autodetect() function, wherever it was used, it has been replaced with kernel_flavors_installed()[0]. * pmb.helpers.frontend.py: remove code to install at least one kernel, kernel_flavors_installed() takes care of that now.
This commit is contained in:
parent
b7d4e2c11e
commit
b66b5dcc34
23 changed files with 334 additions and 17042 deletions
|
@ -44,41 +44,16 @@ import pmb.parse
|
|||
import pmb.qemu
|
||||
|
||||
|
||||
def _build_device_depends_note(args, pkgname):
|
||||
"""
|
||||
Previously 'pmbootstrap build device-...' built the device package in the
|
||||
native chroot without installing its dependencies (e.g. armhf kernel!) and
|
||||
created a symlink to all supported architectures.
|
||||
|
||||
Not installing depends while building is incompatible with how Alpine's
|
||||
abuild does it, so we changed the behavior. Now pmbootstrap reads the
|
||||
device's architecture from the deviceinfo file and automatically builds
|
||||
for that architecture, if you did not specify any architecture. And the
|
||||
dependencies get installed correctly before the build.
|
||||
|
||||
To make migration easier for the users, we show a hint if building a device
|
||||
package was requested.
|
||||
"""
|
||||
# Only relevant for device packages when -i is not set
|
||||
if not pkgname.startswith("device-") or getattr(args, "ignore_depends"):
|
||||
return
|
||||
|
||||
device = pkgname.split("-", 1)[1]
|
||||
logging.info("NOTE: " + device + "'s kernel will be installed as dependency"
|
||||
" before building (old behavior: 'pmbootstrap build -i')")
|
||||
|
||||
|
||||
def _parse_flavor(args):
|
||||
"""
|
||||
Verify the flavor argument if specified, or return a default value.
|
||||
"""
|
||||
# Make sure, that at least one kernel is installed
|
||||
# Install at least one kernel and get installed flavors
|
||||
suffix = "rootfs_" + args.device
|
||||
pmb.chroot.apk.install(args, ["device-" + args.device], suffix)
|
||||
flavors = pmb.chroot.other.kernel_flavors_installed(args, suffix)
|
||||
|
||||
# Parse and verify the flavor argument
|
||||
flavor = args.flavor
|
||||
flavors = pmb.chroot.other.kernel_flavors_installed(args, suffix)
|
||||
if flavor:
|
||||
if flavor not in flavors:
|
||||
raise RuntimeError("No kernel installed with flavor " + flavor + "!" +
|
||||
|
@ -116,11 +91,6 @@ def build(args):
|
|||
if args.strict:
|
||||
pmb.chroot.zap(args, False)
|
||||
|
||||
# Detect old usage for device- packages
|
||||
if not args.ignore_depends:
|
||||
for package in args.packages:
|
||||
_build_device_depends_note(args, package)
|
||||
|
||||
# Set src and force
|
||||
src = os.path.realpath(os.path.expanduser(args.src[0])) if args.src else None
|
||||
force = True if src else args.force
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue