annotate .github/workflows/make.yaml @ 29740:c3bab252f071

GitHub-CI: Timeout configure step on Windows after 30 minutes. * .github/workflows/make.yaml (windows): For currently unknown reasons, compiling Fortran files seems to intermittently block execution indefinitely. Time out after 30 minutes in this case. But allow other jobs in the matrix to continue.
author Markus Mützel <markus.muetzel@gmx.de>
date Mon, 07 Jun 2021 16:54:12 +0200
parents be335be5c0bc
children 315df8a5ac22
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]
29589
c3d463a3c472 GitHub-CI: Avoid running multiple actions at the same time
Markus Mützel <markus.muetzel@gmx.de>
parents: 29587
diff changeset
3 concurrency: ci-${{ github.ref }}
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
4
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
5 jobs:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
6
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
7 ubuntu:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
8 runs-on: ${{ matrix.os }}
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
9
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
10 strategy:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
11 matrix:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
12 # 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
13 # 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
14 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
15 compiler: [gcc, clang]
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
16 include:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
17 - compiler: gcc
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
18 compiler-pkgs: "g++ gcc"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
19 cc: "gcc"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
20 cxx: "g++"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
21 - compiler: clang
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
22 compiler-pkgs: "clang"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
23 cc: "clang"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
24 cxx: "clang++"
29584
c05d23ac4931 GitHub-CI: Increase ccache size for gcc on Ubuntu 20.04.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29582
diff changeset
25 # "ccache" on Ubuntu 20.04 with gcc seems to require much more cache
c05d23ac4931 GitHub-CI: Increase ccache size for gcc on Ubuntu 20.04.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29582
diff changeset
26 # storage than on the other runners to work effectively.
c05d23ac4931 GitHub-CI: Increase ccache size for gcc on Ubuntu 20.04.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29582
diff changeset
27 - ccache-max: 3G
c05d23ac4931 GitHub-CI: Increase ccache size for gcc on Ubuntu 20.04.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29582
diff changeset
28 - os: ubuntu-20.04
c05d23ac4931 GitHub-CI: Increase ccache size for gcc on Ubuntu 20.04.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29582
diff changeset
29 compiler: gcc
c05d23ac4931 GitHub-CI: Increase ccache size for gcc on Ubuntu 20.04.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29582
diff changeset
30 ccache-max: 6G
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
31
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
32 steps:
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
33 - name: checkout repository
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
34 uses: actions/checkout@v2
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
35
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
36 - name: install dependencies
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
37 env:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
38 COMPILER_PKGS: ${{ matrix.compiler-pkgs }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
39 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
40 sudo apt -qq update
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
41 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
42 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
43 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
44 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
45 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
46 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
47 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
48 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
49 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
50 perl portaudio19-dev pstoedit qtbase5-dev qttools5-dev \
29587
d10027532f0a GitHub-CI: Install dependency rapidjson.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29584
diff changeset
51 qttools5-dev-tools rapidjson-dev rsync tar texinfo \
d10027532f0a GitHub-CI: Install dependency rapidjson.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29584
diff changeset
52 texlive-latex-extra xvfb zlib1g-dev
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
53
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
54 - name: prepare ccache
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
55 # create human readable timestamp
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
56 id: ccache_cache_timestamp
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
57 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
58 echo "::set-output name=TIMESTAMP::$(date +"%Y-%m-%d_%H-%M-%S")"
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
59
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
60 - name: setup ccache
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
61 # 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
62 uses: actions/cache@v2
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
63 with:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
64 path: /home/runner/.ccache
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
65 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
66 restore-keys: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
67 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
68 ccache:${{ matrix.os }}:${{ matrix.compiler }}
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
69
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
70 - name: configure ccache
29584
c05d23ac4931 GitHub-CI: Increase ccache size for gcc on Ubuntu 20.04.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29582
diff changeset
71 env:
c05d23ac4931 GitHub-CI: Increase ccache size for gcc on Ubuntu 20.04.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29582
diff changeset
72 CCACHE_MAX: ${{ matrix.ccache-max }}
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
73 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
74 test -d /home/runner/.ccache || mkdir /home/runner/.ccache
29584
c05d23ac4931 GitHub-CI: Increase ccache size for gcc on Ubuntu 20.04.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29582
diff changeset
75 echo "max_size = $CCACHE_MAX" >> /home/runner/.ccache/ccache.conf
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
76 ccache -s
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
77
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
78 - name: bootstrap
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
79 run: ./bootstrap
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
80
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
81 - name: configure
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
82 env:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
83 MY_CC: ${{ matrix.cc }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
84 MY_CXX: ${{ matrix.cxx }}
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 echo $MY_CC --version
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
87 $MY_CC --version
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
88 echo $MY_CXX --version
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
89 $MY_CXX --version
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
90 mkdir .build
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
91 cd .build && ../configure \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
92 CC="ccache $MY_CC" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
93 CXX="ccache $MY_CXX" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
94 F77="ccache gfortran" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
95 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
96 LDFLAGS="-L/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/hdf5/serial"
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
97
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
98 - name: build
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 # 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
102 # 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
103 # display. Maybe an xvfb issue?
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
104 # 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
105 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
106 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
107 xvfb-run -a make -C ./.build all V=1
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
108
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
109 - name: ccache status
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
110 run: ccache -s
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
111
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
112 - name: check
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
113 # 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
114 # 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
115 # 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
116 # 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
117 # in that case.
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
118 # 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
119 # automatically.
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
120 continue-on-error: true
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
121 env:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
122 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
123 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
124
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
125
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
126 macos:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
127 runs-on: ${{ matrix.os }}
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
128
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
129 strategy:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
130 matrix:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
131 # 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
132 os: [macos-10.15]
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
133 # 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
134 # 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
135 # that don't match.
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
136 # compiler: [real-gcc, clang]
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
137 compiler: [clang]
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
138 include:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
139 # - compiler: real-gcc
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
140 # 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
141 # 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
142 # 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
143 # 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
144 - compiler: clang
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
145 cc: "clang"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
146 cxx: "clang++"
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
147
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
148 env:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
149 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"
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
150
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
151 steps:
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
152 - name: checkout repository
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
153 uses: actions/checkout@v2
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
154
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
155 - name: install dependencies
29697
3ef50a8d01c5 GitHub-CI: Re-install gcc on macOS runners.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29660
diff changeset
156 # It looks like "gfortran" isn't working correctly unless "gcc" is
3ef50a8d01c5 GitHub-CI: Re-install gcc on macOS runners.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29660
diff changeset
157 # re-installed.
3ef50a8d01c5 GitHub-CI: Re-install gcc on macOS runners.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29660
diff changeset
158
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
159 # 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
160 # 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
161 # 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
162 # 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
163 # 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
164 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
165 brew update
29697
3ef50a8d01c5 GitHub-CI: Re-install gcc on macOS runners.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29660
diff changeset
166 brew reinstall gcc
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
167 brew install arpack epstool fftw fig2dev fltk fontconfig freetype \
29697
3ef50a8d01c5 GitHub-CI: Re-install gcc on macOS runners.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29660
diff changeset
168 ghostscript gl2ps glpk gnuplot graphicsmagick hdf5 libsndfile \
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
169 libtool openblas pcre portaudio pstoedit qhull qrupdate \
29587
d10027532f0a GitHub-CI: Install dependency rapidjson.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29584
diff changeset
170 qscintilla2 qt@5 rapidjson readline suite-sparse sundials texinfo \
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
171 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
172 automake autoconf bison gettext icoutils librsvg mactex-no-gui
29697
3ef50a8d01c5 GitHub-CI: Re-install gcc on macOS runners.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29660
diff changeset
173 eval "$(/usr/libexec/path_helper)"
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
174
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
175 - name: prepare ccache
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
176 # create human readable timestamp
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
177 id: ccache_cache_timestamp
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
178 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
179 echo "::set-output name=TIMESTAMP::$(date +"%Y-%m-%d_%H-%M-%S")"
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
180
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
181 - name: setup ccache
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
182 # 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
183 uses: actions/cache@v2
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
184 with:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
185 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
186 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
187 restore-keys: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
188 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
189 ccache:${{ matrix.os }}:${{ matrix.compiler }}
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
190
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
191 - name: configure ccache
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
192 # 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
193 # 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
194 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
195 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
196 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
197 ccache -s
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
198
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
199 - name: bootstrap
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
200 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
201 export PATH="$MY_PATH:$PATH"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
202 ./bootstrap
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
203
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
204 - name: configure
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
205 env:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
206 MY_CC: ${{ matrix.cc }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
207 MY_CXX: ${{ matrix.cxx }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
208 MY_CPPFLAGS: ${{ matrix.cppflags }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
209 MY_LDFLAGS: ${{ matrix.ldflags }}
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
210 # 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
211 # buildbot rules:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
212 # 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
213 # And the homebrew formula:
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
214 # 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
215 # Amended with additional flags that seem to be needed.
29648
0230f7cf4044 GitHub-CI: Build with visibility flags on macOS (bug #59820).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29589
diff changeset
216 # Not all of those might be needed or be correct.
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
217 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
218 export PATH="$MY_PATH:$PATH"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
219 echo $PATH
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
220 echo $MY_CC --version
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
221 $MY_CC --version
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
222 echo $MY_CXX --version
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
223 $MY_CXX --version
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
224 mkdir .build
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
225 cd .build && ../configure \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
226 CC="ccache $MY_CC" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
227 CXX="ccache $MY_CXX" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
228 F77="ccache gfortran" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
229 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
230 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
231 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
232 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
233 QCOLLECTIONGENERATOR="qhelpgenerator" \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
234 --with-x=no \
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
235 --with-blas="-L/usr/local/opt/openblas/lib -lopenblas" \
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
236 --with-java-homedir="/usr/local/opt/openjdk" \
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
237 --prefix="${HOME}/usr"
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
238
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
239 - name: build
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
240 run: |
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
241 export PATH="$MY_PATH:$PATH"
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
242 make -C ./.build all -j3 V=1
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
243
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
244 - name: ccache status
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
245 run: ccache -s
29582
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
246
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
247 - name: install
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
248 # Install Octave prior to running the test suite for "mkoctfile" to
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
249 # work correctly.
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
250 run: make -C ./.build install V=1
8f142a26a343 GitHub-CI: Install on macOS before running test suite.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29581
diff changeset
251
29581
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
252 - name: check
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
253 # 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
254 # 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
255 # 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
256 # 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
257 # in that case.
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
258 # 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
259 # automatically.
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
260 continue-on-error: true
def7cbcf85ed Add rule for continuous integration tests on GitHub.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
261 run: make -C ./.build check V=1
29718
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
262
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
263
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
264 windows:
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
265 runs-on: ${{ matrix.os }}
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
266
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
267 defaults:
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
268 run:
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
269 # Use pre-installed MSYS2 as default shell
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
270 shell: C:/msys64/usr/bin/bash.exe --login -eo pipefail "{0}"
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
271
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
272 strategy:
29740
c3bab252f071 GitHub-CI: Timeout configure step on Windows after 30 minutes.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29726
diff changeset
273 fail-fast: false
29718
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
274 matrix:
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
275 # For available GitHub-hosted runners, see: https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
276 os: [windows-2019]
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
277 compiler: [gcc]
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
278 target: [x86_64, i686]
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
279 include:
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
280 - compiler: gcc
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
281 target: x86_64
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
282 target-triplet: x86_64-w64-mingw32
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
283 target-prefix: mingw-w64-x86_64
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
284 msystem: MINGW64
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
285 mingw-prefix: mingw64
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
286 cc: x86_64-w64-mingw32-gcc
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
287 cxx: x86_64-w64-mingw32-g++
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
288 f77: x86_64-w64-mingw32-gfortran
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
289 - compiler: gcc
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
290 target: i686
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
291 target-triplet: i686-w64-mingw32
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
292 target-prefix: mingw-w64-i686
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
293 msystem: MINGW32
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
294 mingw-prefix: mingw32
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
295 cc: i686-w64-mingw32-gcc
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
296 cxx: i686-w64-mingw32-g++
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
297 f77: i686-w64-mingw32-gfortran
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
298
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
299 env:
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
300 MSYSTEM: ${{ matrix.msystem }}
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
301 CHERE_INVOKING: 1
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
302 CC: ${{ matrix.cc }}
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
303 CXX: ${{ matrix.cxx }}
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
304 F77: ${{ matrix.f77 }}
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
305 TARGET_TRIPLET: ${{ matrix.target-triplet }}
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
306 TARGET_PREFIX: ${{ matrix.target-prefix }}
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
307 # perl uses cmd shell by default
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
308 PERL5SHELL: bash -l -c
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
309
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
310 steps:
29726
be335be5c0bc GitHub-CI: Update MSYS2 in workflow for Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29721
diff changeset
311 - name: update MSYS2
be335be5c0bc GitHub-CI: Update MSYS2 in workflow for Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29721
diff changeset
312 # This step might update the runtime which requires a console restart
be335be5c0bc GitHub-CI: Update MSYS2 in workflow for Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29721
diff changeset
313 # In this case, it will kill the console which shouldn't count as an error.
be335be5c0bc GitHub-CI: Update MSYS2 in workflow for Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29721
diff changeset
314 continue-on-error: true
be335be5c0bc GitHub-CI: Update MSYS2 in workflow for Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29721
diff changeset
315 run: pacman --noconfirm -Syu
be335be5c0bc GitHub-CI: Update MSYS2 in workflow for Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29721
diff changeset
316
29718
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
317 - name: install dependencies
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
318 # The packages are listed in (alphabetically sorted) blocks:
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
319 # The first block is for mandatory dependencies.
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
320 # The second block is for optional dependencies needed when building from a release tarball.
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
321 # The third block is for additional dependencies needed when building from a repository checkout.
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
322 run: |
29726
be335be5c0bc GitHub-CI: Update MSYS2 in workflow for Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29721
diff changeset
323 pacman --noconfirm -Syu
29718
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
324 pacman --noconfirm -S --needed --overwrite * \
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
325 base-devel ${TARGET_PREFIX}-toolchain ${TARGET_PREFIX}-lapack ${TARGET_PREFIX}-openblas ${TARGET_PREFIX}-pcre \
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
326 ${TARGET_PREFIX}-arpack ${TARGET_PREFIX}-curl ${TARGET_PREFIX}-cvode ${TARGET_PREFIX}-fftw ${TARGET_PREFIX}-fltk ${TARGET_PREFIX}-gl2ps ${TARGET_PREFIX}-glpk ${TARGET_PREFIX}-ghostscript ${TARGET_PREFIX}-gnuplot ${TARGET_PREFIX}-graphicsmagick ${TARGET_PREFIX}-hdf5 ${TARGET_PREFIX}-libsndfile ${TARGET_PREFIX}-portaudio ${TARGET_PREFIX}-qhull ${TARGET_PREFIX}-qrupdate ${TARGET_PREFIX}-qscintilla ${TARGET_PREFIX}-qt5 ${TARGET_PREFIX}-rapidjson ${TARGET_PREFIX}-suitesparse \
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
327 git ${TARGET_PREFIX}-ccache ${TARGET_PREFIX}-icoutils ${TARGET_PREFIX}-librsvg texinfo
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
328
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
329 - name: checkout repository
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
330 uses: actions/checkout@v2
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
331
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
332 - name: prepare ccache
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
333 # Create human readable timestamp
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
334 id: ccache_cache_timestamp
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
335 run: |
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
336 echo "::set-output name=TIMESTAMP::$(date +"%Y-%m-%d_%H-%M-%S")"
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
337
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
338 - name: setup ccache
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
339 # Setup the github cache used to maintain the ccache from one job to the next
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
340 uses: actions/cache@v2
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
341 with:
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
342 path: C:/msys64/home/runneradmin/.ccache
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
343 key: ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ matrix.target }}:${{ github.ref }}:${{ steps.ccache_cache_timestamp.outputs.timestamp }}:${{ github.sha }}
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
344 restore-keys: |
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
345 ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ matrix.target }}:${{ github.ref }}
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
346 ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ matrix.target }}
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
347
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
348 - name: configure ccache
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
349 # Limit the maximum size and switch on compression to avoid exceeding the total disk or cache quota.
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
350 run: |
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
351 which ccache
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
352 test -d ~/.ccache || mkdir -p ~/.ccache
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
353 echo "max_size = 1.2G" > ~/.ccache/ccache.conf
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
354 echo "compression = true" >> ~/.ccache/ccache.conf
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
355 ccache -s
29726
be335be5c0bc GitHub-CI: Update MSYS2 in workflow for Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29721
diff changeset
356 # create ccache helper script for Fortran compiler
be335be5c0bc GitHub-CI: Update MSYS2 in workflow for Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29721
diff changeset
357 echo -e '#!/bin/bash\nccache '$MINGW_PREFIX'/bin/'$F77' "$@"' > $MINGW_PREFIX/lib/ccache/bin/$F77
29721
24effbddcbe8 GitHub-CI: Don't use ccache for Fortran on Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29718
diff changeset
358 # prepend path to ccache helper scripts to PATH
29718
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
359 echo 'export PATH="$MINGW_PREFIX/lib/ccache/bin:$PATH"' >> ~/.bash_profile
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
360
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
361 - name: bootstrap
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
362 run: |
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
363 ./bootstrap
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
364
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
365 - name: configure
29740
c3bab252f071 GitHub-CI: Timeout configure step on Windows after 30 minutes.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29726
diff changeset
366 # configure sometimes hangs while compiling 32bit Fortran.
c3bab252f071 GitHub-CI: Timeout configure step on Windows after 30 minutes.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29726
diff changeset
367 # It should take much less than 30 minutes. Cancel the step if it takes longer.
c3bab252f071 GitHub-CI: Timeout configure step on Windows after 30 minutes.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29726
diff changeset
368 timeout-minutes: 30
29718
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
369 # PortAudio requires linking to libuuid. But its pkg-config file doesn't reference the path to that library.
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
370 # FIXME: Fix building with Java support. Override JAVA_HOME for now.
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
371 # FIXME: How do we get a working TeX environment in MSYS2? Disable building the documentation for now.
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
372 # Linking with ncurses fails. Use termcap library instead.
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
373 run: |
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
374 which $CC
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
375 echo $CC --version
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
376 $CC --version
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
377 which $CXX
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
378 echo $CXX --version
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
379 $CXX --version
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
380 which $F77
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
381 echo $F77 --version
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
382 $F77 --version
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
383 mkdir .build
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
384 cd .build && ../configure \
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
385 JAVA_HOME="" \
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
386 --disable-docs \
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
387 ac_cv_search_tputs=-ltermcap
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
388
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
389 - name: build
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
390 # Spawning processes seems to have a big overhead on this platform. Use a somewhat larger number of parallel processes to compensate for that.
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
391 # MSYS2's "fltk-config" returns wrong LIBS. Override them for make.
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
392 # See: https://github.com/msys2/MINGW-packages/issues/8806
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
393 # MSYS2's "portaudio" doesn't depend on uuid. But its package-config file still contains "-luuid". Override the flags for make.
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
394 # See: https://github.com/msys2/MINGW-packages/issues/8805
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
395 run: |
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
396 make -C ./.build all -j8 V=1 \
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
397 FLTK_LIBS="-lfltk_gl -lopengl32 -lglu32 -lfltk -lpthread" \
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
398 PORTAUDIO_LIBS="-lportaudio -ldsound -lsetupapi -lwinmm -lm -lole32"
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
399
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
400 - name: ccache status
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
401 continue-on-error: true
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
402 run: ccache -s
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
403
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
404 - name: install
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
405 # Install Octave
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
406 # Create symlinks to the libexec binaries in bin (or they won't find their libraries?)
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
407 run: |
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
408 make -C ./.build install V=1
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
409 ln -sf ${MINGW_PREFIX}/libexec/octave/7.0.0/exec/${TARGET_TRIPLET}/octave-gui.exe ${MINGW_PREFIX}/bin/octave-gui.exe
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
410 ln -sf ${MINGW_PREFIX}/libexec/octave/7.0.0/exec/${TARGET_TRIPLET}/octave-svgconvert.exe ${MINGW_PREFIX}/bin/octave-svgconvert.exe
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
411
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
412 - name: check
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
413 # Continuing on error in this step means that jobs will be "green" even
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
414 # if the test suite crashes. But if we don't continue, we'll loose the
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
415 # ccache and other jobs will be cancelled, too.
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
416 # It would be nice if we could mark the job as "yellow" (and continue)
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
417 # in that case.
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
418 # It would also be nice if we could analyze the test suite results
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
419 # automatically.
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
420 continue-on-error: true
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
421
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
422 # We cannot run "make check" in the MSYS2 shell because it will fail with backslash as a file separator.
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
423 # Instead, use the CMD shell and set up the environment to pick up what we just built.
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
424 shell: cmd
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
425 env:
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
426 MSYS_PATH: C:\msys64\${{ matrix.mingw-prefix }}\bin;C:\msys64\usr\bin
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
427 MSYSTEM: ${{ matrix.msystem }}
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
428 TERM: cygwin
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
429 GNUTERM: wxt
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
430 GS: gs.exe
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
431
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
432 # Also, install .bat file for "makeinfo" so that it can be called from that shell.
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
433 run: |
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
434 set PATH=%MSYS_PATH%;%PATH%
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
435 echo @echo off > C:/msys64/usr/bin/makeinfo.bat
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
436 echo %%~d0 >> C:/msys64/usr/bin/makeinfo.bat
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
437 echo cd "%%~dp0" >> C:/msys64/usr/bin/makeinfo.bat
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
438 echo perl "%%~n0" %%* >> C:/msys64/usr/bin/makeinfo.bat
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
439 rem Start Octave and run test suite
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
440 octave-gui --eval "__run_test_suite__"
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
441
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
442 - name: display test results
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
443 continue-on-error: true
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
444 # Displaying the log shouldn't take long. Cancel the step if it does.
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
445 timeout-minutes: 5
504fcc051d51 GitHub-CI: Add workflow for native Windows builds.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29697
diff changeset
446 run: cat fntests.log