Files
arrow/ci/scripts/python_build_emscripten.sh
e3150f2c68 GH-51487: [CI] Fix Emscripten wheel load failure by disabling llvm-strip on install (#51488)
### Rationale for this change
Fix #51487 - starting with LLVM 23 the required dylink.0 is not kept during CMake install strip. (see https://github.com/llvm/llvm-project/commit/52eb82e4f942db5e639c018c7757a1cca670333f)

### What changes are included in this PR?
Disable wheel install stripping with `SKBUILD_INSTALL_STRIP=false`
(applying alternative workaround llvm-strip --keep-section=dylink.0 would require more code changes)

### Are these changes tested?
Verified by CI.

### Are there any user-facing changes?
No.

### Was AI used for this PR?
Just gpt-6-sol during initial analysis
**PR code and description written by:**
- [x] Human
- [ ] AI

**Reviewed before submission by:**
- [x] Human
- [ ] AI
- [ ] Not reviewed
* GitHub Issue: #51487

Lead-authored-by: tadeja <tadeja@users.noreply.github.com>
Co-authored-by: Tadeja Kadunc <tadeja.kadunc@gmail.com>
Co-authored-by: Raúl Cumplido <raulcumplido@gmail.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
2026-09-30 11:55:14 +02:00

52 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
set -ex
arrow_dir=${1}
build_dir=${2}
# We don't need to follow this external file.
# See also: https://www.shellcheck.net/wiki/SC1090
#
# shellcheck source=/dev/null
source ~/emsdk/emsdk_env.sh
source_dir=${arrow_dir}/python
python_build_dir=${build_dir}/python
rm -rf "${python_build_dir}"
cp -aL "${source_dir}" "${python_build_dir}"
# conda sets LDFLAGS / CFLAGS etc. which break
# emcmake so we unset them
unset LDFLAGS CFLAGS CXXFLAGS CPPFLAGS
# Keep WebAssembly function names only in CI to limit wheel size
if [ "${GITHUB_ACTIONS:-}" = "true" ]; then
export PYARROW_CXXFLAGS="${PYARROW_CXXFLAGS:+${PYARROW_CXXFLAGS} }--profiling-funcs"
fi
pushd "${python_build_dir}"
# scikit-build-core strips unnecessary symbols by default.
# LLVM 23 also removes the required dylink.0 section (llvm/llvm-project#180246)
export SKBUILD_INSTALL_STRIP=false
pyodide build
popd