blob: 2c9192a8253169e9c7791d7cbf309dd732a70819 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
name: Continuous Integration
on: [push, pull_request]
jobs:
ubuntu:
strategy:
matrix:
os: [ubuntu-22.04, ubuntu-24.04]
compiler: ['CC=gcc CXX=g++', 'CC=clang CXX=clang++']
interface: [ncurses, gtk]
# NOTE: The virtual environments already contain both GCC and Clang
runs-on: ${{ matrix.os }}
steps:
- name: Git Clone
uses: actions/checkout@v4.1.6
with:
submodules: true
- name: Update Repositories
run: sudo apt-get update
- name: Install Build Dependencies
run: >
sudo apt-get install -y
build-essential
autoconf automake libtool
libglib2.0-dev libncurses-dev libgtk-3-dev xvfb
groff doxygen
- name: Configure Build
env:
# Enable Adress Sanitizer only on ncurses.
# Gtk produces a lot of false negatives.
# This will improve the test suite quality, even without Valgrind.
CFLAGS: ${{ matrix.interface == 'ncurses' && '-fsanitize=address -fno-omit-frame-pointer' || ' ' }}
CXXFLAGS: ${{ matrix.interface == 'ncurses' && '-fsanitize=address -fno-omit-frame-pointer' || ' ' }}
MALLOC_REPLACEMENT: ${{ matrix.interface == 'ncurses' && 'no' || 'check' }}
run: |
autoreconf -i
./configure --with-interface=${{ matrix.interface }} --enable-debug --enable-html-docs \
--enable-malloc-replacement=$MALLOC_REPLACEMENT ${{ matrix.compiler }}
# NOTE: xvfb-run emulates an XServer and is required when building
# Gtk versions (since SciTECO calls itself during the build).
- name: make
run: xvfb-run -a make
- name: make install
run: sudo xvfb-run -a make install
# NOTE: The test suite must be run in verbose mode because if it fails
# we won't be able to analyze testsuite.log.
- name: Run Test Suite
run: xvfb-run -a make check TESTSUITEFLAGS="--verbose"
- name: Build Developer Documentation
run: cd doc && make devdoc
- name: make distcheck
run: xvfb-run -a make distcheck
- name: Build Source Tarball
run: make dist
macos:
runs-on: macos-latest
steps:
- name: Git Clone
uses: actions/checkout@v4.1.6
with:
submodules: true
# NOTE: macOS already ships with ncurses and
# XCode already comes with the autotools.
- name: Install Build Dependencies
run: brew install autoconf automake libtool glib groff doxygen
- name: Configure Build
env:
# Make sure we don't pick up GCC by accident.
CC: clang
CXX: clang++
run: |
autoreconf -i
./configure --with-interface=ncurses --enable-debug --enable-html-docs
- run: make
- run: sudo make install
# NOTE: The test suite must be run in verbose mode because if it fails
# we won't be able to analyze testsuite.log.
- name: Run Test Suite
run: make check TESTSUITEFLAGS="--verbose"
- name: Build Developer Documentation
run: cd doc && make devdoc
- run: make distcheck
- name: Build Source Tarball
run: make dist
win64:
runs-on: windows-latest
defaults:
run:
shell: bash.exe --login -eo pipefail "{0}"
env:
MSYSTEM: MINGW64
CHERE_INVOKING: 1
steps:
- name: Git Clone
uses: actions/checkout@v4.1.6
with:
submodules: true
- name: Set Up Shell
run: echo C:\msys64\usr\bin\ | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
shell: pwsh
- name: Install Build Dependencies
run: >
pacman -S --noconfirm --needed
base-devel mingw-w64-x86_64-autotools mingw-w64-x86_64-toolchain
mingw-w64-x86_64-glib2 mingw-w64-x86_64-pdcurses
groff mingw-w64-x86_64-doxygen
- name: Configure Build
env:
PDCURSES_CFLAGS: -I/mingw64/include/pdcurses/
run: |
autoreconf -i
./configure --with-interface=pdcurses-gui --enable-debug --enable-html-docs
- run: make
- run: make install
# NOTE: The test suite must be run in verbose mode because if it fails
# we won't be able to analyze testsuite.log.
- name: Run Test Suite
run: make check TESTSUITEFLAGS="--verbose"
- name: Build Developer Documentation
run: cd doc && make devdoc
- name: make distcheck
env:
DISTCHECK_CONFIGURE_FLAGS: --with-interface=pdcurses-gui
PDCURSES_CFLAGS: -I/mingw64/include/pdcurses/
run: make distcheck
- name: Build Source Tarball
run: make dist
|