honey_compact: don't crash on empty tables #5
Workflow file for this run
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 | |
on: | |
push: | |
paths-ignore: | |
- '.appveyor.yml' | |
- NEWS | |
- 'xapian-maintainer-tools/**' | |
pull_request: | |
branches: master | |
paths-ignore: | |
- '.appveyor.yml' | |
- NEWS | |
- 'xapian-maintainer-tools/**' | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
jobs: | |
GLIBCXX_DEBUG: | |
runs-on: 'ubuntu-20.04' | |
env: | |
LIBEXTRACTOR_PREFIX: '/usr/lib/x86_64-linux-gnu/libextractor' | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v2 | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: GLIBCXX_DEBUG | |
- 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.3 \ | |
liblua5.3-dev \ | |
mono-devel \ | |
python3-dev \ | |
tcl \ | |
tcl-dev \ | |
libicu-dev \ | |
pkg-config \ | |
libpoppler-glib-dev \ | |
libglib2.0-dev \ | |
libe-book-dev \ | |
libetonyek-dev \ | |
libgmime-2.6-dev \ | |
libarchive-dev \ | |
libabw-dev \ | |
libcdr-dev \ | |
libextractor-dev \ | |
libmwaw-dev \ | |
libtesseract-dev \ | |
tesseract-ocr-eng | |
- name: bootstrap source tree | |
run: ./bootstrap xapian-core xapian-applications/omega swig xapian-bindings xapian-letor | |
- name: configure | |
run: ./configure CC='ccache gcc' CXX='ccache g++' CPPFLAGS='-D_GLIBCXX_DEBUG' | |
- name: make | |
run: make -j2 | |
- name: Run tests | |
run: make -j2 check VERBOSE=1 AUTOMATED_TESTING=1 | |
- 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 | |
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' | |
env: | |
LIBEXTRACTOR_PREFIX: '/usr/lib/x86_64-linux-gnu/libextractor' | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v2 | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: GLIBCXX_DEBUG | |
- name: Install package dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
gcc-12 \ | |
g++-12 \ | |
doxygen \ | |
graphviz \ | |
help2man \ | |
python3-docutils \ | |
pngcrush \ | |
python3-sphinx \ | |
uuid-dev \ | |
libpcre2-dev \ | |
libmagic-dev \ | |
lua5.4 \ | |
liblua5.4-dev \ | |
mono-devel \ | |
python3-dev \ | |
tcl \ | |
tcl-dev \ | |
libicu-dev \ | |
pkg-config \ | |
libpoppler-glib-dev \ | |
libglib2.0-dev \ | |
libe-book-dev \ | |
libetonyek-dev \ | |
libgmime-3.0-dev \ | |
libarchive-dev \ | |
libabw-dev \ | |
libcdr-dev \ | |
libextractor-dev \ | |
libextractor-plugins-all \ | |
libmwaw-dev \ | |
libtesseract-dev \ | |
tesseract-ocr-eng | |
- name: bootstrap source tree | |
run: ./bootstrap xapian-core xapian-applications/omega swig xapian-bindings xapian-letor | |
- name: configure | |
# 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). | |
run: ./configure CC='ccache gcc-12' CXX='ccache g++-12' CPPFLAGS='-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3' | |
- name: make | |
run: make -j2 | |
- name: Run tests | |
run: make -j2 check VERBOSE=1 AUTOMATED_TESTING=1 | |
- 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 | |
clang: | |
runs-on: 'ubuntu-20.04' | |
env: | |
LIBEXTRACTOR_PREFIX: '/usr/lib/x86_64-linux-gnu/libextractor' | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v2 | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: clang | |
- name: Install package dependencies | |
run: | | |
env | |
sudo apt-get update | |
sudo apt-get install \ | |
clang \ | |
libc++-dev | |
sudo apt-get install \ | |
doxygen \ | |
graphviz \ | |
help2man \ | |
python3-docutils \ | |
pngcrush \ | |
python3-sphinx \ | |
uuid-dev \ | |
libpcre2-dev \ | |
libmagic-dev \ | |
tcl \ | |
tcl-dev \ | |
libicu-dev \ | |
pkg-config \ | |
libpoppler-glib-dev \ | |
libglib2.0-dev \ | |
libe-book-dev \ | |
libetonyek-dev \ | |
libgmime-2.6-dev \ | |
libarchive-dev \ | |
libabw-dev \ | |
libcdr-dev \ | |
libextractor-dev \ | |
libmwaw-dev \ | |
libtesseract-dev \ | |
tesseract-ocr-eng | |
- name: bootstrap source tree | |
run: ./bootstrap xapian-core xapian-applications/omega swig xapian-bindings xapian-letor | |
- name: configure | |
# Build with the llvm c++ library to catch more portability issues. | |
run: ./configure CC='ccache clang' CXX='ccache clang++ -stdlib=libc++' --with-python3 --with-tcl | |
- name: make | |
run: make -j2 | |
- name: Run tests | |
run: make -j2 check VERBOSE=1 AUTOMATED_TESTING=1 | |
- 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 | |
# Test with the oldest clang version we easily can. | |
clang6: | |
runs-on: 'ubuntu-18.04' | |
env: | |
LIBEXTRACTOR_PREFIX: '/usr/lib/x86_64-linux-gnu/libextractor' | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v2 | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: clang6 | |
- name: Install package dependencies | |
run: | | |
env | |
sudo apt-get update | |
sudo apt-get install \ | |
clang \ | |
libc++-dev | |
sudo apt-get install \ | |
doxygen \ | |
graphviz \ | |
help2man \ | |
python3-docutils \ | |
pngcrush \ | |
python3-sphinx \ | |
uuid-dev \ | |
libpcre2-dev \ | |
libmagic-dev \ | |
python3-dev \ | |
tcl \ | |
tcl-dev \ | |
pkg-config \ | |
libpoppler-glib-dev \ | |
libglib2.0-dev \ | |
libe-book-dev \ | |
libetonyek-dev \ | |
libgmime-2.6-dev \ | |
libarchive-dev \ | |
libabw-dev \ | |
libcdr-dev \ | |
libextractor-dev \ | |
libmwaw-dev \ | |
libtesseract-dev \ | |
tesseract-ocr-eng | |
- name: bootstrap source tree | |
run: ./bootstrap xapian-core xapian-applications/omega swig xapian-bindings xapian-letor | |
- name: configure | |
# Build with the llvm c++ library to catch more portability issues. | |
run: ./configure CC='ccache clang' CXX='ccache clang++ -stdlib=libc++' --with-python3 --with-tcl | |
- name: make | |
run: make -j2 | |
- name: Run tests | |
run: make -j2 check VERBOSE=1 AUTOMATED_TESTING=1 | |
- 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 | |
# GCC 7 is the oldest GCC we currently aim to support. Test on 18.04 as that | |
# tests 7.3.0 (20.04 has 7.5.0). | |
GCC7: | |
name: 'GCC 7' | |
runs-on: 'ubuntu-18.04' | |
env: | |
LIBEXTRACTOR_PREFIX: '/usr/lib/x86_64-linux-gnu/libextractor' | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v2 | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: GCC7 | |
- name: Install package dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
gcc-7 \ | |
g++-7 | |
sudo apt-get install \ | |
doxygen \ | |
graphviz \ | |
help2man \ | |
python3-docutils \ | |
pngcrush \ | |
python3-sphinx \ | |
uuid-dev \ | |
libpcre2-dev \ | |
libmagic-dev \ | |
lua5.3 \ | |
liblua5.3-dev \ | |
mono-devel \ | |
python3-dev \ | |
tcl \ | |
tcl-dev \ | |
libpoppler-glib-dev \ | |
libglib2.0-dev \ | |
libe-book-dev \ | |
libetonyek-dev \ | |
libgmime-2.6-dev \ | |
libarchive-dev \ | |
libabw-dev \ | |
libcdr-dev \ | |
libextractor-dev \ | |
libmwaw-dev \ | |
libtesseract-dev \ | |
tesseract-ocr-eng | |
- name: bootstrap source tree | |
run: ./bootstrap xapian-core xapian-applications/omega swig xapian-bindings xapian-letor | |
- name: configure | |
run: ./configure CC='ccache gcc-7' CXX='ccache g++-7' | |
- name: make | |
run: make -j2 | |
- name: Run tests | |
run: make -j2 check VERBOSE=1 AUTOMATED_TESTING=1 | |
- 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 | |
Emscripten: | |
runs-on: 'ubuntu-20.04' | |
services: | |
emscripten: | |
image: trzeci/emscripten | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v2 | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: Emscripten | |
- name: Use Node.js | |
uses: actions/setup-node@v2 | |
- name: Install package dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
doxygen \ | |
graphviz \ | |
help2man \ | |
python3-docutils \ | |
pngcrush \ | |
python3-pygments | |
- name: bootstrap source tree | |
# Bootstrap only xapian-core for emscripten build. | |
run: | | |
./bootstrap xapian-core | |
./configure CC='ccache gcc' CXX='ccache g++' CXXFLAGS=-O0 --disable-backend-honey --disable-backend-inmemory --disable-backend-remote | |
make -j2 | |
make -j2 distclean | |
- name: configure | |
run: | | |
docker run -v "$GITHUB_WORKSPACE:/src" -w /src/xapian-core trzeci/emscripten emconfigure ./configure CPPFLAGS='-DFLINTLOCK_USE_FLOCK' CXXFLAGS='-Oz -s USE_ZLIB=1 -fno-rtti' --disable-backend-honey --disable-backend-inmemory --disable-shared --disable-backend-remote | |
- name: make | |
run: | | |
docker run -v "$GITHUB_WORKSPACE:/src" -w /src/xapian-core trzeci/emscripten emmake make | |
- name: Run tests | |
run: | | |
docker run -v "$GITHUB_WORKSPACE:/src" -w /src/xapian-core trzeci/emscripten em++ -Oz -s USE_ZLIB=1 -std=c++11 -s WASM=1 -Iinclude emscripten/xapianjstest.cc .libs/libxapian-1.5.a -o emscripten/xapianjstest.js | |
cd xapian-core/emscripten && node xapianjstest.js | |
- 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: | | |
find . -name '*.wasm' -delete | |
git status --porcelain|grep '^' && { echo "The generated files listed above are not in .gitignore" ; exit 1; }; true | |
macos: | |
runs-on: 'macos-latest' | |
env: | |
LIBEXTRACTOR_PREFIX: '/usr/local/lib/libextractor' | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v2 | |
- name: Install CCache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: macos | |
- name: Install package dependencies | |
run: | | |
brew update | |
brew install \ | |
doxygen \ | |
gmime \ | |
graphviz \ | |
help2man \ | |
icu4c \ | |
libabw \ | |
libarchive \ | |
libcdr \ | |
libetonyek \ | |
libextractor \ | |
libiconv \ | |
libmagic \ | |
libmwaw \ | |
lua \ | |
mono-mdk \ | |
pcre2 \ | |
pkgconfig \ | |
pngcrush \ | |
poppler \ | |
pygments \ | |
python | |
# homebrew tesseract 5.2.0 only extracts "ee" from img/Test1.gif (5.1.0 | |
# worked). | |
# tesseract | |
pip3 install sphinx docutils | |
- name: bootstrap source tree | |
run: ./bootstrap xapian-core xapian-applications/omega swig xapian-bindings xapian-letor | |
- name: configure | |
run: ./configure CC='ccache gcc' CXX='ccache g++' PKG_CONFIG_PATH=/usr/local/opt/icu4c/lib/pkgconfig --prefix='${{ runner.temp }}/XapianInstall' --with-libiconv-prefix=/usr/local/opt/libiconv | |
- name: make | |
run: | | |
make -j3 | |
make -C xapian-core install | |
- name: Run tests | |
run: make -j2 check VERBOSE=1 AUTOMATED_TESTING=1 | |
- 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: | | |
find . \( -name 'config.guess~' -o -name 'config.sub~' -o -name 'install-sh~' \) -delete | |
git status --porcelain|grep '^' && { echo "The generated files listed above are not in .gitignore" ; exit 1; }; true | |
checkpatch: | |
name: 'Automated run of xapian-check-patch' | |
runs-on: 'ubuntu-latest' | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- 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: | | |
echo "GITHUB_BASE_REF='$GITHUB_BASE_REF'" | |
git diff ${GITHUB_BASE_REF:-origin/master}.. --|xapian-maintainer-tools/xapian-check-patch |