diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b21edf9..215fc65 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -44,7 +44,7 @@ jobs: - {os: ubuntu-24.04-arm, arch: aarch64} - {os: ubuntu-latest, arch: i686} - {os: ubuntu-latest, arch: x86_64} - - {os: macos-13, arch: x86_64} + - {os: macos-14, arch: x86_64} - {os: macos-14, arch: arm64} fail-fast: false @@ -71,14 +71,15 @@ jobs: run: brew unlink pcre2 - name: Build wheels - uses: pypa/cibuildwheel@v2.20.0 + uses: pypa/cibuildwheel@v3.3.1 with: output-dir: dist package-dir: ./${{ needs.build_sdist.outputs.sdist_name }} env: CIBW_ARCHS: ${{ matrix.arch }} - CIBW_SKIP: cp36-* cp38-macosx_arm64 pp* + CIBW_SKIP: cp38-macosx_arm64 cp31?t-* CIBW_ENVIRONMENT: UWSGI_PROFILE=pyuwsginossl + CIBW_ENVIRONMENT_MACOS: UWSGI_PROFILE=pyuwsginossl ARCHFLAGS="${{ matrix.arch == 'x86_64' && '-arch x86_64' || '-arch arm64' }}" APPEND_CFLAGS="${{ matrix.arch == 'x86_64' && '-arch x86_64' || '-arch arm64' }}" LDFLAGS="${{ matrix.arch == 'x86_64' && '-arch x86_64' || '-arch arm64' }}" CIBW_TEST_COMMAND: "pyuwsgi --help" CIBW_BEFORE_BUILD_MACOS: "find . -name '*.o' -delete && IS_MACOS=1 ./pre_build.sh" CIBW_BEFORE_BUILD_LINUX: "find . -name '*.o' -delete && ./pre_build.sh && (yum install -y zlib-devel || apk add zlib-dev)" diff --git a/pre_build.sh b/pre_build.sh index 01c9bdd..0eaf8db 100755 --- a/pre_build.sh +++ b/pre_build.sh @@ -3,14 +3,26 @@ set -eu -o pipefail if [ -n "${IS_MACOS:-}" ]; then # make sure the linked binaries are equivalent to our target - python="$(command -v python)" - min_ver="$( - otool -l "$python" | - grep -A2 LC_VERSION_MIN_MACOSX | - tail -1 | - awk '{print $2}' - )" - export MACOSX_DEPLOYMENT_TARGET="$min_ver" + if [ -z "${MACOSX_DEPLOYMENT_TARGET:-}" ]; then + python="$(command -v python)" + # Python < 3.14 uses LC_VERSION_MIN_MACOSX; Python 3.14+ uses LC_BUILD_VERSION + min_ver="$( + otool -l "$python" | + grep -A2 LC_VERSION_MIN_MACOSX | + tail -1 | + awk '{print $2}' + )" || min_ver="$( + otool -l "$python" | + grep -A4 LC_BUILD_VERSION | + grep "minos" | + awk '{print $2}' + )" + if [ -z "$min_ver" ]; then + echo "ERROR: Could not determine MACOSX_DEPLOYMENT_TARGET from binary" >&2 + exit 1 + fi + export MACOSX_DEPLOYMENT_TARGET="$min_ver" + fi make_install=(sudo make install) else make_install=(make install) @@ -78,7 +90,7 @@ function build_pcre2 { fetch_unpack "${PCRE2_DOWNLOAD_URL}" check_sha256sum "${ARCHIVES_SDIR:-archives}/${PCRE2_ROOT}.tar.gz" "$PCRE2_HASH" (cd "${PCRE2_ROOT}" \ - && ./configure --prefix="$BUILD_PREFIX" \ + && CFLAGS="${ARCHFLAGS:-}" LDFLAGS="${ARCHFLAGS:-}" ./configure --prefix="$BUILD_PREFIX" \ && make -j4 \ && "${make_install[@]}") touch pcre2-stamp @@ -106,7 +118,7 @@ function build_jansson { fetch_unpack "${JANSSON_DOWNLOAD_URL}" check_sha256sum "${ARCHIVE_SDIR:-archives}/${JANSSON_ROOT}.tar.gz" "${JANSSON_HASH}" (cd "${JANSSON_ROOT}" \ - && ./configure --prefix="$BUILD_PREFIX" \ + && CFLAGS="${ARCHFLAGS:-}" LDFLAGS="${ARCHFLAGS:-}" ./configure --prefix="$BUILD_PREFIX" \ && make -j4 \ && "${make_install[@]}") touch jansson-stamp