Fix that aportgen for cross gccs currently creates a broken package
In pmaports!5722 (merged) (cross/gcc-*: upgrade to 14.2.0-r4
), the APKBUILDs had to be manually adjusted to make them build again. Currently the gcc packages generated by pmbootstrap aportgen gcc-aarch64
etc. fail to build. (Thanks Luca and Clayton for making it working at all!) This is for multiple reasons actually, but the first one and most complicated one is this, at the end of the build tracing dependencies fails with ERROR: gcc-aarch64*: libc.musl-aarch64.so.1: path not found
.
Apparently the code to trace dependencies was changed in abuild, and since then this does not work anymore. libc.musl-aarch64.so.1
is in that example in /usr/aarch64-alpine-linux-musl/lib/
. I've found this commit in aports that seems to fix a similar problem, maybe setting somask=...
will restore the same behavior as previously (I did not try that yet). I have tried ldpath="/usr/aarch64-alpine-linux-musl/lib/"
which seemed more correct but that does not work.
pmaports!5722 (merged) uses !tracedeps
as workaround and specifies the depends manually. As I'm working on v24.12 bringup right now and can't spend more time on figuring out a more elegant solution right now, I'll just use the same APKBUILD
s as in pmaports master and leave this issue for future reference.
Somewhat related to this I found that bpo builds the gcc cross packages without --strict
, this was a workaround for a very old abuild regression that is fixed, but I didn't remove the workaround in bpo yet. (Also related: we should probably just make --strict
the default in pmbootstrap and add --no-strict
for the old behavior.)
CC: @Adrian who probably ran into this as well while bootstrapping pmaports!5774
more log:
>>> libstdc++-dev-aarch64*: Preparing subpackage libstdc++-dev-aarch64...
>>> libstdc++-dev-aarch64*: Running postcheck for libstdc++-dev-aarch64
>>> gcc-aarch64*: Running postcheck for gcc-aarch64
>>> gcc-aarch64*: Preparing package gcc-aarch64...
>>> g++-aarch64*: Scanning shared objects
>>> gcc-aarch64*: Scanning shared objects
>>> libstdc++-dev-aarch64*: Scanning shared objects
>>> g++-aarch64*: Tracing dependencies...
libstdc++-dev-aarch64=14.2.0-r4
gcc-aarch64=14.2.0-r4
musl-dev
so:libc.musl-x86_64.so.1
so:libgmp.so.10
so:libisl.so.23
so:libmpc.so.3
so:libmpfr.so.6
so:libz.so.1
>>> g++-aarch64*: Package size: 36.4 MB
>>> g++-aarch64*: Compressing data...
>>> g++-aarch64*: Create checksum...
>>> g++-aarch64*: Create g++-aarch64-14.2.0-r4.apk
>>> gcc-aarch64*: Tracing dependencies...
>>> ERROR: gcc-aarch64*: libc.musl-aarch64.so.1: path not found
>>> ERROR: gcc-aarch64*: create_apks failed
>>> ERROR: gcc-aarch64: rootpkg failed
>>> gcc-aarch64: Uninstalling dependencies..
TODO:
-
make gcc aportgen code work using the workaround from pmaports!5722 (merged) -> !2521 -
figure out in detail where tracedeps fails -
make it work without !tracedeps again