Build native Debian/Ubuntu/Brew/etc versions of oxcaml packages
0

Configure Feed

Select the types of activity you want to include in your feed.

Shell 61.8%
Makefile 20.6%
Dockerfile 6.0%
Other 11.7%
9 1 1

Clone this repository

https://tangled.org/anil.recoil.org/oxcaml-pkgs https://tangled.org/did:plc:rkpobrhbwslmzj3j3se5ps3g
git@git.recoil.org:anil.recoil.org/oxcaml-pkgs git@git.recoil.org:did:plc:rkpobrhbwslmzj3j3se5ps3g

For self-hosted knots, clone URLs may differ based on your setup.



README.md

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 repo builds the signed tree, make publish pushes it to S3 the safe two-pass way (payloads first, indices last — a naive s3cmd sync causes "checksum doesn't match" on clients). Signing is host-only; RPM package signing needs rpmsign on the host (sudo apt install rpm).