fixup! Correctly check for function strerror_r #4
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: CI | |
# Use bash by default on all platforms. | |
defaults: | |
run: | |
shell: bash | |
on: | |
push: | |
paths-ignore: | |
- '.appveyor.yml' | |
- NEWS | |
- 'xapian-maintainer-tools/**' | |
pull_request: | |
branches: RELEASE/1.4 | |
paths-ignore: | |
- '.appveyor.yml' | |
- NEWS | |
- 'xapian-maintainer-tools/**' | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
jobs: | |
makedist: | |
name: 'make dist' | |
runs-on: 'ubuntu-latest' | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v4 | |
with: | |
show-progress: false | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Cache bootstrap tools | |
uses: actions/cache@v4 | |
with: | |
path: | | |
BUILD | |
INST | |
key: ${{ github.job }}-${{ runner.os }}-${{ hashFiles( 'bootstrap', 'patches/**' ) }} | |
- name: Install package dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
doxygen \ | |
graphviz \ | |
help2man \ | |
python3-docutils \ | |
pngcrush \ | |
python3-sphinx \ | |
uuid-dev \ | |
libpcre2-dev \ | |
libmagic-dev \ | |
lua5.4 \ | |
liblua5.4-dev \ | |
mono-devel \ | |
python2-dev \ | |
python3-dev \ | |
tcl \ | |
tcl-dev | |
- name: bootstrap source tree | |
run: | | |
# If we restored cached bootstrap tools their timestamps will be older | |
# than checked out files, but we stored them based on a hash of the | |
# files in git that determine what gets built so we know they are in | |
# fact up to date. Just touch any stamp files that exist. | |
touch --no-create INST/*.stamp | |
export PATH=/usr/lib/ccache:$PATH | |
echo verbose=off > ~/.wgetrc | |
./bootstrap xapian-core xapian-applications/omega swig xapian-bindings | |
- name: configure | |
run: ./configure CC='ccache gcc' CXX='ccache g++' | |
- name: make | |
run: make -j2 | |
- name: Run tests | |
run: make -j2 check AUTOMATED_TESTING=1 VERBOSE=1 | |
- name: Create distribution tarball | |
run: | | |
make dist | |
- uses: actions/upload-artifact@v4 | |
with: | |
path: | | |
xapian-core/xapian-core-*.tar.xz | |
xapian-applications/omega/xapian-omega-*.tar.xz | |
xapian-bindings/xapian-bindings-*.tar.xz | |
# Files are already compressed so don't try to compress again. | |
compression-level: 0 | |
retention-days: 1 | |
if-no-files-found: error | |
- name: Check generated files are in .gitignore | |
# grep '^' passes through all input while giving a non-zero exit status | |
# if that input is empty. | |
run: git status --porcelain|grep '^' && { echo "The generated files listed above are not in .gitignore" ; exit 1; }; true | |
cxx20: | |
runs-on: 'ubuntu-latest' | |
needs: makedist | |
steps: | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
pushd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
popd | |
pushd xapian-bindings | |
tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
popd | |
- name: Install package dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
python3-sphinx \ | |
uuid-dev \ | |
libpcre2-dev \ | |
libmagic-dev \ | |
lua5.4 \ | |
liblua5.4-dev \ | |
mono-devel \ | |
python3-dev \ | |
tcl \ | |
tcl-dev \ | |
pkg-config | |
- name: configure | |
run: | | |
# Test building as C++20. | |
export CXX='ccache g++ --std=c++20' | |
pushd xapian-core | |
./configure --enable-werror | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
pushd xapian-applications/omega | |
./configure --enable-werror | |
popd | |
pushd xapian-bindings | |
./configure --enable-werror | |
popd | |
- name: make | |
run: | | |
make -j2 -C xapian-core | |
make -j2 -C xapian-applications/omega | |
make -j2 -C xapian-bindings | |
- name: Run tests | |
run: | | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check | |
make -j2 -C xapian-applications/omega check | |
make -j2 -C xapian-bindings check | |
cxx23: | |
runs-on: 'ubuntu-latest' | |
needs: makedist | |
steps: | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
pushd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
popd | |
pushd xapian-bindings | |
tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
popd | |
- name: Install package dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
python3-sphinx \ | |
uuid-dev \ | |
libpcre2-dev \ | |
libmagic-dev \ | |
lua5.4 \ | |
liblua5.4-dev \ | |
mono-devel \ | |
python3-dev \ | |
tcl \ | |
tcl-dev \ | |
pkg-config | |
- name: configure | |
run: | | |
# Test building as C++23. | |
export CXX='ccache g++ --std=c++23' | |
pushd xapian-core | |
./configure --enable-werror | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
pushd xapian-applications/omega | |
./configure --enable-werror | |
popd | |
pushd xapian-bindings | |
./configure --enable-werror | |
popd | |
- name: make | |
run: | | |
make -j2 -C xapian-core | |
make -j2 -C xapian-applications/omega | |
make -j2 -C xapian-bindings | |
- name: Run tests | |
run: | | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check | |
make -j2 -C xapian-applications/omega check | |
make -j2 -C xapian-bindings check | |
clang-santisers: | |
runs-on: 'ubuntu-latest' | |
needs: makedist | |
steps: | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
pushd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
popd | |
pushd xapian-bindings | |
tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
popd | |
- name: Install package dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
python3-sphinx \ | |
uuid-dev \ | |
libpcre2-dev \ | |
libmagic-dev \ | |
lua5.4 \ | |
liblua5.4-dev \ | |
mono-devel \ | |
python3-dev \ | |
tcl \ | |
tcl-dev \ | |
pkg-config | |
- name: configure | |
run: | | |
# We use clang here because (at least currently) it supports a few | |
# extra sanitiser checks compared to GCC. | |
export CC='ccache clang' | |
export CXX='ccache clang++' | |
# float-divide-by-zero and nullability aren't undefined behaviour | |
# checks, but they catch for things we don't expect our code to do. | |
export CXXFLAGS='-fsanitize=address,undefined,float-divide-by-zero,local-bounds,nullability -fsanitize-address-use-after-scope -fno-sanitize-recover=all -g -O2 -fno-omit-frame-pointer' | |
pushd xapian-core | |
./configure --enable-werror | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
pushd xapian-applications/omega | |
./configure --enable-werror | |
popd | |
pushd xapian-bindings | |
# PHP calls dlopen() with "RTLD_DEEPBIND flag which is incompatible | |
# with sanitizer runtime". | |
./configure --enable-werror --without-php | |
popd | |
- name: make | |
run: | | |
make -j2 -C xapian-core | |
make -j2 -C xapian-applications/omega | |
make -j2 -C xapian-bindings MACOS_SIP_HACK_ENV='env LSAN_OPTIONS=leak_check_at_exit=0 LD_PRELOAD=libasan.so.8:libubsan.so.1' | |
- name: Run tests | |
run: | | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check | |
make -j2 -C xapian-applications/omega check | |
make -j2 -C xapian-bindings check MACOS_SIP_HACK_ENV='env LSAN_OPTIONS=leak_check_at_exit=0 LD_PRELOAD=libasan.so.8:libubsan.so.1' | |
GLIBCXX_DEBUG: | |
runs-on: 'ubuntu-20.04' | |
needs: makedist | |
steps: | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
pushd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
popd | |
pushd xapian-bindings | |
tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
popd | |
- name: Install package dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
python3-sphinx \ | |
uuid-dev \ | |
libpcre2-dev \ | |
libmagic-dev \ | |
lua5.3 \ | |
liblua5.3-dev \ | |
mono-devel \ | |
python2-dev \ | |
python3-dev \ | |
tcl \ | |
tcl-dev | |
- name: configure | |
run: | | |
export CC='ccache gcc' | |
export CXX='ccache g++' | |
export CPPFLAGS='-D_GLIBCXX_DEBUG' | |
pushd xapian-core | |
./configure --enable-werror | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
pushd xapian-applications/omega | |
./configure --enable-werror | |
popd | |
pushd xapian-bindings | |
./configure --enable-werror | |
popd | |
- name: make | |
run: | | |
make -j2 -C xapian-core | |
make -j2 -C xapian-applications/omega | |
make -j2 -C xapian-bindings | |
- name: Run tests | |
run: | | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check | |
make -j2 -C xapian-applications/omega check | |
make -j2 -C xapian-bindings check | |
FORTIFY_SOURCE_3: | |
# _FORTIFY_SOURCE level 3 requires GCC 12, so currently we need to use | |
# Ubuntu 22.04 and the gcc-12 and g++12 packages. | |
runs-on: 'ubuntu-22.04' | |
needs: makedist | |
steps: | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
pushd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
popd | |
pushd xapian-bindings | |
tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
- name: Install package dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
gcc-12 \ | |
g++-12 \ | |
python3-sphinx \ | |
uuid-dev \ | |
libpcre2-dev \ | |
libmagic-dev \ | |
lua5.4 \ | |
liblua5.4-dev \ | |
mono-devel \ | |
python2-dev \ | |
python3-dev \ | |
tcl \ | |
tcl-dev | |
- name: configure | |
run: | | |
export CC='ccache gcc-12' | |
export CXX='ccache g++-12' | |
# Make this build use builddir != srcdir as we aim to support that and | |
# so want to catch regressions in support. This build seems a good | |
# choice for that as it's as full a build as any. | |
mkdir -p _build/xapian-core _build/xapian-applications/omega _build/xapian-bindings _build/xapian-letor | |
cd _build | |
# Ubuntu's GCC packages define _FORTIFY_SOURCE=2 by default, so we need | |
# to undefine it before we define it to avoid a warning (which becomes | |
# an error with -Werror). | |
export CPPFLAGS='-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3' | |
pushd xapian-core | |
../../xapian-core/configure --enable-werror | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
pushd xapian-applications/omega | |
../../../xapian-applications/omega/configure --enable-werror | |
popd | |
pushd xapian-bindings | |
../../xapian-bindings/configure --enable-werror | |
popd | |
- name: make | |
run: | | |
cd _build | |
make -j2 -C xapian-core | |
make -j2 -C xapian-applications/omega | |
make -j2 -C xapian-bindings | |
- name: Run tests | |
run: | | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
cd _build | |
make -j2 -C xapian-core check | |
make -j2 -C xapian-applications/omega check | |
make -j2 -C xapian-bindings check | |
assertions: | |
runs-on: 'ubuntu-22.04' | |
needs: makedist | |
steps: | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
pushd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
popd | |
pushd xapian-bindings | |
tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
popd | |
- name: Install package dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
python3-sphinx \ | |
uuid-dev \ | |
libpcre2-dev \ | |
libmagic-dev \ | |
lua5.4 \ | |
liblua5.4-dev \ | |
mono-devel \ | |
python2-dev \ | |
python3-dev \ | |
tcl \ | |
tcl-dev | |
- name: configure | |
run: | | |
export CC='ccache gcc' | |
export CXX='ccache g++' | |
pushd xapian-core | |
./configure --enable-werror --enable-assertions | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
pushd xapian-applications/omega | |
./configure --enable-werror | |
popd | |
pushd xapian-bindings | |
./configure --enable-werror | |
popd | |
- name: make | |
run: | | |
make -j2 -C xapian-core | |
make -j2 -C xapian-applications/omega | |
make -j2 -C xapian-bindings | |
- name: Run tests | |
run: | | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check | |
make -j2 -C xapian-applications/omega check | |
make -j2 -C xapian-bindings check | |
debug-log: | |
runs-on: 'ubuntu-22.04' | |
needs: makedist | |
steps: | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
pushd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
popd | |
pushd xapian-bindings | |
tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
popd | |
- name: Install package dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
python3-sphinx \ | |
uuid-dev \ | |
libpcre2-dev \ | |
libmagic-dev \ | |
lua5.4 \ | |
liblua5.4-dev \ | |
mono-devel \ | |
python2-dev \ | |
python3-dev \ | |
tcl \ | |
tcl-dev | |
- name: configure | |
run: | | |
export CC='ccache gcc' | |
export CXX='ccache g++' | |
pushd xapian-core | |
./configure --enable-werror --enable-log | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
pushd xapian-applications/omega | |
./configure --enable-werror | |
popd | |
pushd xapian-bindings | |
./configure --enable-werror | |
popd | |
- name: make | |
run: | | |
make -j2 -C xapian-core | |
make -j2 -C xapian-applications/omega | |
make -j2 -C xapian-bindings | |
- name: Run tests | |
run: | | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check | |
make -j2 -C xapian-applications/omega check | |
make -j2 -C xapian-bindings check | |
clang: | |
runs-on: 'ubuntu-20.04' | |
needs: makedist | |
steps: | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
pushd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
popd | |
pushd xapian-bindings | |
tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
popd | |
- name: Install package dependencies | |
run: | | |
env | |
sudo apt-get update | |
sudo apt-get install \ | |
clang \ | |
libc++-dev | |
sudo apt-get install \ | |
python3-sphinx \ | |
uuid-dev \ | |
libpcre2-dev \ | |
libmagic-dev \ | |
python3-dev \ | |
tcl \ | |
tcl-dev | |
- name: configure | |
run: | | |
export CC='ccache clang' | |
# Build with the llvm c++ library to catch more portability issues. | |
export CXX='ccache clang++ -stdlib=libc++' | |
pushd xapian-core | |
./configure --enable-werror | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
pushd xapian-applications/omega | |
./configure --enable-werror | |
popd | |
pushd xapian-bindings | |
./configure --enable-werror --with-python3 --with-tcl | |
popd | |
- name: make | |
run: | | |
make -j2 -C xapian-core | |
make -j2 -C xapian-applications/omega | |
make -j2 -C xapian-bindings | |
- name: Run tests | |
run: | | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check | |
make -j2 -C xapian-applications/omega check | |
make -j2 -C xapian-bindings check | |
# Test with the oldest clang version we easily can. | |
clang6: | |
runs-on: 'ubuntu-20.04' | |
needs: makedist | |
steps: | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
pushd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
popd | |
pushd xapian-bindings | |
tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
popd | |
- name: Install package dependencies | |
run: | | |
env | |
sudo apt-get update | |
sudo apt-get install \ | |
clang-6.0 | |
sudo apt-get install \ | |
python3-sphinx \ | |
uuid-dev \ | |
libpcre2-dev \ | |
libmagic-dev \ | |
python3-dev \ | |
tcl \ | |
tcl-dev | |
- name: configure | |
run: | | |
export CC='ccache clang-6.0' | |
export CXX='ccache clang++-6.0' | |
pushd xapian-core | |
./configure --enable-werror | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
pushd xapian-applications/omega | |
./configure --enable-werror | |
popd | |
pushd xapian-bindings | |
./configure --enable-werror --with-python3 --with-tcl | |
popd | |
- name: make | |
run: | | |
make -j2 -C xapian-core | |
make -j2 -C xapian-applications/omega | |
make -j2 -C xapian-bindings | |
- name: Run tests | |
run: | | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check | |
make -j2 -C xapian-applications/omega check | |
make -j2 -C xapian-bindings check | |
# GCC 4.7 is the oldest GCC we aim to support for 1.4.x, but the oldest we can | |
# easily build with in github actions is 7.5.0. | |
GCC7: | |
name: 'GCC 7' | |
runs-on: 'ubuntu-20.04' | |
needs: makedist | |
steps: | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
pushd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
popd | |
pushd xapian-bindings | |
tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
popd | |
- name: Install package dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
gcc-7 \ | |
g++-7 | |
sudo apt-get install \ | |
python3-sphinx \ | |
uuid-dev \ | |
libpcre2-dev \ | |
libmagic-dev \ | |
lua5.3 \ | |
liblua5.3-dev \ | |
mono-devel \ | |
python2-dev \ | |
python3-dev \ | |
tcl \ | |
tcl-dev | |
- name: configure | |
run: | | |
export CC='ccache gcc-7' | |
export CXX='ccache g++-7' | |
pushd xapian-core | |
./configure --enable-werror | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
pushd xapian-applications/omega | |
./configure --enable-werror | |
popd | |
pushd xapian-bindings | |
./configure --enable-werror | |
popd | |
- name: make | |
run: | | |
make -j2 -C xapian-core | |
make -j2 -C xapian-applications/omega | |
make -j2 -C xapian-bindings | |
- name: Run tests | |
run: | | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check | |
make -j2 -C xapian-applications/omega check | |
make -j2 -C xapian-bindings check | |
debian-stable: | |
runs-on: 'ubuntu-latest' | |
container: debian:stable | |
needs: makedist | |
steps: | |
- name: Install package dependencies | |
run: | | |
apt-get update | |
apt-get install -y \ | |
xz-utils \ | |
python3-sphinx \ | |
uuid-dev \ | |
libpcre2-dev \ | |
libmagic-dev \ | |
lua5.4 \ | |
liblua5.4-dev \ | |
mono-devel \ | |
python3-dev \ | |
tcl \ | |
tcl-dev | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
pushd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
popd | |
pushd xapian-bindings | |
tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
popd | |
- name: configure | |
run: | | |
export CC='ccache gcc' | |
export CXX='ccache g++' | |
pushd xapian-core | |
./configure --enable-werror | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
pushd xapian-applications/omega | |
./configure --enable-werror | |
popd | |
pushd xapian-bindings | |
./configure --enable-werror | |
popd | |
- name: make | |
run: | | |
make -j2 -C xapian-core | |
make -j2 -C xapian-applications/omega | |
make -j2 -C xapian-bindings | |
- name: Run tests | |
run: | | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check | |
make -j2 -C xapian-applications/omega check | |
make -j2 -C xapian-bindings check | |
macos: | |
runs-on: 'macos-latest' | |
needs: makedist | |
steps: | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
pushd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
popd | |
pushd xapian-bindings | |
tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
popd | |
- name: Install package dependencies | |
run: | | |
# Workaround apparent homebrew bug 2024-01-17 | |
rm -f /usr/local/bin/2to3-3.* /usr/local/bin/idle3.* /usr/local/bin/pydoc3.* /usr/local/bin/python3.* /usr/local/bin/python3.*-config | |
rm -f /usr/local/bin/2to3 /usr/local/bin/idle3 /usr/local/bin/pydoc3 /usr/local/bin/python3 /usr/local/bin/python3-config | |
brew update | |
brew install -q \ | |
libiconv \ | |
libmagic \ | |
lua \ | |
pcre2 \ | |
pkgconfig \ | |
pygments \ | |
python \ | |
sphinx-doc | |
# mono-mdk: "make check" fails on aarch64 macos-latest (but works on | |
# x86_64 macos-12 and macos-13). Last checked 2024-05-05. | |
# | |
# libeatmydata doesn't currently actually do anything on macOS: | |
# https://github.com/stewartsmith/libeatmydata/issues/34 | |
# It's also started failing to even run in homebrew so don't install | |
# for now. | |
- name: configure | |
run: | | |
export CC='ccache gcc' | |
export CXX='ccache g++' | |
export PKG_CONFIG_PATH="$(brew --prefix icu4c)/lib/pkgconfig" | |
pushd xapian-core | |
./configure --enable-werror --prefix='${{ runner.temp }}/XapianInstall' | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
pushd xapian-applications/omega | |
./configure --enable-werror --with-libiconv-prefix="$(brew --prefix libiconv)" | |
popd | |
pushd xapian-bindings | |
# Homebrew package mono-mdk-for-visual-studio is pre-installed in the | |
# image so we need to select the bindings we want except for csharp | |
# as that currently fails on aarch64 macos. | |
./configure --enable-werror --with-java --with-lua --with-perl --with-ruby | |
popd | |
- name: make | |
run: | | |
make -j3 -C xapian-core | |
make -j3 -C xapian-core install | |
make -j3 -C xapian-applications/omega | |
make -j3 -C xapian-bindings | |
- name: Run tests | |
run: | | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j3 -C xapian-core check | |
make -j3 -C xapian-applications/omega check | |
make -j3 -C xapian-bindings check | |
- name: Save log files | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: logs-${{ github.job }}-${{ github.sha }} | |
overwrite: true | |
path: | | |
**/*.log | |
macos-13: | |
runs-on: 'macos-13' | |
needs: makedist | |
steps: | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
pushd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
popd | |
pushd xapian-bindings | |
tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
popd | |
- name: Install package dependencies | |
run: | | |
# Workaround apparent homebrew bug 2024-01-17 | |
rm -f /usr/local/bin/2to3-3.* /usr/local/bin/idle3.* /usr/local/bin/pydoc3.* /usr/local/bin/python3.* /usr/local/bin/python3.*-config | |
rm -f /usr/local/bin/2to3 /usr/local/bin/idle3 /usr/local/bin/pydoc3 /usr/local/bin/python3 /usr/local/bin/python3-config | |
brew update | |
brew install -q \ | |
libiconv \ | |
libmagic \ | |
lua \ | |
mono-mdk \ | |
pcre2 \ | |
pkgconfig \ | |
pygments \ | |
python \ | |
sphinx-doc | |
# libeatmydata doesn't currently actually do anything on macOS: | |
# https://github.com/stewartsmith/libeatmydata/issues/34 | |
# It's also started failing to even run in homebrew so don't install | |
# for now. | |
- name: configure | |
run: | | |
export CC='ccache gcc' | |
export CXX='ccache g++' | |
export PKG_CONFIG_PATH="$(brew --prefix icu4c)/lib/pkgconfig" | |
pushd xapian-core | |
./configure --enable-werror --prefix='${{ runner.temp }}/XapianInstall' | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
pushd xapian-applications/omega | |
./configure --enable-werror --with-libiconv-prefix="$(brew --prefix libiconv)" | |
popd | |
pushd xapian-bindings | |
./configure --enable-werror | |
popd | |
- name: make | |
run: | | |
make -j3 -C xapian-core | |
make -j3 -C xapian-core install | |
make -j3 -C xapian-applications/omega | |
make -j3 -C xapian-bindings | |
- name: Run tests | |
run: | | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j3 -C xapian-core check | |
make -j3 -C xapian-applications/omega check | |
make -j3 -C xapian-bindings check | |
- name: Save log files | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: logs-${{ github.job }}-${{ github.sha }} | |
overwrite: true | |
path: | | |
**/*.log | |
macos-12: | |
runs-on: 'macos-12' | |
needs: makedist | |
steps: | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
pushd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
popd | |
pushd xapian-bindings | |
tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
popd | |
- name: Install package dependencies | |
run: | | |
# Workaround apparent homebrew bug 2024-01-17 | |
rm -f /usr/local/bin/2to3-3.* /usr/local/bin/idle3.* /usr/local/bin/pydoc3.* /usr/local/bin/python3.* /usr/local/bin/python3.*-config | |
rm -f /usr/local/bin/2to3 /usr/local/bin/idle3 /usr/local/bin/pydoc3 /usr/local/bin/python3 /usr/local/bin/python3-config | |
brew update | |
brew install -q \ | |
libiconv \ | |
libmagic \ | |
lua \ | |
mono-mdk \ | |
pcre2 \ | |
pkgconfig \ | |
pygments \ | |
python \ | |
sphinx-doc | |
# libeatmydata doesn't currently actually do anything on macOS: | |
# https://github.com/stewartsmith/libeatmydata/issues/34 | |
# It's also started failing to even run in homebrew so don't install | |
# for now. | |
- name: configure | |
run: | | |
export CC='ccache gcc' | |
export CXX='ccache g++' | |
export PKG_CONFIG_PATH="$(brew --prefix icu4c)/lib/pkgconfig" | |
pushd xapian-core | |
./configure --enable-werror --prefix='${{ runner.temp }}/XapianInstall' | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
pushd xapian-applications/omega | |
./configure --enable-werror --with-libiconv-prefix="$(brew --prefix libiconv)" | |
popd | |
pushd xapian-bindings | |
./configure --enable-werror | |
popd | |
- name: make | |
run: | | |
make -j3 -C xapian-core | |
make -j3 -C xapian-core install | |
make -j3 -C xapian-applications/omega | |
make -j3 -C xapian-bindings | |
- name: Run tests | |
run: | | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j3 -C xapian-core check | |
make -j3 -C xapian-applications/omega check | |
make -j3 -C xapian-bindings check | |
- name: Save log files | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: logs-${{ github.job }}-${{ github.sha }} | |
overwrite: true | |
path: | | |
**/*.log | |
mingw64-i686-cross: | |
runs-on: 'ubuntu-22.04' | |
needs: makedist | |
steps: | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
- name: Install package dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
g++-mingw-w64-i686-win32 \ | |
mingw-w64-i686-dev \ | |
binutils-mingw-w64-i686 \ | |
libz-mingw-w64-dev \ | |
mingw-w64-tools | |
- name: configure | |
run: | | |
export EATMYDATA= | |
export PATH=/usr/lib/ccache:$PATH | |
cd xapian-core | |
./configure --enable-werror --host i686-w64-mingw32 | |
- name: make | |
run: | | |
export PATH=/usr/lib/ccache:$PATH | |
make -j2 -C xapian-core | |
- name: Run tests | |
run: | | |
# Stop mono binfmt trying to run .exe files. | |
sudo apt-get purge mono-runtime | |
sudo dpkg --add-architecture i386 | |
sudo apt-get update | |
sudo apt-get install wine32 wine-binfmt:amd64 wine:amd64 | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
export WINEPATH="$PWD/xapian-core/.libs;/usr/lib/gcc/i686-w64-mingw32/`i686-w64-mingw32-g++ --version 2>/dev/null|head -n1|sed 's/.*) //;s/ .*//'`" | |
make -j2 -C xapian-core check | |
mingw64-x86-64-cross: | |
runs-on: 'ubuntu-22.04' | |
needs: makedist | |
steps: | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
- name: Install package dependencies | |
run: | | |
sudo apt-get update | |
# Stop mono binfmt trying to run .exe files. | |
sudo apt-get purge mono-runtime | |
sudo apt-get install \ | |
g++-mingw-w64-x86-64-win32 \ | |
mingw-w64-x86-64-dev \ | |
binutils-mingw-w64-x86-64 \ | |
libz-mingw-w64-dev \ | |
mingw-w64-tools \ | |
wine-binfmt \ | |
wine \ | |
wine64 | |
sudo dpkg --add-architecture i386 | |
sudo apt-get update | |
sudo apt-get install wine32 | |
- name: configure | |
run: | | |
export EATMYDATA= | |
export PATH=/usr/lib/ccache:$PATH | |
cd xapian-core | |
./configure --enable-werror --host x86_64-w64-mingw32 | |
- name: make | |
run: | | |
export PATH=/usr/lib/ccache:$PATH | |
make -j2 -C xapian-core | |
- name: Run tests | |
run: | | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
export WINEPATH="$PWD/xapian-core/.libs;/usr/lib/gcc/x86_64-w64-mingw32/`x86_64-w64-mingw32-g++ --version 2>/dev/null|head -n1|sed 's/.*) //;s/ .*//'`" | |
make -j2 -C xapian-core check | |
Fedora: | |
runs-on: 'ubuntu-22.04' | |
container: fedora:35 | |
needs: makedist | |
steps: | |
- name: Install build tools | |
run: dnf install -y --nodocs ccache xz | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
pushd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
popd | |
pushd xapian-bindings | |
tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
popd | |
- name: Install package dependencies | |
run: | | |
dnf install -y --nodocs \ | |
gcc-c++ file-devel libuuid-devel pcre2-devel perl zlib-devel make pkg-config \ | |
python3-devel python3-setuptools python3-sphinx \ | |
ruby ruby-devel rubygems rubygem-rdoc rubygem-json rubygem-test-unit \ | |
tcl-devel | |
- name: configure | |
run: | | |
export CC='ccache gcc' | |
export CXX='ccache g++' | |
pushd xapian-core | |
./configure --enable-werror | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
pushd xapian-applications/omega | |
./configure --enable-werror | |
popd | |
pushd xapian-bindings | |
./configure --enable-werror | |
popd | |
- name: make | |
run: | | |
make -j2 -C xapian-core | |
make -j2 -C xapian-applications/omega | |
make -j2 -C xapian-bindings | |
- name: Run tests | |
run: | | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check | |
make -j2 -C xapian-applications/omega check | |
make -j2 -C xapian-bindings check | |
android-cross: | |
runs-on: 'ubuntu-22.04' | |
env: | |
NDK: '/usr/local/lib/android/sdk/ndk/25.2.9519653' | |
# NDK: '/home/runner/ndk' | |
host_triplet: 'armv7a-linux-androideabi33' | |
needs: makedist | |
steps: | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
- name: configure | |
run: | | |
PATH=$PATH:$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin | |
cd xapian-core | |
./configure --enable-werror \ | |
--host=$host_triplet \ | |
CC="ccache ${host_triplet}-clang" \ | |
CXX="ccache ${host_triplet}-clang++" \ | |
PKG_CONFIG=/bin/false | |
- name: make | |
run: | | |
PATH=$PATH:$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin | |
make -j2 -C xapian-core | |
# FIXME: Run tests under android emulator? | |
cygwin: | |
# We only test 64-bit cygwin as 32-bit support has been dropped as of | |
# Cygwin 3.4: | |
# https://cygwin.com/pipermail/cygwin/2022-November/252542.html | |
runs-on: 'windows-latest' | |
needs: makedist | |
defaults: | |
run: | |
# `-o incr` needed as GHA supplies shell fragments with DOS EOLs. | |
shell: 'C:\tools\cygwin\bin\bash.EXE --noprofile --norc -e -o igncr -o pipefail {0}' | |
steps: | |
- name: Install Cygwin | |
uses: egor-tensin/setup-cygwin@v4 | |
with: | |
packages: gcc-g++ make file-devel libpcre2-devel zlib-devel perl | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
pushd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
popd | |
pushd xapian-bindings | |
tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
popd | |
- name: configure | |
run: | | |
export CC='ccache gcc' | |
export CXX='ccache g++' | |
pushd xapian-core | |
./configure --enable-werror | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
pushd xapian-applications/omega | |
./configure --enable-werror | |
popd | |
# pushd xapian-bindings | |
# ./configure --enable-werror | |
# popd | |
- name: make | |
run: | | |
make -j2 -C xapian-core | |
make -j2 -C xapian-applications/omega | |
# make -j2 -C xapian-bindings | |
- name: Run tests | |
run: | | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check | |
make -j2 -C xapian-applications/omega check | |
# make -j2 -C xapian-bindings check | |
msys2-mingw32: | |
runs-on: 'windows-latest' | |
needs: makedist | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- uses: msys2/setup-msys2@v2 | |
with: | |
msystem: mingw32 | |
install: base-devel | |
pacboy: >- | |
file:p | |
gcc:p | |
pcre2:p | |
zlib:p | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
variant: sccache | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
pushd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
popd | |
# pushd xapian-bindings | |
# tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
# popd | |
- name: configure | |
run: | | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
export CC='sccache gcc' | |
export CXX='sccache g++' | |
pushd xapian-core | |
./configure --enable-werror | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
pushd xapian-applications/omega | |
./configure --enable-werror | |
popd | |
# pushd xapian-bindings | |
# ./configure --enable-werror | |
# popd | |
- name: make | |
run: | | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
make -j2 -C xapian-core | |
make -j2 -C xapian-applications/omega | |
# make -j2 -C xapian-bindings | |
- name: Run tests | |
run: | | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check | |
make -j2 -C xapian-applications/omega check | |
# make -j2 -C xapian-bindings check | |
msys2-mingw64: | |
runs-on: 'windows-latest' | |
needs: makedist | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- uses: msys2/setup-msys2@v2 | |
with: | |
msystem: mingw64 | |
install: base-devel | |
pacboy: >- | |
file:p | |
gcc:p | |
pcre2:p | |
zlib:p | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
variant: sccache | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
pushd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
popd | |
# pushd xapian-bindings | |
# tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
# popd | |
- name: configure | |
run: | | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
export CC='sccache gcc' | |
export CXX='sccache g++' | |
pushd xapian-core | |
./configure --enable-werror | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
pushd xapian-applications/omega | |
./configure --enable-werror | |
popd | |
# pushd xapian-bindings | |
# ./configure --enable-werror | |
# popd | |
- name: make | |
run: | | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
make -j2 -C xapian-core | |
make -j2 -C xapian-applications/omega | |
# make -j2 -C xapian-bindings | |
- name: Run tests | |
run: | | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check | |
make -j2 -C xapian-applications/omega check | |
# make -j2 -C xapian-bindings check | |
msys2-ucrt64: | |
runs-on: 'windows-latest' | |
needs: makedist | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- uses: msys2/setup-msys2@v2 | |
with: | |
msystem: ucrt64 | |
install: base-devel | |
pacboy: >- | |
gcc:p | |
zlib:p | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
variant: sccache | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
# pushd xapian-applications/omega | |
# tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
# popd | |
# pushd xapian-bindings | |
# tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
# popd | |
- name: configure | |
run: | | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
export CC='sccache gcc' | |
export CXX='sccache g++' | |
pushd xapian-core | |
./configure --enable-werror | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
# pushd xapian-applications/omega | |
# ./configure --enable-werror | |
# popd | |
# pushd xapian-bindings | |
# ./configure --enable-werror | |
# popd | |
- name: make | |
run: | | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
make -j2 -C xapian-core | |
# make -j2 -C xapian-applications/omega | |
# make -j2 -C xapian-bindings | |
- name: Run tests | |
run: | | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check | |
# make -j2 -C xapian-applications/omega check | |
# make -j2 -C xapian-bindings check | |
msvc2019: | |
runs-on: 'windows-2019' | |
needs: makedist | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- uses: msys2/setup-msys2@v2 | |
with: | |
release: true # Use the pre-installed MSYS2 | |
path-type: inherit | |
install: base-devel | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
variant: sccache | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
# Need libmagic for omega | |
# pushd xapian-applications/omega | |
# tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
# popd | |
# pushd xapian-bindings | |
# tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
# popd | |
- name: Set up Visual Studio shell | |
uses: egor-tensin/vs-shell@v2 | |
with: | |
arch: x64 | |
- name: Build zlib | |
shell: bash | |
run: | | |
# Setup sccache for cl. | |
ln /c/Users/runneradmin/.cargo/bin/{sccache.exe,cl.exe} | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
# We find "link" from coreutils rather than from MSVC. The coreutils | |
# "link" is not a useful tool to us, so just delete it rather than | |
# trying to reorder PATH. | |
rm /usr/bin/link.exe || true | |
mkdir zlib | |
pushd zlib | |
curl --retry 5 --retry-connrefused -L https://github.com/xapian/xapian-dev-deps/releases/download/current/zlib-1.2.13.tar.gz|tar --strip-components=1 -zxf - | |
# Don't build zlib with -MD as it seems this flag needs to be used | |
# consistently across the build. Don't use -Zi -Fd"zlib" as | |
# ccache/sccache don't seem to be able to handle that. | |
# | |
# Don't build zlib with a fixed base address on x64 as that gives | |
# linker warning LNK4281. | |
sed -i 's/\(^CFLAGS *= *-nologo \)-MD \(.* \)-Zi -Fd"zlib" /\1\2/;s/-base:0x[0-9A-Fa-f]* //' win32/Makefile.msc | |
# Only build the shared library. | |
nmake -nologo -f 'win32\Makefile.msc' zlib1.dll | |
popd | |
- name: configure | |
run: | | |
export AR=lib | |
export CC="cl -nologo" | |
export CXX="$PWD/xapian-core/compile cl -nologo" | |
export CPPFLAGS="-I$PWD/zlib" | |
# Standard C++ stack unwinding; assume extern "C" functions never throw. | |
export CXXFLAGS=-EHsc | |
export LD=link | |
export LDFLAGS="-L$PWD/zlib" | |
export NM=dumpbin | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
pushd xapian-core | |
./configure --enable-werror --disable-shared | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
# pushd xapian-applications/omega | |
# ./configure --enable-werror | |
# popd | |
# pushd xapian-bindings | |
# ./configure --enable-werror | |
# popd | |
- name: make | |
run: | | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
make -j2 -C xapian-core | |
# make -j2 -C xapian-applications/omega | |
# make -j2 -C xapian-binding | |
- name: Run tests | |
run: | | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check | |
# make -j2 -C xapian-applications/omega check | |
# make -j2 -C xapian-bindings check | |
msvc2022: | |
runs-on: 'windows-2022' | |
needs: makedist | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- uses: msys2/setup-msys2@v2 | |
with: | |
release: true # Use the pre-installed MSYS2 | |
path-type: inherit | |
install: base-devel | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
variant: sccache | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
# Need libmagic for omega | |
# pushd xapian-applications/omega | |
# tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
# popd | |
# pushd xapian-bindings | |
# tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
# popd | |
- name: Set up Visual Studio shell | |
uses: egor-tensin/vs-shell@v2 | |
with: | |
arch: x64 | |
- name: Build zlib | |
shell: bash | |
run: | | |
# Setup sccache for cl. | |
ln /c/Users/runneradmin/.cargo/bin/{sccache.exe,cl.exe} | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
# We find "link" from coreutils rather than from MSVC. The coreutils | |
# "link" is not a useful tool to us, so just delete it rather than | |
# trying to reorder PATH. | |
rm /usr/bin/link.exe || true | |
mkdir zlib | |
pushd zlib | |
curl --retry 5 --retry-connrefused -L https://github.com/xapian/xapian-dev-deps/releases/download/current/zlib-1.2.13.tar.gz|tar --strip-components=1 -zxf - | |
# Don't build zlib with -MD as it seems this flag needs to be used | |
# consistently across the build. Don't use -Zi -Fd"zlib" as | |
# ccache/sccache don't seem to be able to handle that. | |
# | |
# Don't build zlib with a fixed base address on x64 as that gives | |
# linker warning LNK4281. | |
sed -i 's/\(^CFLAGS *= *-nologo \)-MD \(.* \)-Zi -Fd"zlib" /\1\2/;s/-base:0x[0-9A-Fa-f]* //' win32/Makefile.msc | |
# Only build the shared library. | |
nmake -nologo -f 'win32\Makefile.msc' zlib1.dll | |
popd | |
- name: configure | |
run: | | |
export AR=lib | |
export CC="cl -nologo" | |
export CXX="$PWD/xapian-core/compile cl -nologo" | |
export CPPFLAGS="-I$PWD/zlib" | |
# Standard C++ stack unwinding; assume extern "C" functions never throw. | |
export CXXFLAGS=-EHsc | |
export LD=link | |
export LDFLAGS="-L$PWD/zlib" | |
export NM=dumpbin | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
pushd xapian-core | |
./configure --enable-werror --disable-shared | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
# pushd xapian-applications/omega | |
# ./configure --enable-werror | |
# popd | |
# pushd xapian-bindings | |
# ./configure --enable-werror | |
# popd | |
- name: make | |
run: | | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
make -j2 -C xapian-core | |
# make -j2 -C xapian-applications/omega | |
# make -j2 -C xapian-binding | |
- name: Run tests | |
run: | | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check | |
# make -j2 -C xapian-applications/omega check | |
# make -j2 -C xapian-bindings check | |
msvc2019-x86: | |
runs-on: 'windows-2019' | |
needs: makedist | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- uses: msys2/setup-msys2@v2 | |
with: | |
release: true # Use the pre-installed MSYS2 | |
path-type: inherit | |
install: base-devel | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
variant: sccache | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
# Need libmagic for omega | |
# pushd xapian-applications/omega | |
# tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
# popd | |
# pushd xapian-bindings | |
# tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
# popd | |
- name: Set up Visual Studio shell | |
uses: egor-tensin/vs-shell@v2 | |
with: | |
arch: x86 | |
- name: Build zlib | |
shell: bash | |
run: | | |
# Setup sccache for cl. | |
ln /c/Users/runneradmin/.cargo/bin/{sccache.exe,cl.exe} | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
# We find "link" from coreutils rather than from MSVC. The coreutils | |
# "link" is not a useful tool to us, so just delete it rather than | |
# trying to reorder PATH. | |
rm /usr/bin/link.exe || true | |
mkdir zlib | |
pushd zlib | |
curl --retry 5 --retry-connrefused -L https://github.com/xapian/xapian-dev-deps/releases/download/current/zlib-1.2.13.tar.gz|tar --strip-components=1 -zxf - | |
# Don't build zlib with -MD as it seems this flag needs to be used | |
# consistently across the build. Don't use -Zi -Fd"zlib" as | |
# ccache/sccache don't seem to be able to handle that. | |
sed -i 's/\(^CFLAGS *= *-nologo \)-MD \(.* \)-Zi -Fd"zlib" /\1\2/' win32/Makefile.msc | |
# Only build the static library. | |
nmake -nologo -f 'win32\Makefile.msc' zlib.lib | |
popd | |
- name: configure | |
run: | | |
export AR=lib | |
export CC="cl -nologo" | |
export CXX="$PWD/xapian-core/compile cl -nologo" | |
export CPPFLAGS="-I$PWD/zlib" | |
# Standard C++ stack unwinding; assume extern "C" functions never throw. | |
export CXXFLAGS=-EHsc | |
export LD=link | |
export LDFLAGS="-L$PWD/zlib" | |
export NM=dumpbin | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
pushd xapian-core | |
./configure --enable-werror --disable-shared | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
# pushd xapian-applications/omega | |
# ./configure --enable-werror | |
# popd | |
# pushd xapian-bindings | |
# ./configure --enable-werror | |
# popd | |
- name: make | |
run: | | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
make -j2 -C xapian-core | |
# make -j2 -C xapian-applications/omega | |
# make -j2 -C xapian-binding | |
- name: Run tests | |
run: | | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check | |
# make -j2 -C xapian-applications/omega check | |
# make -j2 -C xapian-bindings check | |
msvc2022-x86: | |
runs-on: 'windows-2022' | |
needs: makedist | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- uses: msys2/setup-msys2@v2 | |
with: | |
release: true # Use the pre-installed MSYS2 | |
path-type: inherit | |
install: base-devel | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
variant: sccache | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
pushd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
popd | |
# Need libmagic for omega | |
# pushd xapian-applications/omega | |
# tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
# popd | |
# pushd xapian-bindings | |
# tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
# popd | |
- name: Set up Visual Studio shell | |
uses: egor-tensin/vs-shell@v2 | |
with: | |
arch: x86 | |
- name: Build zlib | |
shell: bash | |
run: | | |
# Setup sccache for cl. | |
ln /c/Users/runneradmin/.cargo/bin/{sccache.exe,cl.exe} | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
# We find "link" from coreutils rather than from MSVC. The coreutils | |
# "link" is not a useful tool to us, so just delete it rather than | |
# trying to reorder PATH. | |
rm /usr/bin/link.exe || true | |
mkdir zlib | |
pushd zlib | |
curl --retry 5 --retry-connrefused -L https://github.com/xapian/xapian-dev-deps/releases/download/current/zlib-1.2.13.tar.gz|tar --strip-components=1 -zxf - | |
# Don't build zlib with -MD as it seems this flag needs to be used | |
# consistently across the build. Don't use -Zi -Fd"zlib" as | |
# ccache/sccache don't seem to be able to handle that. | |
sed -i 's/\(^CFLAGS *= *-nologo \)-MD \(.* \)-Zi -Fd"zlib" /\1\2/' win32/Makefile.msc | |
# Only build the static library. | |
nmake -nologo -f 'win32\Makefile.msc' zlib.lib | |
popd | |
- name: configure | |
run: | | |
export AR=lib | |
export CC="cl -nologo" | |
export CXX="$PWD/xapian-core/compile cl -nologo" | |
export CPPFLAGS="-I$PWD/zlib" | |
# Standard C++ stack unwinding; assume extern "C" functions never throw. | |
export CXXFLAGS=-EHsc | |
export LD=link | |
export LDFLAGS="-L$PWD/zlib" | |
export NM=dumpbin | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
pushd xapian-core | |
./configure --enable-werror --disable-shared | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
popd | |
# pushd xapian-applications/omega | |
# ./configure --enable-werror | |
# popd | |
# pushd xapian-bindings | |
# ./configure --enable-werror | |
# popd | |
- name: make | |
run: | | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
make -j2 -C xapian-core | |
# make -j2 -C xapian-applications/omega | |
# make -j2 -C xapian-binding | |
- name: Run tests | |
run: | | |
PATH=/c/Users/runneradmin/.cargo/bin:$PATH | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check | |
# make -j2 -C xapian-applications/omega check | |
# make -j2 -C xapian-bindings check | |
freebsd: | |
runs-on: 'ubuntu-22.04' | |
needs: makedist | |
steps: | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
# Do actual unpacking on freebsd, mostly to help reduce the size of the | |
# rsync output in the logs. | |
- uses: vmactions/freebsd-vm@v1 | |
# Limit wasted resources if the VM action gets into an infinite loop. | |
timeout-minutes: 60 | |
with: | |
# The default is csh! | |
usesh: true | |
prepare: | | |
set -e | |
pkg install -y bash ccache perl5 pcre2 | |
ccache --set-config=cache_dir='/Users/runner/work/xapian/xapian/.ccache' | |
ccache --set-config=max_size='500M' | |
ccache --set-config=compression=true | |
run: | | |
set -e | |
export CC='ccache cc' | |
export CXX='ccache c++' | |
cd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
./configure --enable-werror | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
cd .. | |
cd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
./configure --enable-werror | |
cd ../.. | |
# cd xapian-bindings | |
# tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
# cd .. | |
# Everything gets run in one script so use V=0 to reduce the size of | |
# the log, but re-run without V=0 on failure to show the compiler | |
# command line. | |
make -j2 -C xapian-core V=0 || make -C xapian-core | |
make -j2 -C xapian-applications/omega V=0 || make -C xapian-core | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check V=0 | |
make -j2 -C xapian-applications/omega check V=0 | |
dragonfly: | |
runs-on: 'ubuntu-22.04' | |
needs: makedist | |
steps: | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
# Do actual unpacking in the VM, mostly to help reduce the size of the | |
# rsync output in the logs. | |
- uses: vmactions/dragonflybsd-vm@v1 | |
# Limit wasted resources if the VM action gets into an infinite loop. | |
timeout-minutes: 60 | |
with: | |
usesh: true | |
prepare: | | |
set -e | |
pkg install -y bash ccache perl5 pcre2 | |
ccache --set-config=cache_dir='/Users/runner/work/xapian/xapian/.ccache' | |
ccache --set-config=max_size='500M' | |
ccache --set-config=compression=true | |
run: | | |
set -e | |
export CC='ccache cc' | |
export CXX='ccache c++' | |
cd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
./configure --enable-werror | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
cd .. | |
cd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
./configure --enable-werror | |
cd ../.. | |
# cd xapian-bindings | |
# tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
# cd .. | |
# Everything gets run in one script so use V=0 to reduce the size of | |
# the log, but re-run without V=0 on failure to show the compiler | |
# command line. | |
make -j2 -C xapian-core V=0 || make -C xapian-core | |
make -j2 -C xapian-applications/omega V=0 || make -C xapian-core | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check V=0 | |
make -j2 -C xapian-applications/omega check V=0 | |
netbsd: | |
runs-on: 'ubuntu-22.04' | |
needs: makedist | |
steps: | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ github.job }} | |
- name: Fetch distribution | |
uses: actions/download-artifact@v4 | |
- name: Unpack distribution | |
run: | | |
mv artifact/* . | |
rmdir artifact | |
# Do actual unpacking in the VM, mostly to help reduce the size of the | |
# rsync output in the logs. | |
- uses: vmactions/netbsd-vm@v1 | |
# Limit wasted resources if the VM action gets into an infinite loop. | |
timeout-minutes: 60 | |
with: | |
# Default is ksh, which should be OK. | |
# usesh: true | |
prepare: | | |
set -e | |
/usr/sbin/pkg_add -u ccache perl pcre2 | |
ccache --set-config=cache_dir='/Users/runner/work/xapian/xapian/.ccache' | |
ccache --set-config=max_size='500M' | |
ccache --set-config=compression=true | |
run: | | |
set -e | |
ulimit | |
export CC='ccache cc' | |
export CXX='ccache c++' | |
cd xapian-core | |
tar --strip-components=1 -xf xapian-core-*.tar.xz | |
./configure --enable-werror | |
export XAPIAN_CONFIG=$PWD/xapian-config | |
cd .. | |
cd xapian-applications/omega | |
tar --strip-components=1 -xf xapian-omega-*.tar.xz | |
./configure --enable-werror | |
cd ../.. | |
# cd xapian-bindings | |
# tar --strip-components=1 -xf xapian-bindings-*.tar.xz | |
# cd .. | |
# Everything gets run in one script so use V=0 to reduce the size of | |
# the log, but re-run without V=0 on failure to show the compiler | |
# command line. | |
make -j2 -C xapian-core V=0 || make -C xapian-core | |
make -j2 -C xapian-applications/omega V=0 || make -C xapian-core | |
export AUTOMATED_TESTING=1 | |
export VERBOSE=1 | |
make -j2 -C xapian-core check V=0 | |
make -j2 -C xapian-applications/omega check V=0 | |
checkpatch: | |
name: 'Automated run of xapian-check-patch' | |
runs-on: 'ubuntu-latest' | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
show-progress: false | |
- name: "Automated run of xapian-check-patch" | |
# Run the style checking script, checking changes between the common | |
# ancestor of the target branch of the PR (or master if this isn't a PR) | |
# and the revision being checked. | |
run: | | |
git diff origin/${GITHUB_BASE_REF:-RELEASE/1.4}.. --|xapian-maintainer-tools/xapian-check-patch |