systemd/systemd: fix the provider mess
This fixes two issues:
1. I was investigating why currently, pmbootstrap build --force
libcamera would fail. It turns out that the problem was possible to
reduce down to apk add eudev-dev resulting in installing eudev-dev
instead of systemd-dev, even with the systemd repository enabled.
This is because apk actually thinks it has a higher version:
name <eudev-dev> selected from selectable list
select_package: eudev-dev (requirers=1, autosel=1, iif=0, order_id=0x40005807)
consider systemd-dev-261_rc4-r0 iif_triggered=0, tag_ok=1, selectable=1, available=1, flags=0x0, provider_priority=100, installed=0
prefer existing package
choose as new provider
consider eudev-dev-3.2.14-r6 iif_triggered=0, tag_ok=1, selectable=1, available=1, flags=0x0, provider_priority=100, installed=0
select latest by requested name (greater)
choose as new provider
consider libudev-zero-dev-1.0.4-r0 iif_triggered=0, tag_ok=1, selectable=1, available=1, flags=0x0, provider_priority=20, installed=0
select latest by requested name (less)
selecting: eudev-dev-3.2.14-r6, available: 1
assign eudev-dev to eudev-dev-3.2.14-r6
disqualify_package: systemd-dev-261_rc4-r0 (conflicting provides)
disqualify_package: libudev-zero-dev-1.0.4-r0 (conflicting provides)
And why is that? It's because we have two providers here: One is
eudev-dev with a provider version of 3.2.14-r6, and the other is
systemd-dev with a provider version that is empty. This then results
in apk thinking the version number is greater, as seen above in the
verbose output. An unversioned provides= for an exact package name
match will never, ever, ever have any effect, even if the priority is
set super high, because the version number comparison is before apk
even starts looking at provider priorities.
Therefore, we should not have unversioned provides for eudev,
eudev-dev, eudev-libs and udev. Since those have fairly low version
numbers, we can just provide them with systemd's version number and
we'll be fine. This will now result in apk actually installing
systemd-dev when eudev-dev is prompted for installation.
2. After fixing the aforementioned issue, I noticed that I couldn't
build anything anymore. This is because my dependency tree would pull
in systemd and systemd-udev - completely normal. However, both
systemd and systemd-udev were providing eudev, and apk will refuse to
install two packages that provide the same thing at the same time.
The fix for this is to just not provide eudev in the top-level
systemd package and rather let systemd-udev do that.
With this, I can now finally build libcamera again!
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8857>
This commit is contained in:
parent
7bc5615daf
commit
fddebb2279
2 changed files with 5 additions and 5 deletions
|
|
@ -6,7 +6,7 @@ pkgname=systemd-stage0
|
|||
pkgver=261_rc4
|
||||
_pkgver="${pkgver/_/-}"
|
||||
# pkgrel must match systemd!
|
||||
pkgrel=0
|
||||
pkgrel=1
|
||||
pkgdesc="Minimal systemd bootstrap package"
|
||||
url="https://github.com/systemd/systemd"
|
||||
# armhf: pmb#2618
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ pkgname=systemd
|
|||
pkgver=261_rc4
|
||||
_pkgver="${pkgver/_/-}"
|
||||
# pkgrel must match systemd-stage0!
|
||||
pkgrel=0
|
||||
pkgrel=1
|
||||
pkgdesc="System and service manager"
|
||||
url="https://github.com/systemd/systemd"
|
||||
# armhf: no linux-stable
|
||||
|
|
@ -160,7 +160,7 @@ depends="
|
|||
|
||||
# provides=openrc and openrc-settingsd to prevent those packages
|
||||
# getting pulled in, as there are some conflicts (dbus)
|
||||
provides="busctl eudev openrc-settingsd=$pkgver-r$pkgrel systemd-stage0=$pkgver-r$pkgrel"
|
||||
provides="busctl openrc-settingsd=$pkgver-r$pkgrel systemd-stage0=$pkgver-r$pkgrel"
|
||||
provider_priority=100
|
||||
|
||||
install="$pkgname.pre-install"
|
||||
|
|
@ -369,7 +369,7 @@ udevd() {
|
|||
depends="kmod-libs"
|
||||
|
||||
# NOTE: should only be udev, but packages hardcode eudev
|
||||
provides="eudev udev eudev-libs"
|
||||
provides="eudev=$pkgver-r$pkgrel udev=$pkgver-r$pkgrel eudev-libs=$pkgver-r$pkgrel"
|
||||
provider_priority=100
|
||||
|
||||
amove usr/bin/udevadm
|
||||
|
|
@ -550,7 +550,7 @@ x11() {
|
|||
}
|
||||
|
||||
dev() {
|
||||
provides="eudev-dev udev-dev systemd-stage0-dev=$pkgver-r$pkgrel"
|
||||
provides="eudev-dev=$pkgver-r$pkgrel udev-dev=$pkgver-r$pkgrel systemd-stage0-dev=$pkgver-r$pkgrel"
|
||||
provider_priority=100
|
||||
|
||||
default_dev
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue