diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 98285286..2b3af2f0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,97 +10,97 @@ on: - "*" jobs: - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - name: Set up Python 3.8 - uses: actions/setup-python@v2.2.1 - with: - python-version: 3.8 - - name: Install tox - run: pip install tox - - name: Lint - run: tox -e lint - - package-checks: - strategy: - matrix: - tox_env: - - docs - - twine_check - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - name: Set up Python 3.8 - uses: actions/setup-python@v2.2.1 - with: - python-version: 3.8 - - name: Install isal - run: sudo apt-get install libisal-dev - - name: Install tox and upgrade setuptools and pip - run: pip install --upgrade tox setuptools pip - - name: Run tox -e ${{ matrix.tox_env }} - run: tox -e ${{ matrix.tox_env }} - env: - PYTHON_ISAL_LINK_DYNAMIC: True - - test-static: - runs-on: ${{ matrix.os }} - strategy: - matrix: - python-version: - - "3.8" - - "3.9" - - "3.10" - - "3.11" - - "3.12" - - "3.13-dev" - - "pypy-3.9" - - "pypy-3.10" - os: ["ubuntu-latest"] - include: - - os: "macos-13" - python-version: "3.8" - - os: "macos-14" - python-version: "3.10" - - os: "windows-latest" - python-version: "3.8" - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2.2.1 - with: - python-version: ${{ matrix.python-version }} - - name: Install tox and upgrade setuptools - run: pip install --upgrade tox setuptools - - name: Install build dependencies (Linux) # Yasm in pypa/manylinux images. - run: sudo apt install nasm - if: runner.os == 'Linux' - - name: Install build dependencies (Macos) - # Install yasm because nasm does not work when building wheels. - # Probably because of nasm-filter.sh not filtering all flags that can not be used. - run: brew install nasm - if: runner.os == 'macOS' - - name: Set MSVC developer prompt - uses: ilammy/msvc-dev-cmd@v1.6.0 - if: runner.os == 'Windows' - - name: Install nasm (Windows) - uses: ilammy/setup-nasm@v1.2.0 - if: runner.os == 'Windows' - - name: Run tests - run: tox - - name: Upload coverage report - uses: codecov/codecov-action@v1 +# lint: +# runs-on: ubuntu-latest +# steps: +# - uses: actions/checkout@v4 +# with: +# submodules: recursive +# - name: Set up Python 3.8 +# uses: actions/setup-python@v2.2.1 +# with: +# python-version: 3.8 +# - name: Install tox +# run: pip install tox +# - name: Lint +# run: tox -e lint +# +# package-checks: +# strategy: +# matrix: +# tox_env: +# - docs +# - twine_check +# runs-on: ubuntu-latest +# steps: +# - uses: actions/checkout@v4 +# with: +# submodules: recursive +# - name: Set up Python 3.8 +# uses: actions/setup-python@v2.2.1 +# with: +# python-version: 3.8 +# - name: Install isal +# run: sudo apt-get install libisal-dev +# - name: Install tox and upgrade setuptools and pip +# run: pip install --upgrade tox setuptools pip +# - name: Run tox -e ${{ matrix.tox_env }} +# run: tox -e ${{ matrix.tox_env }} +# env: +# PYTHON_ISAL_LINK_DYNAMIC: True +# +# test-static: +# runs-on: ${{ matrix.os }} +# strategy: +# matrix: +# python-version: +# - "3.8" +# - "3.9" +# - "3.10" +# - "3.11" +# - "3.12" +# - "3.13-dev" +# - "pypy-3.9" +# - "pypy-3.10" +# os: ["ubuntu-latest"] +# include: +# - os: "macos-13" +# python-version: "3.8" +# - os: "macos-14" +# python-version: "3.10" +# - os: "windows-latest" +# python-version: "3.8" +# steps: +# - uses: actions/checkout@v4 +# with: +# submodules: recursive +# - name: Set up Python ${{ matrix.python-version }} +# uses: actions/setup-python@v2.2.1 +# with: +# python-version: ${{ matrix.python-version }} +# - name: Install tox and upgrade setuptools +# run: pip install --upgrade tox setuptools +# - name: Install build dependencies (Linux) # Yasm in pypa/manylinux images. +# run: sudo apt install nasm +# if: runner.os == 'Linux' +# - name: Install build dependencies (Macos) +# # Install yasm because nasm does not work when building wheels. +# # Probably because of nasm-filter.sh not filtering all flags that can not be used. +# run: brew install nasm +# if: runner.os == 'macOS' +# - name: Set MSVC developer prompt +# uses: ilammy/msvc-dev-cmd@v1.6.0 +# if: runner.os == 'Windows' +# - name: Install nasm (Windows) +# uses: ilammy/setup-nasm@v1.2.0 +# if: runner.os == 'Windows' +# - name: Run tests +# run: tox +# - name: Upload coverage report +# uses: codecov/codecov-action@v1 test-arch: - if: startsWith(github.ref, 'refs/tags') || github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/main' +# if: startsWith(github.ref, 'refs/tags') || github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/main' runs-on: "ubuntu-latest" strategy: matrix: @@ -117,156 +117,157 @@ jobs: distro: none base_image: "--platform=linux/arm64 quay.io/pypa/manylinux2014_aarch64" run: |- + git config --global --add safe.directory $PWD CFLAGS="-DNDEBUG -g0" python${{matrix.python_version}} -m pip install . pytest python${{matrix.python_version}} -m pytest tests - # Test if the python-isal conda package can be build. Which is linked - # dynamically to the conda isa-l package. - test-dynamic: - runs-on: ${{ matrix.os }} - defaults: - run: - # This is needed for miniconda, see: - # https://github.com/marketplace/actions/setup-miniconda#important. - shell: bash -l {0} - strategy: - matrix: - os: ["ubuntu-latest", "macos-13", "windows-latest"] - python_version: [ "python" ] - include: - - os: "ubuntu-latest" - python_version: "pypy" - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - name: Install miniconda. - uses: conda-incubator/setup-miniconda@v3 # https://github.com/conda-incubator/setup-miniconda. - with: - channels: conda-forge,defaults - - name: Install requirements (universal) - run: conda install isa-l ${{ matrix.python_version}} tox - - name: Set MSVC developer prompt - uses: ilammy/msvc-dev-cmd@v1.6.0 - if: runner.os == 'Windows' - - name: Run tests (dynamic link) - run: tox - env: - PYTHON_ISAL_LINK_DYNAMIC: True - - deploy: - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') - runs-on: ${{ matrix.os }} - needs: - - lint - - package-checks - - test-static - - test-dynamic - - test-arch - strategy: - matrix: - os: - - ubuntu-latest - - macos-13 - - macos-14 - - windows-latest - cibw_archs_linux: ["x86_64"] - cibw_before_all_linux: - - >- - curl -o nasm-2.15.05.tar.gz https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.gz && - tar -xzvf nasm-2.15.05.tar.gz && - cd nasm-2.15.05/ && - ./autogen.sh && - ./configure && - make nasm && - install -c nasm /usr/bin/nasm - build_sdist: [true] - include: - - os: "ubuntu-latest" - cibw_archs_linux: "aarch64" - cibw_before_all_linux: "true" # The true command exits with 0 - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - fetch-depth: 0 # Fetch everything to get accurately versioned tag. - - uses: actions/setup-python@v2 - name: Install Python - - name: Install cibuildwheel twine wheel - run: python -m pip install cibuildwheel twine wheel - - name: Install build dependencies (Macos) - run: brew install nasm - if: runner.os == 'macOS' - - name: Set MSVC developer prompt - uses: ilammy/msvc-dev-cmd@v1.6.0 - if: runner.os == 'Windows' - - name: Install nasm (Windows) - uses: ilammy/setup-nasm@v1.2.0 - if: runner.os == 'Windows' - - name: Set up QEMU - if: ${{runner.os == 'Linux' && matrix.cibw_archs_linux == 'aarch64'}} - uses: docker/setup-qemu-action@v1.0.1 - with: - platforms: arm64 - - name: Build wheels - run: cibuildwheel --output-dir dist - env: - CIBW_SKIP: "*-win32 *-manylinux_i686" # Skip 32 bit - CIBW_ARCHS_LINUX: ${{ matrix.cibw_archs_linux }} - CIBW_BEFORE_ALL_LINUX: ${{ matrix.cibw_before_all_linux }} - # Fully test the build wheels again. - CIBW_TEST_REQUIRES: "pytest" - # Simple tests that requires the project to be build correctly - # Skip extensive compatibility testing which is slow. - CIBW_TEST_COMMAND_LINUX: >- - pytest -v {project}/tests/test_igzip.py - {project}/tests/test_gzip_compliance.py - {project}/tests/test_zlib_compliance.py - {project}/tests/test_igzip_lib.py - -k 'not test_compress_decompress' - CIBW_TEST_COMMAND_MACOS: >- - pytest -v {project}/tests/test_igzip.py - {project}/tests/test_gzip_compliance.py - {project}/tests/test_zlib_compliance.py - {project}/tests/test_igzip_lib.py - -k 'not test_compress_decompress' - # Windows does not have the test module apparently. Do more expensive - # tests to verify build. - CIBW_TEST_COMMAND_WINDOWS: >- - pytest {project}/tests/test_igzip.py - {project}/tests/test_igzip_lib.py - {project}/tests/test_compat.py - CIBW_ENVIRONMENT_LINUX: >- - PYTHON_ISAL_BUILD_CACHE=True - PYTHON_ISAL_BUILD_CACHE_FILE=/tmp/build_cache - CFLAGS="-g0 -DNDEBUG" - CIBW_ENVIRONMENT_WINDOWS: >- - PYTHON_ISAL_BUILD_CACHE=True - PYTHON_ISAL_BUILD_CACHE_FILE=${{ runner.temp }}\build_cache - CIBW_ENVIRONMENT_MACOS: >- - PYTHON_ISAL_BUILD_CACHE=True - PYTHON_ISAL_BUILD_CACHE_FILE=${{ runner.temp }}/build_cache - CFLAGS="-g0 -DNDEBUG" - - name: Build sdist - if: ${{runner.os == 'Linux' && matrix.cibw_archs_linux == 'x86_64'}} - run: | - pip install build - python -m build --sdist - - uses: actions/upload-artifact@v2 - with: - name: "dist" - path: "dist/" - - name: Publish package to TestPyPI - # pypa/gh-action-pypi-publish@master does not work on OSX - # Alpha, Beta and dev releases contain a - in the tag. - if: contains(github.ref, '-') && startsWith(github.ref, 'refs/tags') - run: twine upload --repository-url https://test.pypi.org/legacy/ dist/* - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }} - - name: Publish package to PyPI - if: "!contains(github.ref, '-') && startsWith(github.ref, 'refs/tags')" - run: twine upload dist/* - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} +# # Test if the python-isal conda package can be build. Which is linked +# # dynamically to the conda isa-l package. +# test-dynamic: +# runs-on: ${{ matrix.os }} +# defaults: +# run: +# # This is needed for miniconda, see: +# # https://github.com/marketplace/actions/setup-miniconda#important. +# shell: bash -l {0} +# strategy: +# matrix: +# os: ["ubuntu-latest", "macos-13", "windows-latest"] +# python_version: [ "python" ] +# include: +# - os: "ubuntu-latest" +# python_version: "pypy" +# steps: +# - uses: actions/checkout@v4 +# with: +# submodules: recursive +# - name: Install miniconda. +# uses: conda-incubator/setup-miniconda@v3 # https://github.com/conda-incubator/setup-miniconda. +# with: +# channels: conda-forge,defaults +# - name: Install requirements (universal) +# run: conda install isa-l ${{ matrix.python_version}} tox +# - name: Set MSVC developer prompt +# uses: ilammy/msvc-dev-cmd@v1.6.0 +# if: runner.os == 'Windows' +# - name: Run tests (dynamic link) +# run: tox +# env: +# PYTHON_ISAL_LINK_DYNAMIC: True +# +# deploy: +# if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') +# runs-on: ${{ matrix.os }} +# needs: +# - lint +# - package-checks +# - test-static +# - test-dynamic +# - test-arch +# strategy: +# matrix: +# os: +# - ubuntu-latest +# - macos-13 +# - macos-14 +# - windows-latest +# cibw_archs_linux: ["x86_64"] +# cibw_before_all_linux: +# - >- +# curl -o nasm-2.15.05.tar.gz https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.gz && +# tar -xzvf nasm-2.15.05.tar.gz && +# cd nasm-2.15.05/ && +# ./autogen.sh && +# ./configure && +# make nasm && +# install -c nasm /usr/bin/nasm +# build_sdist: [true] +# include: +# - os: "ubuntu-latest" +# cibw_archs_linux: "aarch64" +# cibw_before_all_linux: "true" # The true command exits with 0 +# steps: +# - uses: actions/checkout@v4 +# with: +# submodules: recursive +# fetch-depth: 0 # Fetch everything to get accurately versioned tag. +# - uses: actions/setup-python@v2 +# name: Install Python +# - name: Install cibuildwheel twine wheel +# run: python -m pip install cibuildwheel twine wheel +# - name: Install build dependencies (Macos) +# run: brew install nasm +# if: runner.os == 'macOS' +# - name: Set MSVC developer prompt +# uses: ilammy/msvc-dev-cmd@v1.6.0 +# if: runner.os == 'Windows' +# - name: Install nasm (Windows) +# uses: ilammy/setup-nasm@v1.2.0 +# if: runner.os == 'Windows' +# - name: Set up QEMU +# if: ${{runner.os == 'Linux' && matrix.cibw_archs_linux == 'aarch64'}} +# uses: docker/setup-qemu-action@v1.0.1 +# with: +# platforms: arm64 +# - name: Build wheels +# run: cibuildwheel --output-dir dist +# env: +# CIBW_SKIP: "*-win32 *-manylinux_i686" # Skip 32 bit +# CIBW_ARCHS_LINUX: ${{ matrix.cibw_archs_linux }} +# CIBW_BEFORE_ALL_LINUX: ${{ matrix.cibw_before_all_linux }} +# # Fully test the build wheels again. +# CIBW_TEST_REQUIRES: "pytest" +# # Simple tests that requires the project to be build correctly +# # Skip extensive compatibility testing which is slow. +# CIBW_TEST_COMMAND_LINUX: >- +# pytest -v {project}/tests/test_igzip.py +# {project}/tests/test_gzip_compliance.py +# {project}/tests/test_zlib_compliance.py +# {project}/tests/test_igzip_lib.py +# -k 'not test_compress_decompress' +# CIBW_TEST_COMMAND_MACOS: >- +# pytest -v {project}/tests/test_igzip.py +# {project}/tests/test_gzip_compliance.py +# {project}/tests/test_zlib_compliance.py +# {project}/tests/test_igzip_lib.py +# -k 'not test_compress_decompress' +# # Windows does not have the test module apparently. Do more expensive +# # tests to verify build. +# CIBW_TEST_COMMAND_WINDOWS: >- +# pytest {project}/tests/test_igzip.py +# {project}/tests/test_igzip_lib.py +# {project}/tests/test_compat.py +# CIBW_ENVIRONMENT_LINUX: >- +# PYTHON_ISAL_BUILD_CACHE=True +# PYTHON_ISAL_BUILD_CACHE_FILE=/tmp/build_cache +# CFLAGS="-g0 -DNDEBUG" +# CIBW_ENVIRONMENT_WINDOWS: >- +# PYTHON_ISAL_BUILD_CACHE=True +# PYTHON_ISAL_BUILD_CACHE_FILE=${{ runner.temp }}\build_cache +# CIBW_ENVIRONMENT_MACOS: >- +# PYTHON_ISAL_BUILD_CACHE=True +# PYTHON_ISAL_BUILD_CACHE_FILE=${{ runner.temp }}/build_cache +# CFLAGS="-g0 -DNDEBUG" +# - name: Build sdist +# if: ${{runner.os == 'Linux' && matrix.cibw_archs_linux == 'x86_64'}} +# run: | +# pip install build +# python -m build --sdist +# - uses: actions/upload-artifact@v2 +# with: +# name: "dist" +# path: "dist/" +# - name: Publish package to TestPyPI +# # pypa/gh-action-pypi-publish@master does not work on OSX +# # Alpha, Beta and dev releases contain a - in the tag. +# if: contains(github.ref, '-') && startsWith(github.ref, 'refs/tags') +# run: twine upload --repository-url https://test.pypi.org/legacy/ dist/* +# env: +# TWINE_USERNAME: __token__ +# TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }} +# - name: Publish package to PyPI +# if: "!contains(github.ref, '-') && startsWith(github.ref, 'refs/tags')" +# run: twine upload dist/* +# env: +# TWINE_USERNAME: __token__ +# TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}