Alpine made some minor modifications to the gcc aport, without
changing the version. Let's adjust the pmaports too, so we stay in
sync. [ci:skip-vercheck]
Related: 97a2b093b1
[ci:skip-build]: will not finish in time and does not build with --strict
because of an abuild bug that will be fixed in the next abuild release by
this patch:
c54d39d8aa
Make the version match Alpine's gcc again. Fixes libstdc++ unsatisfiable
constrains related error messages (because the libstdc++ generated by
these cross-* packages has the same pkgver and pkgrel again as the one
provided by Alpine's gcc package).
[ci:skip-build]: won't finish in time
The upstream compat test case will still fail after this, there are more
issues that need to be resolved. I'm on it.
Adjust the depends of the GCC-8 cross compiler packages after the change
from pmbootstrap!1778. This does not have any effect (since the GCC-8
aports don't have !tracedeps in options, in contrary to the other GCC
aports we ship). But it makes sure that we don't get any changes after
running the repository maintenance script from here:
https://wiki.postmarketos.org/wiki/Repository_maintenance
[ci:skip-build]: cosmetic change, build would take too long anyway
This covers most use cases and saves a lot of build time. Can be
changed on demand. Again, this simplifies package building as part of
the new build infrastructure effort. [skip ci]
Due to changes in abuild, our `gcc-armhf` etc. packages did not build
when using strict mode (i.e. `pmbootstrap build --strict gcc-armhf`)
anymore.
Changes:
* Set `CBUILDDIR=/`, so apk can read a valid package index from there
* Directly set `_cross_configure`, so it does not use CBUILDDIR anymore
* Set `BOOTSTRAP="nobuildbase"` to prevent apk from installing
`build-base-armhf` etc. (these don't exist in pmOS)
* Remove legacy code for lazy reproducible builds that wrapped
`package()`
Example: Building gcc-armhf for armhf does not make sense, so this
commit changes arch="all" to arch="aarch64 x86_64". This helps to
simplify the repository scripts (#970).
This fixes https://github.com/postmarketOS/binary-package-repo/issues/1
GCC generates hardlinks between files `A` and `B` in its `make install` step. The problem is, that `tar` randomly packages `A` as full binary, and links `B` to `A`, or the other way around! I was able to reproduce this issue consistently when re-building `gcc-aarch64` on Travis CI (interestingly, this did not appear for `gcc-armhf`).
The fix is, to delete `B` and create a symlink `B` that points to `A` instead.
libstdc++.a from gcc-armhf was not reproducible on Travis (it was, when built locally!). These .a files are just archives of object files .o, and in this case it was caused by a random order of the .o files in the archive.
This PR patches the package() function of the APKBUILD when running pmbootstrap aportgen gcc-armhf (same for aarch64 of course), to extract all .a files, and repack them to be reproducible (by sorting the files before packing them).
As usually, we can still inherit everything from the upstream gcc aport from Alpine, and apply our changes on top of that.
Travis without the patch:
https://api.travis-ci.org/jobs/260402679/log.txt?deansi=true
> CHALLENGE FAILED for usr/armv6-alpine-linux-muslgnueabihf/lib/libstdc++.a:File 'usr/armv6-alpine-linux-muslgnueabihf/lib/libstdc++.a' is different!
Travis with the patch (I've instructed Travis to run off this branch to test it):
https://api.travis-ci.org/jobs/260806203/log.txt?deansi=true
> Done. Your build exited with 0.