diff options
| author | Francis Couture-Harpin <git@compilade.net> | 2023-06-01 23:29:49 -0400 |
|---|---|---|
| committer | Francis Couture-Harpin <git@compilade.net> | 2023-06-03 17:17:55 -0400 |
| commit | 01e460d69ecaad102de4aa47370a249d0add3d7d (patch) | |
| tree | 32bde00ffd882c7914cfdcfce97a1c763b98db93 /pkgs/development/python-modules/python-mapnik | |
| parent | fddbfa21593cd11f900b03d4d6b413e252596f70 (diff) | |
perlPackages.HashSharedMem: fix build on aarch64-linux
The [(failing-)build log](https://hydra.nixos.org/build/219379873/nixlog/1)
has errors that look like: `undefined symbol: __aarch64_cas8_sync`.
This led me to find out about the newly-introduced `-moutline-atomics`,
which is **on by default** in GCC 10.1 (according to [this blog post](https://community.arm.com/arm-community-blogs/b/tools-software-ides-blog/posts/making-the-most-of-the-arm-architecture-in-gcc-10))
and in Clang 12.0.0 (according to [the release notes](https://releases.llvm.org/12.0.0/tools/clang/docs/ReleaseNotes.html))
Not all ARMv8-A processors support atomic stuff like `__aarch64_cas8_sync`,
it's only those that are ARMv8.1-A or later that do. Examples of
pre-ARMv8.1-A processors include the Cortex-A72 used in the
Raspberry Pi 4 (which is how I discovered this problem (I am running
`hydra` on it, which indirectly depends on `HashSharedMem`)),
and any older ARMv8-A processors.
The problem here is solvable either by linking the compiler runtime library
(which I did not try, since I don't know exactly which one to use)
*or* by simply not generating outlines for atomic operations.
I went with the "easier" path (which was also what was was happening
in older versions of GCC, I think) of disabling atomic outlines with
`-mno-outline-atomics`, and it works!
Diffstat (limited to 'pkgs/development/python-modules/python-mapnik')
0 files changed, 0 insertions, 0 deletions
