fix up #17
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: [push] | |
env: | |
FPTAYLOR_VERSION: 'fabc895ddc595dc41fbe7ce511049c745e1f9136' | |
CAKEML_VERSION: 'v1217' | |
CAKEML_BIN: '../cache/cakeml' | |
DAISY_VERSION: 'b483303f3914106173902669855d371ff73bf568' | |
DAISY_BASE: '../cache/daisy' | |
# latest stable version | |
JULIA_VERSION: '1' | |
jobs: | |
unit: # package setup, Racket unit testing | |
name: "Unit Tests" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "Unit Tests" | |
id: unit | |
run: make raco-test | |
tools: # front-end tools | |
name: "Tools Tests" | |
runs-on: ubuntu-latest | |
needs: [ 'unit' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "Export tool" | |
run: make export-test | |
- name: "Transform tool" | |
run: make transform-test | |
- name: "Toolserver tool" | |
run: make toolserver-test | |
- name: "Evaluate tool" | |
run: make evaluate-test | |
- name: "Tensor examples" | |
run: make tensor-test | |
c: # C langugae | |
name: "C Tests" | |
runs-on: ubuntu-latest | |
needs: [ 'unit' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "C sanity" | |
run: make c-sanity | |
- name: "C test" | |
run: make c-test | |
java: # Java langugae | |
name: "Java Tests" | |
runs-on: ubuntu-latest | |
needs: [ 'unit' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install Java" | |
uses: actions/setup-java@v2 | |
with: | |
distribution: 'temurin' | |
java-version: '11' | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "Java sanity" | |
run: make java-sanity | |
- name: "Java test" | |
run: make java-test | |
go: # Go langugae | |
name: "Go Tests" | |
runs-on: ubuntu-latest | |
needs: [ 'unit' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "Go sanity" | |
run: make go-sanity | |
- name: "Go test" | |
run: make go-test | |
rust: # Rust language | |
name: "Rust Tests" | |
runs-on: ubuntu-latest | |
needs: [ 'unit' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install Rust" | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "Rust sanity" | |
run: make rust-sanity | |
- name: "Rust test" | |
run: make rust-test | |
js: # JavaScript langugae | |
name: "JavaScript Tests" | |
runs-on: ubuntu-latest | |
needs: [ 'unit' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install Node.js" | |
uses: actions/setup-node@v2 | |
with: | |
node-version: '16' | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "JS sanity" | |
run: make js-sanity | |
- name: "Java test" | |
if: ${{ (success() || failure()) && steps.java_sanity.outcome == 'success' }} | |
run: make java-test | |
- name: "JS test" | |
run: make js-test | |
sollya: # Sollya langugae | |
name: "Sollya Tests" | |
runs-on: ubuntu-latest | |
needs: [ 'unit' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev sollya | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "Sollya sanity" | |
run: make sollya-sanity | |
- name: "Sollya test" | |
run: make sollya-test | |
fptaylor: # FPTaylor langugae | |
name: "FPTaylor Tests" | |
runs-on: ubuntu-latest | |
needs: [ 'unit' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install OCaml" | |
uses: ocaml/setup-ocaml@v2 | |
with: | |
ocaml-compiler: '4.04.2' | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev | |
eval $(opam env) | |
git clone https://github.com/soarlab/FPTaylor.git ../cache/fptaylor | |
(cd ../cache/fptaylor && git checkout ${FPTAYLOR_VERSION} && make clean-all && make) | |
echo "${PWD}/../cache/fptaylor" >> $GITHUB_PATH | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "FPTaylor sanity" | |
run: make fptaylor-sanity | |
- name: "FPTaylor test" # make sure environment has correct variables | |
run: eval `opam config env` && make fptaylor-test | |
daisy: # Scala language (daisy tool) | |
name: "Scala (Daisy) Tests" | |
runs-on: ubuntu-latest | |
needs: [ 'unit' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: olafurpg/setup-scala@v11 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install Java" | |
uses: actions/setup-java@v2 | |
with: | |
distribution: 'temurin' | |
java-version: '8' | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev | |
- name: "Install Daisy" | |
run: | | |
git clone --recurse-submodules https://github.com/malyzajko/daisy ../cache/daisy | |
cd ../cache/daisy | |
git checkout ${DAISY_VERSION} | |
sed -i 's/) dependsOn (smtlib//g' build.sbt | |
sed -i 's/libraryDependencies ++= Seq(/libraryDependencies ++= Seq("com.regblanc" %% "scala-smtlib" % "0.2.1-42-gc68dbaa",/g' build.sbt | |
sbt compile | |
sbt script | |
echo "${PWD}" >> $GITHUB_PATH | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "Scala (Daisy) sanity" | |
run: make scala-sanity | |
- name: "Scala (Daisy) test" | |
run: make scala-test | |
z3: # SMT (Z3) language | |
name: "SMT (Z3) Tests" | |
runs-on: ubuntu-latest | |
needs: [ 'unit' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install Z3" | |
uses: pavpanchekha/[email protected] | |
with: | |
version: '4.8.8' | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "SMT (Z3) sanity" | |
run: make smtlib2-sanity | |
- name: "SMT (Z3) test" | |
run: make smtlib2-test | |
cakeml: # CakeML language | |
name: "CakeML Tests" | |
runs-on: ubuntu-latest | |
needs: [ 'unit' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev | |
(mkdir -p ../cache/cakeml && curl -L https://github.com/CakeML/cakeml/releases/download/${CAKEML_VERSION}/cake-x64-64.tar.gz | \ | |
tar -xz -C ../cache/cakeml --strip-components 1) | |
(cd ../cache/cakeml && make cake) | |
echo "${PWD}/../cache/cakeml" >> $GITHUB_PATH | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "CakeML sanity" | |
run: make cakeml-sanity | |
- name: "CakeML test" | |
run: make cakeml-test | |
ocaml: # OCaml language | |
name: "OCaml Tests" | |
runs-on: ubuntu-latest | |
needs: [ 'unit' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install OCaml" | |
uses: ocaml/setup-ocaml@v2 | |
with: | |
ocaml-compiler: '4.08.1' | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "OCaml sanity" | |
run: | | |
eval `opam config env` | |
make ocaml-sanity | |
- name: "OCaml test" | |
run: | | |
eval `opam config env` | |
make ocaml-test | |
python: # Python language | |
name: "Python Tests" | |
runs-on: ubuntu-latest | |
needs: [ 'unit' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "Python sanity" | |
run: make python-sanity | |
- name: "Python test" | |
run: make python-test | |
fortran: # Fortran language (2003) | |
name: "Fortran Tests" | |
runs-on: ubuntu-latest | |
needs: [ 'unit' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev gfortran | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "Fortran sanity" | |
run: make fortran-sanity | |
- name: "Fortran test" | |
run: make fortran-test | |
# This test does not work | |
# Hard to figure out why | |
# | |
# matlab: # MATLAB language (2003) | |
# name: "MATLAB Tests" | |
# runs-on: ubuntu-latest | |
# needs: [ 'unit' ] | |
# steps: | |
# - uses: actions/checkout@v2 | |
# - name: "Install Racket" | |
# uses: Bogdanp/[email protected] | |
# with: | |
# architecture: 'x64' | |
# distribution: 'full' | |
# variant: 'CS' | |
# version: '8.2' | |
# - name: "Install MATLAB" | |
# uses: matlab-actions/setup-matlab@v0 | |
# - name: "Install Packages" | |
# run: | | |
# sudo apt-get update | |
# sudo apt-get install -y libmpfr6 libmpfr-dev | |
# - name: "Install as Racket package" | |
# run: raco pkg install --auto | |
# - name: "MATLAB sanity" | |
# run: make matlab-sanity | |
# - name: "MATLAB test" | |
# run: make matlab-test | |
haskell: # Haskell language | |
name: "Haskell Tests" | |
runs-on: ubuntu-latest | |
needs: [ 'unit' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "Haskell sanity" | |
run: make haskell-sanity | |
- name: "Haskell test" | |
run: make haskell-test | |
# Note: Julia 1.6.2 will crash when trying to print infinity | |
# Ubuntu 20.04 ships with Julia 1.4.1 | |
# Julia tests take forever, so split the jobs | |
julia-sanity: # Julia language | |
name: "Julia Sanity Tests" | |
runs-on: ubuntu-latest | |
needs: [ 'unit' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev | |
- name: "Install Julia" | |
uses: julia-actions/setup-julia@v1 | |
with: | |
version: '1' | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "Julia sanity" | |
run: make julia-sanity | |
julia-benchmarks: | |
name: Julia Benchmarks | |
runs-on: ubuntu-latest | |
needs: [ 'julia-sanity' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev | |
- name: "Install Julia" | |
uses: julia-actions/setup-julia@v1 | |
with: | |
version: '1' | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "Julia benchmarks" | |
run: make julia-benchmarks | |
julia-tests: | |
name: Julia Tests (binary64, mixed) | |
runs-on: ubuntu-latest | |
needs: [ 'julia-sanity' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev | |
- name: "Install Julia" | |
uses: julia-actions/setup-julia@v1 | |
with: | |
version: '1' | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "Julia tests" | |
run: make julia-binary64 | |
julia-binary32-tests: | |
name: Julia Tests (binary32) | |
runs-on: ubuntu-latest | |
needs: [ 'julia-sanity' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "Install Racket" | |
uses: Bogdanp/[email protected] | |
with: | |
architecture: 'x64' | |
distribution: 'full' | |
variant: 'CS' | |
version: '8.2' | |
- name: "Install Packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmpfr6 libmpfr-dev | |
- name: "Install Julia" | |
uses: julia-actions/setup-julia@v1 | |
with: | |
version: '1' | |
- name: "Install as Racket package" | |
run: raco pkg install --auto | |
- name: "Julia tests" | |
run: make julia-binary32 |