Mercurial > octave
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 |
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 |