This runs 'kconfig generate' for all archs that the generic kernels
support in order to make sure that kconfig-generic.toml changes are
valid for everything for the kernels it would apply to. This is meant
to catch kconfig changes that might introduce options that don't exist
on some kernel/arch combos or that might be missing other kconfig
dependencies.
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/9250>
This fixes a bug where template presets with a specified instance were
not being handled. The install script previously parsed the entire line,
including the instance(s) and ran 'systemctl preset' on it all, e.g.
'systemctl preset unudhcpd@.service usb0'.
The script will now:
- detect lines that contain a template + instance(s)
- diff the instances
- run preset on template@instance for all added or removed instances
Template presets that don't have any instances specified in the preset
file (because they have a DefaultInstance= set) are treated just like
any other unit since we can run preset on those and it enables the
template with the default instance.
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/9026>
This adds support in the generic kernels for Steam Deck:
- Audio
- Wifi (rtw88)
- Ambient light sensor
- Deck controller/FF
- Touchscreen
Options in the new 'platform' category are things that the above drivers
required to be enabled in the kernel. Tested on my LCD Steam Deck.
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/9161>
I no longer wish to maintain this, and IIUC devices that use this would
be better off using mainline kernels at this point[1].
1. camera support isn't upstream yet but I have *never* been able to
rely on my x13s's camera even with this kernel so I think it's fine to
wait for proper mainline support
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8846>
This adds two new subpackages, one pulls in in gnome software and the
other pulls in bazaar. Both subpackages provide a new virtual
(gnome-app-provider), and the main base GNOME UI pkg now depends on
this virtual. This allows us to ship bazaar in Duranium instead of GNOME
Software, and to continue to use GNOME Software by default on mutable
pmOS.
Previously there was an "optional" dependency on a sw
app provider (gnome-software, via pmb_recommends), but I made it a hard
dependency now because:
1) I think users can expect *some* app store thing to be available
by default, and the number of users who would remove all of them is
probably approaching 0
2) Ignoring pmb_recommends made the rest of this easier to implement,
since I'm not entirely sure how pmb would react to a virtual provided
by the pkg it is processing pmb_recommends for, and I didn't want to
find out.
Fixes#4634
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8831>
These conflicts in the sysext-dev-tools subpkg were intended to prevent
app store plugins from being pulled into the system extension image
(where they would not work as expected and cause confusion.) They were
causing an issue with how packages are snapshot in the duranium build CI
by causing a conflict when it tried to resolve base and sysext package
lists together (so install_if packages were included). The conflict
was from:
error: apk add --simulate failed:
ERROR: unable to select packages:
gnome-software-plugin-apk2-0.0.3-r1:
breaks: postmarketos-duranium-sysext-dev-tools-11-r0[!gnome-software-plugin-apk2]
satisfies: world[gnome-software-plugin-apk]
It's much simpler to just remove these conflicts and add these plugins
to the list of RemovedPackages in duranium's mkosi config so they are
purged before main image is finalized.
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8761>
systemd supports using gcc or clang for bpf compilation, using clang
seems easier since the gcc option requires bpf-gcc and a few other tools
that don't seem to be packaged in Alpine.
This isn't working on ARM (see #4411 ), but we can enable it now for x86
and in preparation for a kernel fix on ARM later.
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8779>
I think it's pretty common to want to manage an eSIM on most modern
phones now, so let's install an eSIM management app by default.
For phones without eSIM support:
- I don't think having this by default is an issue, and users can
uninstall it (it's in pmb_recommends)
- There are eSIM adapters that fit in SIM slots, so this app is relevant
for them
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
[ci:skip-vercheck] - pmb_recommends
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8749>
systemd 261 can now natively detect and mount subpartitions.
Fixes#4544
This also works around an issue where udiskie will prompt for mounting
the /usr partitions on disk, when they are subpartitions. I didn't
file a bug upstream because it's really not clear to me what to blame
(udisks2? udiskie? udev?)
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8660>
Apparently plymouth's config parser can't handle in-line comments. This
also fixes an issue I just noticed where the scale wasn't being parsed
correctly either because 1.0 is not a uint.
../src/libply/ply-key-file.c:427:ply_key_file_get_ulong : group 'Daemon' key 'DeviceScale' val '1.0' is not a valid unsigned number
../src/libply/ply-key-file.c:427:ply_key_file_get_ulong : group 'Daemon' key 'XkbExtraEscButton' val '0x1008ff2a # Power button (XKB_KEY_XF86PowerOff)' is not a valid unsigned number
The additional xkb config is necessary for plymouth to detect the pwr
key press, or else it isn't initialized.
Fixes#4548
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8561>
Without this rule, fb0 doesn't get ID_PATH set in the udev database
and plymouth this to detect that fb0 is backed by a DRM device. This
fixes an issue where plymouth times out and treats fb0 as an independent
display, and creates a second framebuffer renderer, which caused it to
render the splash at the wrong resolution.
These lines were lifted from 71-seat.rules, which are packaged in
systemd-udevd and elogind. They're vendored here because we don't want
to depend on elogind just for a few udev rules. These rules should be
idempotent in the rootfs (setting ID_PATH is guarded by ID_PATH=="" and
IIUC setting an existing TAG is a noop in udev)
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8561>
This merges system extensions in the initramfs, right before
switch_root, so that the rootfs boot always has the full merged /usr
right from the start. It fixes ordering issues like binfmt starting
before /usr/lib/binfmt.d was merged, and ultimately not working as
expected.
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8426>
This will allow folks to easily run mkosi, e.g. for building duranium
images. This makes duranium self-hosting.
There are several key changes in this patch:
- mkosi is added to the duranium developer tools sysext
- user qemu is added to the dev tools sysext (for binfmt+qemu)
- coreutils is added to the main pkg to work around a conflict that Alpine
has with mkosi (see: https://github.com/systemd/mkosi/pull/4283). The
issue is that the busybox symlinks installed in the base duranium image
are not replaced by mkosi when it generates a system extension even if
that sysext pulls in coreutils. coreutils isn't *that* big, so it makes
sense to just have these links correct in the base image.
- duranium dev. tools depends on apk-tools. Wait, what?! mkosi uses
apk to bootstrap a tools tree for building pmOS images. Since we don't
actually want apk to work when run against the duranium rootfs, this
also installs a wrapper that refuses to run apk if it detects that it's
being used "unsafely". To be clear, running apk on duranium's rootfs
won't change /usr or break duranium, but it will: 1) fail, 2) create
confusing state in /etc, /var.
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8426>
It doesn't make sense to install apk by default in all flavors of pmOS,
like duranium. To avoid this, apk-tools is moved into a new -apk
subpackage that is pulled in implicitly via install_if. This has the
following benefits:
- postmarketos-duranium can "depend" on !postmarketos-base-apk to
exclude apk-tools
- apk-tools remains a dependency in existing mutable pmOS installs,
so it shouldn't be purged by this change 🤞
- we don't have to update hundreds of APKBUILDs in pmaports that
explicitly depend on `postmarketos-base` to now depend on some other
package that doesn't have apk-tools as an explicit dependency.
After this change, we'll be able to remove some janky cleanup code in
the duranium image build config for uninstalling apk-tools from the base
image, and it will allow us to *add* apk-tools in a system extension
later [1]
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
1. https://gitlab.postmarketos.org/postmarketOS/pmaports/-/work_items/4502
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8426>
In some cases when the disk is very large (e.g. 2TB) repart will add
extra space to the slot-A usr partition to make it larger. The slot-B
partitions are already pinned with a min/max size so they would stay
the correct size. This pins the slot-A usr partition so it's no longer
grown. This should have been done all along.
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8419>
This uses a new naming convention for partitions. It fixes an issue
where some firmware (i.e. on the OnePlus 6 / 6T) will hang when starting
fastboot mode if it finds a (sub!)partition with a GPT partition label
that's "too long" (25char, in the case of enchilada, well under the 34
char limit in the GPT spec).
By keeping the old partition name match pattern, which *should* help
migrate existing installs after 2 updates (to capture partitions
associated with both "slots"). Given duranium's "wip" status, I don't
think it's strictly necessary to migrate existing installs, but I feel
like this is a good opportunity to see if it's possible to do so. It
might be handy to do in the future and working out how to do that now
seems useful.
This also drops the verity signature partition. According to the UAPI
Discov. Partition Spec (DPS) this partition is not really needed if the
verity hash for the usr partition is in the kernel cmdline and the UKI
is signed (not yet, but one day 🤞). There is one mode where having the
separate partition is useful: verified boot in containers, but this is
outside the scope of duranium.
This partition is tiny (16K) so the space saving is negligible... but
it would be nice to have one less partition to "manage". On existing
installs, this partition will become "foreign" to systemd repart, and
sysupdate will not touch it since it will no longer match any patterns.
fixes#4484
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8408>
The kernel cmdline option is to prevent gnome-initial-setup from
launching, because it doesn't work properly and conflicts with our first
boot setup. On phosh this is technically not necessary since g-i-s won't
try to start there, but adding this to the base gnome UI pkg means I
wouldn't have to add sep. subpackages to gnome and gnome-mobile UI pkgs.
The duranium subpkg also pulls in a plugin for gnome-software so that
g-s can provide a frontend for pulling duranium image updates via
sysupdate.
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8411>
Turns out, a few useful things are gated by this flag that I want to use
in Duranium:
1) bootctl automatically configuring EFI boot entry variables
2) systemd-boot-update.service installation
Let's just re-enable this and strip out the sd-boot stuff already
packaged in Alpine aports, rather than continue to fight the build
system with more patches in pmaports.
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8371>
This adds a script that can be used to set the "channel" for images to
"staging" or "main." "Staging" will come from a separate pipeline in the
duranium mkosi config repo, it may build images with patches or whatever
for testing, and won't be available to users running the "main" channel.
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8330>