Hi,
trying to build an image with 25.12 version on my mt6000 using the same setting that I use for the master and I got that error, everytime. I try make clean, make dir but still the same issue, btw, I dont have the pbr package anyway…. Any ideas?
thanks
Index has 309 packages (of which 309 are new)
find /media/james/WRT/flint/stable/staging_dir/target-aarch64_cortex-a53_musl/root-mediatek -type d | xargs -r chmod 0755
rm -rf /media/james/WRT/flint/stable/build_dir/target-aarch64_cortex-a53_musl/root-mediatek /media/james/WRT/flint/stable/build_dir/target-aarch64_cortex-a53_musl/root.orig-mediatek
mkdir -p /media/james/WRT/flint/stable/build_dir/target-aarch64_cortex-a53_musl/root-mediatek/tmp
IPKG_INSTROOT=/media/james/WRT/flint/stable/build_dir/target-aarch64_cortex-a53_musl/root-mediatek /media/james/WRT/flint/stable/staging_dir/host/bin/fakeroot /media/james/WRT/flint/stable/staging_dir/host/bin/apk --root /media/james/WRT/flint/stable/build_dir/target-aarch64_cortex-a53_musl/root-mediatek --keys-dir /media/james/WRT/flint/stable --no-logfile --preserve-env add --no-cache --initdb --no-scripts --arch aarch64_cortex-a53 \
--repositories-file /dev/null --repository file:///media/james/WRT/flint/stable/staging_dir/packages/mediatek/packages.adb \
\
$(cat /media/james/WRT/flint/stable/tmp/apk_install_list) \
"base-files=1680~d819a05a8e" \
"libc=1.2.5-r5" \
"kernel=6.12.62~42de6d3aaf357aae1d5f663b660e212e-r1"
ERROR: unable to select packages:
pbr-1.2.1-r41:
conflicts: pbr-1.2.1-r41[pbr=1.2.1-r41]
satisfies: world[pbr]
make[2]: *** [package/Makefile:100: package/install] Error 1
make[2]: Leaving directory '/media/james/WRT/flint/stable'
make[1]: *** [package/Makefile:182: /media/james/WRT/flint] Error 2
make[1]: Leaving directory '/media/james/WRT/flint/stable'
make: *** [/media/james/WRT/flint/stable/include/toplevel.mk:233: world] Error 2
Dante
December 31, 2025, 12:12am
2
Have a look at this PR that addresses the package-specific provide bit:
master ← stangri:master-pbr
opened 01:05AM - 29 Dec 25 UTC
Maintainer: me
Compile tested: x86_64, Dell EMC Edge 620, OpenWrt 24.10.4
Run … tested: x86_64, Dell EMC Edge 620, OpenWrt 24.10.4
Description:
Makefile:
* remove traces of variants and simplify
Init-script:
* introduce prefixlength option to speed up tables operations (thanks @egc112)
And there's a more generic system-wide fix here:
main ← GeorgeSapkin:build-add-virtual-provides
opened 04:17PM - 25 Dec 25 UTC
Allow defining virtual provides using the `PROVIDES` field by prefixing them wit… h an `@`, e.g.:
```
PROVIDES:=@ca-certs
```
Virtual provides don't own the provided name and multiple packages with the same virtual provides can be installed side-by-side. Packages must still take care not to override each other's files.
Add an implicit self-provide to packages. apk can't handle self provides, be it versioned or virtual, so opt for a suffix instead. This allows several variants to provide the same virtual package without adding extra provides to the default one, e.g. `wget` implicitly provides `wget-any` and is marked as default, so `wget-ssl` can explicitly provide `@wget-any` as well.
Add an implicit self-provide to kmods using a prefix and a suffix. Package name without a prefix/suffix is too generic and might conflict with other packages, e.g. `wireguard`. This allows several variants to provide the same virtual package without adding extra provides to the default one, e.g. `r8169` implicitly provides `kmod-r8169-any` and is marked as default, so `r8125` can explicitly provide `@kmod-r8169-any` as well.
The actual symbol that marks virtual provides is not important. I chose @ for _alias_.
Edit: @ is kind of overloaded as it already means something else in `DEPENDS`.
Refactor provides logic into a helper define and use it for both apk and control (which was still using the older logic). Document the behavior. It looks excessive but I think we should have this somewhere outside of commit messages.
Filter out virtual provides when generating metadata.
Filter out virtual provides prefix and self provide where appropriate.
Remove unnecessary logging.
Adjust packages to uses the new virtual provides:
- Switch ca-certs provides to use the new virtual provides semantic that enables ca-bundle and ca-certificates to be installed side-by-side. Provide the new format virtual `ca-certificates-any` in ca-bundle.
- Switch ath10k and related kmods to use the new virtual kmod provides semantic and mark ath10k as the default variant.
- Switch r8169 and related kmods to use the new virtual kmod provides semantic and mark r8169 as the default variant.
- Switch rtl8812au-ct to use the new virtual kmod provides semantic.
Tested:
- building and installing ca-bundle and ca-certificates side-by-side
- building and installing stubby that depends on the virtual ca-certs
- building and installing libsqlite3 that has an ABI and sqlite3-cli that depends on it
- building x86/64 generic image and testing in QEMU
- defining a provides in a library with an ABI
- build config can still be generated with ca-bundle and ca-certificates selected at the same time (this might need more testing)
The alternatives check might not be necessary anymore and could be replaced with the new virtual semantic in the long run, but is there for compatibility reasons.
> [!CAUTION]
>
> This was neither tested with, nor is intended to be backported to opkg.
Fixes: https://github.com/openwrt/openwrt/issues/21257
cc: @efahl, @robimarko and maybe @mstorchak
'Tis the holiday season over here, so I probably overlooked something obvious. I think this needs a good look before this gets merged. I will update the wiki to document the recent DEPENDS, EXTRA_DEPENDS and PROVIDES changes at some point, unless somebody else gets to it first.
3 Likes
egc
December 31, 2025, 8:33am
4
Thanks George, we also could use some extra documentation about PROVIDES as I understand the error is due to the fact that pbr is the default package and then you do not set the PROVIDES here as that is already done automatically and setting it like has been done leads to this error?
Dante
December 31, 2025, 11:07am
5
I'll update the wiki wrt depends and provides once the above PR is a merged into 25.12 and stabilized, i.e. no more rework needed.
APK can't handle self-provides, and they are being filtered out before packaging. A package already provides itself implicitly. Adding a self-provide confuses APK. A package marked as default sets priority for virtual provides, i.e. provides that don't own the package name where either the user needs to choose a variant or one will be chosen based on package priority, if set.
I haven't looked into the self-provides on the Kconfig side, so I'm not sure if they are necessary there, or if that's some OPKG leftover.
1 Like
system
Closed
January 10, 2026, 11:07am
6
This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.