blob: 5cc19f716c7f15f95a370c958f062991cd86c0a5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
# Maintainer: Kaizhao Zhang <zhangkaizhao@gmail.com>
# Contributor: Techcable <$USER @ techcable.net>
pkgname=zig-dev-bin
# Old versions of zig-dev-bin used date as pkgver (pkgver=20220712)
#
# Now we use something consistent with zig internal versioning.
# Without changing the epoch, the old version scheme would be considered
# "newer" greater than the new version scheme
epoch=1
# NOTE: Hyphen -> underscore
pkgver=0.10.0_dev.3659+e5e6eb983
pkgrel=1
pkgdesc="A general-purpose programming language and toolchain for maintaining robust, optimal, and reusable software"
arch=('x86_64' 'aarch64')
url="https://ziglang.org/"
license=('MIT')
makedepends=(curl jq)
options=('!strip')
provides=('zig')
conflicts=('zig')
# NOTE: We don't include the "real" source until build()
source=()
# GPG verification is not currently possible because Zig binaries aren't signed
# Hardcoded sha256 not possible because this is a an auto-updating (nightly) package
#
# Zig Issue for signed binaries: https://github.com/ziglang/zig/issues/4945
sha256sums=()
pkgver() {
local index_file="${srcdir}/zig-version-index.json";
# Invalidate old verison-index.json
#
# If we put version-index in `source` then it would be cached...
if [[ -x "$index_file" ]]; then
rm "$index_file";
fi
curl -sS "https://ziglang.org/download/index.json" -o "$index_file"
jq -r .master.version "$index_file" | sed 's/-/_/'
}
prepare() {
local newver="$(pkgver)";
pushd "${srcdir}" > /dev/null;
local index_file="zig-version-index.json";
local newurl="$(jq -r ".master.\"${CARCH}-linux\".tarball" $index_file)";
local newfile="zig-linux-${CARCH}-${newver}.tar.xz";
source+=("${newfile}:${newurl}")
local expected_hash="$(jq -r ".master.\"${CARCH}-linux\".shasum" "$index_file")"
sha256sums+=("$newhash")
if [[ -f "$newfile" ]]; then
echo "Reusing existing $newfile";
else
echo "Downloading Zig $newver from $newurl" >&2;
curl -Ss "$newurl" -o "$newfile";
fi;
echo "" >&2
echo "WARNING: No way to GPG/SHA verify the version ahead of time" >&2
echo "See Zig issue https://github.com/ziglang/zig/issues/4945 for signed binaries" >&2;
echo "" >&2;
local actual_hash="$(sha256sum "$newfile" | grep -oE '^\w+')"
if [[ "$expected_hash" != "$actual_hash" ]]; then
echo "ERROR: Expected hash $expected_hash for $newfile, but got $actual_hash" >&2;
exit 1;
fi;
echo "Extracting file";
tar -xf "$newfile";
popd > /dev/null;
}
check() {
hello_file="$(realpath ../hello.zig)"
cd "${srcdir}/zig-linux-${CARCH}-${pkgver//_/-}";
echo "Running Zig Hello World"
./zig run "$hello_file"
./zig test "$hello_file"
}
package() {
cd "${srcdir}/zig-linux-${CARCH}-${pkgver//_/-}"
install -d "${pkgdir}/usr/bin"
install -d "${pkgdir}/usr/lib/zig"
cp -R lib "${pkgdir}/usr/lib/zig/lib"
install -D -m755 zig "${pkgdir}/usr/lib/zig/zig"
ln -s /usr/lib/zig/zig "${pkgdir}/usr/bin/zig"
install -D -m644 docs/langref.html "${pkgdir}/usr/share/doc/zig/langref.html"
cp -R docs/std "${pkgdir}/usr/share/doc/zig/"
install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/zig/LICENSE"
}
|