@@ -83,26 +83,52 @@ jobs:
8383 fail-fast : false
8484 matrix :
8585 include : ${{ fromJson(needs.build-wheels-matrix.outputs.include) }}
86+ env :
87+ SETUPTOOLS_SCM_PRETEND_VERSION_FOR_DDTRACE : ${{ needs.compute_version.outputs.library_version }}
88+ CIBW_SKIP : ${{ inputs.cibw_skip }}
89+ CIBW_PRERELEASE_PYTHONS : ${{ inputs.cibw_prerelease_pythons }}
90+ CIBW_MANYLINUX_X86_64_IMAGE : manylinux2014
91+ CIBW_MANYLINUX_AARCH64_IMAGE : manylinux2014
92+ CIBW_MUSLLINUX_I686_IMAGE : ghcr.io/datadog/dd-trace-py/pypa_musllinux_1_2_i686:latest
93+ CIBW_BEFORE_ALL_WINDOWS : ${{ matrix.os == 'windows-latest' && 'rustup target add i686-pc-windows-msvc' || (matrix.os == 'windows-11-arm' && 'rustup target add aarch64-pc-windows-msvc') }}
94+ CIBW_BEFORE_ALL_MACOS : rustup target add aarch64-apple-darwin
95+ CIBW_BEFORE_ALL_LINUX : |
96+ if [[ "$(uname -m)-$(uname -i)-$(uname -o | tr '[:upper:]' '[:lower:]')-$(ldd --version 2>&1 | head -n 1 | awk '{print $1}')" != "i686-unknown-linux-musl" ]]; then
97+ curl -sSf https://sh.rustup.rs | sh -s -- -y;
98+ fi
99+ CIBW_ENVIRONMENT_LINUX : PATH=$HOME/.cargo/bin:$PATH CMAKE_BUILD_PARALLEL_LEVEL=24 CMAKE_ARGS="-DNATIVE_TESTING=OFF" SETUPTOOLS_SCM_PRETEND_VERSION_FOR_DDTRACE=${{ needs.compute_version.outputs.library_version }}
100+ # SYSTEM_VERSION_COMPAT is a workaround for versioning issue, a.k.a.
101+ # `platform.mac_ver()` reports incorrect MacOS version at 11.0
102+ # See: https://stackoverflow.com/a/65402241
103+ CIBW_ENVIRONMENT_MACOS : CMAKE_BUILD_PARALLEL_LEVEL=24 SYSTEM_VERSION_COMPAT=0 CMAKE_ARGS="-DNATIVE_TESTING=OFF" SETUPTOOLS_SCM_PRETEND_VERSION_FOR_DDTRACE=${{ needs.compute_version.outputs.library_version }}
104+ CIBW_ENVIRONMENT_WINDOWS : SETUPTOOLS_SCM_PRETEND_VERSION_FOR_DDTRACE=${{ needs.compute_version.outputs.library_version }}
105+ # cibuildwheel repair will copy anything's under /output directory from the
106+ # build container to the host machine. This is a bit hacky way, but seems
107+ # to be the only way getting debug symbols out from the container while
108+ # we don't mess up with RECORD file.
109+ CIBW_REPAIR_WHEEL_COMMAND_LINUX : |
110+ mkdir -p /output/debugwheelhouse &&
111+ python scripts/extract_debug_symbols.py {wheel} --output-dir /output/debugwheelhouse &&
112+ python scripts/zip_filter.py {wheel} \*.c \*.cpp \*.cc \*.h \*.hpp \*.pyx \*.md &&
113+ mkdir ./tempwheelhouse &&
114+ unzip -l {wheel} | grep '\.so' &&
115+ auditwheel repair -w ./tempwheelhouse {wheel} &&
116+ mv ./tempwheelhouse/*.whl {dest_dir} &&
117+ rm -rf ./tempwheelhouse
118+ CIBW_REPAIR_WHEEL_COMMAND_MACOS : |
119+ mkdir -p ./debugwheelhouse &&
120+ python scripts/extract_debug_symbols.py {wheel} --output-dir ./debugwheelhouse &&
121+ python scripts/zip_filter.py {wheel} \*.c \*.cpp \*.cc \*.h \*.hpp \*.pyx \*.md &&
122+ MACOSX_DEPLOYMENT_TARGET=12.7 delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel}
123+ CIBW_REPAIR_WHEEL_COMMAND_WINDOWS : python scripts/zip_filter.py "{wheel}" "*.c" "*.cpp" "*.cc" "*.h" "*.hpp" "*.pyx" "*.md" && mv "{wheel}" "{dest_dir}"
124+ CIBW_TEST_COMMAND : " python {project}/tests/smoke_test.py"
125+
86126 steps :
87127 - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
88128 with :
89129 persist-credentials : false
90130 fetch-depth : 0
91131
92- - name : Enable sccache
93- if : runner.os != 'Windows'
94- uses : mozilla-actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad # 0.0.9
95- with :
96- disable_annotations : true
97-
98- - name : Add addtional GHA cache-related env vars
99- uses : actions/github-script@v7
100- if : runner.os != 'Windows'
101- with :
102- script : |
103- core.exportVariable('ACTIONS_CACHE_URL', process.env['ACTIONS_CACHE_URL'])
104- core.exportVariable('ACTIONS_RUNTIME_URL', process.env['ACTIONS_RUNTIME_URL'])
105-
106132 - uses : actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
107133 name : Install Python
108134 with :
@@ -118,76 +144,7 @@ jobs:
118144 uses : pypa/cibuildwheel@c923d83ad9c1bc00211c5041d0c3f73294ff88f6 # v3.1.4
119145 with :
120146 only : ${{ matrix.only }}
121- env :
122- SETUPTOOLS_SCM_PRETEND_VERSION_FOR_DDTRACE : ${{ needs.compute_version.outputs.library_version }}
123- CIBW_SKIP : ${{ inputs.cibw_skip }}
124- CIBW_PRERELEASE_PYTHONS : ${{ inputs.cibw_prerelease_pythons }}
125- CIBW_MANYLINUX_X86_64_IMAGE : manylinux2014
126- CIBW_MANYLINUX_AARCH64_IMAGE : manylinux2014
127- CIBW_MUSLLINUX_I686_IMAGE : ghcr.io/datadog/dd-trace-py/pypa_musllinux_1_2_i686:latest
128- CIBW_BEFORE_ALL_WINDOWS : ${{ matrix.os == 'windows-latest' && 'rustup target add i686-pc-windows-msvc' || (matrix.os == 'windows-11-arm' && 'rustup target add aarch64-pc-windows-msvc') }}
129- CIBW_BEFORE_ALL_MACOS : rustup target add aarch64-apple-darwin
130- CIBW_BEFORE_ALL_LINUX : |
131- if [[ "$(uname -m)-$(uname -i)-$(uname -o | tr '[:upper:]' '[:lower:]')-$(ldd --version 2>&1 | head -n 1 | awk '{print $1}')" != "i686-unknown-linux-musl" ]]; then
132- curl -sSf https://sh.rustup.rs | sh -s -- -y;
133- fi
134- CIBW_ENVIRONMENT_LINUX : >
135- PATH=$HOME/.cargo/bin:$PATH
136- CARGO_BUILD_JOBS=24
137- CMAKE_BUILD_PARALLEL_LEVEL=24
138- CMAKE_ARGS="-DNATIVE_TESTING=OFF"
139- SETUPTOOLS_SCM_PRETEND_VERSION_FOR_DDTRACE=${{ needs.compute_version.outputs.library_version }}
140- SCCACHE_GHA_ENABLED=true
141- SCCACHE_DIR=/host/${{ env.SCCACHE_DIR }}
142- SCCACHE_PATH=/host/${{ env.SCCACHE_PATH }}
143- SCCACHE_CACHE_SIZE=1G
144- ACTIONS_RUNTIME_TOKEN=${{ env.ACTIONS_RUNTIME_TOKEN }}
145- ACTIONS_RUNTIME_URL=${{ env.ACTIONS_RUNTIME_URL }}
146- ACTIONS_RESULTS_URL=${{ env.ACTIONS_RESULTS_URL }}
147- ACTIONS_CACHE_URL=${{ env.ACTIONS_CACHE_URL }}
148- ACTIONS_CACHE_SERVICE_V2=${{ env.ACTIONS_CACHE_SERVICE_V2 }}
149- DD_USE_SCCACHE=1
150- # SYSTEM_VERSION_COMPAT is a workaround for versioning issue, a.k.a.
151- # `platform.mac_ver()` reports incorrect MacOS version at 11.0
152- # See: https://stackoverflow.com/a/65402241
153- CIBW_ENVIRONMENT_MACOS : >
154- CMAKE_BUILD_PARALLEL_LEVEL=24
155- CARGO_BUILD_JOBS=24
156- SYSTEM_VERSION_COMPAT=0
157- CMAKE_ARGS="-DNATIVE_TESTING=OFF"
158- SETUPTOOLS_SCM_PRETEND_VERSION_FOR_DDTRACE=${{ needs.compute_version.outputs.library_version }}
159- SCCACHE_GHA_ENABLED=true
160- SCCACHE_CACHE_SIZE=1G
161- ACTIONS_RUNTIME_TOKEN=${{ env.ACTIONS_RUNTIME_TOKEN }}
162- ACTIONS_RUNTIME_URL=${{ env.ACTIONS_RUNTIME_URL }}
163- ACTIONS_RESULTS_URL=${{ env.ACTIONS_RESULTS_URL }}
164- ACTIONS_CACHE_URL=${{ env.ACTIONS_CACHE_URL }}
165- ACTIONS_CACHE_SERVICE_V2=${{ env.ACTIONS_CACHE_SERVICE_V2 }}
166- DD_USE_SCCACHE=1
167- CIBW_ENVIRONMENT_WINDOWS : >
168- SETUPTOOLS_SCM_PRETEND_VERSION_FOR_DDTRACE=${{ needs.compute_version.outputs.library_version }}
169- # cibuildwheel repair will copy anything's under /output directory from the
170- # build container to the host machine. This is a bit hacky way, but seems
171- # to be the only way getting debug symbols out from the container while
172- # we don't mess up with RECORD file.
173- CIBW_REPAIR_WHEEL_COMMAND_LINUX : |
174- mkdir -p /output/debugwheelhouse &&
175- python scripts/extract_debug_symbols.py {wheel} --output-dir /output/debugwheelhouse &&
176- python scripts/zip_filter.py {wheel} \*.c \*.cpp \*.cc \*.h \*.hpp \*.pyx \*.md &&
177- mkdir ./tempwheelhouse &&
178- unzip -l {wheel} | grep '\.so' &&
179- auditwheel repair -w ./tempwheelhouse {wheel} &&
180- mv ./tempwheelhouse/*.whl {dest_dir} &&
181- rm -rf ./tempwheelhouse
182- CIBW_REPAIR_WHEEL_COMMAND_MACOS : |
183- mkdir -p ./debugwheelhouse &&
184- python scripts/extract_debug_symbols.py {wheel} --output-dir ./debugwheelhouse &&
185- python scripts/zip_filter.py {wheel} \*.c \*.cpp \*.cc \*.h \*.hpp \*.pyx \*.md &&
186- MACOSX_DEPLOYMENT_TARGET=12.7 delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel}
187- CIBW_REPAIR_WHEEL_COMMAND_WINDOWS : python scripts/zip_filter.py "{wheel}" "*.c" "*.cpp" "*.cc" "*.h" "*.hpp" "*.pyx" "*.md" && mv "{wheel}" "{dest_dir}"
188- CIBW_BEFORE_TEST_LINUX : /host/${{ env.SCCACHE_PATH }} --show-stats
189- CIBW_BEFORE_TEST_MACOS : ${{ env.SCCACHE_PATH }} --show-stats
190- CIBW_TEST_COMMAND : " python {project}/tests/smoke_test.py"
147+
191148 - name : Validate wheel RECORD files
192149 shell : bash
193150 run : |
0 commit comments