zig
zig copied to clipboard
unable to build glibc for target armv8-linux-gnueabihf
In file included from /home/andy/dev/zig/build/lib/zig/libc/glibc/sysdeps/arm/crti.S:44:
In file included from /home/andy/dev/zig/build/lib/zig/libc/glibc/sysdeps/unix/sysv/linux/arm/sysdep.h:28:
In file included from /home/andy/dev/zig/build/lib/zig/libc/glibc/sysdeps/unix/arm/sysdep.h:19:
/home/andy/dev/zig/build/lib/zig/libc/glibc/sysdeps/arm/sysdep.h:25:11: fatal error: 'arm-features.h' file not found
# include <arm-features.h>
^~~~~~~~~~~~~~~~
1 error generated.
The following command failed:
/home/andy/dev/zig/build/zig cc -MD -MV -MF /home/andy/.local/share/zig/stage1/tmp/sOHDkvFFXRTa-crti.o.d -nostdinc -fno-spell-checking -isystem /home/andy/dev/zig/build/lib/zig/include -target armv8.5a-unknown-linux-gnueabihf -g -fno-omit-frame-pointer -D_DEBUG -fno-stack-protector -fPIC -o /home/andy/.local/share/zig/stage1/tmp/sOHDkvFFXRTa-crti.o -c /home/andy/dev/zig/build/lib/zig/libc/glibc/sysdeps/arm/crti.S -I /home/andy/dev/zig/build/lib/zig/libc/glibc/include -I /home/andy/dev/zig/build/lib/zig/libc/glibc/sysdeps/unix/sysv/linux/arm -I /home/andy/dev/zig/build/lib/zig/libc/glibc/sysdeps/arm/nptl -I /home/andy/dev/zig/build/lib/zig/libc/glibc/sysdeps/unix/sysv/linux/include -I /home/andy/dev/zig/build/lib/zig/libc/glibc/sysdeps/unix/sysv/linux -I /home/andy/dev/zig/build/lib/zig/libc/glibc/sysdeps/nptl -I /home/andy/dev/zig/build/lib/zig/libc/glibc/sysdeps/pthread -I /home/andy/dev/zig/build/lib/zig/libc/glibc/sysdeps/unix/sysv -I /home/andy/dev/zig/build/lib/zig/libc/glibc/sysdeps/unix/arm -I /home/andy/dev/zig/build/lib/zig/libc/glibc/sysdeps/unix -I /home/andy/dev/zig/build/lib/zig/libc/glibc/sysdeps/arm -I /home/andy/dev/zig/build/lib/zig/libc/glibc/sysdeps/generic -I /home/andy/dev/zig/build/lib/zig/libc/glibc -I /home/andy/dev/zig/build/lib/zig/libc/include/arm-linux-gnueabihf -I /home/andy/dev/zig/build/lib/zig/libc/include/generic-glibc -I /home/andy/dev/zig/build/lib/zig/libc/include/arm-linux-any -I /home/andy/dev/zig/build/lib/zig/libc/include/any-linux-any -D_LIBC_REENTRANT -include /home/andy/dev/zig/build/lib/zig/libc/glibc/include/libc-modules.h -DMODULE_NAME=libc -include /home/andy/dev/zig/build/lib/zig/libc/glibc/include/libc-symbols.h -DTOP_NAMESPACE=glibc -DASSEMBLER -g -Wa,--noexecstack
The following command exited with error code 1:
/home/andy/dev/zig/build/zig test /home/andy/dev/zig/test/stage1/behavior.zig --library c --test-name-prefix behavior-arm-linux-gnueabihf-Debug-c-multi --cache-dir /home/andy/dev/zig/zig-cache --name test -target armv8_5a-linux-gnueabihf --test-cmd qemu-arm --test-cmd -L --test-cmd /home/andy/Downloads/glibc/multi/install/glibcs/arm-linux-gnueabihf --test-cmd-bin --override-std-dir /home/andy/dev/zig/std
After this works, test coverage can be added.
@andrewrk is there any update on this or a workaround?
@leventov The solution to this (and many more related issues) has been mentioned by @LemonBoy in https://github.com/ziglang/zig/issues/4926#issuecomment-744326413, but it still has to be done.
If anybody finds this because of the missing arm-features.h, it's not fixed yet with #4926.
I got my code to build by adding the missing header with a wget --content-disposition "https://sourceware.org/git?p=glibc.git;a=blob_plain;f=sysdeps/arm/arm-features.h;hb=HEAD" in my zig lib folder (for me that's either $HOME/lib/zig/libc/glibc/sysdeps/arm or /usr/local/Cellar/zig/0.9.0/lib/zig/libc/glibc/sysdeps/arm).
Can confirm @fwg's solution works. Here's how to get a Nix zig package containing the additional file:
zig = zig-overlay.packages.${system}."0.9.0".overrideAttrs (old: {
installPhase = let
armFeatures = builtins.fetchurl {
url = "https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=sysdeps/arm/arm-features.h;h=80a1e2272b5b4ee0976a410317341b5ee601b794;hb=0281c7a7ec8f3f46d8e6f5f3d7fca548946dbfce";
name = "glibc-2.35_arm-features.h";
sha256 = "1g4yb51srrfbd4289yj0vrpzzp2rlxllxgz8q4a5zw1n654wzs5a";
};
in old.installPhase + "\ncp ${armFeatures} $out/lib/libc/glibc/sysdeps/arm/arm-features.h";
});
zig-overlay being a Flake input with url = github:arqv/zig-overlay. I pinned the URL to the glibc-2.35 tag.
@andrewrk Is there more to this than just merging #12346?
Perhaps not, but it is my duty to test & verify patches from first-time contributors. I also need to run the test suite for armv8-linux-gnueabihf and find out if the tests then pass and if so, enable more CI test coverage.
With #12346 merged, should this be closed?
This issue can be closed when the corresponding tests are enabled:
https://github.com/ziglang/zig/blob/c0284e242f7d78955204dc8a627fecd45aa5e521/test/tests.zig#L235-L242