Skip to content

feat: Statically linked binary releases #1

feat: Statically linked binary releases

feat: Statically linked binary releases #1

Workflow file for this run

name: Build statically linked binaries
# The goal of this workflow is to test the installation of the project with opam
# on a specific light docker container instead of using default GH-actions one.
on:
workflow_dispatch:
pull_request:
jobs:
macos-static:
name: Build statically linked macOS binaries
if: ${{ github.event_name != 'pull_request' }}
strategy:
matrix:
include:
- arch: x86_64
os: macos-12
- arch: aarch64
os: macos-14
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: ocaml/setup-ocaml@v2
with:
allow-prerelease-opam: true
ocaml-compiler: 4.14.1
dune-cache: true
- run: opam install . --locked --deps-only --ignore-constraints-on alt-ergo-lib,alt-ergo-parsers
- run: opam exec -- dune subst
- run: LINK_MODE=mixed opam exec -- dune build --release src/bin/text/Main_text.exe
- run: cp src/bin/text/Main_text.exe src/bin/text/alt-ergo
- uses: actions/upload-artifact@v4
with:
name: alt-ergo-${{ matrix.arch }}-macos
path: src/bin/text/alt-ergo
musl:
name: Build statically linked binary with musl
runs-on: ubuntu-latest
# Retrieve and use a light docker container on which ocaml 4.10 is installed
# as a system compiler. This container also contains opam 2.1.
container:
image: ocamlpro/ocaml:4.14
options: --user root
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Switch to ocaml user
run: su ocaml
# This line is needed to acces and use opam. We are unable to set the user
# to `ocaml` with the container parameters
- run: sudo chmod a+wx .
# This line is needed to allow the working directory to be used even
# the ocaml user do not have rights on it.
- run: CURRENTDIR=$(basename $(pwd)); git config --global --add safe.directory /__w/$CURRENTDIR/$CURRENTDIR
- name: Install static dependencies
run: sudo apk add zlib-static
# Create a switch with the system compiler (no compilation needed).
# This installs external (no need for depext with opam 2.1) and libs deps.
- run: opam switch create . ocaml-system --locked --deps-only --ignore-constraints-on alt-ergo-lib,alt-ergo-parsers
- run: opam exec -- dune subst
- name: Build statically linked binary
run: LINK_MODE=static opam exec -- dune build --release src/bin/text/Main_text.exe
- run: cp src/bin/text/Main_text.exe src/bin/text/alt-ergo
- uses: actions/upload-artifact@v4
with:
name: alt-ergo-x86_64-linux-musl
path: src/bin/text/alt-ergo