ERROR: postmarketos-base-downstream-disable-udev-v4l-2-r1: trying to overwrite usr/lib/udev/rules.d/60-persistent-v4l.rules owned by systemd-udevd-257.5-r0.
alpine-base directly depends on openrc. We have had different[1]
conversations[2] with upstream. And the main conclussion[3] has been:
if you want to do something different, just depend on things
yourself. This is indeed what docker images do. So let's just get the
things that we want from alpine base (quite some!), and ignore what we
don't want (openrc, busybox openrc and init packages). Up until commit
12d125ab8b72f0249fd6aae000170a4fa78a83ab in pmbootstrap every
postmarketOS installation would have alpine-base in
/etc/apk/world. Therefore, we add a versioned provides to
postmarketos-base with a very high version, which conflicts with the
upstream version but should be chosen instead.
alpine-conf is now a dependency of postmarketos-base-openrc, since it
dependes on openrc for calling setup-*
scripts. postmarketos-base-systemd already implements those needed.
Contrary to the first attempt[4], I have kept the dependency on
alpine-release. Changes to that are independent to the usr-merge, and
can be done as a follow-up.
This should allow to drop the fork of alpine-base currently in the
systemd-extra repository!
To this day, every single pmOS installation will have alpine-base in
the world file, which means that systemd installs will the forked
package until users specifically run "apk del alpine-base". We must
add this to release notes and to an edge blog post. Alternatively we
could have an empty package with a very high version providing
alpine-base. This also means that to get installs to work, we need a
pmbootstrap release with[5] on it.
[1] https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/63935
[2] https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/71686
[3] https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/71686#note_435428
[4] https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/5026
[5] https://gitlab.postmarketos.org/postmarketOS/pmbootstrap/-/merge_requests/2580Fixes#2806
Part-of: https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/6475
Why is this needed?
To be able to test the usr-merge downstream we need to stop
depending on alpine-baselayout. For that, we need to stop depending on
alpine-base. This is a first step to create a "provides" solution
downstream between openrc and systemd systems, so that in a follow-up
commit we can recreate alpine-base downstream without the hard-coded
openrc dependency. The virtual instead of a versioned dependency means
that:
* In theory systemd and openrc could be installed in parallel. In
practice we avoid that with !openrc in the systemd package and
!systemd in the postmarketos-base-openrc one. There is a lot more
work required with provides (both upstream and downstream) regarding
things like elogind and eudev to be able to even have them
package-wise ready to be installed in parallel
* There must always be one installed. Here we have 3 scenarios:
* pmbootstrap install where pmbootstrap will decide which one
* update from existing install. The virtual makes sure that APK
won't remove the local package because versions changed
* Manual APK work, where the provider_priority or the user will
choose
How does this work? Hypothesis:
* openrc upgrades: the postmarketos-base-openrc remains installed,
moves from being an "install_if", to be there because it fulfills
the postmarketos-base-init requirements.
* systemd upgrades: postmarketos-base-systemd is still in
/etc/apk/world, and it fulfills the new dependency in
postmarketos-base. Nothing happens.
* openrc installs: pmbootstrap will choose one of
postmarketos-base-openrc and postmarketos-base-systemd... But which?
The one with the higher version?
* systemd installs: postmarketos-base-systemd is installed before
anything else is. That means, postmarketos-base-init will already
be satisfied when postmarketos-base gets installed, and openrc will
not be installed
Part-of: https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/6475
This is inconsistent through the file. In addition, the "_" prefix is
often used when a function is not directly a split function from a
subpackage, but a "private" function that others call. So remove it to
make it clear that these are subpackage split functions
Part-of: https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/6475
The value after the colon is defines to apply only to the
XDG_CURRENT_DESKTOP. Phosh upstream defines it for setting a yellow
accent color and no background image, and therefore takes priority if we
don't enforce it to the XDG_CURRENT_DESKTOP value aswell.
Part-of: https://gitlab.postmarketos.org/postmarketos/pmaports/-/merge_requests/6479
The value after the colon is defines to apply only to the
XDG_CURRENT_DESKTOP. Phosh upstream defines it for setting a yellow
accent color and no background image, and therefore takes priority if we
don't enforce it to the XDG_CURRENT_DESKTOP value aswell.
Part-of: https://gitlab.postmarketos.org/postmarketos/pmaports/-/merge_requests/6479
This helps ensure the logs are actually flushed.
The numbers chosen are relatively arbitrary, and it might be that using
a longer delay, maybe with more messages too, is desirable.
Right now, it's printing 20 times over a span of 2 seconds.
The whole `precision` schtick is how we can approximate float division,
when using only integer division. Then, the important trick is to shove
the given number back into the correct representation for `sleep`, and
careful `printf` application gives us exactly what we need.
Signed-off-by: Samuel Dionne-Riel <samuel@dionne-riel.com>
Part-of: https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/6335
[ci:skip-build]: already built successfully in CI
- Point shellcheck to the files this is sourcing
- Tell it about the shell in use
- Drop unused variable (grepped around)
The last change is about how the hooks are ran. The warning shellcheck
was giving was that using `if <command...>; then ...; fi` is preferred,
instead of comparing `$?`.
This is exactly what is now being done, so the branches have been
swapped around, and the command (full path to a hook) is being used
within the if condition.
Signed-off-by: Samuel Dionne-Riel <samuel@dionne-riel.com>
Part-of: https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/6335
alpine-base directly depends on openrc. We have had different[1]
conversations[2] with upstream. And the main conclussion[3] has been:
if you want to do something different, just depend on things
yourself. This is indeed what docker images do. So let's just get the
things that we want from alpine base (quite some!), and ignore what we
don't want (openrc, busybox openrc and init packages). alpine-conf is
now a dependency of postmarketos-base-openrc, since it dependes on
openrc for calling setup-* scripts. postmarketos-base-systemd already
implements those needed.
Contrary to the first attempt[4], I have kept the dependency on
alpine-release. Changes to that are independent to the usr-merge, and
can be done as a follow-up.
This should allow to drop the fork of alpine-base currently in the
systemd-extra repository!
To this day, every single pmOS installation will have alpine-base in
the world file, which means that systemd installs will the forked
package until users specifically run "apk del alpine-base". We must
add this to release notes and to an edge blog post. Alternatively we
could have an empty package with a very high version providing
alpine-base.
[1] https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/63935
[2] https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/71686
[3] https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/71686#note_435428
[4] https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/5026
Part-of: https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/6375
Why is this needed?
To be able to test the usr-merge downstream we need to stop
depending on alpine-baselayout. For that, we need to stop depending on
alpine-base. This is a first step to create a "provides" solution
downstream between openrc and systemd systems, so that in a follow-up
commit we can recreate alpine-base downstream without the hard-coded
openrc dependency. The virtual instead of a versioned dependency means
that:
* In theory systemd and openrc could be installed in parallel. In
practice we avoid that with !openrc in the systemd package and
!systemd in the postmarketos-base-openrc one. There is a lot more
work required with provides (both upstream and downstream) regarding
things like elogind and eudev to be able to even have them
package-wise ready to be installed in parallel
* There must always be one installed. Here we have 3 scenarios:
* pmbootstrap install where pmbootstrap will decide which one
* update from existing install. The virtual makes sure that APK
won't remove the local package because versions changed
* Manual APK work, where the provider_priority or the user will
choose
How does this work? Hypothesis:
* openrc upgrades: the postmarketos-base-openrc remains installed,
moves from being an "install_if", to be there because it fulfills
the postmarketos-base-init requirements.
* systemd upgrades: postmarketos-base-systemd is still in
/etc/apk/world, and it fulfills the new dependency in
postmarketos-base. Nothing happens.
* openrc installs: pmbootstrap will choose one of
postmarketos-base-openrc and postmarketos-base-systemd... But which?
The one with the higher version?
* systemd installs: postmarketos-base-systemd is installed before
anything else is. That means, postmarketos-base-init will already
be satisfied when postmarketos-base gets installed, and openrc will
not be installed
Part-of: https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/6375
This is inconsistent through the file. In addition, the "_" prefix is
often used when a function is not directly a split function from a
subpackage, but a "private" function that others call. So remove it to
make it clear that these are subpackage split functions
Part-of: https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/6375
MR 6417 added a workaround for a GTK4 issue in flatpak by setting
GSK_RENDERER=ngl for all Qualcomm devices. This is now causing crashes on
many of the older Qualcomm devices that specifically avoid usage of the ngl
renderer. These devices already set a custom GSK_RENDERER in /etc/profile.d
(e.g. on MSM8916 devices: gl in v24.12, cairo in edge).
Several device packages install those settings into /etc/profile.d/adreno*
so let's avoid the conflict for now by reducing the priority of the flatpak
workaround and installing it to /etc/profile.d/99-flatpak*. That way the
setting from the device packages takes priority.
Part-of: https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/6434
This removes the audio-none subpkg, and the dependency that
postmarketos-base-ui had on it.
This renames the pmos-base-ui-audio virtual that the pw and pa backends
provided to `postmarketos-base-ui-audio-backend`.
To allow UIs to select no audio components, a new pmos-base-ui-audio
subpkg was added. UIs that need audio should depend on the virtual
pkg `postmarketos-base-ui-audio`. UIs that don't want audio can simply
depend on postmarketos-ui-base and no audio stuff will be pulled in.
Part-of: https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/6408
This reverts commit e2557598d7. The patch
caused installs to fail where the device package explicitly depends on
postmarketos-base-ui-audio-pipewire:
ERROR: unable to select packages:
postmarketos-base-ui-audio-pipewire-35-r0:
conflicts: postmarketos-base-ui-audio-none-35-r0[postmarketos-base-ui-audio=35-r0]
satisfies: device-xiaomi-nabu-5-r0[postmarketos-base-ui-audio-pipewire]
postmarketos-base-ui-35-r0[postmarketos-base-ui-audio]
postmarketos-base-ui-audio-none-35-r0:
conflicts: postmarketos-base-ui-audio-pipewire-35-r0[postmarketos-base-ui-audio=35-r0]
satisfies: world[postmarketos-base-ui-audio-none]
postmarketos-base-ui-35-r0[postmarketos-base-ui-audio]
I've also tried to move the postmarketos-base-ui-audio-pipewire
dependency into a subpackage that doesn't get installed when
postmarketos-ui-console gets installed. But that did *not* work:
audio() {
# This does NOT work!
install_if="$pkgname=$pkgver-r$pkgrel postmarketos-base-ui !postmarketos-ui-console"
mkdir "$subpkgdir"
}
It could work if postmarketos-ui-console did not depend on
postmarketos-base-ui, maybe that should be looked at in a follow-up
patch. Or just install the audio stack and require the user to do
UI=none if they want a really minimal system. Let's revert the patch now
to fix failing installs in bpo, e.g. master:xiaomi-nabu:console.
Part-of: https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/6408
This is used by the DE's upstream (popOS), and works reasonably well so
let's install it by default so that apps that depend on secret manager
things work OOTB.
[ci:skip-build]: already built successfully in CI
[ci:skip-vercheck]
Part-of: https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/6410