aboutsummaryrefslogtreecommitdiffhomepage
path: root/.github/workflows/ci.yml
blob: 6b5f3297064fe835090ac720804a8fdf3f9dae19 (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
name: Continuous Integration

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  ubuntu:
    strategy:
      matrix:
        os: [ubuntu-18.04, ubuntu-20.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: Recursive Git Clone
      uses: actions/checkout@v2
      with:
        submodules: recursive

    - 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
      run: |
        autoreconf -i
        ./configure --with-interface=${{ matrix.interface }} --enable-html-manual ${{ 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
    # FIXME: Will try to perform an out-of-tree build which will not
    # work without manual intervention due to Scintilla.
#   - name: make distcheck
#     run: xvfb-run -a make distcheck
    - name: Build Source Tarball
      run: make dist

  macos:
    runs-on: macos-latest

    steps:

    - name: Recursive Git Clone
      uses: actions/checkout@v2
      with:
        submodules: recursive

    # 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
      run: |
        autoreconf -i
        ./configure --with-interface=ncurses --enable-html-manual

    - 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
    # FIXME: Will try to perform an out-of-tree build which will not
    # work without manual intervention due to Scintilla.
#   - run: make distcheck
    - name: Build Source Tarball
      run: make dist

#  win32:
#    runs-on: windows-latest
#
#    defaults:
#      run:
#        shell: bash.exe --login -eo pipefail "{0}"
#    env:
#      MSYSTEM: MINGW32
#      CHERE_INVOKING: 1
#
#    steps:
#
#    - name: Recursive Git Clone
#      uses: actions/checkout@v2
#      with:
#        submodules: recursive
#
#    - 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-i686-toolchain
#        mingw-w64-i686-glib2 mingw-w64-i686-pdcurses
#        groff mingw-w64-i686-doxygen
#
#    - name: Configure Build
#      env:
#        PDCURSES_CFLAGS: -I/mingw32/include/pdcurses/
#      run: |
#        autoreconf -i
#        ./configure --with-interface=pdcurses-gui --enable-html-manual
#
#    - 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
#    # FIXME: Will try to perform an out-of-tree build which will not
#    # work without manual intervention due to Scintilla.
##   - run: make distcheck
#    - name: Build Source Tarball
#      run: make dist