Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bytecodealliance
GitHub Repository: bytecodealliance/wasmtime
Path: blob/main/ci/vendor-wit.sh
3069 views
1
#!/usr/bin/env bash
2
3
# Script to re-vendor the WIT files that Wasmtime uses using wkg to fetch
4
# packages from the OCI registry.
5
#
6
# This script is executed on CI to ensure that everything is up-to-date.
7
set -ex
8
9
# Temporary directory for downloads
10
cache_dir=$(mktemp -d)
11
trap "rm -rf $cache_dir" EXIT
12
13
# Helper to download the `WebAssembly/$repo` dir at the `$tag` (or rev)
14
# specified. The `wit/*.wit` files are placed in `$path`.
15
get_github() {
16
local repo=$1
17
local tag=$2
18
local path=$3
19
20
rm -rf "$path"
21
mkdir -p "$path"
22
23
cached_extracted_dir="$cache_dir/$repo-$tag"
24
25
if [[ ! -d $cached_extracted_dir ]]; then
26
mkdir -p $cached_extracted_dir
27
curl --retry 5 --retry-all-errors -sLO https://github.com/WebAssembly/$repo/archive/$tag.tar.gz
28
tar xzf $tag.tar.gz --strip-components=1 -C $cached_extracted_dir
29
rm $tag.tar.gz
30
rm -rf $cached_extracted_dir/wit/deps*
31
fi
32
33
cp -r $cached_extracted_dir/wit/* $path
34
}
35
36
p2=0.2.6
37
p3=0.3.0-rc-2026-01-06
38
39
rm -rf crates/wasi-io/wit/deps
40
mkdir -p crates/wasi-io/wit/deps
41
wkg get --format wit --overwrite "wasi:io@$p2" -o "crates/wasi-io/wit/deps/io.wit"
42
43
rm -rf crates/wasi/src/p2/wit/deps
44
mkdir -p crates/wasi/src/p2/wit/deps
45
wkg get --format wit --overwrite "wasi:io@$p2" -o "crates/wasi/src/p2/wit/deps/io.wit"
46
wkg get --format wit --overwrite "wasi:clocks@$p2" -o "crates/wasi/src/p2/wit/deps/clocks.wit"
47
wkg get --format wit --overwrite "wasi:cli@$p2" -o "crates/wasi/src/p2/wit/deps/cli.wit"
48
wkg get --format wit --overwrite "wasi:filesystem@$p2" -o "crates/wasi/src/p2/wit/deps/filesystem.wit"
49
wkg get --format wit --overwrite "wasi:random@$p2" -o "crates/wasi/src/p2/wit/deps/random.wit"
50
wkg get --format wit --overwrite "wasi:sockets@$p2" -o "crates/wasi/src/p2/wit/deps/sockets.wit"
51
52
rm -rf crates/wasi-http/wit/deps
53
mkdir -p crates/wasi-http/wit/deps
54
wkg get --format wit --overwrite "wasi:io@$p2" -o "crates/wasi-http/wit/deps/io.wit"
55
wkg get --format wit --overwrite "wasi:clocks@$p2" -o "crates/wasi-http/wit/deps/clocks.wit"
56
wkg get --format wit --overwrite "wasi:cli@$p2" -o "crates/wasi-http/wit/deps/cli.wit"
57
wkg get --format wit --overwrite "wasi:filesystem@$p2" -o "crates/wasi-http/wit/deps/filesystem.wit"
58
wkg get --format wit --overwrite "wasi:random@$p2" -o "crates/wasi-http/wit/deps/random.wit"
59
wkg get --format wit --overwrite "wasi:sockets@$p2" -o "crates/wasi-http/wit/deps/sockets.wit"
60
wkg get --format wit --overwrite "wasi:http@$p2" -o "crates/wasi-http/wit/deps/http.wit"
61
62
63
rm -rf crates/wasi-tls/wit/deps
64
mkdir -p crates/wasi-tls/wit/deps
65
wkg get --format wit --overwrite "wasi:io@$p2" -o "crates/wasi-tls/wit/deps/io.wit"
66
get_github wasi-tls v0.2.0-draft+505fc98 crates/wasi-tls/wit/deps/tls
67
68
rm -rf crates/wasi-config/wit/deps
69
mkdir -p crates/wasi-config/wit/deps
70
get_github wasi-config v0.2.0-rc.1 crates/wasi-config/wit/deps/config
71
72
rm -rf crates/wasi-keyvalue/wit/deps
73
mkdir -p crates/wasi-keyvalue/wit/deps
74
get_github wasi-keyvalue 219ea36 crates/wasi-keyvalue/wit/deps/keyvalue
75
76
rm -rf crates/wasi/src/p3/wit/deps
77
mkdir -p crates/wasi/src/p3/wit/deps
78
wkg get --format wit --overwrite "wasi:clocks@$p3" -o "crates/wasi/src/p3/wit/deps/clocks.wit"
79
wkg get --format wit --overwrite "wasi:cli@$p3" -o "crates/wasi/src/p3/wit/deps/cli.wit"
80
wkg get --format wit --overwrite "wasi:filesystem@$p3" -o "crates/wasi/src/p3/wit/deps/filesystem.wit"
81
wkg get --format wit --overwrite "wasi:random@$p3" -o "crates/wasi/src/p3/wit/deps/random.wit"
82
wkg get --format wit --overwrite "wasi:sockets@$p3" -o "crates/wasi/src/p3/wit/deps/sockets.wit"
83
84
rm -rf crates/wasi-http/src/p3/wit/deps
85
mkdir -p crates/wasi-http/src/p3/wit/deps
86
wkg get --format wit --overwrite "wasi:clocks@$p3" -o "crates/wasi-http/src/p3/wit/deps/clocks.wit"
87
wkg get --format wit --overwrite "wasi:cli@$p3" -o "crates/wasi-http/src/p3/wit/deps/cli.wit"
88
wkg get --format wit --overwrite "wasi:filesystem@$p3" -o "crates/wasi-http/src/p3/wit/deps/filesystem.wit"
89
wkg get --format wit --overwrite "wasi:random@$p3" -o "crates/wasi-http/src/p3/wit/deps/random.wit"
90
wkg get --format wit --overwrite "wasi:sockets@$p3" -o "crates/wasi-http/src/p3/wit/deps/sockets.wit"
91
wkg get --format wit --overwrite "wasi:http@$p3" -o "crates/wasi-http/src/p3/wit/deps/http.wit"
92
93
# wasi-nn is fetched separately since it's not in the standard WASI registry
94
repo=https://raw.githubusercontent.com/WebAssembly/wasi-nn
95
revision=0.2.0-rc-2024-10-28
96
curl --retry 5 --retry-all-errors -L "$repo/$revision/wasi-nn.witx" -o crates/wasi-nn/witx/wasi-nn.witx
97
curl --retry 5 --retry-all-errors -L "$repo/$revision/wit/wasi-nn.wit" -o crates/wasi-nn/wit/wasi-nn.wit
98
99