oxcaml-bundle#
Builds the OxCaml 5.2.0minus31 compiler from a single self-contained
tarball, and packages it per distro.
make dist # -> oxcaml-5.2.0minus31.tar.gz
make source TARGET=ubuntu-26.04 # -> out/ubuntu-26.04/source/ (Debian source pkg)
make pkg TARGET=ubuntu-26.04 # -> out/ubuntu-26.04/ (binary .deb, pbuilder)
make all-pkg # every target in TARGETS
make repo # -> repo/ (signed apt+dnf+pacman + install.sh)
make help
Targets live in packaging/targets/*.conf:
| TARGET | FAMILY | base image | codename |
|---|---|---|---|
ubuntu-24.04 |
deb | ubuntu:24.04 |
noble |
ubuntu-26.04 |
deb | ubuntu:26.04 |
resolute |
debian-13 |
deb | debian:13 |
trixie |
fedora-44 |
rpm | fedora:44 |
— (mock in a clean chroot) |
arch |
arch | archlinux:latest |
— (makepkg) |
Installation (end users)#
Packages are published at https://oi.thicket.dev/repo, GPG-signed
with the builder's key. They install a relocatable tree at
/opt/oxcaml/5.2.0minus31 — add /opt/oxcaml/5.2.0minus31/bin to your
PATH afterwards (e.g. export PATH=/opt/oxcaml/5.2.0minus31/bin:$PATH).
Installer script#
curl -fsSL https://oi.thicket.dev/repo/install.sh | sh
Detects the distro, wires up the matching signed repo and installs
oxcaml-compiler. On a distro with no prebuilt package it builds
from source automatically; sh -s -- --source forces that path and
sh -s -- --help lists flags (--prefix, --repo-url).
Debian / Ubuntu (noble, resolute, trixie)#
curl -fsSL https://oi.thicket.dev/repo/apt/oxcaml.asc \
| sudo gpg --dearmor -o /usr/share/keyrings/oxcaml.gpg
. /etc/os-release # picks your codename
echo "deb [signed-by=/usr/share/keyrings/oxcaml.gpg] https://oi.thicket.dev/repo/apt $VERSION_CODENAME main" \
| sudo tee /etc/apt/sources.list.d/oxcaml.list
sudo apt update && sudo apt install oxcaml-compiler
Fedora (fedora-44)#
sudo rpm --import https://oi.thicket.dev/repo/rpm/fedora-44/oxcaml.asc
sudo tee /etc/yum.repos.d/oxcaml.repo >/dev/null <<'EOF'
[oxcaml]
name=OxCaml
baseurl=https://oi.thicket.dev/repo/rpm/fedora-44
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://oi.thicket.dev/repo/rpm/fedora-44/oxcaml.asc
EOF
sudo dnf install oxcaml-compiler
Arch Linux#
curl -fsSL https://oi.thicket.dev/repo/arch/oxcaml.asc -o /tmp/oxcaml.asc
sudo pacman-key --add /tmp/oxcaml.asc
sudo pacman-key --lsign-key \
"$(gpg --show-keys --with-colons /tmp/oxcaml.asc | awk -F: '/^pub/{print $5; exit}')"
sudo tee -a /etc/pacman.conf >/dev/null <<'EOF'
[oxcaml]
SigLevel = Required DatabaseOptional
Server = https://oi.thicket.dev/repo/arch/$arch
EOF
sudo pacman -Sy oxcaml-compiler
Homebrew (Linux)#
brew install avsm/oxcaml/oxcaml
Taps avsm/oxcaml and builds oxcaml from the published self-contained
source tarball.
Other distros — from source#
No package, or an unsupported (but glibc) distro:
curl -fsSL https://oi.thicket.dev/repo/install.sh | sh -s -- --source
This fetches the self-contained source tarball from
https://oi.thicket.dev/repo/src/, verifies its sha256 and builds it
(needs make and a C compiler; takes a while). OxCaml is glibc-only
— musl (Alpine) is detected and refused, since the build cannot succeed
there.
Maintainers:
make repobuilds the signed tree,make publishpushes it to S3 the safe two-pass way (payloads first, indices last — a naives3cmd synccauses "checksum doesn't match" on clients). Signing is host-only; RPM package signing needsrpmsignon the host (sudo apt install rpm).