Mercurial > p > roundup > code
changeset 7949:5cc2d0001723
test: get xapian working under github actions and python 3.13
issue2551338 xapian doesn't build in CI for 3.13 python
Truncated workflow just for testing various xapian versions.
[skip travis]
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 12 May 2024 19:25:57 -0400 |
| parents | ff05fd2a95c4 |
| children | 29730a09e882 |
| files | .github/workflows/build-xapian.yml |
| diffstat | 1 files changed, 99 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.github/workflows/build-xapian.yml Sun May 12 19:25:57 2024 -0400 @@ -0,0 +1,99 @@ + +name: build-xapian + +on: + push: + # skip if github.ref is 'refs/heads/maint-1.6' + # aka github.ref_name of 'maint-1.6' + # see https://github.com/orgs/community/discussions/26253 + # for mechanism to control matrix based on branch + branches: [ "*", '!maint-1.6' ] + workflow_dispatch: + inputs: + debug_enabled: + type: boolean + description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)' + required: false + default: false +# GITHUB_TOKEN only has read repo context. +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + test: + name: build xapian + runs-on: ubuntu-22.04 + + env: + # get colorized pytest output even without a controlling tty + PYTEST_ADDOPTS: "--color=yes" + # OS: ${{ matrix.os }} + PYTHON_VERSION: ${{ matrix.python-version }} + + steps: + # Setup version of Python to use + - name: Set Up Python 3.13 + uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 + with: + python-version: 3.13 + allow-prereleases: true + cache: 'pip' + + - name: Install build tools - setuptools + run: pip install setuptools + + # Display the Python version being used + - name: Display Python and key module versions + run: | + python -c "import sys; print('python version: ', sys.version)" + python -c "import sqlite3; print('sqlite version: ', sqlite3.sqlite_version)" + python -c "import setuptools; print('setuptools version: ', setuptools.__version__);" + + - name: Update pip + run: python -m pip install --upgrade pip + + # https://github.com/mxschmitt/action-tmate + # allow remote ssh into the CI container. I need this to debug + # some xfail cases + - name: Setup tmate session + uses: mxschmitt/action-tmate@v3 + if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled }} + timeout-minutes: 10 + with: + limit-access-to-actor: true + + - name: Install xapian + run: | + set -xv + sudo apt-get install libxapian-dev + # Sphinx required to build the xapian python bindings. Use 1.8.5 on + # older python and newest on newer. + if [[ $PYTHON_VERSION == '3.'* ]] ; then pip install sphinx; fi + XAPIAN_VER="1.4.24"; echo $XAPIAN_VER; + cd /tmp + curl -s -O https://oligarchy.co.uk/xapian/$XAPIAN_VER/xapian-bindings-$XAPIAN_VER.tar.xz + tar -Jxvf xapian-bindings-$XAPIAN_VER.tar.xz + cd xapian-bindings-$XAPIAN_VER/ + # edit the configure script. + # distutils.sysconfig.get_config_vars('SO') doesn't work for + # 3.11 or newer. + # Change distutils.sysconfig... to just sysconfig and SO + # to EXT_SUFFIX to get valid value. + if [[ $PYTHON_VERSION == "X."* ]]; then + cp configure configure.FCS; + sed -i \ + -e '/PYTHON3_SO=/s/distutils\.//g' \ + -e '/PYTHON3_SO=/s/"SO"/"EXT_SUFFIX"/g' \ + -e '/PYTHON3_CACHE_TAG=/s/imp;print(imp.get_tag())/sys;print(sys.implementation.cache_tag)/' \ + -e '/PYTHON3_CACHE_OPT1_EXT=/s/imp\.get_tag()/sys.implementation.cache_tag/g' \ + -e '/PYTHON3_CACHE_OPT1_EXT=/s/imp\b/importlib/g' \ + configure; + diff -u configure.FCS configure || true; + fi + ./configure --prefix=$VIRTUAL_ENV --with-python3 --disable-documentation + make && sudo make install + python -c 'import xapian'
