diff --git a/ci/docker/conda-python-emscripten.dockerfile b/ci/docker/conda-python-emscripten.dockerfile index 47ff550cd59..f1d0c201e90 100644 --- a/ci/docker/conda-python-emscripten.dockerfile +++ b/ci/docker/conda-python-emscripten.dockerfile @@ -17,21 +17,26 @@ ARG repo ARG arch -ARG python="3.12" +ARG python="3.13" FROM ${repo}:${arch}-conda-python-${python} ARG selenium_version="4.15.2" -ARG pyodide_version="0.26.0" +ARG pyodide_version="0.28.1" ARG chrome_version="latest" -ARG required_python_min="(3,12)" -# fail if python version < 3.12 +ARG required_python_min="(3,13)" +# fail if python version < 3.13 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 recent pyodide-build and recent python +RUN apt-get update -y -q && \ + apt-get install -y -q --no-install-recommends \ + libatomic1 && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* # needs to be a login shell so ~/.profile is read SHELL ["/bin/bash", "--login", "-c", "-o", "pipefail"] +# install selenium and recent pyodide-build and recent python RUN python -m pip install --no-cache-dir selenium==${selenium_version} && \ python -m pip install --no-cache-dir --upgrade pyodide-build>=${pyodide_version} @@ -46,9 +51,9 @@ 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) +# install node 22 (needed for async call support and JSPI) # 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 +RUN conda install nodejs=22 unzip pthread-stubs make -c conda-forge # install chrome for testing browser based runner COPY ci/scripts/install_chromedriver.sh /arrow/ci/scripts/ diff --git a/dev/tasks/tasks.yml b/dev/tasks/tasks.yml index e41d20e4034..93da971f09b 100644 --- a/dev/tasks/tasks.yml +++ b/dev/tasks/tasks.yml @@ -849,7 +849,7 @@ tasks: params: env: UBUNTU: 22.04 - PYTHON: 3.12 + PYTHON: 3.13 image: conda-python-emscripten test-conda-python-3.11-hypothesis: diff --git a/docker-compose.yml b/docker-compose.yml index 3c2ea37de3e..29ea0491129 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -930,10 +930,10 @@ services: arch: ${ARCH} clang_tools: ${CLANG_TOOLS} llvm: ${LLVM} - pyodide_version: "0.26.0" + pyodide_version: "0.28.1" chrome_version: "134" selenium_version: "4.15.2" - required_python_min: "(3,12)" + required_python_min: "(3,13)" python: ${PYTHON} shm_size: *shm-size volumes: *ubuntu-volumes diff --git a/docs/source/developers/cpp/emscripten.rst b/docs/source/developers/cpp/emscripten.rst index d41b69aa6f0..785c9b0a67c 100644 --- a/docs/source/developers/cpp/emscripten.rst +++ b/docs/source/developers/cpp/emscripten.rst @@ -34,9 +34,9 @@ activate it using the commands below (see https://emscripten.org/docs/getting_st git clone https://github.com/emscripten-core/emsdk.git cd emsdk # replace with the desired EMSDK version. - # e.g. for Pyodide 0.26, you need EMSDK version 3.1.58 + # e.g. for Pyodide 0.28, you need EMSDK version 4.0.9 # the versions can be found in the Makefile.envs file in the Pyodide repo: - # https://github.com/pyodide/pyodide/blob/10b484cfe427e076c929a55dc35cfff01ea8d3bc/Makefile.envs + # https://github.com/pyodide/pyodide/blob/0db5ff79f310694a7d72ae0b3279e9809ab836d6/Makefile.envs ./emsdk install ./emsdk activate source ./emsdk_env.sh