zig-repro/README.md

36 lines
1.1 KiB
Markdown

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].
Clone zig and prune binary files from history:
```
$ git clone https://github.com/ziglang/zig zig2
$ cd zig2
$ git config user.name "$(git config --get user.name)"
$ git config user.email "$(git config --get user.email)"
$ 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:
```
$ docker build -t zig-repro .
$ docker run -ti --rm --name zig-repro \
-v ~/code:/x \
-v /home/$USER/.cache/zig:/home/$USER/.cache/zig \
-w /x/zig2 \
zig-repro \
sh -c "useradd -s /bin/bash -u $UID $USER && su $USER; bash"
```
And run the thing in the container:
```
$ ../zig-repro/run
```
[1]: https://ziggit.dev/t/building-self-hosted-from-the-original-c-implementation/6607/11