Skip to content
name: Build F* (Windows, self-hosted)
on:
workflow_call:
workflow_dispatch:
push:
jobs:
build-windows:
runs-on: [self-hosted, Windows, X64, opam-2-3]
# NOTE: no setup, the self-hosted runner already has all that is needed.
# This workflow also has many weird restrictions like
# having to set cygwin bash, cd into $GITHUB_WORKSPACE, and keep
# shell commands to a single line.
steps:
- run: echo "CYGWIN=winsymlinks:nativestrict" >>$GITHUB_ENV
- name: Check out repo
uses: actions/checkout@v4
- run: ls -lR
- run: ls -l stage0/Makefile
- run: cat stage0/Makefile
- name: Set version
shell: C:\cygwin64\bin\bash.exe --login '{0}'
run: |
# Setting FSTAR_VERSION for nightly and release builds. If unset,
# we use $(version.txt)~dev. Setting it avoids the ~dev.
cd $GITHUB_WORKSPACE && if [[ "${{github.workflow_ref}}" =~ "nightly.yml" ]]; then echo FSTAR_VERSION="nightly-$(date -I)" >> $GITHUB_ENV; elif [[ "${{github.workflow_ref}}" =~ "release.yml" ]]; then echo FSTAR_VERSION="$(cat version.txt)" >> $GITHUB_ENV; echo FSTAR_RELEASE=1 >> $GITHUB_ENV; fi && echo "There is a CR at the end of this line"
- name: Build a package
shell: C:\cygwin64\bin\bash.exe --login '{0}'
run: |
cd $GITHUB_WORKSPACE && eval $(opam env) && export CC=x86_64-w64-mingw32-gcc.exe && make -j$(nproc) package && echo "There is a CR at the end of this line"
- name: Test the package
shell: C:\cygwin64\bin\bash.exe --login '{0}'
run: |
cd $GITHUB_WORKSPACE && eval $(opam env) && export CC=x86_64-w64-mingw32-gcc.exe && export CI_THREADS=$(nproc) && .scripts/test_package.sh && echo "There is a CR at the end of this line"
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
path: fstar-*.zip
name: package-win