annotate .github/workflows/make.yaml @ 29581:def7cbcf85ed

Add rule for continuous integration tests on GitHub. * .github/workflow/make.yaml: Add file that defines which actions to run on GitHub-hosted runners on each push.
author Markus Mützel <markus.muetzel@gmx.de>
date Fri, 30 Apr 2021 19:46:23 +0200
parents
children 8f142a26a343
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
1 name: make
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
2 on: [push]
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
3 jobs:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
4
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
5 ubuntu:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
6 runs-on: ${{ matrix.os }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
7 strategy:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
8 matrix:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
9 # For available GitHub-hosted runners, see:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
10 # https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
11 os: [ubuntu-20.04, ubuntu-18.04]
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
12 compiler: [gcc, clang]
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
13 include:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
14 - compiler: gcc
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
15 compiler-pkgs: "g++ gcc"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
16 cc: "gcc"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
17 cxx: "g++"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
18 - compiler: clang
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
19 compiler-pkgs: "clang"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
20 cc: "clang"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
21 cxx: "clang++"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
22 steps:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
23 - uses: actions/checkout@v2
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
24 - name: install dependencies
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
25 env:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
26 COMPILER_PKGS: ${{ matrix.compiler-pkgs }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
27 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
28 sudo apt -qq update
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
29 sudo apt install -y $COMPILER_PKGS autoconf automake bison ccache \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
30 dvipng epstool fig2dev flex gfortran gnuplot-x11 gperf gzip \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
31 icoutils libarpack2-dev libblas-dev libcurl4-gnutls-dev \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
32 libfftw3-dev libfltk1.3-dev libfontconfig1-dev libfreetype6-dev \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
33 libgl1-mesa-dev libgl2ps-dev libglpk-dev libgraphicsmagick++1-dev \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
34 libhdf5-dev liblapack-dev libosmesa6-dev libpcre3-dev \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
35 libqhull-dev libqscintilla2-qt5-dev libqrupdate-dev \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
36 libreadline-dev librsvg2-bin libsndfile1-dev libsuitesparse-dev \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
37 libsundials-dev libtool libxft-dev llvm-dev make openjdk-8-jdk \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
38 perl portaudio19-dev pstoedit qtbase5-dev qttools5-dev \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
39 qttools5-dev-tools rsync tar texinfo texlive-latex-extra xvfb \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
40 zlib1g-dev
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
41 - name: prepare ccache
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
42 # create human readable timestamp
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
43 id: ccache_cache_timestamp
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
44 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
45 echo "::set-output name=TIMESTAMP::$(date +"%Y-%m-%d_%H-%M-%S")"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
46 - name: setup ccache
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
47 # setup the github cache used to maintain the ccache from one job to the next
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
48 uses: actions/cache@v2
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
49 with:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
50 path: /home/runner/.ccache
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
51 key: ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ github.ref }}:${{ steps.ccache_cache_timestamp.outputs.timestamp }}:${{ github.sha }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
52 restore-keys: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
53 ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ github.ref }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
54 ccache:${{ matrix.os }}:${{ matrix.compiler }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
55 - name: configure ccache
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
56 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
57 test -d /home/runner/.ccache || mkdir /home/runner/.ccache
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
58 echo "max_size = 3G" >> /home/runner/.ccache/ccache.conf
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
59 ccache -s
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
60 - name: bootstrap
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
61 run: ./bootstrap
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
62 - name: configure
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
63 env:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
64 MY_CC: ${{ matrix.cc }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
65 MY_CXX: ${{ matrix.cxx }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
66 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
67 echo $MY_CC --version
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
68 $MY_CC --version
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
69 echo $MY_CXX --version
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
70 $MY_CXX --version
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
71 mkdir .build
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
72 cd .build && ../configure \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
73 CC="ccache $MY_CC" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
74 CXX="ccache $MY_CXX" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
75 F77="ccache gfortran" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
76 CPPFLAGS="-I/usr/include/hdf5/serial -I/usr/include/suitesparse" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
77 LDFLAGS="-L/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/hdf5/serial"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
78 - name: build
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
79 env:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
80 XDG_RUNTIME_DIR: "/home/runner/tmp"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
81 # Parallel make seems to fail intermittently when creating the figures
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
82 # for the manual. The error message says it fails to connect to a
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
83 # display. Maybe an xvfb issue?
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
84 # Use single job make for now which seems to work more reliably.
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
85 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
86 test -d $XDG_RUNTIME_DIR || mkdir $XDG_RUNTIME_DIR
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
87 xvfb-run -a make -C ./.build all V=1
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
88 - name: ccache status
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
89 run: ccache -s
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
90 - name: check
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
91 # Continuing on error in this step means that jobs will be "green" even
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
92 # if the test suite crashes. But if we don't continue, we'll loose the
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
93 # ccache and other jobs will be cancelled.
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
94 # It would be nice if we could mark the job as "yellow" (and continue)
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
95 # in that case.
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
96 # It would also be nice if we could analyze the test suite results
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
97 # automatically.
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
98 continue-on-error: true
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
99 env:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
100 XDG_RUNTIME_DIR: "/home/runner/tmp"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
101 run: xvfb-run -a make -C ./.build check V=1
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
102
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
103 macos:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
104 runs-on: ${{ matrix.os }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
105 strategy:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
106 matrix:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
107 # For available GitHub-hosted runners, see: https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
108 os: [macos-10.15]
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
109 # Most (or all) homebrew packages are compiled with clang and link
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
110 # against libc++. So we also use clang to avoid issues with symbols
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
111 # that don't match.
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
112 # compiler: [real-gcc, clang]
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
113 compiler: [clang]
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
114 include:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
115 # - compiler: real-gcc
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
116 # cc: "/usr/local/bin/gcc-10"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
117 # cxx: "/usr/local/bin/g++-10"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
118 # cppflags: "-I/usr/local/opt/hdf5/include -I/usr/local/opt/gl2ps/include -I/usr/local/opt/glpk/include -I/usr/local/opt/pcre/include -I/usr/local/opt/qscintilla2/include -I/usr/local/opt/suite-sparse/include -I/usr/local/opt/sundials/include"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
119 # ldflags: "-L/usr/local/opt/hdf5/lib -L/usr/local/opt/gl2ps/lib -L/usr/local/opt/glpk/lib -L/usr/local/opt/pcre/lib -L/usr/local/opt/qscintilla2/lib -L/usr/local/opt/suite-sparse/lib -L/usr/local/opt/sundials/lib"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
120 - compiler: clang
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
121 cc: "clang"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
122 cxx: "clang++"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
123 env:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
124 MY_PATH: "/usr/local/opt/gnu-sed/libexec/gnubin:/usr/local/opt/bison/bin:/usr/local/opt/texinfo/bin:/usr/local/opt/qt@5/bin:/Library/TeX/texbin"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
125 steps:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
126 - uses: actions/checkout@v2
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
127 - name: install dependencies
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
128 # It looks like "gfortran" isn't working correctly unless it is
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
129 # re-installed as part of "gcc".
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
130
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
131 # See also: https://formulae.brew.sh/formula/octave#default
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
132 # The packages are listed in (alphabetically sorted) blocks:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
133 # The first block is for "direct" dependencies.
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
134 # The second block is for additional dependencies needed when building from a release tarball.
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
135 # The third block is for additional dependencies needed when building from a repository checkout.
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
136 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
137 brew update
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
138 brew uninstall gfortran
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
139 brew install arpack epstool fftw fig2dev fltk fontconfig freetype \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
140 gcc ghostscript gl2ps glpk gnuplot graphicsmagick hdf5 libsndfile \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
141 libtool openblas pcre portaudio pstoedit qhull qrupdate \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
142 qscintilla2 qt@5 readline suite-sparse sundials texinfo \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
143 ccache gnu-sed openjdk pkg-config \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
144 automake autoconf bison gettext icoutils librsvg mactex-no-gui
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
145 eval "$(/usr/libexec/path_helper)"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
146 - name: prepare ccache
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
147 # create human readable timestamp
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
148 id: ccache_cache_timestamp
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
149 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
150 echo "::set-output name=TIMESTAMP::$(date +"%Y-%m-%d_%H-%M-%S")"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
151 - name: setup ccache
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
152 # setup the github cache used to maintain the ccache from one job to the next
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
153 uses: actions/cache@v2
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
154 with:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
155 path: /Users/runner/Library/Caches/ccache
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
156 key: ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ github.ref }}:${{ steps.ccache_cache_timestamp.outputs.timestamp }}:${{ github.sha }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
157 restore-keys: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
158 ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ github.ref }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
159 ccache:${{ matrix.os }}:${{ matrix.compiler }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
160 - name: configure ccache
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
161 # The cache doesn't seem to compress well on macOS. Is it already compressed?
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
162 # Limit the maximum size to avoid exceeding the total cache limits.
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
163 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
164 test -d /Users/runner/Library/Preferences/ccache || mkdir /Users/runner/Library/Preferences/ccache
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
165 echo "max_size = 1.5G" >> /Users/runner/Library/Preferences/ccache/ccache.conf
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
166 ccache -s
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
167 - name: bootstrap
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
168 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
169 export PATH="$MY_PATH:$PATH"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
170 ./bootstrap
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
171 - name: configure
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
172 env:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
173 MY_CC: ${{ matrix.cc }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
174 MY_CXX: ${{ matrix.cxx }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
175 MY_CPPFLAGS: ${{ matrix.cppflags }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
176 MY_LDFLAGS: ${{ matrix.ldflags }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
177 # This is a hodgepodge of configure flags put together from the
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
178 # buildbot rules:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
179 # https://hg.octave.org/octave-buildbot/file/tip/master.cfg#l543
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
180 # And the homebrew formula:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
181 # https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/octave.rb
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
182 # Amended with additional flags that seem to be needed.
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
183 # Not all of those might be needed needed or be correct.
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
184 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
185 export PATH="$MY_PATH:$PATH"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
186 echo $PATH
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
187 echo $MY_CC --version
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
188 $MY_CC --version
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
189 echo $MY_CXX --version
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
190 $MY_CXX --version
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
191 mkdir .build
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
192 cd .build && ../configure \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
193 CC="ccache $MY_CC" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
194 CXX="ccache $MY_CXX" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
195 F77="ccache gfortran" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
196 CPPFLAGS="-I/usr/local/opt/gettext/include -I/usr/local/opt/icu4c/include -I/usr/local/opt/qt@5/include -I/usr/local/opt/readline/include -I/usr/local/opt/sqlite/include $MY_CPPFLAGS" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
197 CXXFLAGS="-O2 -g -std=c++11" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
198 LDFLAGS="-L/usr/local/lib -L/usr/local/opt/bison/lib -L/usr/local/opt/gettext/lib -L/usr/local/opt/icu4c/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/sqlite/lib $MY_LDFLAGS" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
199 PKG_CONFIG_PATH="/usr/local/opt/openblas/lib/pkgconfig:/usr/local/opt/icu4c/lib/pkgconfig:/usr/local/opt/qt@5/lib/pkgconfig" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
200 QCOLLECTIONGENERATOR="qhelpgenerator" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
201 --enable-link-all-dependencies \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
202 --disable-lib-visibility-flags \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
203 --with-x=no \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
204 --with-blas="-L/usr/local/opt/openblas/lib -lopenblas" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
205 --with-java-homedir="/usr/local/opt/openjdk"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
206 - name: build
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
207 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
208 export PATH="$MY_PATH:$PATH"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
209 make -C ./.build all -j3 V=1
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
210 - name: ccache status
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
211 run: ccache -s
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
212 - name: check
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
213 # Continuing on error in this step means that jobs will be "green" even
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
214 # if the test suite crashes. But if we don't continue, we'll loose the
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
215 # ccache and other jobs will be cancelled, too.
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
216 # It would be nice if we could mark the job as "yellow" (and continue)
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
217 # in that case.
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
218 # It would also be nice if we could analyze the test suite results
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
219 # automatically.
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
220 continue-on-error: true
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
221 run: make -C ./.build check V=1