You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: support Ubuntu noble (24.04) for the Docker and native dev builds
The dev toolchain is pinned to LLVM 13 (aWsm builds against an LLVM-13 binding
fork), but apt.llvm.org never published llvm-toolchain-noble-13 and noble dropped
libtinfo5, so a plain focal->noble bump failed to build.
- install_llvm.sh: on noble, pin the focal apt.llvm.org repo for LLVM 13 and
install the focal-era libtinfo5/libffi7 the LLVM 13 packages need; skip lldb-13
(needs the absent libpython3.8). Other releases keep the upstream llvm.sh path.
- Dockerfile.x86_64: base on ubuntu:noble; drop libtinfo5 from apt (handled by
install_llvm.sh); reuse noble's stock ubuntu user at UID/GID 1000 instead of
creating a colliding dev user.
- install_deb.sh: drop libtinfo5 from apt (handled by install_llvm.sh).
- README: document the validated native build on Ubuntu incl. 24.04 noble, with
caveats (update-alternatives repoints default clang; focal-pinned packages).
Verified end-to-end on Ubuntu 24.04.4 (noble), x86_64, both in Docker and
natively: aWsm, libsledge, the runtime, and all nine sample *.wasm.so modules
build and sledgert runs.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+12-4Lines changed: 12 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@
6
6
7
7
SLEdge's `aWsm` compiler is built against a **specific LLVM version (LLVM 13)** via the `llvm-alt` Rust bindings. Those bindings use LLVM C-API functions (e.g. `LLVMBuildCall`, `LLVMBuildLoad`) that were **removed in LLVM 15+**, so the build will fail to link against newer LLVM toolchains.
8
8
9
-
**For this reason, the Docker environment below is the recommended way to build SLEdge.** It pins the exact Debian + LLVM 13 + WASI SDK toolchain that the compiler needs, and works on any host with Docker (macOS, Windows/WSL2, or a Linux distro other than the one targeted by `install_deb.sh`).
9
+
**For this reason, the Docker environment below is the recommended way to build SLEdge.** It pins the exact Ubuntu + LLVM 13 + WASI SDK toolchain that the compiler needs, and works on any host with Docker (macOS, Windows/WSL2, or any Linux distribution). To build directly on a Debian or Ubuntu host instead — including Ubuntu 24.04 (noble) — see [Native build](#native-build-linux-debian-or-ubuntu-including-2404-noble) below.
10
10
11
11
### Docker (recommended)
12
12
@@ -68,11 +68,11 @@ If you are finished working with the SLEdge runtime and wish to remove it, run t
68
68
69
69
And then simply delete this repository.
70
70
71
-
### Native build (Debian + LLVM 13 only)
71
+
### Native build (Linux: Debian or Ubuntu, including 24.04 noble)
72
72
73
-
**Caveat:**`install_deb.sh`only works on a host whose package repositories provide **LLVM 13** and `libtinfo5` — in practice a Debian release (or older Ubuntu such as 20.04/22.04) that `apt.llvm.org` still serves LLVM 13 for. It will **not** work on Ubuntu 24.04 (noble) or other distros where LLVM 13 is unavailable: `libtinfo5` has no install candidate, `apt.llvm.org/llvm.sh 13` provides no packages, and the `aWsm` build will fail to link against the newer system LLVM (`undefined symbol: LLVMBuildCall`). Use the Docker route above on those systems.
73
+
`install_deb.sh`installs the full toolchain directly on the host — the apt dependencies, **LLVM 13**, the WASI SDK, and a Rust toolchain — after which `make install` builds the runtime and the sample functions.
74
74
75
-
On a supported host:
75
+
On **Ubuntu 24.04 (noble)** neither the distro nor `apt.llvm.org/noble` provides LLVM 13, so `install_llvm.sh` automatically pins the **focal**`apt.llvm.org` repository for LLVM 13 and installs the two focal-era runtime libraries that noble dropped (`libtinfo5`, `libffi7`). This path is validated on Ubuntu 24.04.4 (noble), x86_64: `aWsm`, `libsledge`, the runtime, and all nine sample `*.wasm.so` modules compile, and the resulting `sledgert` binary runs.
-`install_deb.sh` requires `sudo` and uses `update-alternatives` to point the default `clang`, `wasm-ld`, and `llvm-config` at version 13. On a host that already runs a newer LLVM as its default (e.g. noble's system clang), this changes that default system-wide.
89
+
- On noble the toolchain is pinned to focal-era LLVM 13 packages, which are on an older support track; the `apt.llvm.org/focal` and `archive.ubuntu.com``.deb` URLs it relies on may eventually move or disappear.
90
+
- The sample functions are C, compiled with the WASI SDK's clang, so a Rust `wasm32-wasi`/`wasm32-wasip1` target is not required to build them.
91
+
92
+
On a distribution where neither the native repositories nor the focal fallback provide LLVM 13, use the Docker route above instead.
93
+
86
94
## Running your first serverless function
87
95
88
96
An SLEdge serverless function consists of a shared library (\*.so) and a JSON configuration file that determines how the runtime should execute the serverless function. As an example, here is the configuration file for our sample fibonacci function:
0 commit comments