mirror of
https://github.com/idris-lang/Idris2.git
synced 2024-12-24 04:09:10 +03:00
dc79c6dd05
The extra CI jobs introduced in #3067 work fine as long as 'main' is not the checked out branch. This is due to the fetch to a new branch, which git does (reasonably) not allow when you're trying to fetch 'main' into a new branch that's also called 'main'. In this case, we should just `git pull origin main`, which is what the script now (hopefully) does.
772 lines
26 KiB
YAML
772 lines
26 KiB
YAML
name: Idris2 and External Libs
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- '*'
|
|
tags:
|
|
- '*'
|
|
paths-ignore:
|
|
- 'docs/**'
|
|
- 'icons/**'
|
|
- 'Release/**'
|
|
- '**.md'
|
|
- 'CONTRIBUTORS'
|
|
- 'LICENSE'
|
|
- 'CHANGELOG.md'
|
|
- '.github/workflows/ci-bootstrap.yml'
|
|
- '.github/workflows/ci-lint.yml'
|
|
- '.github/workflows/ci-sphinx.yml'
|
|
- '.github/workflows/ci-super-linter.yml'
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
paths-ignore:
|
|
- 'docs/**'
|
|
- 'icons/**'
|
|
- 'Release/**'
|
|
- '**.md'
|
|
- 'CONTRIBUTORS'
|
|
- 'LICENSE'
|
|
- '.github/workflows/ci-bootstrap.yml'
|
|
- '.github/workflows/ci-lint.yml'
|
|
- '.github/workflows/ci-sphinx.yml'
|
|
- '.github/workflows/ci-super-linter.yml'
|
|
|
|
concurrency:
|
|
group: ${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
# We aim to keep newest Idris commits buildable by as early of a
|
|
# previous version as possible. In reality, we bump this regularly
|
|
# to allow us to use new compiler/library features in the compiler
|
|
# codebase, but an admirable longterm goal is to support building the
|
|
# current version of the compiler with a previous version that is older
|
|
# than its immediate predecessor.
|
|
IDRIS2_MINIMUM_COMPAT_VERSION: 0.6.0
|
|
|
|
jobs:
|
|
|
|
initialise:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout Project
|
|
uses: actions/checkout@v3
|
|
with:
|
|
# for pull_request so we can do HEAD^2
|
|
fetch-depth: 2
|
|
|
|
- name: Get commit message
|
|
id: get_commit_message
|
|
run: |
|
|
if [[ '${{ github.event_name }}' == 'push' ]]; then
|
|
echo "commit_message=$(git log --format=%B -n 1 HEAD | tr '\n' ' ')" >> "$GITHUB_OUTPUT"
|
|
elif [[ '${{ github.event_name }}' == 'pull_request' ]]; then
|
|
echo "commit_message=$(git log --format=%B -n 1 HEAD^2 | tr '\n' ' ')" >> "$GITHUB_OUTPUT"
|
|
fi
|
|
|
|
outputs:
|
|
commit_message:
|
|
echo "${{ steps.get_commit_message.outputs.commit_message }}"
|
|
|
|
######################################################################
|
|
# Build from the previous version
|
|
# We perform this check before all the other ones because:
|
|
# 1. It is fast
|
|
# 2. If it fails then there is no point in trying the rest
|
|
######################################################################
|
|
|
|
quick-check:
|
|
needs: initialise
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
!contains(needs.initialise.outputs.commit_message, '[ci: skip]')
|
|
env:
|
|
IDRIS2_CG: chez
|
|
SCHEME: scheme
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- name: Install build dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y chezscheme
|
|
echo "$HOME/.idris2/bin" >> "$GITHUB_PATH"
|
|
|
|
# Get our hands on the released version either by using the cache
|
|
# or by rebuilding it if necessary.
|
|
- name: Cache Chez Previous Version
|
|
id: previous-version-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: Idris2-${{ env.IDRIS2_MINIMUM_COMPAT_VERSION }}
|
|
key: ${{ runner.os }}-idris2-bootstrapped-chez-${{ env.IDRIS2_MINIMUM_COMPAT_VERSION }}
|
|
- name : Build previous version
|
|
if: steps.previous-version-cache.outputs.cache-hit != 'true'
|
|
run: |
|
|
wget "https://www.idris-lang.org/idris2-src/idris2-$IDRIS2_MINIMUM_COMPAT_VERSION.tgz"
|
|
tar zxvf "idris2-$IDRIS2_MINIMUM_COMPAT_VERSION.tgz"
|
|
cd "Idris2-$IDRIS2_MINIMUM_COMPAT_VERSION"
|
|
make bootstrap
|
|
cd ..
|
|
- name: Install previous version
|
|
run: |
|
|
cd "Idris2-$IDRIS2_MINIMUM_COMPAT_VERSION"
|
|
make install
|
|
cd ..
|
|
|
|
# Build the current version and save the installation.
|
|
- name: Build current version
|
|
run: |
|
|
make && make install
|
|
- name: Artifact Idris2 from previous version
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ubuntu-installed-idris2-${{ env.IDRIS2_MINIMUM_COMPAT_VERSION }}-chez
|
|
path: ~/.idris2/
|
|
|
|
######################################################################
|
|
# Bootstrapping builds
|
|
######################################################################
|
|
|
|
# CHEZ
|
|
|
|
ubuntu-bootstrap-chez:
|
|
needs: [initialise, quick-check]
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
!contains(needs.initialise.outputs.commit_message, '[ci:')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: ubuntu]')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: chez]')
|
|
env:
|
|
IDRIS2_CG: chez
|
|
SCHEME: scheme
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- name: Install build dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y chezscheme
|
|
echo "$HOME/.idris2/bin" >> "$GITHUB_PATH"
|
|
- name: Make bootstrap folder readonly
|
|
run: chmod -R a-w bootstrap
|
|
- name: Build from bootstrap
|
|
run: make bootstrap && make install
|
|
- name: Artifact Bootstrapped Idris2
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ubuntu-installed-bootstrapped-idris2-chez
|
|
path: ~/.idris2/
|
|
|
|
macos-bootstrap-chez:
|
|
needs: [initialise, quick-check]
|
|
runs-on: macos-latest
|
|
if: |
|
|
!contains(needs.initialise.outputs.commit_message, '[ci:')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: macos]')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: chez]')
|
|
env:
|
|
SCHEME: chez
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- name: Install build dependencies
|
|
run: |
|
|
brew install chezscheme
|
|
brew install coreutils
|
|
echo "$HOME/.idris2/bin" >> "$GITHUB_PATH"
|
|
- name: Make bootstrap folder readonly
|
|
run: chmod -R a-w bootstrap
|
|
- name: Build Idris 2 from bootstrap
|
|
run: make bootstrap && make install
|
|
shell: bash
|
|
- name: Artifact Bootstrapped Idris2
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: macos-installed-bootstrapped-idris2-chez
|
|
path: ~/.idris2/
|
|
|
|
windows-bootstrap-chez:
|
|
needs: [initialise, quick-check]
|
|
runs-on: windows-latest
|
|
if: |
|
|
!contains(needs.initialise.outputs.commit_message, '[ci:')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: windows]')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: chez]')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: racket]')
|
|
env:
|
|
MSYSTEM: MINGW64
|
|
MSYS2_PATH_TYPE: inherit
|
|
SCHEME: scheme
|
|
CC: gcc
|
|
steps:
|
|
- name: Init
|
|
run: |
|
|
git config --global core.autocrlf false
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- name: Get Chez Scheme
|
|
run: |
|
|
git clone --depth 1 --branch v9.5.8a https://github.com/cisco/ChezScheme
|
|
c:\msys64\usr\bin\bash -l -c "pacman -S --noconfirm tar make mingw-w64-x86_64-gcc"
|
|
echo "PWD=$(c:\msys64\usr\bin\cygpath -u $(pwd))" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
- name: Configure and Build Chez Scheme
|
|
run: |
|
|
c:\msys64\usr\bin\bash -l -c "cd $env:PWD && cd ChezScheme && ./configure --threads && make"
|
|
- name: Set Path
|
|
run: |
|
|
$chez="$(pwd)\ChezScheme\ta6nt\bin\ta6nt"
|
|
$idris="$(pwd)\.idris2"
|
|
echo "$chez" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
|
echo "$idris\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
|
echo "IDRIS_PREFIX=$idris" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
echo "PREFIX=$(c:\msys64\usr\bin\cygpath -u $idris)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
- name: Test Scheme
|
|
run: |
|
|
scheme --version
|
|
- name: Bootstrap
|
|
run: c:\msys64\usr\bin\bash -l -c "cd $env:PWD && make bootstrap"
|
|
- name: Bootstrap test
|
|
run: c:\msys64\usr\bin\bash -l -c "cd $env:PWD && make ci-windows-bootstrap-test"
|
|
- name: Install
|
|
run: c:\msys64\usr\bin\bash -l -c "cd $env:PWD && make install"
|
|
- name: Artifact Idris2 from chez
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: windows-installed-bootstrapped-idris2-chez
|
|
path: ${{ env.IDRIS_PREFIX }}
|
|
|
|
nix-bootstrap-chez:
|
|
needs: [initialise, quick-check]
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(!contains(needs.initialise.outputs.commit_message, '[ci:')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: nix]')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: chez]'))
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: cachix/install-nix-action@v18
|
|
- name: Test with nix
|
|
env:
|
|
NIX_CONFIG: "experimental-features = nix-command flakes"
|
|
run: nix build .#checks.x86_64-linux.idris2Tests -L
|
|
|
|
# RACKET
|
|
|
|
ubuntu-bootstrap-racket:
|
|
needs: [initialise, quick-check]
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
!contains(needs.initialise.outputs.commit_message, '[ci:')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: ubuntu]')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: racket]')
|
|
|
|
env:
|
|
IDRIS2_CG: racket
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- name: Install build dependencies
|
|
run: |
|
|
sudo apt-get install -y racket
|
|
echo "$HOME/.idris2/bin" >> "$GITHUB_PATH"
|
|
- name: Make bootstrap folder readonly
|
|
run: chmod -R a-w bootstrap
|
|
- name: Build from bootstrap
|
|
run: make bootstrap-racket && make install
|
|
- name: Artifact Bootstrapped Idris2
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ubuntu-installed-bootstrapped-idris2-racket
|
|
path: ~/.idris2/
|
|
|
|
######################################################################
|
|
# Self-hosting builds and testing
|
|
######################################################################
|
|
|
|
# CHEZ
|
|
|
|
ubuntu-self-host-chez:
|
|
needs: ubuntu-bootstrap-chez
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
IDRIS2_CG: chez
|
|
SCHEME: scheme
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- name: Download Idris2 Artifact
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: ubuntu-installed-bootstrapped-idris2-chez
|
|
path: ~/.idris2/
|
|
- name: Install build dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y chezscheme
|
|
echo "$HOME/.idris2/bin" >> "$GITHUB_PATH"
|
|
chmod +x "$HOME/.idris2/bin/idris2" "$HOME/.idris2/bin/idris2_app/"*
|
|
- name: Build self-hosted
|
|
run: make all IDRIS2_BOOT="idris2 -Werror" && make install
|
|
- name: Test self-hosted
|
|
run: make ci-ubuntu-test INTERACTIVE=''
|
|
|
|
macos-self-host-chez:
|
|
needs: macos-bootstrap-chez
|
|
runs-on: macos-latest
|
|
env:
|
|
SCHEME: chez
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- name: Download Idris2 Artifact
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: macos-installed-bootstrapped-idris2-chez
|
|
path: ~/.idris2/
|
|
- name: Install build dependencies
|
|
run: |
|
|
brew install chezscheme
|
|
brew install coreutils
|
|
echo "$HOME/.idris2/bin" >> "$GITHUB_PATH"
|
|
chmod +x "$HOME/.idris2/bin/idris2" "$HOME/.idris2/bin/idris2_app/"*
|
|
- name: Build self-hosted
|
|
run: make all IDRIS2_BOOT="idris2 -Werror" && make install
|
|
shell: bash
|
|
- name: Test self-hosted
|
|
run: make ci-macos-test INTERACTIVE=''
|
|
shell: bash
|
|
|
|
# RACKET
|
|
|
|
ubuntu-self-host-racket:
|
|
needs: ubuntu-bootstrap-racket
|
|
runs-on: ubuntu-latest
|
|
if: false
|
|
env:
|
|
IDRIS2_CG: racket
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- name: Download Idris2 Artifact
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: ubuntu-installed-bootstrapped-idris2-racket
|
|
path: ~/.idris2/
|
|
- name: Install build dependencies
|
|
run: |
|
|
sudo apt-get install -y racket
|
|
echo "$HOME/.idris2/bin" >> "$GITHUB_PATH"
|
|
chmod +x "$HOME/.idris2/bin/idris2" "$HOME/.idris2/bin/idris2_app/"*
|
|
- name: Build self-hosted
|
|
run: make all IDRIS2_BOOT="idris2 -Werror" && make install
|
|
- name: Test self-hosted
|
|
run: make ci-ubuntu-test INTERACTIVE=''
|
|
|
|
ubuntu-self-host-previous-version:
|
|
needs: [initialise, quick-check]
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
!contains(needs.initialise.outputs.commit_message, '[ci:')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: ubuntu]')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: libs]')
|
|
env:
|
|
IDRIS2_CG: chez
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- name: Download Idris2 Artifact
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: ubuntu-installed-idris2-${{ env.IDRIS2_MINIMUM_COMPAT_VERSION }}-chez
|
|
path: ~/.idris2/
|
|
- name: Install build dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y chezscheme
|
|
echo "$HOME/.idris2/bin" >> "$GITHUB_PATH"
|
|
chmod +x "$HOME/.idris2/bin/idris2" "$HOME/.idris2/bin/idris2_app/"*
|
|
- name: Build self-hosted from previous version
|
|
run: make all IDRIS2_BOOT="idris2 -Werror" && make install
|
|
- name: Test self-hosted from previous version
|
|
run: make ci-ubuntu-test INTERACTIVE=''
|
|
- name: Artifact Idris2
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: idris2-nightly-chez
|
|
path: ~/.idris2/
|
|
|
|
windows-self-host-racket:
|
|
needs: [initialise, windows-bootstrap-chez]
|
|
runs-on: windows-latest
|
|
if: |
|
|
!contains(needs.initialise.outputs.commit_message, '[ci:')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: windows]')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: racket]')
|
|
env:
|
|
IDRIS2_CG: racket
|
|
MSYSTEM: MINGW64
|
|
MSYS2_PATH_TYPE: inherit
|
|
CC: gcc
|
|
RACKET_RACO: raco
|
|
steps:
|
|
- name: Init
|
|
run: |
|
|
git config --global core.autocrlf false
|
|
echo "PWD=$(c:\msys64\usr\bin\cygpath -u $(pwd))" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- name: Get Chez Scheme
|
|
run: |
|
|
git clone --depth 1 --branch v9.5.8a https://github.com/cisco/ChezScheme
|
|
c:\msys64\usr\bin\bash -l -c "pacman -S --noconfirm tar make mingw-w64-x86_64-gcc"
|
|
echo "PWD=$(c:\msys64\usr\bin\cygpath -u $(pwd))" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
- name: Configure and Build Chez Scheme
|
|
run: |
|
|
c:\msys64\usr\bin\bash -l -c "cd $env:PWD && cd ChezScheme && ./configure --threads && make"
|
|
- name: Set Path
|
|
run: |
|
|
$chez="$(pwd)\ChezScheme\ta6nt\bin\ta6nt"
|
|
$idris="$(pwd)\.idris2"
|
|
echo "$chez" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
|
echo "$idris\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
|
echo "IDRIS_PREFIX=$idris" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
echo "PREFIX=$(c:\msys64\usr\bin\cygpath -u $idris)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
- name: Download Idris2 Artifact
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: windows-installed-bootstrapped-idris2-chez
|
|
path: ${{ env.IDRIS_PREFIX }}
|
|
- name: Install build dependencies
|
|
uses: Bogdanp/setup-racket@v1.4
|
|
with:
|
|
variant: 'CS'
|
|
version: 'stable'
|
|
distribution: 'full'
|
|
- name: Self host
|
|
run: |
|
|
c:\msys64\usr\bin\bash -l -c "cd $env:PWD && make"
|
|
# TODO: fix the broken tests!
|
|
# - name: Test
|
|
# run: c:\msys64\usr\bin\bash -l -c "cd $env:PWD && make ci-windows-test"
|
|
- name: Install
|
|
run: c:\msys64\usr\bin\bash -l -c "cd $env:PWD && make install"
|
|
|
|
######################################################################
|
|
# Ubuntu API
|
|
######################################################################
|
|
|
|
ubuntu-build-api:
|
|
needs: ubuntu-bootstrap-chez
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
IDRIS2_CG: chez
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- name: Download Idris2 Artifact
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: ubuntu-installed-bootstrapped-idris2-chez
|
|
path: ~/.idris2/
|
|
- name: Install build dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y chezscheme
|
|
echo "$HOME/.idris2/bin" >> "$GITHUB_PATH"
|
|
chmod +x "$HOME/.idris2/bin/idris2" "$HOME/.idris2/bin/idris2_app/"*
|
|
- name: Build API
|
|
run: make install-api
|
|
shell: bash
|
|
- name: Test API
|
|
run: cd tests/idris2/api/api001 && ./run "$HOME/.idris2/bin/idris2"
|
|
shell: bash
|
|
|
|
######################################################################
|
|
# Testing some libraries on Ubuntu and pack.
|
|
#
|
|
# We are particularly interested in libraries that are heavily using
|
|
# dependent types, that are prone to find bugs and regressions in the
|
|
# compiler.
|
|
######################################################################
|
|
|
|
######################################################################
|
|
# Test that we can build Collie
|
|
######################################################################
|
|
|
|
ub-test-collie:
|
|
needs: [initialise, ubuntu-self-host-previous-version]
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
!contains(needs.initialise.outputs.commit_message, '[ci:')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: libs]')
|
|
env:
|
|
IDRIS2_CG: chez
|
|
steps:
|
|
- name: Download Idris2 Artifact
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: idris2-nightly-chez
|
|
path: ~/.idris2/
|
|
- name: Install build dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y chezscheme
|
|
echo "$HOME/.idris2/bin" >> "$GITHUB_PATH"
|
|
chmod +x "$HOME/.idris2/bin/idris2" "$HOME/.idris2/bin/idris2_app/"*
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: 'ohad/collie'
|
|
- name: Build Collie
|
|
run: |
|
|
make
|
|
|
|
########################################################################
|
|
# Test that we can build Frex
|
|
########################################################################
|
|
|
|
ub-test-frex:
|
|
needs: [initialise, ubuntu-self-host-previous-version]
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
!contains(needs.initialise.outputs.commit_message, '[ci:')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: libs]')
|
|
env:
|
|
IDRIS2_CG: chez
|
|
steps:
|
|
- name: Download Idris2 Artifact
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: idris2-nightly-chez
|
|
path: ~/.idris2/
|
|
- name: Install build dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y chezscheme
|
|
echo "$HOME/.idris2/bin" >> "$GITHUB_PATH"
|
|
chmod +x "$HOME/.idris2/bin/idris2" "$HOME/.idris2/bin/idris2_app/"*
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: 'frex-project/idris-frex'
|
|
- name: Build Frex
|
|
run: |
|
|
make
|
|
make test
|
|
|
|
######################################################################
|
|
# Test that we can build Stefan Höck's elab-util and pack
|
|
######################################################################
|
|
|
|
# ELAB-UTIL
|
|
|
|
ub-test-elab-util:
|
|
needs: [initialise, ubuntu-self-host-previous-version]
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
!contains(needs.initialise.outputs.commit_message, '[ci:')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: libs]')
|
|
env:
|
|
IDRIS2_CG: chez
|
|
steps:
|
|
- name: Download Idris2 Artifact
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: idris2-nightly-chez
|
|
path: ~/.idris2/
|
|
- name: Install build dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y chezscheme
|
|
echo "$HOME/.idris2/bin" >> "$GITHUB_PATH"
|
|
chmod +x "$HOME/.idris2/bin/idris2" "$HOME/.idris2/bin/idris2_app/"*
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: 'stefan-hoeck/idris2-elab-util'
|
|
- name: Build idris2-elab-util
|
|
run: |
|
|
make all
|
|
|
|
# PACK
|
|
#
|
|
# N.B. instead of bootstrapping pack, we use the dockerimage where it is
|
|
# already, and then use pack to rebuild pack with this job's idris2 sources
|
|
|
|
ub-pack-test-pack:
|
|
needs: [initialise, ubuntu-self-host-previous-version]
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
!contains(needs.initialise.outputs.commit_message, '[ci:')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: libs]')
|
|
env:
|
|
IDRIS2_CG: chez
|
|
PACK_DIR: /root/.pack
|
|
strategy:
|
|
fail-fast: false
|
|
# N.B.:
|
|
container: ghcr.io/stefan-hoeck/idris2-pack:latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: 'stefan-hoeck/idris2-pack'
|
|
# by default, pack uses the main idris2 head, not the current job's one
|
|
- name: Toml setup
|
|
run: |
|
|
{ echo "[idris2]"
|
|
echo "url = \"https://github.com/${GITHUB_REPOSITORY}\""
|
|
echo "commit = \"latest:${GITHUB_REF_NAME}\""
|
|
echo "bootstrap = true"
|
|
} > pack.toml
|
|
- name: Build idris2-pack
|
|
run: |
|
|
git config --global --add safe.directory "${PWD}"
|
|
|
|
# only fetch to a new branch if we're not on main (otherwise, git complains)
|
|
if [[ $(git branch --show-current) != 'main' ]]
|
|
then git fetch "https://github.com/${GITHUB_REPOSITORY}" "${GITHUB_REF}:${GITHUB_REF_NAME}"
|
|
else git pull origin main
|
|
fi
|
|
|
|
# rebuild pack with the fetched Idris2
|
|
pack install pack
|
|
|
|
######################################################################
|
|
# Test that we can build the LSP
|
|
######################################################################
|
|
|
|
ub-pack-test-lsp:
|
|
needs: [initialise, ubuntu-self-host-previous-version]
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
!contains(needs.initialise.outputs.commit_message, '[ci:')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: libs]')
|
|
env:
|
|
IDRIS2_CG: chez
|
|
PACK_DIR: /root/.pack
|
|
# LSP is vastly easier to build using pack, so do that
|
|
container: ghcr.io/stefan-hoeck/idris2-pack:latest
|
|
strategy:
|
|
fail-fast: false
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: 'idris-community/idris2-lsp'
|
|
- name: Toml setup
|
|
run: |
|
|
{ echo "[idris2]"
|
|
echo "url = \"https://github.com/${GITHUB_REPOSITORY}\""
|
|
echo "commit = \"latest:${GITHUB_REF_NAME}\""
|
|
echo "bootstrap = true"
|
|
} > pack.toml
|
|
# make sure pack is running the PR's Idris2 before building LSP
|
|
- name: Build pack with PR-Idris
|
|
run: |
|
|
git config --global --add safe.directory "${PWD}"
|
|
|
|
# only fetch to a new branch if we're not on main (otherwise, git complains)
|
|
if [[ $(git branch --show-current) != 'main' ]]
|
|
then git fetch "https://github.com/${GITHUB_REPOSITORY}" "${GITHUB_REF}:${GITHUB_REF_NAME}"
|
|
else git pull origin main
|
|
fi
|
|
|
|
pack install pack
|
|
- name: Build+install idris2-lsp
|
|
run: |
|
|
pack --no-prompt install-app idris2-lsp
|
|
|
|
######################################################################
|
|
# Test that we can use Katla to build html doc of the libs
|
|
######################################################################
|
|
|
|
ub-test-katla-and-html:
|
|
needs: [initialise, ubuntu-self-host-previous-version]
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
!contains(needs.initialise.outputs.commit_message, '[ci:')
|
|
|| contains(needs.initialise.outputs.commit_message, '[ci: html]')
|
|
env:
|
|
IDRIS2_CG: chez
|
|
steps:
|
|
|
|
- name: Initialise DEPLOY variable
|
|
run: |
|
|
if [[ '${{ github.ref }}' == 'refs/heads/main' ]]; then
|
|
echo "IDRIS2_DEPLOY=true" >> "$GITHUB_ENV"
|
|
fi
|
|
|
|
- name: Download Idris2 Artifact
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: idris2-nightly-chez
|
|
path: ~/.idris2/
|
|
- name: Install build dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y chezscheme markdown
|
|
echo "$HOME/.idris2/bin" >> "$GITHUB_PATH"
|
|
chmod +x "$HOME/.idris2/bin/idris2" "$HOME/.idris2/bin/idris2_app/"*
|
|
- name: Checkout idris2
|
|
uses: actions/checkout@v3
|
|
- name: Build API
|
|
run: make install-api
|
|
shell: bash
|
|
- name: Checkout collie
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: 'ohad/collie'
|
|
- name: Build and install Collie
|
|
run: |
|
|
make install
|
|
- name: Checkout idrall
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: 'alexhumphreys/idrall'
|
|
- name: Build and install idrall
|
|
run: |
|
|
make install
|
|
- name: Checkout katla
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: 'idris-community/katla'
|
|
- name: Build and install katla
|
|
run: |
|
|
make
|
|
mkdir -p "${HOME}"/.local/bin/
|
|
cp -r build/exec/* "${HOME}"/.local/bin/
|
|
echo "${HOME}/.local/bin" >> "$GITHUB_PATH"
|
|
- name: Checkout idris2
|
|
uses: actions/checkout@v3
|
|
- name: Build html doc & landing page
|
|
run: |
|
|
make -C libs/prelude/ install docs IDRIS2=idris2
|
|
make -C libs/base/ install docs IDRIS2=idris2
|
|
make -C libs/contrib/ install docs IDRIS2=idris2
|
|
make -C libs/network/ install docs IDRIS2=idris2
|
|
make -C libs/linear/ install docs IDRIS2=idris2
|
|
make -C libs/test/ install docs IDRIS2=idris2
|
|
make -C libs/papers/ install docs IDRIS2=idris2
|
|
|
|
cd .github/scripts
|
|
./katla.sh
|
|
cd -
|
|
cd www/
|
|
./katla.sh
|
|
cd -
|
|
cp -r www/html/* .github/scripts/html/
|
|
- name: Deploy HTML
|
|
uses: JamesIves/github-pages-deploy-action@4.1.3
|
|
if: ${{ success() && env.IDRIS2_DEPLOY }}
|
|
|
|
with:
|
|
branch: gh-pages
|
|
folder: .github/scripts/html/
|
|
git-config-name: Github Actions
|