[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#74217: Bootstrapping Zig with no Binary Blobs
From: |
Hilton Chain |
Subject: |
bug#74217: Bootstrapping Zig with no Binary Blobs |
Date: |
Sun, 17 Nov 2024 02:59:54 +0800 |
On Sun, 17 Nov 2024 01:03:59 +0800,
Efraim Flashner wrote:
>
> [1 <text/plain; utf-8 (quoted-printable)>]
> On Sat, Nov 16, 2024 at 02:54:55PM +0800, Hilton Chain wrote:
> > On Fri, 15 Nov 2024 22:30:40 +0800,
> > Hilton Chain wrote:
> > >
> > > I have locally made the "use-system-paths" patch larger so that Zig can
> > > really
> > > honor "CROSS_" environment variables.
> > >
> > > The next issue is cross building with pkg-config. Zig only invokes
> > > "pkg-config", but we don't have a "pkg-config" with search path for target
> > > inputs. I can add a pkg-config-for-zig to workaround this, and then...
> > > It's
> > > dynamic linker path, I'll look into it soon.
>
> I tried adding pkg-config-for-build as a work-around but it wasn't
> enough without touching the zig compiler's source too, which I didn't
> attempt yesterday.
>
> > Adding a file with content like the following and passing --libc <this
> > file> to
> > zig works, RUNPATH is correct and no need to set CC then.
> >
> > --8<---------------cut here---------------start------------->8---
> > include_dir=/gnu/store/dfx90sc16nphh6bd07sjyri6x4s51zni-glibc-cross-aarch64-linux-gnu-2.39/include
> > sys_include_dir=/gnu/store/dfx90sc16nphh6bd07sjyri6x4s51zni-glibc-cross-aarch64-linux-gnu-2.39/include
> > crt_dir=/gnu/store/dfx90sc16nphh6bd07sjyri6x4s51zni-glibc-cross-aarch64-linux-gnu-2.39/lib
> > msvc_lib_dir=
> > kernel32_lib_dir=
> > gcc_dir=
> > --8<---------------cut here---------------end--------------->8---
>
> Is this the layout of the file expected? That doesn't look too hard to
> create in the build-system if necessary.
>
> > For cross builds interpreter path like /lib/ld-linux-aarch64.so.1 is used in
> > output binary, I'll find a way to fix it.
>
> I was going to say to take a look at gcc-2.95, where we point all the
> linkers for all the architectures to whatever the target architecture
> is, but that won't work here since we have 1 zig binary and it can
> compile for any architecture.
>
> I'm going to suggest against adding a cross-libc for all the different
> architectures as an input, that would be crazy.
>
> (ins)efraim@3900XT ~/workspace/zig$ git grep 'ld-linux-aarch64.so.1'
> lib/libc/include/aarch64-linux-gnu/gnu/lib-names-lp64.h:#define
> LD_LINUX_AARCH64_SO "ld-linux-aarch64.so.1"
> lib/libc/include/aarch64-linux-gnu/gnu/lib-names-lp64.h:#define LD_SO
> "ld-linux-aarch64.so.1"
> lib/std/Build.zig:/// that contains the path
> `aarch64-linux-gnu/lib/ld-linux-aarch64.so.1`.
> lib/std/Target.zig: .aarch64 =>
> init("/lib/ld-linux-aarch64.so.1"),
> Binary file stage1/zig1.wasm matches
>
> Would it be possible to change the init("/path/to/ld.so") part to the
> zig equivalent of (search-input-file inputs "/path/to/ld.so"), and then
> when it is used from Guix the cross-libc will already be in the PATH and
> therefore findable from zig's search through the vector¹ of the paths
> inside PATH?
>
> ¹ I know it's not true but in my mind a vector and an array are the same
> thing.
I have added a GUIX_ZIG_LIBC_DIR environment variable, to be set as output path
of cross-libc or libc by zig-build-system, patched Zig to search it and
concatenate it with "/lib/ld...".
Also added the file for --libc option in zig-build-system. Cross compilation is
available now. (only available in 0.12 for now, I'll port the patches to other
versions when I get up.)
- bug#74217: Bootstrapping Zig with no Binary Blobs, (continued)
- bug#74217: Bootstrapping Zig with no Binary Blobs, Hilton Chain, 2024/11/13
- bug#74217: Bootstrapping Zig with no Binary Blobs, Hilton Chain, 2024/11/14
- bug#74217: Bootstrapping Zig with no Binary Blobs, Hilton Chain, 2024/11/14
- bug#74217: Bootstrapping Zig with no Binary Blobs, Efraim Flashner, 2024/11/14
- bug#74217: Bootstrapping Zig with no Binary Blobs, Hilton Chain, 2024/11/14
- bug#74217: Bootstrapping Zig with no Binary Blobs, Hilton Chain, 2024/11/15
- bug#74217: Bootstrapping Zig with no Binary Blobs, Hilton Chain, 2024/11/16
- bug#74217: Bootstrapping Zig with no Binary Blobs, Motiejus Jakštys, 2024/11/16
- bug#74217: Bootstrapping Zig with no Binary Blobs, Hilton Chain, 2024/11/16
- bug#74217: Bootstrapping Zig with no Binary Blobs, Efraim Flashner, 2024/11/16
- bug#74217: Bootstrapping Zig with no Binary Blobs,
Hilton Chain <=
- bug#74217: Bootstrapping Zig with no Binary Blobs, Hilton Chain, 2024/11/16
- bug#74217: Bootstrapping Zig with no Binary Blobs, Efraim Flashner, 2024/11/17
- bug#74217: Bootstrapping Zig with no Binary Blobs, Hilton Chain, 2024/11/17
- bug#74217: Bootstrapping Zig with no Binary Blobs, Hilton Chain, 2024/11/18
- bug#74217: Bootstrapping Zig with no Binary Blobs, Hilton Chain, 2024/11/19
- bug#74217: Bootstrapping Zig with no Binary Blobs, Hilton Chain, 2024/11/21
- bug#74217: Bootstrapping Zig with no Binary Blobs, Hilton Chain, 2024/11/28
- bug#74217: Bootstrapping Zig with no Binary Blobs, Motiejus Jakštys, 2024/11/28
- bug#74217: Bootstrapping Zig with no Binary Blobs, Hilton Chain, 2024/11/28
- bug#74217: Bootstrapping Zig with no Binary Blobs, Motiejus Jakštys, 2024/11/28