2024-11-05 06:15:27 +02:00
|
|
|
Building modern Zig from the original C++ implementation
|
|
|
|
--------------------------------------------------------
|
|
|
|
|
|
|
|
This repository explores building Zig from the C++ implementation without using
|
|
|
|
binary blobs. [Forum post goes with this][1].
|
|
|
|
|
2024-11-06 14:53:09 +02:00
|
|
|
Clone zig and prune binary files from history:
|
|
|
|
|
|
|
|
```
|
|
|
|
$ git clone --reference zig --dissociate https://github.com/ziglang/zig zig-nobinaries
|
|
|
|
$ cd zig-nobinaries
|
|
|
|
$ git filter-repo --prune-empty=never --prune-degenerate never --invert-paths --path-glob 'stage1/zig1.wasm*' --path stage1/zig1.c
|
|
|
|
```
|
|
|
|
|
|
|
|
Now build an isolated container with a bunch of zig historic dependencies:
|
|
|
|
|
2024-11-05 06:15:27 +02:00
|
|
|
```
|
|
|
|
$ docker build -t zig-repro .
|
|
|
|
$ docker run -ti --rm \
|
|
|
|
-v ~/code:/x \
|
|
|
|
-v /home/$USER/.cache/zig:/home/$USER/.cache/zig \
|
2024-11-06 14:55:32 +02:00
|
|
|
-w /x/zig-nobinaries \
|
2024-11-05 06:18:08 +02:00
|
|
|
zig-repro \
|
2024-11-06 14:53:09 +02:00
|
|
|
sh -c "useradd -s /bin/bash -u $UID $USER && su $USER; bash"
|
|
|
|
```
|
|
|
|
|
|
|
|
And run the thing in the container:
|
|
|
|
|
|
|
|
```
|
2024-11-05 06:15:27 +02:00
|
|
|
$ ../zig-repro/run
|
|
|
|
```
|
|
|
|
|
|
|
|
[1]: https://ziggit.dev/t/building-self-hosted-from-the-original-c-implementation/6607/11
|