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:
Oliver Smith 2018-04-03 23:50:09 +00:00 committed by GitHub
parent b7d4e2c11e
commit b66b5dcc34
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
23 changed files with 334 additions and 17042 deletions

View file

@ -110,6 +110,7 @@ def test_questions_device(args, monkeypatch):
args.device = "lg-mako"
args.nonfree_firmware = True
args.nonfree_userland = False
args.kernel = "downstream"
# Do not generate aports
def fake_generate(args, pkgname):
@ -120,15 +121,36 @@ def test_questions_device(args, monkeypatch):
func = pmb.config.init.ask_for_device
nonfree = {"firmware": True, "userland": False}
fake_answers(monkeypatch, ["lg-mako"])
assert func(args) == ("lg-mako", True, nonfree)
kernel = args.kernel
assert func(args) == ("lg-mako", True, kernel, nonfree)
# Non-existing device, go back, existing device
fake_answers(monkeypatch, ["whoops-typo", "n", "lg-mako"])
assert func(args) == ("lg-mako", True, nonfree)
assert func(args) == ("lg-mako", True, kernel, nonfree)
# New device
fake_answers(monkeypatch, ["new-device", "y"])
assert func(args) == ("new-device", False, nonfree)
assert func(args) == ("new-device", False, kernel, nonfree)
def test_questions_device_kernel(args, monkeypatch):
# Prepare args
args.aports = pmb_src + "/test/testdata/init_questions_device/aports"
args.kernel = "downstream"
# Kernel hardcoded in depends
func = pmb.config.init.ask_for_device_kernel
device = "lg-mako"
assert func(args, device) == args.kernel
# Choose "mainline"
device = "sony-amami"
fake_answers(monkeypatch, ["mainline"])
assert func(args, device) == "mainline"
# Choose "downstream"
fake_answers(monkeypatch, ["downstream"])
assert func(args, device) == "downstream"
def test_questions_device_nonfree(args, monkeypatch):