diff --git a/.github/workflows/linuxbrew.yml b/.github/workflows/linuxbrew.yml index d8996fd6..f2676ee6 100644 --- a/.github/workflows/linuxbrew.yml +++ b/.github/workflows/linuxbrew.yml @@ -18,6 +18,10 @@ jobs: brew update brew install python@${{ matrix.python }} gcc libxml2 libxmlsec1 pkg-config echo "/home/linuxbrew/.linuxbrew/opt/python@${{ matrix.python }}/libexec/bin" >> $GITHUB_PATH + - name: Symlink gcc + run: | + ln -sf "$(command -v gcc)" /home/linuxbrew/.linuxbrew/bin/gcc-11 + ln -sf "$(command -v g++)" /home/linuxbrew/.linuxbrew/bin/g++-11 - name: Build wheel run: | python3 -m venv build_venv diff --git a/.github/workflows/macosx.yml b/.github/workflows/macosx.yml index 1b82d22d..05a1eb6f 100644 --- a/.github/workflows/macosx.yml +++ b/.github/workflows/macosx.yml @@ -16,17 +16,22 @@ jobs: - name: Install build dependencies run: | pip install --upgrade pip setuptools wheel build - brew install libxml2 libxmlsec1 pkg-config + brew install libxml2 libxmlsec1 pkg-config openssl@1.1 - name: Build macosx_x86_64 wheel env: CC: clang - CFLAGS: "-fprofile-instr-generate -fcoverage-mapping" - LDFLAGS: "-fprofile-instr-generate -fcoverage-mapping" PYXMLSEC_STATIC_DEPS: ${{ matrix.static_deps }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - export PKG_CONFIG_PATH="$(brew --prefix)/opt/libxml2/lib/pkgconfig" - python -m build + export PYXMLSEC_OPENSSL_VERSION="openssl-1.1.1w" + export PYXMLSEC_OPENSSL_DOWNLOAD_URL="https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz" + export OPENSSL_PREFIX="$(brew --prefix openssl@1.1)" + export CFLAGS="-fprofile-instr-generate -fcoverage-mapping -I${OPENSSL_PREFIX}/include" + export LDFLAGS="-fprofile-instr-generate -fcoverage-mapping -L${OPENSSL_PREFIX}/lib" + export PKG_CONFIG_PATH="$(brew --prefix)/opt/libxml2/lib/pkgconfig:${OPENSSL_PREFIX}/lib/pkgconfig" + pip install "setuptools_scm[toml]>=3.4" "pkgconfig>=1.5.1" + pip install --no-binary "lxml>=3.8,!=4.7.0" + python -m build --no-isolation rm -rf build/ - name: Set environment variables shell: bash @@ -35,8 +40,9 @@ jobs: echo "LLVM_PROFILE_FILE=pyxmlsec.profraw" >> $GITHUB_ENV - name: Install test dependencies run: | - export PKG_CONFIG_PATH="$(brew --prefix)/opt/libxml2/lib/pkgconfig" - pip install coverage --upgrade --no-binary=lxml -r requirements-test.txt + export LIBXML2_DIR="$(brew --prefix)/opt/libxml2" + export PKG_CONFIG_PATH="$(brew --prefix)/opt/libxml2/lib/pkgconfig:$(brew --prefix openssl@1.1)/lib/pkgconfig" + pip install coverage --upgrade -r requirements-test.txt pip install xmlsec --only-binary=xmlsec --no-index --find-links=dist/ echo "PYXMLSEC_LIBFILE=$(python -c 'import xmlsec; print(xmlsec.__file__)')" >> $GITHUB_ENV - name: Run tests diff --git a/.github/workflows/manylinux.yml b/.github/workflows/manylinux.yml index a44776b3..530f4290 100644 --- a/.github/workflows/manylinux.yml +++ b/.github/workflows/manylinux.yml @@ -5,7 +5,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-abi: [cp36-cp36m, cp37-cp37m, cp38-cp38, cp39-cp39, cp310-cp310, cp311-cp311] + python-abi: [cp36-cp36m, cp37-cp37m, cp38-cp38, cp39-cp39, cp310-cp310, cp311-cp311, cp312-cp312, cp313-cp313] image: - manylinux2014_x86_64 - manylinux_2_28_x86_64 @@ -19,9 +19,27 @@ jobs: chown -R $(id -u):$(id -g) $PWD /opt/python/${{ matrix.python-abi }}/bin/pip install --upgrade pip setuptools wheel build - name: Install system build dependencies (manylinux) - run: | - yum install -y perl-core if: contains(matrix.image, 'manylinux') + run: | + yum install -y perl-core openssl-devel libxml2-devel libxslt-devel wget tar gcc make rpm-build + - name: Install system build dependencies (musllinux) + if: contains(matrix.image, 'musllinux') + run: | + apk add --no-cache openssl-dev libxml2-dev libxslt-dev wget tar gcc make + - name: Build updated crypto and libxmlsec1 (for manylinux2014 only) + if: ${{ matrix.image == 'manylinux2014_x86_64' }} + run: | + yum install -y perl-core wget tar gcc make zlib-devel + wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz + tar xzf openssl-1.1.1w.tar.gz + cd openssl-1.1.1w + ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib + make -j$(nproc) + make install + export LD_LIBRARY_PATH=/usr/local/openssl/lib:$LD_LIBRARY_PATH + export PKG_CONFIG_PATH=/usr/local/openssl/lib/pkgconfig:$PKG_CONFIG_PATH + ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl + ldconfig - name: Set environment variables shell: bash run: |