Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GH-41910: [Python] Add support for Pyodide #37822

Merged
merged 140 commits into from
Jul 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
140 commits
Select commit Hold shift + click to select a range
eda86ae
python changes for pyodide build
joemarshall Sep 21, 2023
1fe1845
included setup.py changes
joemarshall Sep 28, 2023
7579749
setup fixes for pyodide
joemarshall Sep 28, 2023
1bda7a9
fix so pyodide build works as default
joemarshall Sep 28, 2023
ef1ce8e
python formatting
joemarshall Sep 28, 2023
7166f46
fix emscripten checks
joemarshall Sep 28, 2023
a6e78f5
emscripten check fixes
joemarshall Sep 28, 2023
61d95ad
removed cmakelists.txt from python pr
joemarshall Sep 28, 2023
bef91cb
removed unnecessary change
joemarshall Sep 28, 2023
7b806c4
moved python cmake changes into python pr
joemarshall Oct 2, 2023
5812a83
Merge branch 'main' of github.com:apache/arrow into emscripten_python…
joemarshall Apr 5, 2024
6c61500
docstring for is_threading_enabled
joemarshall Apr 5, 2024
1f137ce
review fixes to io.pxi
joemarshall Apr 5, 2024
e3f9938
review fix
joemarshall Apr 5, 2024
bdce142
bugfix in io.pxi
joemarshall Apr 5, 2024
1222a69
use standard json settings output to move copy main arrow build setti…
joemarshall Apr 6, 2024
63c13b1
added csv to emscripten build default
joemarshall Apr 6, 2024
ceee306
fix substrait linking
joemarshall Apr 10, 2024
501d96f
check call to cmake for options
joemarshall Apr 10, 2024
c3c478d
support for single threaded joins
joemarshall Apr 10, 2024
65c2e24
Update asof_join_node.cc
joemarshall Apr 10, 2024
a8d785f
disable threaded tests when threading isn't available
joemarshall Apr 13, 2024
e5322d5
disable threaded cancellation when no threads
joemarshall Apr 14, 2024
0da860d
disable threaded & process calling tests
joemarshall Apr 14, 2024
d21f71e
makelist fixes for pyodide
joemarshall Apr 14, 2024
2549fc4
timezone fixes
joemarshall Apr 14, 2024
8a6cbfa
disable threads in parquet loading at lowest level
joemarshall Apr 15, 2024
d6897b7
typo in pandas compatibility
joemarshall Apr 15, 2024
62153f8
move timezone handling to separate file
joemarshall Apr 15, 2024
735b9a6
disable tests that use processes on emscripten
joemarshall Apr 15, 2024
2fc018e
networking test skips
joemarshall Apr 15, 2024
01524fc
separate mark for multiprocessing
joemarshall Apr 15, 2024
171ab8a
emscripten memory map issues
joemarshall Apr 15, 2024
b9b4ea2
emscripten memory mapping
joemarshall Apr 15, 2024
c24763a
disable tests when no process support
joemarshall Apr 15, 2024
304b8af
emscripten test fixes
joemarshall Apr 15, 2024
d2d223f
fixes to emscripten tests
joemarshall Apr 15, 2024
217cfb1
run pytest in chrome using selenium
joemarshall Apr 18, 2024
9bddb87
run emscripten tests on chrome, node or firefox
joemarshall Apr 18, 2024
0c7891f
archery / docker scripts to test emscripten
joemarshall Apr 20, 2024
c951270
Merge branch 'unthreaded_joins' of github.com:joemarshall/arrow into …
joemarshall Apr 20, 2024
7ad3afd
linting
joemarshall Apr 20, 2024
e0b7611
patch pyodide and correct node version so that tests run
joemarshall Apr 22, 2024
f8929cb
review fixes
joemarshall Apr 22, 2024
ce56f74
review fixes
joemarshall Apr 22, 2024
af98b11
lint
joemarshall Apr 22, 2024
15643d3
lint
joemarshall Apr 22, 2024
c257d37
lint
joemarshall Apr 22, 2024
cd05e21
added licence
joemarshall Apr 22, 2024
f8f4a9d
remove copyrighted pyodide file
joemarshall Apr 22, 2024
e8f8162
Merge branch 'main' of github.com:apache/arrow into emscripten_python…
joemarshall May 30, 2024
91bf1af
emscripten setup.py support
joemarshall May 30, 2024
0508efb
pyodide version to 0.26.0
joemarshall May 30, 2024
eeeaa78
use python 3.12 for pyodide build
joemarshall May 30, 2024
895e718
pyodide 0.26 emscripten and python updates
joemarshall May 30, 2024
15cc197
use conda for pyodide build
joemarshall May 30, 2024
8f0ead4
python test fix
joemarshall May 31, 2024
cb64ebc
removed unneeded changes from cmakelists.txt
joemarshall May 31, 2024
a5029bb
make sure emscripten specific code doesn't get loaded in non-emscript…
joemarshall May 31, 2024
2d699f4
fix test exit
joemarshall May 31, 2024
66c4466
code formatting etc suggestions
joemarshall May 31, 2024
d727ac5
Merge branch 'main' of github.com:apache/arrow into emscripten_python…
joemarshall May 31, 2024
d49090f
Merge branch 'emscripten_python_changes' of github.com:joemarshall/ar…
joemarshall May 31, 2024
333b409
rename python build scripts
joemarshall May 31, 2024
ea377f4
python build out of tree
joemarshall May 31, 2024
dec465f
tidying up
joemarshall May 31, 2024
b16fb6e
fix shared library python build deps
joemarshall May 31, 2024
f6a1dcf
Merge branch 'emscripten_python_changes' of github.com:joemarshall/ar…
joemarshall May 31, 2024
165d40c
text alignment oops
joemarshall May 31, 2024
7f92de9
only test on chrome and node.js
joemarshall Jun 5, 2024
8c7e128
Merge branch 'emscripten_python_changes' of github.com:joemarshall/ar…
joemarshall Jun 5, 2024
bf07a0f
removed changes to install_libdir/prefix, because they should be set …
joemarshall Jun 5, 2024
6960975
fix install prefix for emscripten
joemarshall Jun 5, 2024
faa05ba
moved emscripten python build to live under conda-python
joemarshall Jun 7, 2024
ba64d72
fix typo in python build script
joemarshall Jun 10, 2024
a319ccd
docker compose changes
joemarshall Jun 10, 2024
cf8cda5
review fixes
joemarshall Jun 10, 2024
3f070a7
use correct mark
joemarshall Jun 10, 2024
a355114
use correct marker
joemarshall Jun 10, 2024
bf7ecc2
marker for sockets
joemarshall Jun 10, 2024
8fee630
Apply suggestions from code review
joemarshall Jun 10, 2024
7ac8956
Merge branch 'emscripten_python_changes' of github.com:joemarshall/ar…
joemarshall Jun 10, 2024
0ae61d5
blank space fix
joemarshall Jun 12, 2024
0891801
emscripten build fixes
joemarshall Jun 12, 2024
210f928
added emscripten to tasks.yml
joemarshall Jun 12, 2024
e30ade2
include timezones in emscripten distribution
joemarshall Jun 14, 2024
7da9953
enable unbroken time tests
joemarshall Jun 14, 2024
3c08fa8
fix python version on emscripten
joemarshall Jun 14, 2024
0562269
remove timezone handling
joemarshall Jun 23, 2024
c029e73
remove timezone data
joemarshall Jun 23, 2024
9d042c4
clarify use of SOABI
joemarshall Jun 23, 2024
3b4bd02
Update python/pyarrow/conftest.py
jorisvandenbossche Jun 24, 2024
bf480ca
disable ORC for testing
jorisvandenbossche Jun 25, 2024
bebbe3a
linting - fix whitespace in pyarrow init
jorisvandenbossche Jun 25, 2024
9e71079
temp disable ORC in preset
jorisvandenbossche Jun 25, 2024
591b01e
Merge branch 'main' of github.com:apache/arrow into emscripten_python…
joemarshall Jun 26, 2024
00a740f
added dockerfile to pre-commit list
joemarshall Jun 26, 2024
e9444c2
docker lint
joemarshall Jun 26, 2024
1748968
install unzip explicitly
joemarshall Jun 26, 2024
72b4ded
reenable zlib after orc disabled
joemarshall Jun 26, 2024
135ecf6
dockerfile formatting
joemarshall Jun 26, 2024
5fef3a9
reenable orc and fix cross-compiling
joemarshall Jun 26, 2024
035477d
source nvm at right place
joemarshall Jun 26, 2024
0ea70e5
remove pointless call to python --version
joemarshall Jun 26, 2024
df20ddc
moved docker subcommands to scripts
joemarshall Jun 26, 2024
0c24203
test fixes
joemarshall Jun 26, 2024
d3a7a59
disable orc tests if no timezone data
joemarshall Jun 26, 2024
44c714e
test fix for no cffi
joemarshall Jun 26, 2024
af8b70c
mypy fixes, sorry
joemarshall Jun 26, 2024
9884524
stop runner hanging
joemarshall Jun 26, 2024
6cd1de6
mark timezone using tests
joemarshall Jun 26, 2024
6a6472a
fixes for emscripten timezone data
joemarshall Jun 26, 2024
783b807
lint
joemarshall Jun 27, 2024
ead3b08
buffering fixes for node runner
joemarshall Jun 27, 2024
1a19b36
wait for node to start in runner
joemarshall Jun 27, 2024
61cb955
reorder tests so node runs first
joemarshall Jun 27, 2024
55d3473
remove use of multiprocessing
joemarshall Jun 27, 2024
f214e39
Update ci/scripts/python_test_emscripten.sh
joemarshall Jun 27, 2024
6f77c69
Update ci/scripts/install_chromedriver.sh
joemarshall Jun 27, 2024
6d92807
docker tidying
joemarshall Jun 27, 2024
f803100
get emscripten version from pyodide
joemarshall Jun 27, 2024
a51befc
remove progress from wgets
joemarshall Jun 27, 2024
ef4c72d
use conda to install node
joemarshall Jun 27, 2024
e2d8d73
Update dev/tasks/tasks.yml
joemarshall Jun 27, 2024
46e179a
run node tests without tty
joemarshall Jun 27, 2024
9d34218
lint
joemarshall Jun 28, 2024
077d91c
Apply suggestions from code review
joemarshall Jun 28, 2024
26d3a79
review fixes
joemarshall Jun 28, 2024
2909ced
comment fixes
joemarshall Jun 28, 2024
b44d2f1
Update python/CMakeLists.txt
joemarshall Jun 28, 2024
3c6a9ec
docker lint
joemarshall Jun 28, 2024
df2c0f4
don't use pre-release python packages
joemarshall Jun 28, 2024
c7f5eb3
Apply suggestions from code review
joemarshall Jun 29, 2024
0b304c7
revert line change
joemarshall Jun 29, 2024
c2e5b65
lint
joemarshall Jun 29, 2024
daa0200
code tidying
joemarshall Jul 5, 2024
61dcd99
python tidying from code review
joemarshall Jul 5, 2024
321f96b
review fixes
joemarshall Jul 5, 2024
fa0e497
tidy
joemarshall Jul 5, 2024
71a2f6a
Merge branch 'apache:main' into emscripten_python_changes
joemarshall Jul 5, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ repos:
# files: (/Dockerfile|\.dockerfile)$
files: >-
(
?^ci/docker/conda-python-emscripten\.dockerfile$|
?^ci/docker/python-wheel-windows-test-vs2019\.dockerfile$|
)
types: []
Expand Down
64 changes: 64 additions & 0 deletions ci/docker/conda-python-emscripten.dockerfile
joemarshall marked this conversation as resolved.
Show resolved Hide resolved
joemarshall marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# 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.

ARG repo
ARG arch
ARG python="3.12"
FROM ${repo}:${arch}-conda-python-${python}

ARG selenium_version="4.15.2"
ARG pyodide_version="0.26.0"
ARG chrome_version="latest"
ARG required_python_min="(3,12)"
# fail if python version < 3.12
RUN echo "check PYTHON>=${required_python_min}" && python -c "import sys;sys.exit(0 if sys.version_info>=${required_python_min} else 1)"

# install selenium and pyodide-build and recent python

# needs to be a login shell so ~/.profile is read
SHELL ["/bin/bash", "--login", "-c", "-o", "pipefail"]

RUN python -m pip install --no-cache-dir selenium==${selenium_version} && \
python -m pip install --no-cache-dir --upgrade pyodide-build==${pyodide_version}

# install pyodide dist directory to /pyodide
RUN pyodide_dist_url="https://github.com/pyodide/pyodide/releases/download/${pyodide_version}/pyodide-${pyodide_version}.tar.bz2" && \
wget -q "${pyodide_dist_url}" -O- | tar -xj -C /

# install correct version of emscripten for this pyodide
COPY ci/scripts/install_emscripten.sh /arrow/ci/scripts/
RUN bash /arrow/ci/scripts/install_emscripten.sh ~ /pyodide

# make sure zlib is cached in the EMSDK folder
RUN source ~/emsdk/emsdk_env.sh && embuilder --pic build zlib

# install node 20 (needed for async call support)
# and pthread-stubs for build, and unzip needed for chrome build to work
RUN conda install nodejs=20 unzip pthread-stubs make -c conda-forge

joemarshall marked this conversation as resolved.
Show resolved Hide resolved
# install chrome for testing browser based runner
COPY ci/scripts/install_chromedriver.sh /arrow/ci/scripts/
RUN /arrow/ci/scripts/install_chromedriver.sh "${chrome_version}"
joemarshall marked this conversation as resolved.
Show resolved Hide resolved

# make the version of make that is installed by conda be available everywhere
# or else pyodide's isolated build fails to find it
RUN ln -s "$(type -P make)" /bin/make

ENV ARROW_BUILD_TESTS="OFF" \
ARROW_BUILD_TYPE="release" \
ARROW_DEPENDENCY_SOURCE="BUNDLED" \
ARROW_EMSCRIPTEN="ON"
6 changes: 5 additions & 1 deletion ci/scripts/cpp_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ if [ -x "$(command -v git)" ]; then
fi

# TODO(kszucs): consider to move these to CMake
if [ ! -z "${CONDA_PREFIX}" ]; then
if [ ! -z "${CONDA_PREFIX}" ] && [ "${ARROW_EMSCRIPTEN:-OFF}" = "OFF" ]; then
echo -e "===\n=== Conda environment for build\n==="
conda list

Expand Down Expand Up @@ -99,6 +99,10 @@ if [ "${ARROW_EMSCRIPTEN:-OFF}" = "ON" ]; then
fi
n_jobs=2 # Emscripten build fails on docker unless this is set really low
source ~/emsdk/emsdk_env.sh
export CMAKE_INSTALL_PREFIX=$(em-config CACHE)/sysroot
# conda sets LDFLAGS / CFLAGS etc. which break
# emcmake so we unset them
unset LDFLAGS CFLAGS CXXFLAGS CPPFLAGS
emcmake cmake \
--preset=ninja-${ARROW_BUILD_TYPE:-debug}-emscripten \
-DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE_MAKEFILE:-OFF} \
Expand Down
44 changes: 44 additions & 0 deletions ci/scripts/install_chromedriver.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/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.

# Install Chrome and Chromedriver for Selenium

set -e

chrome_version=$1

if [ $chrome_version = "latest" ]; then
latest_release_path=LATEST_RELEASE_STABLE
else
latest_release_path=LATEST_RELEASE_${chrome_version}
fi
CHROME_VERSION_FULL=$(wget -q --no-verbose -O - "https://googlechromelabs.github.io/chrome-for-testing/${latest_release_path}")
CHROME_DOWNLOAD_URL="https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_${CHROME_VERSION_FULL}-1_amd64.deb"
CHROMEDRIVER_DOWNLOAD_URL="https://storage.googleapis.com/chrome-for-testing-public/${CHROME_VERSION_FULL}/linux64/chromedriver-linux64.zip"
wget -q --no-verbose -O /tmp/google-chrome.deb "${CHROME_DOWNLOAD_URL}"
apt-get update
apt install -qqy /tmp/google-chrome.deb
rm -f /tmp/google-chrome.deb
rm -rf /var/lib/apt/lists/*
wget --no-verbose -O /tmp/chromedriver-linux64.zip "${CHROMEDRIVER_DOWNLOAD_URL}"
unzip /tmp/chromedriver-linux64.zip -d /opt/
rm /tmp/chromedriver-linux64.zip
ln -fs /opt/chromedriver-linux64/chromedriver /usr/local/bin/chromedriver
echo "Using Chrome version: $(google-chrome --version)"
echo "Using Chrome Driver version: $(chromedriver --version)"
36 changes: 36 additions & 0 deletions ci/scripts/install_emscripten.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#!/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.

# install emscripten sdk version to match pyodide in $2 to directory $1/emsdk

set -e

target_path=$1
pyodide_path=$2

emscripten_version=$(${pyodide_path}/python -c "import sys;print(*sys._emscripten_info.emscripten_version,sep='.')")

cd ${target_path}
if [ ! -d emsdk ]; then
git clone https://github.com/emscripten-core/emsdk.git
fi
cd emsdk
./emsdk install ${emscripten_version}
./emsdk activate ${emscripten_version}
echo "Installed emsdk to: ${target_path}"
40 changes: 40 additions & 0 deletions ci/scripts/python_build_emscripten.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/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}


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

pushd ${python_build_dir}
pyodide build
popd
38 changes: 38 additions & 0 deletions ci/scripts/python_test_emscripten.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/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.

# run tests against Chrome and node.js as representative
# WebAssembly platforms (i.e. one browser, one non-browser).

set -ex

build_dir=${1}/python
pyodide_dist_dir=${2}

cd ${build_dir}

# note: this uses the newest wheel in dist
pyodide_wheel=$(ls -t dist/pyarrow*.whl | head -1)

echo "-------------- Running emscripten tests in Node ----------------------"
python scripts/run_emscripten_tests.py ${pyodide_wheel} --dist-dir=${pyodide_dist_dir} --runtime=node

echo "-------------- Running emscripten tests in Chrome --------------------"
python scripts/run_emscripten_tests.py ${pyodide_wheel} --dist-dir=${pyodide_dist_dir} --runtime=chrome

2 changes: 2 additions & 0 deletions cpp/CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,15 @@
"ARROW_ACERO": "ON",
"ARROW_BUILD_SHARED": "OFF",
"ARROW_BUILD_STATIC": "ON",
"ARROW_CSV": "ON",
"ARROW_CUDA": "OFF",
"ARROW_DEPENDENCY_SOURCE": "BUNDLED",
"ARROW_DEPENDENCY_USE_SHARED": "OFF",
"ARROW_ENABLE_THREADING": "OFF",
"ARROW_FLIGHT": "OFF",
"ARROW_IPC": "ON",
"ARROW_JEMALLOC": "OFF",
"ARROW_JSON": "ON",
"ARROW_MIMALLOC": "OFF",
"ARROW_ORC": "ON",
"ARROW_RUNTIME_SIMD_LEVEL": "NONE",
Expand Down
1 change: 1 addition & 0 deletions cpp/cmake_modules/ThirdpartyToolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -4551,6 +4551,7 @@ macro(build_orc)
BUILD_BYPRODUCTS ${ORC_STATIC_LIB}
CMAKE_ARGS ${ORC_CMAKE_ARGS}
DEPENDS ${ARROW_PROTOBUF_LIBPROTOBUF}
${ARROW_PROTOBUF_PROTOC}
${ARROW_ZSTD_LIBZSTD}
${Snappy_TARGET}
LZ4::lz4
Expand Down
9 changes: 9 additions & 0 deletions dev/tasks/tasks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1194,6 +1194,15 @@ tasks:
image: conda-python
{% endfor %}

test-conda-python-emscripten:
ci: github
template: docker-tests/github.linux.yml
params:
env:
UBUNTU: 22.04
PYTHON: 3.12
image: conda-python-emscripten

test-conda-python-3.11-hypothesis:
ci: github
template: docker-tests/github.linux.yml
Expand Down
33 changes: 33 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ x-hierarchy:
- conda-python-docs
- conda-python-cython2
- conda-python-dask
- conda-python-emscripten
- conda-python-hdfs
- conda-python-java-integration
- conda-python-jpype
Expand Down Expand Up @@ -875,6 +876,38 @@ services:
/arrow/ci/scripts/python_build.sh /arrow /build &&
/arrow/ci/scripts/python_test.sh /arrow"]

conda-python-emscripten:
# Usage:
# docker-compose build conda-python-emscripten
# docker-compose run --rm conda-python-emscripten
# Parameters:
# ARCH: amd64, arm64v8, ...
# UBUNTU: 22.04
image: ${REPO}:${ARCH}-conda-python-emscripten
build:
context: .
dockerfile: ci/docker/conda-python-emscripten.dockerfile
cache_from:
- ${REPO}:${ARCH}-conda-python-${PYTHON}
args:
repo: ${REPO}
arch: ${ARCH}
clang_tools: ${CLANG_TOOLS}
llvm: ${LLVM}
pyodide_version: "0.26.0"
chrome_version: "122"
selenium_version: "4.15.2"
required_python_min: "(3,12)"
python: ${PYTHON}
shm_size: *shm-size
volumes: *ubuntu-volumes
environment:
<<: [*common, *ccache, *sccache, *cpp]
command: ["
/arrow/ci/scripts/cpp_build.sh /arrow /build &&
/arrow/ci/scripts/python_build_emscripten.sh /arrow /build &&
/arrow/ci/scripts/python_test_emscripten.sh /build /pyodide"]

ubuntu-cuda-python:
# Usage:
# docker-compose build cuda-cpp
Expand Down
Loading
Loading