zig-repro/run

321 lines
8.2 KiB
Plaintext
Raw Normal View History

2024-11-01 09:33:22 +02:00
#!/usr/bin/env bash
2024-11-03 22:20:46 +02:00
HERE=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
2024-11-06 23:36:47 +02:00
fullbuild() {
rm -fr build
mkdir build
pushd build
CC=clang-15 CXX=clang++-15 cmake ..
make -j"$(nproc)" install
popd
}
2024-11-03 23:21:48 +02:00
# commit e7d28344fa3ee81d6ad7ca5ce1f83d50d8502118
# Merge: 817cf6a82e 20d86d9c63
# Author: Andrew Kelley <andrew@ziglang.org>
# Date: 2022-12-07T01:52:39+02:00
#
# Merge pull request #13560 from ziglang/wasi-bootstrap
#
# Nuke the C++ implementation of Zig from orbit using WASI
2024-11-06 23:36:47 +02:00
STEP00_A=e7d28344fa3ee81d6ad7ca5ce1f83d50d8502118
2024-11-03 23:21:48 +02:00
# commit 3ba916584db5485c38ebf2390e8d22bc6d81bf8e
# Author: Andrew Kelley <andrew@ziglang.org>
# Date: 2022-11-05T03:47:19+02:00
#
# actually remove stage1
2024-11-06 23:36:47 +02:00
STEP00_B=3ba916584db5485c38ebf2390e8d22bc6d81bf8e
2024-11-03 23:21:48 +02:00
# commit 28514476ef8c824c3d189d98f23d0f8d23e496ea
# Author: Andrew Kelley <andrew@ziglang.org>
# Date: 2022-11-01T05:29:55+02:00
#
# remove `-fstage1` option
#
# After this commit, the self-hosted compiler does not offer the option to
# use stage1 as a backend anymore.
2024-11-06 23:36:47 +02:00
STEP00_C=28514476ef8c824c3d189d98f23d0f8d23e496ea
2024-11-06 22:57:41 +02:00
step00() {
2024-11-06 23:36:47 +02:00
git checkout $STEP00_A
2024-11-03 22:20:46 +02:00
2024-11-06 23:36:47 +02:00
git revert --no-edit $STEP00_B
2024-11-03 22:20:46 +02:00
2024-11-06 23:36:47 +02:00
git revert --no-edit -X theirs $STEP00_C
2024-11-03 22:20:46 +02:00
git mv stage1/config.zig.in src
sed -i '/have_stage1/ s/false/true/' src/config.zig.in
2024-11-06 23:36:47 +02:00
git checkout $STEP00_C~1 build.zig CMakeLists.txt
2024-11-03 22:20:46 +02:00
echo "Building the C++ (stage1) implementation"
2024-11-06 15:13:57 +02:00
fullbuild
2024-11-03 19:09:11 +02:00
2024-11-03 22:20:46 +02:00
echo "C++ implementation in build/stage3/bin/zig. Will build zig1.wasm.zst."
git reset --hard
2024-11-06 23:36:47 +02:00
git checkout $STEP00_A
2024-11-03 22:20:46 +02:00
build/stage3/bin/zig build update-zig1
echo "stage1/zig1.wasm.zst built. Bootstrapping zig with it."
2024-11-06 15:13:57 +02:00
fullbuild
2024-11-03 22:20:46 +02:00
echo "Zig bootstrapped from selfhosted."
}
2024-11-06 23:36:47 +02:00
# commit 9d93b2ccf11f584320a2c5209dd2d94705167695
# Author: Veikka Tuominen <git@vexu.eu>
# Date: 2022-12-08T19:52:05+02:00
#
# Eliminate `BoundFn` type from the language
#
# Closes #9484
STEP01=9d93b2ccf11f584320a2c5209dd2d94705167695
STEP01_=0.10.0-675-g9d93b2ccf1
2024-11-06 22:57:41 +02:00
step01() {
2024-11-06 23:36:47 +02:00
local TO="$STEP01"
local TO_="$STEP01_"
2024-11-06 15:13:57 +02:00
echo "Generating zig1.wasm.zst for $TO_"
rm -fr "../zig-$TO_"
2024-11-06 15:46:07 +02:00
git archive --prefix=zig-$TO_/ $TO | tar -C .. -x
2024-11-03 22:20:46 +02:00
{
2024-11-06 15:27:19 +02:00
pushd "../zig-$TO_"
2024-11-06 15:13:57 +02:00
cp "$OLDPWD/stage1/zig1.wasm.zst" stage1/
2024-11-03 22:20:46 +02:00
patch -p1 <"$HERE/0.10.0-675-g9d93b2ccf1-TypeOf-hack.patch"
2024-11-06 15:13:57 +02:00
fullbuild
2024-11-03 22:20:46 +02:00
build/stage3/bin/zig build update-zig1
popd
}
echo "zig1.wasm.zst was built for BoundFn hack"
}
2024-11-06 23:36:47 +02:00
# commit d10fd78d4615f329141f5c19f893039d56aff425
# Author: Andrew Kelley <andrew@ziglang.org>
# Date: 2022-12-10T21:54:24+02:00
#
# update zig1.wasm
#
# This includes the latest changes from master branch with fixes to the C
# backend that affect aarch64-windows which are necessary to build from
# source on this target.
#
# stage1/zig1.wasm | Bin 2315523 -> 2315899 bytes
# 1 file changed, 0 insertions(+), 0 deletions(-)
STEP02=d10fd78d4615f329141f5c19f893039d56aff425
STEP02_=0.10.0-722-gd10fd78d46
2024-11-06 22:57:41 +02:00
step02() {
2024-11-06 23:36:47 +02:00
local FROM_="$STEP01_"
local TO="$STEP02"
local TO_="$STEP02_"
echo "Generating zig1.wasm.zst for $STEP02_AARCH64_"
2024-11-06 15:13:57 +02:00
rm -fr "../zig-$TO_"
2024-11-06 15:46:07 +02:00
git archive --prefix=zig-$TO_/ $TO | tar -C .. -x
2024-11-03 23:21:48 +02:00
{
2024-11-06 15:13:57 +02:00
pushd "../zig-$TO_"
zstd -cd ../zig-$FROM_/stage1/zig1.wasm.zst >stage1/zig1.wasm
fullbuild
2024-11-03 23:21:48 +02:00
build/stage3/bin/zig build update-zig1
popd
}
echo "zig1.wasm.zst was built for C-aarch64 backend"
}
2024-11-06 23:36:47 +02:00
# commit 7b2a936173165002105ba5e76bed69654e132fea
# Author: Veikka Tuominen <git@vexu.eu>
# Date: 2022-12-12T15:32:37+02:00
#
# remove `stack` option from `@call`
STEP03=7b2a936173165002105ba5e76bed69654e132fea
STEP03_=0.10.0-747-g7b2a936173
2024-11-06 22:57:41 +02:00
step03() {
2024-11-06 23:36:47 +02:00
local FROM_="$STEP02_"
local TO="$STEP03"
local TO_="$STEP03_"
2024-11-03 23:21:48 +02:00
2024-11-06 23:48:35 +02:00
echo "Updating zig1.wasm $FROM_ -> $TO_"
2024-11-06 15:13:57 +02:00
rm -fr "../zig-$TO_"
2024-11-06 15:46:07 +02:00
git archive --prefix=zig-$TO_/ $TO | tar -C .. -x
2024-11-03 23:21:48 +02:00
{
2024-11-06 15:13:57 +02:00
pushd "../zig-$TO_"
patch -p1 <"$HERE/0.10.0-747-g7b2a936173-CallOptions.patch"
"../zig-$FROM_/build/stage3/bin/zig" build --zig-lib-dir lib update-zig1
2024-11-06 14:11:10 +02:00
popd
}
echo "zig1.wasm updated for $TO"
}
2024-11-06 23:36:47 +02:00
# commit 08b2d491bcd8c79c68495267cc71967661caea1e
# Author: Veikka Tuominen <git@vexu.eu>
# Date: 2022-12-12T15:32:37+02:00
#
# update usages of `@call`
STEP04=08b2d491bcd8c79c68495267cc71967661caea1e
STEP04_=0.10.0-748-g08b2d491bc
2024-11-06 22:57:41 +02:00
step04() {
2024-11-06 23:36:47 +02:00
local FROM_="$STEP03_"
local TO="$STEP04"
local TO_="$STEP04_"
2024-11-06 15:13:57 +02:00
2024-11-06 23:48:35 +02:00
echo "Updating zig1.wasm $FROM_ -> $TO_"
2024-11-06 15:13:57 +02:00
rm -fr "../zig-$TO_"
2024-11-06 15:46:07 +02:00
git archive --prefix=zig-$TO_/ $TO | tar -C .. -x
2024-11-06 14:11:10 +02:00
{
2024-11-06 15:13:57 +02:00
pushd "../zig-$TO_"
cp ../zig-$FROM_/stage1/zig1.wasm stage1/zig1.wasm
fullbuild
2024-11-03 23:21:48 +02:00
build/stage3/bin/zig build update-zig1
popd
}
2024-11-06 15:13:57 +02:00
echo "zig1.wasm updated for $TO_"
2024-11-03 22:20:46 +02:00
}
2024-11-06 23:36:47 +02:00
# commit 35184bff75420f405cb703c9cf86b196843b9a94 (HEAD)
# Author: r00ster91 <r00ster91@proton.me>
# Date: 2022-12-13T23:30:06+02:00
#
# std.builtin: rename Type.UnionField and Type.StructField's field_type to type
STEP05=aac2d6b56f32134ea32fb3d984e3fcdfddd8aaf6
STEP05_=0.10.0-851-gaac2d6b56f
2024-11-06 22:57:41 +02:00
step05() {
2024-11-06 23:36:47 +02:00
local FROM_="$STEP04_"
local TO="$STEP05"
local TO_="$STEP05_"
2024-11-06 23:48:35 +02:00
echo "Updating zig1.wasm $FROM_ -> $TO_"
rm -fr "../zig-$TO_"
git archive --prefix=zig-$TO_/ $TO | tar -C .. -x
{
pushd "../zig-$TO_"
cp ../zig-$FROM_/stage1/zig1.wasm stage1/zig1.wasm
fullbuild
2024-11-06 17:20:23 +02:00
popd
}
}
2024-11-06 23:36:47 +02:00
# commit 2a5e1426aa9469fadb78e837d0100d689213b034
# Author: Veikka Tuominen <git@vexu.eu>
# Date: 2022-12-16T19:44:25+02:00
#
# update zig1.wasm to builtin.Type field changes
STEP06=2a5e1426aa9469fadb78e837d0100d689213b034
STEP06_=0.10.0-853-g2a5e1426aa
2024-11-06 22:57:41 +02:00
step06() {
2024-11-06 23:36:47 +02:00
local FROM_="$STEP05_"
local TO="$STEP06"
local TO_="$STEP06_"
2024-11-06 17:20:23 +02:00
2024-11-06 23:48:35 +02:00
echo "Updating zig1.wasm $FROM_ -> $TO_"
2024-11-06 17:20:23 +02:00
rm -fr "../zig-$TO_"
git archive --prefix=zig-$TO_/ $TO | tar -C .. -x
{
pushd "../zig-$TO_"
2024-11-06 17:24:49 +02:00
"../zig-$FROM_/build/stage3/bin/zig" build update-zig1
popd
}
echo "zig1.wasm updated for $TO_"
}
2024-11-06 23:36:47 +02:00
# commit 54160e7f6aecb4628df633ceaef4c6d956429a3d
# Author: Veikka Tuominen <git@vexu.eu>
# Date: 2022-12-21T14:33:02+02:00
#
# Sema: make overflow arithmetic builtins return tuples
STEP07=54160e7f6aecb4628df633ceaef4c6d956429a3d
STEP07_=0.10.0-961-g54160e7f6a
2024-11-06 22:57:41 +02:00
step07() {
2024-11-06 23:36:47 +02:00
local FROM_="$STEP06_"
local TO="$STEP07"
local TO_="$STEP07_"
2024-11-06 22:48:24 +02:00
2024-11-06 23:48:35 +02:00
echo "Building zig2 $FROM_ -> $TO_"
2024-11-06 22:48:24 +02:00
rm -fr "../zig-$TO_"
git archive --prefix=zig-$TO_/ $TO | tar -C .. -x
{
pushd "../zig-$TO_"
patch -p1 <"$HERE/0.10.0-961-g54160e7f6a-CMakeLists.txt-remove-stage3.patch"
cp ../zig-$FROM_/stage1/zig1.wasm stage1/zig1.wasm
2024-11-06 22:51:44 +02:00
# same as "fullbuild", except the make target does not have "install"
2024-11-06 22:57:41 +02:00
rm -fr build
mkdir build
2024-11-06 22:51:44 +02:00
{
pushd build
CC=clang-15 CXX=clang++-15 cmake ..
make -j"$(nproc)"
popd
}
2024-11-06 22:48:24 +02:00
popd
}
}
2024-11-06 23:36:47 +02:00
# commit 622311fb9ac7ee6d93dcb8cda4b608751f7e092a
# Author: Veikka Tuominen <git@vexu.eu>
# Date: 2022-12-21T16:40:30+02:00
#
# update uses of overflow arithmetic builtins
STEP08=622311fb9ac7ee6d93dcb8cda4b608751f7e092a
STEP08_=0.10.0-962-g622311fb9a
2024-11-06 22:57:41 +02:00
step08() {
2024-11-06 23:36:47 +02:00
local FROM_="$STEP07_"
local TO="$STEP08"
local TO_="$STEP08_"
2024-11-06 22:48:24 +02:00
2024-11-06 23:48:35 +02:00
echo "Updating zig1.wasm $FROM_ -> $TO_"
2024-11-06 22:48:24 +02:00
rm -fr "../zig-$TO_"
git archive --prefix=zig-$TO_/ $TO | tar -C .. -x
{
pushd "../zig-$TO_"
2024-11-06 22:59:50 +02:00
../zig-$FROM_/build/zig2 build --zig-lib-dir lib update-zig1
2024-11-06 22:48:24 +02:00
popd
}
}
2024-11-06 23:36:47 +02:00
# commit a43fdc1620fa24c8c606f748505766bfd53d1049
# Author: kcbanner <kcbanner@gmail.com>
# Date: 2022-12-09T02:50:08+02:00
#
# cbe: first set of changes for msvc compatibility
2024-11-07 00:03:00 +02:00
STEP09=a43fdc1620fa24c8c606f748505766bfd53d1049
STEP09_=0.10.0-1027-ga43fdc1620
step09() {
local FROM_="$STEP08_"
local TO="$STEP09"
local TO_="$STEP09_"
echo "Updating stage3 $FROM_ -> $TO_"
rm -fr "../zig-$TO_"
git archive --prefix=zig-$TO_/ $TO | tar -C .. -x
{
pushd "../zig-$TO_"
cp ../zig-$FROM_/stage1/zig1.wasm stage1/zig1.wasm
fullbuild
popd
}
}
2024-11-06 23:36:47 +02:00
2024-11-03 23:21:48 +02:00
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
set -xeuo pipefail
2024-11-06 22:57:41 +02:00
step=${1:-step00}
step=${step#step}
2024-11-07 00:03:00 +02:00
step=${step#0}
2024-11-06 22:57:41 +02:00
if [[ "$step" -le 0 ]]; then step00; fi
if [[ "$step" -le 1 ]]; then step01; fi
if [[ "$step" -le 2 ]]; then step02; fi
if [[ "$step" -le 3 ]]; then step03; fi
if [[ "$step" -le 4 ]]; then step04; fi
if [[ "$step" -le 5 ]]; then step05; fi
if [[ "$step" -le 6 ]]; then step06; fi
if [[ "$step" -le 7 ]]; then step07; fi
if [[ "$step" -le 8 ]]; then step08; fi
2024-11-07 00:03:00 +02:00
if [[ "$step" -le 9 ]]; then step09; fi
2024-11-03 23:21:48 +02:00
fi