#93 #27
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Linux builds" | |
on: [push] | |
#https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/control-the-concurrency-of-workflows-and-jobs | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
name: ${{ matrix.config.name }} | |
runs-on: ${{ matrix.config.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
# - { | |
# name: "Windows Latest MSVC", | |
# os: windows-latest, | |
# toolchain: vc2022, | |
# toollabel: vs170, | |
# package: win32-vs22 | |
# } | |
# - { | |
# name: "Windows Latest MinGW", | |
# os: windows-latest, | |
# toolchain: mingw64, | |
# toollabel: mingw64, | |
# package: win32-w64 | |
# } | |
# - { | |
# name: "Windows Latest OWC", | |
# os: windows-latest, | |
# toolchain: owc20, | |
# toollabel: owc20, | |
# package: win32-owc | |
# } | |
- { | |
name: "Ubuntu Latest GCC", | |
os: ubuntu-latest, | |
toolchain: gcc, | |
toollabel: gcc, | |
package: ubuntu-gcc | |
} | |
# - { | |
# name: "MacOS Latest GCC", | |
# os: macos-latest, | |
# toolchain: gcc, | |
# toollabel: gcc, | |
# package: macos-gcc | |
# } | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Snapshot Source | |
if: startsWith(matrix.config.name, 'Ubuntu Latest') | |
shell: bash | |
run: | | |
mkdir .snapshot | |
tar --exclude-vcs --exclude='./.snapshot' --exclude='./win32' --exclude='./contrib' --exclude='./support/*.bat' --exclude='./defunct' -cf .snapshot/source-snapshot.tar . | |
tar --exclude-vcs -cf .snapshot/contrib-snapshot.tar ./contrib | |
- name: Source Snapshot Publish | |
if: startsWith(matrix.config.name, 'Ubuntu Latest') | |
uses: actions/upload-artifact@v4 | |
with: | |
name: source-snapshot | |
path: .snapshot/source-snapshot.tar | |
compression-level: 9 | |
- name: Contrib Snapshot Publish | |
if: startsWith(matrix.config.name, 'Ubuntu Latest') | |
uses: actions/upload-artifact@v4 | |
with: | |
name: contrib-snapshot | |
path: .snapshot/contrib-snapshot.tar | |
compression-level: 9 | |
- name: Checkout submodules | |
run: | | |
git submodule update --init --recursive | |
- name: MSVC setup | |
uses: ilammy/msvc-dev-cmd@v1 | |
if: startsWith(matrix.config.name, 'Windows Latest MSVC') | |
with: | |
arch: x86 | |
- name: MinGW64 setup | |
if: startsWith(matrix.config.name, 'Windows Latest MinGW') | |
shell: cmd | |
run: | | |
c:\msys64\usr\bin\pacman --noconfirm -S base-devel | |
c:\msys64\usr\bin\pacman --noconfirm -S mingw-w64-x86_64-gcc | |
c:\msys64\usr\bin\pacman --noconfirm -S mingw-w64-i686-gcc | |
- name: OpenWatcom setup | |
uses: open-watcom/setup-watcom@v0 | |
if: startsWith(matrix.config.name, 'Windows Latest OWC') | |
with: | |
version: "2.0" | |
location: "C:\\Watcom" | |
- name: Ubuntu, setup | |
if: startsWith(matrix.config.name, 'Ubuntu Latest') | |
shell: bash | |
run: | | |
sudo add-apt-repository universe | |
sudo apt-get install -y libncurses-dev | |
sudo apt-get install -y libenchant-2-dev | |
sudo apt-get install -y libaspell-dev | |
sudo apt-get install -y libhunspell-dev | |
sudo apt-get install -y libenca-dev | |
sudo apt-get install -y libexplain-dev | |
sudo apt-get install -y libarchive-dev | |
## 24/10: removed | |
## legacy: sudo apt-get install -y libncursesw5-dev | |
## missing: sudo apt-get install -y libguess-dev | |
- name: MacOS, setup | |
if: startsWith(matrix.config.name, 'MacOS Latest') | |
shell: bash | |
run: | | |
brew install pkg-config | |
brew install ncurses | |
brew link ncurses | |
brew install enchant | |
brew install libspelling | |
brew install hunspell | |
brew install libarchive | |
brew install wget | |
- name: Windows, generate | |
if: startsWith(matrix.config.name, 'Windows Latest') | |
shell: cmd | |
run: | | |
@if "${{ matrix.config.toolchain }}"=="mingw32" set PATH=c:\msys64\mingw32\bin;%PATH% | |
@if "${{ matrix.config.toolchain }}"=="mingw64" set PATH=c:\msys64\mingw64\bin;%PATH% | |
@if "${{ matrix.config.toolchain }}"=="owc20" call .\support\owc20setenv.bat C:\Watcom | |
@if NOT "${{ matrix.config.toolchain }}"=="mingw64" c:\msys64\usr\bin\pacman --noconfirm -S bison | |
@set PERL=c:/Strawberry/perl/bin/perl | |
c:/Strawberry/perl/bin/perl makelib.pl --perlpath=c:/Strawberry/perl/bin --busybox=./win32/busybox --wget=./win32/wget --bison=c:/msys64/usr/bin/bison --flex=./bin.${{ matrix.config.toollabel }}/release/flex "${{ matrix.config.toolchain }}" | |
- name: Windows, compile | |
if: startsWith(matrix.config.name, 'Windows Latest') | |
shell: cmd | |
run: | | |
@if "${{ matrix.config.toolchain }}"=="mingw32" set PATH=c:\msys64\mingw32\bin;%PATH% | |
@if "${{ matrix.config.toolchain }}"=="mingw64" set PATH=c:\msys64\mingw64\bin;%PATH% | |
@if "${{ matrix.config.toolchain }}"=="owc20" call .\support\owc20setenv.bat C:\Watcom | |
@set PERL=c:/Strawberry/perl/bin/perl | |
.\win32\gmake-42 release contrib | |
.\win32\gmake-42 release | |
- name: Ubuntu, generate | |
if: startsWith(matrix.config.name, 'Ubuntu Latest') | |
shell: bash | |
run: | | |
chmod +x configure | |
./support/config_withncursesw | |
- name: Ubuntu, compile | |
if: startsWith(matrix.config.name, 'Ubuntu Latest') | |
shell: bash | |
run: | | |
make release | |
- name: MacOS, generate | |
if: startsWith(matrix.config.name, 'MacOS Latest') | |
shell: bash | |
run: | | |
export CPATH=$(brew --prefix libarchive)/include:/usr/local/include:$CPATH | |
export CPPPATH=$(brew --prefix libarchive)/include:/usr/local/include:$CPATH | |
export LIBRARY_PATH=$(brew --prefix libarchive)/lib:/usr/local/lib:$LIBRARY_PATH | |
export LD_LIBRARY_PATH=$(brew --prefix libarchive)/lib:/usr/local/lib:$LD_LIBRARY_PATH | |
chmod +x configure | |
./support/config_withncurses | |
- name: MacOS, compile | |
if: startsWith(matrix.config.name, 'MacOS Latest') | |
shell: bash | |
run: | | |
export CPATH=$(brew --prefix libarchive)/include:/usr/local/include:$CPATH | |
export CPPPATH=$(brew --prefix libarchive)/include:/usr/local/include:$CPATH | |
export LIBRARY_PATH=$(brew --prefix libarchive)/lib:/usr/local/lib:$LIBRARY_PATH | |
export LD_LIBRARY_PATH=$(brew --prefix libarchive)/lib:/usr/local/lib:$LD_LIBRARY_PATH | |
make release | |
- name: Package | |
uses: actions/upload-artifact@v4 | |
with: | |
name: package-${{ matrix.config.package }} | |
path: ./bin.${{ matrix.config.toollabel }}/release/* |