Skip to content

Introduce support for "unmaintained" devices

Minecrell requested to merge unmaintained into master

Back when we introduced the device categorization, we also documented an "unmaintained" category with the following description:

Known broken device ports are stored here, binary packages are not built for these. The rationale is, that it is easier to restore ports from such an unmaintained dir.

However, we never started to make use of this category. I think part of the reason is that we generally try to keep packages building at least. And I think that's a good thing, having some packages that are never built would just make them more and more broken (e.g. if we add some new required deviceinfo attribute).

Motivation

I'm looking for a better category for device ports that should generally not be used, but that are occasionally useful for testing. This sounds weird, but one example for this is bq-picmt (in testing). It's actually for exactly the same device as bq-paella (in community) except that it uses the downstream kernel instead of mainline. The downstream port isn't really maintained, but it has been useful occasionally when trying to get features working on mainline.

I cannot use kernel variants (instead of a separate device package) in this case because:

  • The downstream kernel uses a different architecture than mainline (bq-paella is aarch64, bq-picmt is armv7).
  • There is no way to have only the mainline kernel in community.

I have a few more such downstream ports for other devices. Every time I need them I have to go search for them in some branch (if I saved them at all) and then update them if necessary (e.g. with deviceinfo_chassis at some point). That's kind of annoying so I would like to have them in pmaports if possible.

However, I would also like to make it clear that they should normally not be used unless you know what you are doing (e.g. to test something). For that, my idea was to:

  • Put them into the unmaintained category (not sure about the naming, unsupported could also work).
  • Hide them in pmbootstrap init, but allow selecting them by typing the device name explicitly.
  • Make pmbootstrap init explain why the device is unmaintained and ask for confirmation.
    • This works by having a # Unmaintained: <reason> comment in the APKBUILD, similar to # Maintainer: <maintainer>.

I think it's useful to build them on bpo, so otherwise unmaintained is much like testing.

Example

This pmaports MR (together with the pmbootstrap one) implements this functionality. Here is how it looks for bq-paella-downstream:

bq-paella-downstream does not show up in the device list:

Vendor [qemu]: bq
Available codenames (3): chaozu, gohan, paella

... however, I can select it manually by entering the name. In that case, pmbootstrap warns and asks for confirmation with the reason specified in the APKBUILD:

Device codename: paella-downstream
WARNING: bq-paella-downstream is unmaintained: Downstream port, only for testing. Use mainline port (bq-paella)!
Continue? (y/n) [n]:

If I say y explicitly the device is selected, otherwise it asks for a new device.


Also see commit log for an explanation of the actual changes. Overall, I think these device port should be placed in some different category, but I'm not entirely sure if unmaintained is the best name for it.

Merge request reports