chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
# 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.
|
||||
|
||||
# CI docker arm env
|
||||
# tag: v0.02
|
||||
|
||||
FROM ubuntu:24.04
|
||||
COPY --from=ghcr.io/astral-sh/uv:0.10.5 /uv /uvx /bin/
|
||||
|
||||
COPY utils/apt-install-and-clear.sh /usr/local/bin/apt-install-and-clear
|
||||
COPY utils/download-and-verify.sh /usr/local/bin/download-and-verify
|
||||
|
||||
RUN apt-get update --fix-missing
|
||||
|
||||
RUN apt-install-and-clear -y ca-certificates gnupg2
|
||||
|
||||
COPY install/ubuntu_setup_tz.sh /install/ubuntu_setup_tz.sh
|
||||
RUN bash /install/ubuntu_setup_tz.sh
|
||||
|
||||
COPY install/ubuntu_install_core.sh /install/ubuntu_install_core.sh
|
||||
RUN bash /install/ubuntu_install_core.sh
|
||||
|
||||
COPY install/ubuntu_install_cmake.sh /install/ubuntu_install_cmake.sh
|
||||
RUN bash /install/ubuntu_install_cmake.sh
|
||||
|
||||
COPY install/ubuntu_install_googletest.sh /install/ubuntu_install_googletest.sh
|
||||
RUN bash /install/ubuntu_install_googletest.sh
|
||||
|
||||
# sccache
|
||||
COPY install/ubuntu_install_sccache.sh /install/ubuntu_install_sccache.sh
|
||||
RUN bash /install/ubuntu_install_sccache.sh
|
||||
ENV PATH=/opt/sccache:$PATH
|
||||
|
||||
COPY install/ubuntu_install_llvm.sh /install/ubuntu_install_llvm.sh
|
||||
RUN bash /install/ubuntu_install_llvm.sh
|
||||
|
||||
ENV UV_NO_CACHE=1
|
||||
ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python
|
||||
ENV UV_MANAGED_PYTHON=1
|
||||
|
||||
ENV TVM_VENV=/venv/apache-tvm-py3.10
|
||||
COPY install/ubuntu_install_python.sh /install/ubuntu_install_python.sh
|
||||
RUN bash /install/ubuntu_install_python.sh 3.10
|
||||
ENV PATH=${TVM_VENV}/bin:$PATH
|
||||
ENV VIRTUAL_ENV=${TVM_VENV}
|
||||
ENV PYTHONNOUSERSITE=1
|
||||
|
||||
COPY install/ubuntu_install_python_package.sh /install/ubuntu_install_python_package.sh
|
||||
RUN bash /install/ubuntu_install_python_package.sh
|
||||
|
||||
# TensorFlow deps
|
||||
COPY install/ubuntu_install_tensorflow_aarch64.sh /install/ubuntu_install_tensorflow_aarch64.sh
|
||||
RUN bash /install/ubuntu_install_tensorflow_aarch64.sh
|
||||
|
||||
# TFLite deps
|
||||
COPY install/ubuntu_install_tflite.sh /install/ubuntu_install_tflite.sh
|
||||
RUN bash /install/ubuntu_install_tflite.sh
|
||||
|
||||
# ONNX and PyTorch
|
||||
COPY install/ubuntu_install_onnx.sh /install/ubuntu_install_onnx.sh
|
||||
RUN bash /install/ubuntu_install_onnx.sh
|
||||
|
||||
# MetaScheduler deps
|
||||
COPY install/ubuntu_install_xgboost.sh /install/ubuntu_install_xgboost.sh
|
||||
RUN bash /install/ubuntu_install_xgboost.sh
|
||||
@@ -0,0 +1,94 @@
|
||||
# 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.
|
||||
|
||||
# CI docker CPU env
|
||||
FROM ubuntu:24.04
|
||||
COPY --from=ghcr.io/astral-sh/uv:0.10.5 /uv /uvx /bin/
|
||||
|
||||
COPY utils/apt-install-and-clear.sh /usr/local/bin/apt-install-and-clear
|
||||
COPY utils/download-and-verify.sh /usr/local/bin/download-and-verify
|
||||
|
||||
RUN apt-get update --fix-missing
|
||||
|
||||
COPY install/ubuntu_setup_tz.sh /install/ubuntu_setup_tz.sh
|
||||
RUN bash /install/ubuntu_setup_tz.sh
|
||||
|
||||
COPY install/ubuntu_install_core.sh /install/ubuntu_install_core.sh
|
||||
RUN bash /install/ubuntu_install_core.sh
|
||||
|
||||
COPY install/ubuntu_install_cmake.sh /install/ubuntu_install_cmake.sh
|
||||
RUN bash /install/ubuntu_install_cmake.sh
|
||||
|
||||
COPY install/ubuntu_install_googletest.sh /install/ubuntu_install_googletest.sh
|
||||
RUN bash /install/ubuntu_install_googletest.sh
|
||||
|
||||
ENV UV_NO_CACHE=1
|
||||
ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python
|
||||
ENV UV_MANAGED_PYTHON=1
|
||||
|
||||
ENV TVM_VENV=/venv/apache-tvm-py3.10
|
||||
COPY install/ubuntu_install_python.sh /install/ubuntu_install_python.sh
|
||||
RUN bash /install/ubuntu_install_python.sh 3.10
|
||||
RUN uv --version
|
||||
ENV PATH=${TVM_VENV}/bin:$PATH
|
||||
ENV VIRTUAL_ENV=${TVM_VENV}
|
||||
|
||||
# Disable .local directory from affecting CI.
|
||||
ENV PYTHONNOUSERSITE=1
|
||||
|
||||
COPY install/ubuntu_install_python_package.sh /install/ubuntu_install_python_package.sh
|
||||
RUN bash /install/ubuntu_install_python_package.sh
|
||||
|
||||
COPY install/ubuntu_install_llvm.sh /install/ubuntu_install_llvm.sh
|
||||
RUN bash /install/ubuntu_install_llvm.sh
|
||||
|
||||
COPY install/ubuntu_install_dnnl.sh /install/ubuntu_install_dnnl.sh
|
||||
RUN bash /install/ubuntu_install_dnnl.sh
|
||||
|
||||
# MetaScheduler deps
|
||||
COPY install/ubuntu_install_xgboost.sh /install/ubuntu_install_xgboost.sh
|
||||
RUN bash /install/ubuntu_install_xgboost.sh
|
||||
|
||||
# TensorFlow deps
|
||||
COPY install/ubuntu_install_tensorflow.sh /install/ubuntu_install_tensorflow.sh
|
||||
RUN bash /install/ubuntu_install_tensorflow.sh
|
||||
|
||||
# TFLite deps
|
||||
COPY install/ubuntu_install_tflite.sh /install/ubuntu_install_tflite.sh
|
||||
RUN bash /install/ubuntu_install_tflite.sh
|
||||
|
||||
# JAX deps
|
||||
COPY install/ubuntu_install_jax.sh /install/ubuntu_install_jax.sh
|
||||
RUN bash /install/ubuntu_install_jax.sh "cpu"
|
||||
|
||||
# sccache
|
||||
COPY install/ubuntu_install_sccache.sh /install/ubuntu_install_sccache.sh
|
||||
RUN bash /install/ubuntu_install_sccache.sh
|
||||
ENV PATH=/opt/sccache:$PATH
|
||||
|
||||
# ONNX and PyTorch
|
||||
COPY install/ubuntu_install_onnx.sh /install/ubuntu_install_onnx.sh
|
||||
RUN bash /install/ubuntu_install_onnx.sh
|
||||
|
||||
# NNEF
|
||||
COPY install/ubuntu_install_nnef.sh /install/ubuntu_install_nnef.sh
|
||||
RUN bash /install/ubuntu_install_nnef.sh
|
||||
|
||||
# AArch64 Architecture Envelope Model (AEM)
|
||||
COPY install/ubuntu_install_aprofile_aem.sh /install
|
||||
RUN bash /install/ubuntu_install_aprofile_aem.sh
|
||||
ENV PATH=$PATH:/opt/arm/fvp/Base_RevC_AEMvA_pkg/models/Linux64_GCC-9.3/:/opt/arm/gcc-aarch64-none-elf/bin
|
||||
@@ -0,0 +1,141 @@
|
||||
# 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.
|
||||
|
||||
# CI docker GPU env
|
||||
# tag: v0.60
|
||||
FROM nvidia/cuda:12.8.1-cudnn-devel-ubuntu24.04
|
||||
COPY --from=ghcr.io/astral-sh/uv:0.10.5 /uv /uvx /bin/
|
||||
|
||||
COPY utils/apt-install-and-clear.sh /usr/local/bin/apt-install-and-clear
|
||||
COPY utils/download-and-verify.sh /usr/local/bin/download-and-verify
|
||||
|
||||
# Per https://forums.developer.nvidia.com/t/notice-cuda-linux-repository-key-rotation/212772
|
||||
# we need to add a new GPG key before running apt update.
|
||||
RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/3bf863cc.pub
|
||||
|
||||
# Base scripts
|
||||
RUN rm -f /etc/apt/sources.list.d/nvidia-ml.list && apt-get clean
|
||||
RUN apt-get update --fix-missing
|
||||
|
||||
COPY install/ubuntu_setup_tz.sh /install/ubuntu_setup_tz.sh
|
||||
RUN bash /install/ubuntu_setup_tz.sh
|
||||
|
||||
COPY install/ubuntu_install_core.sh /install/ubuntu_install_core.sh
|
||||
RUN bash /install/ubuntu_install_core.sh
|
||||
|
||||
COPY install/ubuntu_install_cmake.sh /install/ubuntu_install_cmake.sh
|
||||
RUN bash /install/ubuntu_install_cmake.sh
|
||||
|
||||
COPY install/ubuntu_install_googletest.sh /install/ubuntu_install_googletest.sh
|
||||
RUN bash /install/ubuntu_install_googletest.sh /googletest
|
||||
|
||||
ENV UV_NO_CACHE=1
|
||||
ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python
|
||||
ENV UV_MANAGED_PYTHON=1
|
||||
|
||||
ENV TVM_VENV=/venv/apache-tvm-py3.10
|
||||
COPY install/ubuntu_install_python.sh /install/ubuntu_install_python.sh
|
||||
RUN bash /install/ubuntu_install_python.sh 3.10
|
||||
RUN uv --version
|
||||
ENV PATH=${TVM_VENV}/bin:$PATH
|
||||
ENV VIRTUAL_ENV=${TVM_VENV}
|
||||
|
||||
# Disable .local directory from affecting CI.
|
||||
ENV PYTHONNOUSERSITE=1
|
||||
|
||||
COPY install/ubuntu_install_llvm.sh /install/ubuntu_install_llvm.sh
|
||||
RUN bash /install/ubuntu_install_llvm.sh
|
||||
|
||||
COPY install/ubuntu_install_opencl.sh /install/ubuntu_install_opencl.sh
|
||||
RUN bash /install/ubuntu_install_opencl.sh
|
||||
|
||||
COPY install/ubuntu_install_python_package.sh /install/ubuntu_install_python_package.sh
|
||||
RUN bash /install/ubuntu_install_python_package.sh
|
||||
|
||||
COPY install/ubuntu_install_cuda_python.sh /install/ubuntu_install_cuda_python.sh
|
||||
RUN bash /install/ubuntu_install_cuda_python.sh
|
||||
|
||||
COPY install/ubuntu_install_sphinx.sh /install/ubuntu_install_sphinx.sh
|
||||
RUN bash /install/ubuntu_install_sphinx.sh
|
||||
|
||||
# Enable doxygen for c++ doc build
|
||||
RUN apt-get update && apt-install-and-clear -y doxygen libprotobuf-dev protobuf-compiler
|
||||
|
||||
COPY install/ubuntu_install_java.sh /install/ubuntu_install_java.sh
|
||||
RUN bash /install/ubuntu_install_java.sh
|
||||
|
||||
COPY install/ubuntu_install_nodejs.sh /install/ubuntu_install_nodejs.sh
|
||||
RUN bash /install/ubuntu_install_nodejs.sh
|
||||
|
||||
COPY install/ubuntu_install_rocm.sh /install/ubuntu_install_rocm.sh
|
||||
RUN bash /install/ubuntu_install_rocm.sh
|
||||
|
||||
# DL Frameworks
|
||||
COPY install/ubuntu_install_coreml.sh /install/ubuntu_install_coreml.sh
|
||||
RUN bash /install/ubuntu_install_coreml.sh
|
||||
|
||||
COPY install/ubuntu_install_tensorflow.sh /install/ubuntu_install_tensorflow.sh
|
||||
RUN bash /install/ubuntu_install_tensorflow.sh
|
||||
|
||||
COPY install/ubuntu_install_jax.sh /install/ubuntu_install_jax.sh
|
||||
RUN bash /install/ubuntu_install_jax.sh "cuda"
|
||||
|
||||
# ONNX and PyTorch
|
||||
COPY install/ubuntu_install_onnx.sh /install/ubuntu_install_onnx.sh
|
||||
RUN bash /install/ubuntu_install_onnx.sh "cuda"
|
||||
|
||||
COPY install/ubuntu_install_tflite.sh /install/ubuntu_install_tflite.sh
|
||||
RUN bash /install/ubuntu_install_tflite.sh
|
||||
|
||||
COPY install/ubuntu_install_dgl.sh /install/ubuntu_install_dgl.sh
|
||||
RUN bash /install/ubuntu_install_dgl.sh
|
||||
|
||||
COPY install/ubuntu_install_nnef.sh /install/ubuntu_install_nnef.sh
|
||||
RUN bash /install/ubuntu_install_nnef.sh
|
||||
|
||||
ENV NVIDIA_DRIVER_CAPABILITIES=compute,graphics,utility
|
||||
COPY install/ubuntu_install_vulkan.sh /install/ubuntu_install_vulkan.sh
|
||||
RUN bash /install/ubuntu_install_vulkan.sh
|
||||
|
||||
# MetaScheduler deps
|
||||
COPY install/ubuntu_install_xgboost.sh /install/ubuntu_install_xgboost.sh
|
||||
RUN bash /install/ubuntu_install_xgboost.sh
|
||||
|
||||
# sccache
|
||||
COPY install/ubuntu_install_sccache.sh /install/ubuntu_install_sccache.sh
|
||||
RUN bash /install/ubuntu_install_sccache.sh
|
||||
ENV PATH=/opt/sccache:$PATH
|
||||
|
||||
# dnnl
|
||||
COPY install/ubuntu_install_dnnl.sh /install/ubuntu_install_dnnl.sh
|
||||
RUN bash /install/ubuntu_install_dnnl.sh
|
||||
|
||||
# Environment variables
|
||||
ENV PATH=/usr/local/nvidia/bin:${PATH}
|
||||
ENV PATH=/usr/local/cuda/bin:${PATH}
|
||||
ENV CPLUS_INCLUDE_PATH=/usr/local/cuda/include
|
||||
ENV C_INCLUDE_PATH=/usr/local/cuda/include
|
||||
ENV LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/compat:${LIBRARY_PATH}
|
||||
ENV LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/compat:${LD_LIBRARY_PATH}
|
||||
|
||||
# Ensure the local libcuda have higher priority than the /usr/local/cuda/compact
|
||||
# since the compact libcuda does not work on non-Tesla gpus
|
||||
ENV LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:${LD_LIBRARY_PATH}
|
||||
|
||||
ENV LD_LIBRARY_PATH=/opt/rocm/lib:${LD_LIBRARY_PATH}
|
||||
ENV PATH=/node_modules/.bin:${PATH}
|
||||
ENV VULKAN_SDK=/usr
|
||||
@@ -0,0 +1,71 @@
|
||||
# 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.
|
||||
FROM ubuntu:24.04
|
||||
COPY --from=ghcr.io/astral-sh/uv:0.10.5 /uv /uvx /bin/
|
||||
|
||||
COPY utils/apt-install-and-clear.sh /usr/local/bin/apt-install-and-clear
|
||||
COPY utils/download-and-verify.sh /usr/local/bin/download-and-verify
|
||||
|
||||
RUN apt-get update --fix-missing
|
||||
|
||||
COPY install/ubuntu_setup_tz.sh /install/ubuntu_setup_tz.sh
|
||||
RUN bash /install/ubuntu_setup_tz.sh
|
||||
|
||||
COPY install/ubuntu_install_core.sh /install/ubuntu_install_core.sh
|
||||
RUN bash /install/ubuntu_install_core.sh
|
||||
|
||||
COPY install/ubuntu_install_cmake.sh /install/ubuntu_install_cmake.sh
|
||||
RUN bash /install/ubuntu_install_cmake.sh
|
||||
|
||||
COPY install/ubuntu_install_googletest.sh /install/ubuntu_install_googletest.sh
|
||||
RUN bash /install/ubuntu_install_googletest.sh
|
||||
|
||||
ENV UV_NO_CACHE=1
|
||||
ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python
|
||||
ENV UV_MANAGED_PYTHON=1
|
||||
|
||||
ENV TVM_VENV=/venv/apache-tvm-py3.10
|
||||
COPY install/ubuntu_install_python.sh /install/ubuntu_install_python.sh
|
||||
RUN bash /install/ubuntu_install_python.sh 3.10
|
||||
ENV PATH=${TVM_VENV}/bin:$PATH
|
||||
ENV VIRTUAL_ENV=${TVM_VENV}
|
||||
|
||||
# Disable .local directory from affecting CI.
|
||||
ENV PYTHONNOUSERSITE=1
|
||||
|
||||
COPY install/ubuntu_install_python_package.sh /install/ubuntu_install_python_package.sh
|
||||
RUN bash /install/ubuntu_install_python_package.sh
|
||||
|
||||
COPY install/ubuntu_install_llvm.sh /install/ubuntu_install_llvm.sh
|
||||
RUN bash /install/ubuntu_install_llvm.sh
|
||||
|
||||
COPY install/ubuntu_install_nodejs.sh /install/ubuntu_install_nodejs.sh
|
||||
RUN bash /install/ubuntu_install_nodejs.sh
|
||||
|
||||
COPY install/ubuntu_install_emscripten.sh /install/ubuntu_install_emscripten.sh
|
||||
RUN bash /install/ubuntu_install_emscripten.sh
|
||||
|
||||
ENV EMSDK=/emsdk
|
||||
ENV PATH=${PATH}:${EMSDK}:${EMSDK}/upstream/emscripten
|
||||
ENV EMSCRIPTEN=${EMSDK}/upstream/emscripten
|
||||
ENV EM_BINARYEN_ROOT=${EMSDK}/upstream
|
||||
ENV EM_LLVM_ROOT=${EMSDK}/upstream/bin
|
||||
|
||||
# sccache
|
||||
COPY install/ubuntu_install_sccache.sh /install/ubuntu_install_sccache.sh
|
||||
RUN bash /install/ubuntu_install_sccache.sh
|
||||
ENV PATH=/opt/sccache:$PATH
|
||||
@@ -0,0 +1,126 @@
|
||||
<!--- 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. -->
|
||||
|
||||
# TVM Docker
|
||||
|
||||
This directory contains the TVM's docker infrastructure.
|
||||
We use docker to provide build environments for CI and images for demo.
|
||||
We need [docker](https://docs.docker.com/engine/installation/) and
|
||||
[nvidia-docker](https://github.com/NVIDIA/nvidia-docker/) for GPU images.
|
||||
|
||||
## Start Docker Bash Session
|
||||
|
||||
You can use the following helper script to start an
|
||||
interactive bash session with a given image_name.
|
||||
|
||||
```bash
|
||||
/path/to/tvm/docker/bash.sh image_name
|
||||
```
|
||||
|
||||
The script does the following things:
|
||||
|
||||
- Mount current directory to the same location in the docker container, and set it as home
|
||||
- Switch user to be the same user that calls the bash.sh
|
||||
- Use the host-side network
|
||||
|
||||
The helper bash script can be useful to build demo sessions.
|
||||
|
||||
## Prebuilt Docker Images
|
||||
|
||||
You can use third party pre-built images for doing quick exploration with TVM installed.
|
||||
For example, you can run the following command to launch ```tvmai/demo-cpu``` image.
|
||||
|
||||
```bash
|
||||
/path/to/tvm/docker/bash.sh tvmai/demo-cpu
|
||||
```
|
||||
|
||||
Then inside the docker container, you can type the following command to start the jupyter notebook
|
||||
```bash
|
||||
jupyter notebook
|
||||
```
|
||||
|
||||
You can find some un-official prebuilt images in https://hub.docker.com/r/tlcpack/ .
|
||||
Note that these are convenience images and are not part of the ASF release.
|
||||
|
||||
|
||||
## Use Local Build Script
|
||||
|
||||
We also provide script to build docker images locally.
|
||||
We use [`build.sh`](./build.sh) to build and (optionally) run commands
|
||||
in the container. To build and run docker images, we can run the following
|
||||
command at the root of the project.
|
||||
|
||||
```bash
|
||||
./docker/build.sh image_name [command(optional)]
|
||||
```
|
||||
|
||||
Here image_name corresponds to the docker defined in the
|
||||
```Dockerfile.image_name```.
|
||||
|
||||
You can also start an interactive session by typing
|
||||
|
||||
```bash
|
||||
./docker/build.sh image_name -it bash
|
||||
```
|
||||
|
||||
The built docker images are prefixed by ``tvm.``, for example the command
|
||||
|
||||
````bash
|
||||
./docker/build.sh image_name
|
||||
````
|
||||
|
||||
produces the image ``tvm.ci_cpu`` that is displayed in the list of docker images
|
||||
using the command ``docker images``. To run an interactive terminal, execute:
|
||||
|
||||
````bash
|
||||
./docker/bash.sh Dockerfile.ci_cpu
|
||||
````
|
||||
|
||||
or
|
||||
|
||||
````bash
|
||||
./docker/bash.sh ci_cpu echo hello tvm world
|
||||
````
|
||||
|
||||
the same applies to the other images (``./docker/Dockerfile.*``).
|
||||
|
||||
The command ``./docker/build.sh image_name COMMANDS`` is almost equivalent to
|
||||
``./docker/bash.sh image_name COMMANDS`` but in the case of ``bash.sh``
|
||||
a build attempt is not done.
|
||||
|
||||
The build command will map the tvm root to the corresponding location
|
||||
inside the container with the same user as the user invoking the
|
||||
docker command. Here are some common use examples to perform CI
|
||||
tasks.
|
||||
|
||||
- build codes with CUDA support
|
||||
|
||||
```bash
|
||||
./docker/build.sh ci_gpu bash -c "cd build && cmake -GNinja .. && ninja -j$(nproc)"
|
||||
```
|
||||
|
||||
- do the python unittest
|
||||
|
||||
```bash
|
||||
./docker/build.sh ci_gpu tests/scripts/task_python_unittest.sh
|
||||
```
|
||||
|
||||
- build the documents. The results will be available at `docs/_build/html`
|
||||
|
||||
```bash
|
||||
./docker/ci_build.sh ci_gpu bash -c "cd docs && make html"
|
||||
```
|
||||
Executable
+614
@@ -0,0 +1,614 @@
|
||||
#!/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.
|
||||
|
||||
#
|
||||
# Start a bash, mount REPO_MOUNT_POINT to be current directory.
|
||||
#
|
||||
# Usage: docker/bash.sh [-i|--interactive] [--net=host] [-t|--tty]
|
||||
# [--shell SHELL] [--mount MOUNT_DIR]
|
||||
# [--repo-mount-point REPO_MOUNT_POINT]
|
||||
# [--dry-run] [--name NAME] [--privileged]
|
||||
# <DOCKER_IMAGE_NAME> [--] [COMMAND]
|
||||
#
|
||||
# Usage: docker/bash.sh <CONTAINER_NAME>
|
||||
# Starts an interactive session
|
||||
#
|
||||
# Usage2: docker/bash.sh [-i] <CONTAINER_NAME> [COMMAND]
|
||||
# Execute command in the docker image, default non-interactive
|
||||
# With -i, execute interactively.
|
||||
#
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
##############################################
|
||||
### Section 1: Constants and defaults ###
|
||||
##############################################
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
|
||||
REPO_DIR="$(dirname "${SCRIPT_DIR}")"
|
||||
|
||||
DRY_RUN=false
|
||||
INTERACTIVE=false
|
||||
TTY=false
|
||||
USE_NET_HOST=false
|
||||
USE_GPU=true
|
||||
DOCKER_IMAGE_NAME=
|
||||
COMMAND=bash
|
||||
MOUNT_DIRS=( )
|
||||
CONTAINER_NAME=
|
||||
USER_SHELL=
|
||||
|
||||
# TODO(Lunderberg): Remove this if statement and always set to
|
||||
# "${REPO_DIR}". The consistent directory for Jenkins is currently
|
||||
# necessary to allow CMake build commands to run in CI after the build
|
||||
# steps.
|
||||
# TODO(https://github.com/apache/tvm/issues/11952):
|
||||
# Figure out a better way to keep the same path
|
||||
# between build and testing stages.
|
||||
if [[ -n "${JENKINS_HOME:-}" ]]; then
|
||||
REPO_MOUNT_POINT=/workspace
|
||||
else
|
||||
REPO_MOUNT_POINT="${REPO_DIR}"
|
||||
fi
|
||||
|
||||
##############################################
|
||||
### Section 2: Helper functions ###
|
||||
##############################################
|
||||
|
||||
function show_usage() {
|
||||
cat <<EOF
|
||||
Usage: docker/bash.sh [-i|--interactive] [--net=host] [-t|--tty]
|
||||
[--shell SHELL] [--cpus NUM_CPUS] [--mount MOUNT_DIR]
|
||||
[--repo-mount-point REPO_MOUNT_POINT]
|
||||
[--dry-run] [--name NAME]
|
||||
<DOCKER_IMAGE_NAME> [--] [COMMAND]
|
||||
|
||||
|
||||
-h, --help
|
||||
|
||||
Display this help message.
|
||||
|
||||
-i, --interactive
|
||||
|
||||
Start the docker session in interactive mode.
|
||||
|
||||
-t, --tty
|
||||
|
||||
Start the docker session with a pseudo terminal (tty).
|
||||
|
||||
--shell SHELL
|
||||
|
||||
Specify a shell (e.g. --shell zsh) to use instead of bash
|
||||
when entering auto-interactive mode (no command or command
|
||||
is "bash").
|
||||
|
||||
--cpus NUM_CPUS
|
||||
|
||||
Limit the number of CPU cores to be used.
|
||||
|
||||
--net=host
|
||||
|
||||
Expose servers run into the container to the host, passing the
|
||||
"--net=host" argument through to docker. On MacOS, this is
|
||||
instead passed as "-p 8888:8888" since the host networking driver
|
||||
isn't supported.
|
||||
|
||||
--mount MOUNT_DIR
|
||||
|
||||
Expose MOUNT_DIR as an additional mount point inside the docker
|
||||
container. The mount point inside the container is the same as
|
||||
the folder location outside the container. This option can be
|
||||
specified multiple times.
|
||||
|
||||
--repo-mount-point REPO_MOUNT_POINT
|
||||
|
||||
The directory inside the docker container at which the TVM
|
||||
repository should be mounted, and is used as the workspace inside
|
||||
the docker container.
|
||||
|
||||
If unspecified, the mount location depends on the environment. If
|
||||
running inside Jenkins, the mount location will be /workspace.
|
||||
Otherwise, the mount location of the repository will be the same
|
||||
as the external location of the repository, to maintain
|
||||
compatibility with git-worktree.
|
||||
|
||||
--no-gpu
|
||||
|
||||
Do not use GPU device drivers even if using an CUDA Docker image
|
||||
|
||||
--dry-run
|
||||
|
||||
Print the docker command to be run, but do not execute it.
|
||||
|
||||
--build-dir BUILD_DIR
|
||||
|
||||
The build directory of TVM. This is appended to LD_LIBRARY_PATH
|
||||
|
||||
--env
|
||||
|
||||
Pass an environment variable through to the container.
|
||||
|
||||
--name
|
||||
|
||||
Set the name of the docker container, and the hostname that will
|
||||
appear inside the container.
|
||||
|
||||
--privileged
|
||||
|
||||
Give extended privileges to this container.
|
||||
|
||||
DOCKER_IMAGE_NAME
|
||||
|
||||
The name of the docker container to be run. This can be an
|
||||
explicit name of a docker image (e.g. "tlcpack/ci-gpu:v0.76") or
|
||||
can be a shortcut as defined in the TVM Jenkinsfile
|
||||
(e.g. "ci_gpu").
|
||||
|
||||
COMMAND
|
||||
|
||||
The command to be run inside the docker container. If this is set
|
||||
to "bash", the --interactive, --tty and --net=host flags are set.
|
||||
If no command is specified, defaults to "bash". If the command
|
||||
contains dash-prefixed arguments, the command should be preceded
|
||||
by -- to indicate arguments that are not intended for bash.sh.
|
||||
|
||||
Environment Variables:
|
||||
|
||||
TVM_DEV_DOCKER_MOUNTS
|
||||
|
||||
Space-separated list of additional mount specifications.
|
||||
Each entry is either:
|
||||
/path/to/dir - bind mount at same path inside container
|
||||
/src:/dst - bind mount src to dst inside container
|
||||
Source paths are validated; missing sources are skipped with a warning.
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
function parse_error() {
|
||||
echo "$@" >&2
|
||||
show_usage >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Detect if Docker daemon is running in rootless mode.
|
||||
# Uses DOCKER_IS_ROOTLESS env var as override (for CI), otherwise auto-detects.
|
||||
# Result is cached after first call.
|
||||
_ROOTLESS_CACHED=
|
||||
_ROOTLESS_RESULT=1
|
||||
function detect_rootless() {
|
||||
if [ -n "${_ROOTLESS_CACHED}" ]; then
|
||||
return $_ROOTLESS_RESULT
|
||||
fi
|
||||
_ROOTLESS_CACHED=1
|
||||
if [ -n "${DOCKER_IS_ROOTLESS:-}" ]; then
|
||||
# env var override for CI
|
||||
_ROOTLESS_RESULT=0
|
||||
return 0
|
||||
fi
|
||||
if docker info -f '{{.SecurityOptions}}' 2>/dev/null | grep -q "rootless"; then
|
||||
_ROOTLESS_RESULT=0
|
||||
return 0
|
||||
fi
|
||||
_ROOTLESS_RESULT=1
|
||||
return 1
|
||||
}
|
||||
|
||||
# Validate a mount source path exists, warn if missing.
|
||||
# Usage: validate_mount /path/to/source
|
||||
# Returns 0 if source exists, 1 if missing.
|
||||
function validate_mount() {
|
||||
local src="$1"
|
||||
if [ -e "$src" ]; then
|
||||
return 0
|
||||
else
|
||||
echo "Warning: Mount source '$src' not found on host, skipping." >&2
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
##############################################
|
||||
### Section 3: Argument parsing ###
|
||||
##############################################
|
||||
|
||||
# Handle joined flags, such as interpreting -ih as -i -h. Either rewrites
|
||||
# the current argument if it is a joined argument, or shifts all arguments
|
||||
# otherwise. Should be called as "eval $break_joined_flag" where joined
|
||||
# flags are possible. Can't use a function definition, because it needs
|
||||
# to overwrite the parent scope's behavior.
|
||||
break_joined_flag='if (( ${#1} == 2 )); then shift; else set -- -"${1#-i}" "${@:2}"; fi'
|
||||
|
||||
DOCKER_ENV=( )
|
||||
DOCKER_FLAGS=( )
|
||||
|
||||
while (( $# )); do
|
||||
case "$1" in
|
||||
-h|--help)
|
||||
show_usage
|
||||
exit 0
|
||||
;;
|
||||
|
||||
-i*|--interactive)
|
||||
INTERACTIVE=true
|
||||
eval $break_joined_flag
|
||||
;;
|
||||
|
||||
-t*|--tty)
|
||||
TTY=true
|
||||
if [[ "$1" == "--tty" ]]; then
|
||||
shift
|
||||
else
|
||||
# Short form: -t or combined like -th
|
||||
eval $break_joined_flag
|
||||
fi
|
||||
;;
|
||||
|
||||
--shell)
|
||||
if (( $# >= 2 )) && [[ -n "$2" ]]; then
|
||||
USER_SHELL="$2"
|
||||
shift 2
|
||||
else
|
||||
parse_error 'ERROR: --shell requires a non-empty argument'
|
||||
fi
|
||||
;;
|
||||
|
||||
--cpus)
|
||||
DOCKER_FLAGS+=(--cpus "$2")
|
||||
shift 2
|
||||
;;
|
||||
|
||||
--net=host)
|
||||
USE_NET_HOST=true
|
||||
shift
|
||||
;;
|
||||
|
||||
--net)
|
||||
DOCKER_FLAGS+=( --net "$2" )
|
||||
shift 2
|
||||
;;
|
||||
|
||||
--mount)
|
||||
if [[ -n "$2" ]]; then
|
||||
MOUNT_DIRS+=("$2")
|
||||
shift 2
|
||||
else
|
||||
parse_error 'ERROR: --mount requires a non-empty argument'
|
||||
fi
|
||||
;;
|
||||
|
||||
--mount=?*)
|
||||
MOUNT_DIRS+=("${1#*=}")
|
||||
shift
|
||||
;;
|
||||
|
||||
--name)
|
||||
if [[ -n "$2" ]]; then
|
||||
CONTAINER_NAME="$2"
|
||||
shift 2
|
||||
else
|
||||
parse_error 'ERROR: --name requires a non empty argument'
|
||||
fi
|
||||
;;
|
||||
|
||||
--privileged)
|
||||
DOCKER_FLAGS+=( "--privileged" )
|
||||
shift 1
|
||||
;;
|
||||
|
||||
--env)
|
||||
DOCKER_ENV+=( --env "$2" )
|
||||
shift 2
|
||||
;;
|
||||
|
||||
--volume)
|
||||
DOCKER_FLAGS+=( --volume "$2" )
|
||||
shift 2
|
||||
;;
|
||||
|
||||
-e)
|
||||
DOCKER_ENV+=( --env "$2" )
|
||||
shift 2
|
||||
;;
|
||||
|
||||
-v)
|
||||
DOCKER_FLAGS+=( --volume "$2" )
|
||||
shift 2
|
||||
;;
|
||||
|
||||
--dry-run)
|
||||
DRY_RUN=true
|
||||
shift
|
||||
;;
|
||||
|
||||
--no-gpu)
|
||||
USE_GPU=false
|
||||
shift
|
||||
;;
|
||||
|
||||
--repo-mount-point)
|
||||
if [[ -n "$2" ]]; then
|
||||
REPO_MOUNT_POINT="$2"
|
||||
shift 2
|
||||
else
|
||||
parse_error 'ERROR: --repo-mount-point requires a non-empty argument'
|
||||
fi
|
||||
;;
|
||||
|
||||
--repo-mount-point=?*)
|
||||
REPO_MOUNT_POINT="${1#*=}"
|
||||
shift
|
||||
;;
|
||||
|
||||
--build-dir)
|
||||
DOCKER_ENV+=( --env LD_LIBRARY_PATH=${REPO_MOUNT_POINT}/${2})
|
||||
shift 2
|
||||
;;
|
||||
|
||||
--)
|
||||
shift
|
||||
COMMAND=( "$@" )
|
||||
break
|
||||
;;
|
||||
|
||||
-*|--*)
|
||||
echo "Error: Unknown flag: $1" >&2
|
||||
echo " If this flag is intended to be passed to the" >&2
|
||||
echo " docker command, please add -- before the docker" >&2
|
||||
echo " command (e.g. docker/bash.sh ci_gpu -- build -j2)" >&2
|
||||
show_usage >&2
|
||||
exit 1
|
||||
;;
|
||||
|
||||
*)
|
||||
# First positional argument is the image name, all
|
||||
# remaining below to the COMMAND.
|
||||
if [[ -z "${DOCKER_IMAGE_NAME}" ]]; then
|
||||
DOCKER_IMAGE_NAME=$1
|
||||
shift
|
||||
else
|
||||
COMMAND=( "$@" )
|
||||
break
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ -z "${DOCKER_IMAGE_NAME}" ]]; then
|
||||
echo "Error: Missing DOCKER_IMAGE_NAME" >&2
|
||||
show_usage >&2
|
||||
fi
|
||||
|
||||
# Smart defaults: "bash" command triggers interactive mode
|
||||
if [[ ${COMMAND[@]+"${COMMAND[@]}"} = bash ]]; then
|
||||
INTERACTIVE=true
|
||||
TTY=true
|
||||
fi
|
||||
|
||||
|
||||
##############################################
|
||||
### Section 4: Image resolution ###
|
||||
##############################################
|
||||
|
||||
# Save user-set DOCKER_IS_ROOTLESS before dev_common.sh overwrites it.
|
||||
# detect_rootless() should only see the user's explicit env var, not
|
||||
# the auto-detection done by dev_common.sh.
|
||||
_USER_ROOTLESS="${DOCKER_IS_ROOTLESS+__set__}"
|
||||
_USER_ROOTLESS_VAL="${DOCKER_IS_ROOTLESS:-}"
|
||||
|
||||
source "$(dirname $0)/dev_common.sh" || exit 2
|
||||
|
||||
# Restore: if user had set DOCKER_IS_ROOTLESS, keep their value;
|
||||
# otherwise unset the one dev_common.sh created.
|
||||
if [ "$_USER_ROOTLESS" = "__set__" ]; then
|
||||
DOCKER_IS_ROOTLESS="$_USER_ROOTLESS_VAL"
|
||||
else
|
||||
unset DOCKER_IS_ROOTLESS
|
||||
fi
|
||||
unset _USER_ROOTLESS _USER_ROOTLESS_VAL
|
||||
|
||||
DOCKER_MOUNT=( )
|
||||
DOCKER_DEVICES=( )
|
||||
# If the user gave a shortcut defined in the Jenkinsfile, use it.
|
||||
EXPANDED_SHORTCUT=$(lookup_image_spec "${DOCKER_IMAGE_NAME}")
|
||||
if [ -n "${EXPANDED_SHORTCUT}" ]; then
|
||||
if [ "${CI+x}" == "x" ]; then
|
||||
DOCKER_IMAGE_NAME="${EXPANDED_SHORTCUT}"
|
||||
else
|
||||
python3 ci/scripts/jenkins/determine_docker_images.py "$DOCKER_IMAGE_NAME" 2> /dev/null
|
||||
DOCKER_IMAGE_NAME=$(cat ".docker-image-names/$DOCKER_IMAGE_NAME")
|
||||
if [[ "$DOCKER_IMAGE_NAME" == *"tlcpackstaging"* ]]; then
|
||||
echo "WARNING: resolved docker image to fallback tag in tlcpackstaging" >&2
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
##############################################
|
||||
### Section 5: Mount construction ###
|
||||
##############################################
|
||||
|
||||
# Working directories
|
||||
DOCKER_FLAGS+=( --workdir "${REPO_MOUNT_POINT}" )
|
||||
DOCKER_MOUNT+=( --volume "${REPO_DIR}":"${REPO_MOUNT_POINT}"
|
||||
--volume "${SCRIPT_DIR}":/docker
|
||||
)
|
||||
|
||||
# Expose external directories from --mount flags
|
||||
for MOUNT_DIR in ${MOUNT_DIRS[@]+"${MOUNT_DIRS[@]}"}; do
|
||||
DOCKER_MOUNT+=( --volume "${MOUNT_DIR}:${MOUNT_DIR}" )
|
||||
done
|
||||
|
||||
# Parse TVM_DEV_DOCKER_MOUNTS env var: space-separated mount specs
|
||||
# Each entry is either /path (same path) or /src:/dst
|
||||
if [[ -n "${TVM_DEV_DOCKER_MOUNTS:-}" ]]; then
|
||||
for mount_spec in ${TVM_DEV_DOCKER_MOUNTS}; do
|
||||
if [[ "$mount_spec" == *:* ]]; then
|
||||
# src:dst format
|
||||
mount_src="${mount_spec%%:*}"
|
||||
if validate_mount "$mount_src"; then
|
||||
DOCKER_MOUNT+=( --volume "$mount_spec" )
|
||||
fi
|
||||
else
|
||||
# Same path format
|
||||
if validate_mount "$mount_spec"; then
|
||||
DOCKER_MOUNT+=( --volume "$mount_spec:$mount_spec" )
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# When running from a git worktree, also mount the original git dir.
|
||||
if [ -f "${REPO_DIR}/.git" ]; then
|
||||
git_dir=$(cd ${REPO_DIR} && git rev-parse --git-common-dir)
|
||||
if [ "${git_dir}" != "${REPO_DIR}/.git" ]; then
|
||||
DOCKER_MOUNT+=( --volume "${git_dir}:${git_dir}" )
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
##############################################
|
||||
### Section 6: Environment construction ###
|
||||
##############################################
|
||||
|
||||
# CI-specific environment variables
|
||||
DOCKER_ENV+=( --env CI_BUILD_HOME="${REPO_MOUNT_POINT}"
|
||||
--env CI_BUILD_USER="$(id -u -n)"
|
||||
--env CI_BUILD_UID="$(id -u)"
|
||||
--env CI_BUILD_GROUP="$(id -g -n)"
|
||||
--env CI_BUILD_GID="$(id -g)"
|
||||
--env CI_PYTEST_ADD_OPTIONS="${CI_PYTEST_ADD_OPTIONS:-}"
|
||||
--env CI_IMAGE_NAME="${DOCKER_IMAGE_NAME}"
|
||||
)
|
||||
|
||||
# Remove the container once it finishes running (--rm).
|
||||
DOCKER_FLAGS+=(--rm)
|
||||
|
||||
# Share the PID namespace (--pid=host). The process inside does not
|
||||
# have pid 1 and SIGKILL is propagated to the process inside, allowing
|
||||
# jenkins to kill it if needed. This is only necessary for docker
|
||||
# daemons running as root.
|
||||
if ! detect_rootless; then
|
||||
DOCKER_FLAGS+=(--pid=host)
|
||||
fi
|
||||
|
||||
# Expose services running in container to the host.
|
||||
if $USE_NET_HOST; then
|
||||
if [[ $(uname) == "Darwin" ]]; then
|
||||
# Docker's host networking driver isn't supported on macOS.
|
||||
# Use default bridge network and expose port for jupyter notebook.
|
||||
DOCKER_FLAGS+=( -p 8888:8888 )
|
||||
else
|
||||
DOCKER_FLAGS+=(--net=host)
|
||||
fi
|
||||
fi
|
||||
|
||||
# Set up interactive sessions
|
||||
if ${INTERACTIVE}; then
|
||||
DOCKER_FLAGS+=( --interactive )
|
||||
fi
|
||||
|
||||
if ${TTY}; then
|
||||
DOCKER_FLAGS+=( --tty )
|
||||
fi
|
||||
|
||||
# Setup the docker name and the hostname inside the container
|
||||
if [[ ! -z "${CONTAINER_NAME}" ]]; then
|
||||
DOCKER_FLAGS+=( --name ${CONTAINER_NAME} --hostname ${CONTAINER_NAME})
|
||||
fi
|
||||
|
||||
# Pass any restrictions of allowed CUDA devices from the host to the
|
||||
# docker container.
|
||||
if [[ -n ${CUDA_VISIBLE_DEVICES:-} ]]; then
|
||||
DOCKER_ENV+=( --env CUDA_VISIBLE_DEVICES="${CUDA_VISIBLE_DEVICES}" )
|
||||
fi
|
||||
|
||||
# Set TVM import path inside the docker image
|
||||
if [[ "${DOCKER_IMAGE_NAME}" == *"ci"* ]]; then
|
||||
DOCKER_ENV+=( --env PYTHONPATH="${REPO_MOUNT_POINT}"/python )
|
||||
fi
|
||||
|
||||
|
||||
##############################################
|
||||
### Section 7: GPU/device setup ###
|
||||
##############################################
|
||||
|
||||
DOCKER_BINARY=docker
|
||||
|
||||
# Use --gpus all for GPU/CUDA containers
|
||||
if [[ "$USE_GPU" == "true" ]] && [[ "${DOCKER_IMAGE_NAME}" == *"gpu"* || "${DOCKER_IMAGE_NAME}" == *"cuda"* ]]; then
|
||||
DOCKER_FLAGS+=( --gpus all )
|
||||
DOCKER_ENV+=( --env NVIDIA_DRIVER_CAPABILITIES=compute,graphics,utility )
|
||||
fi
|
||||
|
||||
# Add ROCm devices and set ROCM_ENABLED=1 which is used in the with_the_same_user script
|
||||
# to add the user to the video group
|
||||
if [[ "${DOCKER_IMAGE_NAME}" == *"rocm"* && -d "/dev/dri" ]]; then
|
||||
DOCKER_DEVICES+=( --device=/dev/kfd --device=/dev/dri )
|
||||
DOCKER_ENV+=( --env ROCM_ENABLED=1 )
|
||||
fi
|
||||
|
||||
|
||||
##############################################
|
||||
### Section 8: Entry command ###
|
||||
##############################################
|
||||
|
||||
# Apply --shell override: when command is "bash" (auto-interactive)
|
||||
# and a custom shell was requested via --shell <name>, use that shell
|
||||
if [[ ${COMMAND[@]+"${COMMAND[@]}"} = bash ]] && [[ -n "$USER_SHELL" ]]; then
|
||||
COMMAND=( "$USER_SHELL" )
|
||||
fi
|
||||
|
||||
# Build the entry command
|
||||
if ! detect_rootless; then
|
||||
# If the docker daemon is running as root, use the TVM-provided
|
||||
# "with_the_same_user" script to update the PID. When using rootless
|
||||
# docker, this step is unnecessary.
|
||||
COMMAND=(
|
||||
bash --login /docker/with_the_same_user
|
||||
${COMMAND[@]+"${COMMAND[@]}"}
|
||||
)
|
||||
fi
|
||||
|
||||
|
||||
##############################################
|
||||
### Section 9: Final docker run ###
|
||||
##############################################
|
||||
|
||||
# Print arguments.
|
||||
echo "REPO_DIR: ${REPO_DIR}"
|
||||
echo "DOCKER CONTAINER NAME: ${DOCKER_IMAGE_NAME}"
|
||||
echo ""
|
||||
|
||||
echo Running \'${COMMAND[@]+"${COMMAND[@]}"}\' inside ${DOCKER_IMAGE_NAME}...
|
||||
|
||||
DOCKER_CMD=(${DOCKER_BINARY} run
|
||||
${DOCKER_FLAGS[@]+"${DOCKER_FLAGS[@]}"}
|
||||
${DOCKER_ENV[@]+"${DOCKER_ENV[@]}"}
|
||||
${DOCKER_MOUNT[@]+"${DOCKER_MOUNT[@]}"}
|
||||
${DOCKER_DEVICES[@]+"${DOCKER_DEVICES[@]}"}
|
||||
"${DOCKER_IMAGE_NAME}"
|
||||
${COMMAND[@]+"${COMMAND[@]}"}
|
||||
)
|
||||
|
||||
if ${DRY_RUN}; then
|
||||
echo ${DOCKER_CMD[@]+"${DOCKER_CMD[@]}"}
|
||||
else
|
||||
${DOCKER_CMD[@]+"${DOCKER_CMD[@]}"}
|
||||
fi
|
||||
Executable
+261
@@ -0,0 +1,261 @@
|
||||
#!/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.
|
||||
|
||||
#
|
||||
# Build a docker container and optionally execute command within a it
|
||||
#
|
||||
# Usage: build.sh <CONTAINER_TYPE> [--tag <DOCKER_IMAGE_TAG>]
|
||||
# [--dockerfile <DOCKERFILE_PATH>] [-it]
|
||||
# [--env <ENVIRONMENT_VARIABLE>]
|
||||
# [--net=host] [--cache-from <IMAGE_NAME>] [--cache]
|
||||
# [--name CONTAINER_NAME] [--context-path <CONTEXT_PATH>]
|
||||
# [--spec DOCKER_IMAGE_SPEC]
|
||||
# [--platform <BUILD_PLATFORM>]
|
||||
# [<COMMAND>]
|
||||
#
|
||||
# CONTAINER_TYPE: Type of the docker container used the run the build,
|
||||
# e.g. "ci_cpu", "ci_gpu"
|
||||
#
|
||||
# BUILD_PLATFORM: (Optional) Type of build platform used for the build,
|
||||
# e.g. "arm", "cpu", "gpu". Defaults to "cpu".
|
||||
#
|
||||
# DOCKER_IMAGE_TAG: (Optional) Docker image tag to be built and used.
|
||||
# Defaults to 'latest', as it is the default Docker tag.
|
||||
#
|
||||
# DOCKERFILE_PATH: (Optional) Path to the Dockerfile used for docker build. If
|
||||
# this optional value is not supplied (via the --dockerfile
|
||||
# flag), will use Dockerfile.CONTAINER_TYPE in default
|
||||
#
|
||||
# DOCKER_IMAGE_SPEC: Override the default logic to determine the image name and
|
||||
# tag
|
||||
#
|
||||
# ENVIRONMENT_VARIABLE: Pass any environment variables through to the container.
|
||||
#
|
||||
# IMAGE_NAME: An image to be as a source for cached layers when building the
|
||||
# Docker image requested.
|
||||
#
|
||||
# CONTAINER_NAME: The name of the docker container, and the hostname that will
|
||||
# appear inside the container.
|
||||
#
|
||||
# CONTEXT_PATH: Path to be used for relative path resolution when building
|
||||
# the Docker images.
|
||||
#
|
||||
# COMMAND (optional): Command to be executed in the docker container
|
||||
#
|
||||
|
||||
DOCKER_ENV=()
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
# Get the command line arguments.
|
||||
CONTAINER_TYPE=$( echo "$1" | tr '[:upper:]' '[:lower:]' )
|
||||
shift 1
|
||||
|
||||
# Dockerfile to be used in docker build
|
||||
DOCKERFILE_PATH="${SCRIPT_DIR}/Dockerfile.${CONTAINER_TYPE}"
|
||||
|
||||
if [[ "$1" == "--tag" ]]; then
|
||||
DOCKER_IMAGE_TAG="$2"
|
||||
echo "Using custom Docker tag: ${DOCKER_IMAGE_TAG}"
|
||||
shift 2
|
||||
fi
|
||||
|
||||
if [[ "$1" == "--dockerfile" ]]; then
|
||||
DOCKERFILE_PATH="$2"
|
||||
echo "Using custom Dockerfile path: ${DOCKERFILE_PATH}"
|
||||
shift 2
|
||||
fi
|
||||
|
||||
if [[ "$1" == "--env" ]]; then
|
||||
DOCKER_ENV+=( --env "$2" )
|
||||
echo "Setting environment variable: $2"
|
||||
shift 2
|
||||
fi
|
||||
|
||||
if [[ "$1" == "-it" ]]; then
|
||||
CI_DOCKER_EXTRA_PARAMS+=('-it')
|
||||
shift 1
|
||||
fi
|
||||
|
||||
if [[ "$1" == "--spec" ]]; then
|
||||
OVERRIDE_IMAGE_SPEC="$2"
|
||||
shift 2
|
||||
fi
|
||||
|
||||
if [[ "$1" == "--net=host" ]]; then
|
||||
CI_DOCKER_EXTRA_PARAMS+=('--net=host')
|
||||
CI_DOCKER_BUILD_EXTRA_PARAMS+=("--network=host")
|
||||
shift 1
|
||||
fi
|
||||
|
||||
DOCKER_NO_CACHE_ARG=--no-cache
|
||||
|
||||
if [[ "$1" == "--cache-from" ]]; then
|
||||
shift 1
|
||||
cached_image="$1"
|
||||
DOCKER_NO_CACHE_ARG=
|
||||
CI_DOCKER_BUILD_EXTRA_PARAMS+=("--cache-from tvm.$CONTAINER_TYPE:$DOCKER_IMAGE_TAG")
|
||||
CI_DOCKER_BUILD_EXTRA_PARAMS+=("--cache-from $cached_image")
|
||||
shift 1
|
||||
fi
|
||||
|
||||
if [[ "$1" == "--cache" ]]; then
|
||||
shift 1
|
||||
DOCKER_NO_CACHE_ARG=
|
||||
fi
|
||||
|
||||
if [[ "$1" == "--context-path" ]]; then
|
||||
DOCKER_CONTEXT_PATH="$2"
|
||||
echo "Using custom context path: ${DOCKER_CONTEXT_PATH}"
|
||||
shift 2
|
||||
else
|
||||
DOCKER_CONTEXT_PATH=$(dirname "${DOCKERFILE_PATH}")
|
||||
echo "Using default context path: ${DOCKER_CONTEXT_PATH}"
|
||||
fi
|
||||
|
||||
if [[ "$1" == "--name" ]]; then
|
||||
CI_DOCKER_EXTRA_PARAMS+=("--name ${2} --hostname ${2}")
|
||||
echo "Using container name ${2}"
|
||||
shift 2
|
||||
fi
|
||||
|
||||
PLATFORM="cpu"
|
||||
|
||||
if [[ "$1" == "--platform" ]]; then
|
||||
PLATFORM="$2"
|
||||
echo "Using build platform: ${PLATFORM}"
|
||||
shift 2
|
||||
fi
|
||||
|
||||
if [[ ! -f "${DOCKERFILE_PATH}" ]]; then
|
||||
echo "Invalid Dockerfile path: \"${DOCKERFILE_PATH}\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
COMMAND=("$@")
|
||||
|
||||
# Validate command line arguments.
|
||||
if [ ! -e "${SCRIPT_DIR}/Dockerfile.${CONTAINER_TYPE}" ]; then
|
||||
supported_container_types=$( ls -1 ${SCRIPT_DIR}/Dockerfile.* | \
|
||||
sed -n 's/.*Dockerfile\.\([^\/]*\)/\1/p' | tr '\n' ' ' )
|
||||
echo "Usage: $(basename $0) CONTAINER_TYPE COMMAND"
|
||||
echo " CONTAINER_TYPE can be one of [${supported_container_types}]"
|
||||
echo " COMMAND (optional) is a command (with arguments) to run inside"
|
||||
echo " the container."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Use nvidia-docker if the container is GPU.
|
||||
if [[ "${CONTAINER_TYPE}" == *"gpu"* || "${CONTAINER_TYPE}" == *"cuda"* ]]; then
|
||||
if ! type "nvidia-docker" 1> /dev/null 2> /dev/null
|
||||
then
|
||||
DOCKER_BINARY="docker"
|
||||
CUDA_ENV=" --gpus all "${CUDA_ENV}
|
||||
else
|
||||
DOCKER_BINARY="nvidia-docker"
|
||||
fi
|
||||
else
|
||||
DOCKER_BINARY="docker"
|
||||
fi
|
||||
|
||||
# Helper function to traverse directories up until given file is found.
|
||||
function upsearch () {
|
||||
test / == "$PWD" && return || \
|
||||
test -e "$1" && echo "$PWD" && return || \
|
||||
cd .. && upsearch "$1"
|
||||
}
|
||||
|
||||
# Set up WORKSPACE and BUILD_TAG. Jenkins will set them for you or we pick
|
||||
# reasonable defaults if you run it outside of Jenkins.
|
||||
WORKSPACE="${WORKSPACE:-${SCRIPT_DIR}/../}"
|
||||
BUILD_TAG="${BUILD_TAG:-tvm}"
|
||||
DOCKER_IMAGE_TAG="${DOCKER_IMAGE_TAG:-latest}"
|
||||
|
||||
# Determine the docker image name
|
||||
DOCKER_IMG_NAME="${BUILD_TAG}.${CONTAINER_TYPE}"
|
||||
|
||||
# Under Jenkins matrix build, the build tag may contain characters such as
|
||||
# commas (,) and equal signs (=), which are not valid inside docker image names.
|
||||
DOCKER_IMG_NAME=$(echo "${DOCKER_IMG_NAME}" | sed -e 's/=/_/g' -e 's/,/-/g')
|
||||
|
||||
# Convert to all lower-case, as per requirement of Docker image names
|
||||
DOCKER_IMG_NAME=$(echo "${DOCKER_IMG_NAME}" | tr '[:upper:]' '[:lower:]')
|
||||
|
||||
# Compose the full image spec with "name:tag" e.g. "tvm.ci_cpu:v0.03"
|
||||
DOCKER_IMG_SPEC="${DOCKER_IMG_NAME}:${DOCKER_IMAGE_TAG}"
|
||||
|
||||
if [[ -n ${OVERRIDE_IMAGE_SPEC+x} ]]; then
|
||||
DOCKER_IMG_SPEC="$OVERRIDE_IMAGE_SPEC"
|
||||
fi
|
||||
|
||||
# Print arguments.
|
||||
echo "WORKSPACE: ${WORKSPACE}"
|
||||
echo "CI_DOCKER_EXTRA_PARAMS: ${CI_DOCKER_EXTRA_PARAMS[@]}"
|
||||
echo "COMMAND: ${COMMAND[@]}"
|
||||
echo "CONTAINER_TYPE: ${CONTAINER_TYPE}"
|
||||
echo "BUILD_TAG: ${BUILD_TAG}"
|
||||
echo "DOCKER CONTAINER NAME: ${DOCKER_IMG_NAME}"
|
||||
echo "DOCKER_IMAGE_TAG: ${DOCKER_IMAGE_TAG}"
|
||||
echo "DOCKER_IMG_SPEC: ${DOCKER_IMG_SPEC}"
|
||||
echo ""
|
||||
|
||||
|
||||
# Build the docker container.
|
||||
echo "Building container (${DOCKER_IMG_NAME})..."
|
||||
docker build -t ${DOCKER_IMG_SPEC} \
|
||||
${DOCKER_NO_CACHE_ARG} \
|
||||
-f "${DOCKERFILE_PATH}" \
|
||||
${CI_DOCKER_BUILD_EXTRA_PARAMS[@]} \
|
||||
"${DOCKER_CONTEXT_PATH}"
|
||||
|
||||
# Check docker build status
|
||||
if [[ $? != "0" ]]; then
|
||||
echo "ERROR: docker build failed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -n ${COMMAND} ]]; then
|
||||
|
||||
# Run the command inside the container.
|
||||
echo "Running '${COMMAND[@]}' inside ${DOCKER_IMG_SPEC}..."
|
||||
|
||||
# By default we cleanup - remove the container once it finish running (--rm)
|
||||
# and share the PID namespace (--pid=host) so the process inside does not have
|
||||
# pid 1 and SIGKILL is propagated to the process inside (jenkins can kill it).
|
||||
echo ${DOCKER_BINARY}
|
||||
${DOCKER_BINARY} run --rm --pid=host \
|
||||
-v ${WORKSPACE}:/workspace \
|
||||
${SSH_AUTH_SOCK:+-v $SSH_AUTH_SOCK:/ssh-agent} \
|
||||
-w /workspace \
|
||||
${SSH_AUTH_SOCK:+-e "SSH_AUTH_SOCK=/ssh-agent"} \
|
||||
-e "CI_BUILD_HOME=/workspace" \
|
||||
-e "CI_BUILD_USER=$(id -u -n)" \
|
||||
-e "CI_BUILD_UID=$(id -u)" \
|
||||
-e "CI_BUILD_GROUP=$(id -g -n)" \
|
||||
-e "CI_BUILD_GID=$(id -g)" \
|
||||
-e "CI_PYTEST_ADD_OPTIONS=$CI_PYTEST_ADD_OPTIONS" \
|
||||
-e "CI_IMAGE_NAME=${DOCKER_IMAGE_NAME}" \
|
||||
-e "PLATFORM=${PLATFORM}" \
|
||||
${DOCKER_ENV[@]+"${DOCKER_ENV[@]}"} \
|
||||
${CUDA_ENV}\
|
||||
${CI_DOCKER_EXTRA_PARAMS[@]} \
|
||||
${DOCKER_IMG_SPEC} \
|
||||
bash --login docker/with_the_same_user \
|
||||
${COMMAND[@]}
|
||||
|
||||
fi
|
||||
Executable
+115
@@ -0,0 +1,115 @@
|
||||
#!/bin/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.
|
||||
#
|
||||
# Remove tvm-related docker images from the local system which
|
||||
# are not used by the currently-checked-out branch in this git
|
||||
# repository plus any linked worktrees.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
dry_run=0
|
||||
repositories=( "$(cd $(dirname "$0") && git rev-parse --show-toplevel)" )
|
||||
skip_confirm=0
|
||||
verbose=0
|
||||
while [ "${1+x}" == "x" ]; do
|
||||
case "$1" in
|
||||
--help|-h)
|
||||
echo "usage: $0 [-n] [-v] [-y] <repository> [<repository> ...]"
|
||||
echo ""
|
||||
echo "Remove tvm-related docker images from the local system which"
|
||||
echo "are not used by the currently-checked-out branch in this git"
|
||||
echo "repository plus any linked worktrees."
|
||||
echo ""
|
||||
echo 'This command should remove only docker images beginning with "tlcpack"'
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -n Perform a dry-run and just print the docker rmi command"
|
||||
echo " -v Verbosely list the images kept and why"
|
||||
echo " -y Skip confirmation"
|
||||
echo " <repository> Additional git repositories to consult."
|
||||
exit 2
|
||||
;;
|
||||
-n)
|
||||
dry_run=1
|
||||
;;
|
||||
-v)
|
||||
verbose=1
|
||||
;;
|
||||
-y)
|
||||
skip_confirm=1
|
||||
;;
|
||||
*)
|
||||
repositories=( "${repositories[@]}" "$1" )
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
declare -a used_images
|
||||
for r in "${repositories[@]}"; do
|
||||
if [ -d "${r}/.git" ]; then
|
||||
worktree="${r}"
|
||||
else
|
||||
worktree="$(cat "${r}/.git")"
|
||||
worktree="${worktree##gitdir: }"
|
||||
fi
|
||||
worktree_list=$(cd "${worktree}" && git worktree list --porcelain | grep '^worktree ')
|
||||
while read wt; do
|
||||
d="${wt:9:${#wt}}" # strip "worktree " prefix
|
||||
for img in $(cat "${d}/Jenkinsfile" | grep -E '^ci_[a-z]+ = ' | sed -E "s/ci_[a-z]+ = '([^\"]*)'/\1/"); do
|
||||
used_images=( "${used_images[@]}" "${img}" )
|
||||
done
|
||||
done < <(echo -n "${worktree_list}")
|
||||
done
|
||||
|
||||
declare -a to_rm
|
||||
while read image; do
|
||||
if [ "${image}" == "<none>:<none>" ]; then
|
||||
continue
|
||||
fi
|
||||
grep -qE "^tlcpack" < <(echo "$image") && is_tlcpack=1 || is_tlcpack=0
|
||||
if [ $is_tlcpack -eq 0 ]; then # non-tlcpack image
|
||||
if [ $verbose -ne 0 ]; then
|
||||
echo "skipping (non-tvm): $image"
|
||||
fi
|
||||
continue
|
||||
fi
|
||||
grep -q "$image" < <(echo "${used_images[@]}") && is_used=1 || is_used=0
|
||||
if [ $is_used -eq 1 ]; then # Image was found in used_images
|
||||
if [ $verbose -ne 0 ]; then
|
||||
echo "skipping (image used): $image"
|
||||
fi
|
||||
continue
|
||||
fi
|
||||
to_rm=( "${to_rm[@]}" "${image}" )
|
||||
done < <(docker images --format '{{.Repository}}:{{.Tag}}')
|
||||
|
||||
docker_cmd=( docker rmi "${to_rm[@]}" )
|
||||
if [ ${dry_run} -ne 0 ]; then
|
||||
echo "would run: ${docker_cmd[@]}"
|
||||
else
|
||||
if [ $skip_confirm -eq 0 ]; then
|
||||
echo "will run: ${docker_cmd[@]}"
|
||||
read -p "Proceed? [y/N] " proceed
|
||||
if [ "${proceed-}" != "y" -a "${proceed-}" != "Y" ]; then
|
||||
echo "Aborted."
|
||||
exit 2
|
||||
fi
|
||||
fi
|
||||
"${docker_cmd[@]}"
|
||||
fi
|
||||
Executable
+56
@@ -0,0 +1,56 @@
|
||||
#!/bin/bash -e
|
||||
# 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.
|
||||
|
||||
|
||||
if [ -z "${BASH_SOURCE[0]}" ]; then
|
||||
echo "NOTE: This script must be source'd from another bash script--it cannot be run directly"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
INVOCATION_PWD="$(pwd)"
|
||||
|
||||
|
||||
GIT_TOPLEVEL=$(cd $(dirname ${BASH_SOURCE[0]}) && git rev-parse --show-toplevel)
|
||||
|
||||
DOCKER_IS_ROOTLESS=$(docker info 2> /dev/null | grep 'Context: \+rootless' || true)
|
||||
|
||||
function lookup_image_spec() {
|
||||
img_spec=$(python3 "${GIT_TOPLEVEL}/ci/scripts/jenkins/determine_docker_images.py" \
|
||||
--lookup-only "$1" 2>/dev/null)
|
||||
if [ -n "${img_spec}" ]; then
|
||||
has_similar_docker_image=1
|
||||
docker inspect "${1}" &>/dev/null || has_similar_docker_image=0
|
||||
if [ ${has_similar_docker_image} -ne 0 ]; then
|
||||
echo "WARNING: resolved docker image through Jenkinsfile to \"${img_spec}\"" >&2
|
||||
fi
|
||||
echo "${img_spec}"
|
||||
fi
|
||||
}
|
||||
|
||||
function run_docker() {
|
||||
docker_bash_args=( )
|
||||
while [ "x${1:0:1}" == "x-" ]; do
|
||||
docker_bash_args=( "${docker_bash_args[@]}" "$1" )
|
||||
shift
|
||||
done
|
||||
image_name="$1" # Name of the Jenkinsfile var to find
|
||||
shift
|
||||
|
||||
docker_bash_args=( "${docker_bash_args[@]}" "${image_name}" "$@" )
|
||||
"${GIT_TOPLEVEL}/docker/bash.sh" "${docker_bash_args[@]}"
|
||||
}
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
#!/bin/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 the AArch64 Architecture Envelope Model (AEM)
|
||||
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
tmpdir=$(mktemp -d)
|
||||
|
||||
cleanup()
|
||||
{
|
||||
rm -rf "$tmpdir"
|
||||
}
|
||||
|
||||
trap cleanup 0
|
||||
|
||||
pushd "$tmpdir"
|
||||
|
||||
# Install GCC toolchain
|
||||
gcc_install_dir="/opt/arm/gcc-aarch64-none-elf"
|
||||
gcc_url="https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-aarch64-none-elf.tar.xz?rev=28d5199f6db34e5980aae1062e5a6703&hash=D87D4B558F0A2247B255BA15C32A94A9F354E6A8"
|
||||
gcc_sha="7fe7b8548258f079d6ce9be9144d2a10bd2bf93b551dafbf20fe7f2e44e014b8"
|
||||
gcc_tar="arm-gnu-toolchain-13.2.rel1-x86_64-aarch64-none-linux-gnu.tar.xz"
|
||||
mkdir -p $gcc_install_dir
|
||||
download-and-verify "$gcc_url" "$gcc_tar" sha256 "$gcc_sha" 64
|
||||
tar -xf $gcc_tar -C $gcc_install_dir --strip-components=1
|
||||
|
||||
# Download FVP
|
||||
fvp_dir="/opt/arm/fvp"
|
||||
fvp_url="https://developer.arm.com/-/media/Files/downloads/ecosystem-models/FVP_Base_RevC-2xAEMvA_11.24_11_Linux64.tgz"
|
||||
fvp_sha="0f132334834cbc66889a62dd72057c976d7c7dfcfeec21799e9c78fb2ce24720"
|
||||
download-and-verify "$fvp_url" "fvp.tgz" sha256 "$fvp_sha" 64
|
||||
mkdir -p "$fvp_dir"
|
||||
tar -xzf fvp.tgz -C "$fvp_dir"
|
||||
rm -rf doc # Remove some documentation bundled with the package
|
||||
|
||||
popd
|
||||
@@ -0,0 +1,63 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
CMAKE_VERSION="3.31.11"
|
||||
CMAKE_SHA256_X86_64="d815c10cf54e8e122088b3bb25ea6b4010fb96b7ad6e1ad3fdef75be3d996b0b"
|
||||
CMAKE_SHA256_AARCH64="faef5420c3853d0e10a3862a0d3c71b40ffc2de36fc0ef0bcc5c896cf18f240f"
|
||||
|
||||
case "$(uname -m)" in
|
||||
x86_64)
|
||||
CMAKE_ARCH="x86_64"
|
||||
CMAKE_SHA256="$CMAKE_SHA256_X86_64"
|
||||
;;
|
||||
aarch64|arm64)
|
||||
CMAKE_ARCH="aarch64"
|
||||
CMAKE_SHA256="$CMAKE_SHA256_AARCH64"
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported architecture: $(uname -m)"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
v=$(echo "$CMAKE_VERSION" | sed 's/\(.*\)\..*/\1/g')
|
||||
CMAKE_PKG="cmake-${CMAKE_VERSION}-linux-${CMAKE_ARCH}.tar.gz"
|
||||
CMAKE_URL="https://cmake.org/files/v${v}/${CMAKE_PKG}"
|
||||
|
||||
TMP_DIR=$(mktemp -d)
|
||||
cleanup() {
|
||||
rm -rf "$TMP_DIR"
|
||||
}
|
||||
trap cleanup 0
|
||||
|
||||
echo "Installing cmake ${CMAKE_VERSION} (${CMAKE_ARCH})"
|
||||
pushd "$TMP_DIR"
|
||||
download-and-verify "$CMAKE_URL" "$CMAKE_PKG" sha256 "$CMAKE_SHA256"
|
||||
|
||||
mkdir -p /opt/cmake
|
||||
tar -xzf "$CMAKE_PKG" -C /opt/cmake
|
||||
|
||||
CMAKE_DIR="/opt/cmake/cmake-${CMAKE_VERSION}-linux-${CMAKE_ARCH}"
|
||||
ln -sf "${CMAKE_DIR}/bin/cmake" /usr/local/bin/cmake
|
||||
ln -sf "${CMAKE_DIR}/bin/ctest" /usr/local/bin/ctest
|
||||
ln -sf "${CMAKE_DIR}/bin/cpack" /usr/local/bin/cpack
|
||||
popd
|
||||
Executable
+47
@@ -0,0 +1,47 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
# Used for debugging RVM build
|
||||
set -x
|
||||
set -o pipefail
|
||||
|
||||
# install libraries for building c++ core on ubuntu
|
||||
apt-get update && apt-install-and-clear -y --no-install-recommends \
|
||||
apt-transport-https \
|
||||
ca-certificates \
|
||||
curl \
|
||||
g++ \
|
||||
gdb \
|
||||
git \
|
||||
gnupg \
|
||||
graphviz \
|
||||
libcurl4-openssl-dev \
|
||||
libopenblas-dev \
|
||||
libssl-dev \
|
||||
libncurses-dev \
|
||||
libz-dev \
|
||||
lsb-release \
|
||||
make \
|
||||
ninja-build \
|
||||
parallel \
|
||||
pkg-config \
|
||||
sudo \
|
||||
unzip \
|
||||
wget \
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
uv pip install coremltools==8.3.0
|
||||
@@ -0,0 +1,23 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
uv pip install cuda-python==12.9.4
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
uv pip install dgl==v1.0.0 -f https://data.dgl.ai/wheels/repo.html
|
||||
Executable
+48
@@ -0,0 +1,48 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
tmpdir=$(mktemp -d)
|
||||
cleanup()
|
||||
{
|
||||
rm -rf "${tmpdir}"
|
||||
}
|
||||
trap cleanup 0
|
||||
|
||||
rls_tag="v2.6"
|
||||
|
||||
dnnl_ver=`echo ${rls_tag} | sed 's/v//g'`
|
||||
echo "Using oneDNN release version ${dnnl_ver} with tag '${rls_tag}'"
|
||||
|
||||
archive_name="${rls_tag}.tar.gz"
|
||||
archive_url="https://github.com/oneapi-src/oneDNN/archive/refs/tags/${archive_name}"
|
||||
archive_folder="${tmpdir}/oneDNN-${dnnl_ver}"
|
||||
archive_hash="4cb7b80bfe16920bc096e18e7d8caa56b9ab7a4dab2a091a230bcf562c09533392f4a4ccd4db22754a10293670efdea20382db0994dc47949005a4c77f14b64c"
|
||||
|
||||
cd "${tmpdir}"
|
||||
|
||||
download-and-verify "${archive_url}" "${archive_name}" sha512 "${archive_hash}"
|
||||
tar xf "${archive_name}"
|
||||
|
||||
cd "${archive_folder}"
|
||||
cmake . -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib
|
||||
cmake --build . --parallel "$(( $(nproc) - 1 ))"
|
||||
cmake --install .
|
||||
Executable
+27
@@ -0,0 +1,27 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
cd /
|
||||
git clone https://github.com/emscripten-core/emsdk.git
|
||||
cd emsdk
|
||||
./emsdk install 4.0.23
|
||||
./emsdk activate 4.0.23
|
||||
Executable
+59
@@ -0,0 +1,59 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
tmpdir=$(mktemp -d)
|
||||
|
||||
cleanup()
|
||||
{
|
||||
rm -rf "$tmpdir"
|
||||
}
|
||||
|
||||
trap cleanup 0
|
||||
else
|
||||
tmpdir=$1
|
||||
mkdir -p "$tmpdir"
|
||||
fi
|
||||
|
||||
# GoogleTest uses a Live-at-Head philosophy:
|
||||
# https://github.com/google/googletest#live-at-head
|
||||
# therefore we need to grab a specific hash and update it
|
||||
# periodically to match the head of the repo
|
||||
repo_url="https://github.com/google/googletest"
|
||||
repo_revision="830fb567285c63ab5b5873e2e8b02f2249864916"
|
||||
|
||||
archive_name="${repo_revision}.tar.gz"
|
||||
archive_url="${repo_url}/archive/${archive_name}"
|
||||
archive_hash="10f10ed771efc64a1d8234a7e4801838a468f8990e5d6d8fcf63e89f8d1455c4f9c5adc0bb829669f381609a9abf84e4c91a7fdd7404630f375f38fb485ef0eb"
|
||||
|
||||
cd "$tmpdir"
|
||||
|
||||
download-and-verify "${archive_url}" "${archive_name}" sha512 "${archive_hash}"
|
||||
tar xf "${archive_name}" --strip-components=1
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
# CMake doesn't search /usr/local/lib/<arch> properly for GoogleTest
|
||||
# so we use /usr/lib where it does search
|
||||
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib ..
|
||||
cmake --build . --target install
|
||||
Executable
+43
@@ -0,0 +1,43 @@
|
||||
#!/bin/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 -o errexit -o nounset
|
||||
set -o pipefail
|
||||
|
||||
apt-get update
|
||||
apt-install-and-clear -y openjdk-17-jdk maven
|
||||
arch=$(uname -m)
|
||||
jre_arch="unknown"
|
||||
case $arch in
|
||||
'x86_64')
|
||||
jre_arch="amd64"
|
||||
;;
|
||||
'aarch64')
|
||||
jre_arch="arm64"
|
||||
;;
|
||||
default)
|
||||
echo "Unknown architecture $arch" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ ! -d "/usr/lib/jvm/java-17-openjdk-$jre_arch" ]; then
|
||||
echo "error: missing openjdk for $jre_arch" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-$jre_arch" >> /etc/profile
|
||||
@@ -0,0 +1,35 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
# Install jax and jaxlib
|
||||
if [ "$1" == "cuda" ]; then
|
||||
uv pip install --upgrade \
|
||||
jaxlib~=0.4.9 \
|
||||
"jax[cuda11_pip]~=0.4.9" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
|
||||
else
|
||||
uv pip install --upgrade \
|
||||
jaxlib~=0.4.9 \
|
||||
"jax[cpu]~=0.4.9"
|
||||
fi
|
||||
|
||||
# Install flax
|
||||
uv pip install flax~=0.6.9
|
||||
Executable
+36
@@ -0,0 +1,36 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
LIBTORCH_VERSION="2.0.0"
|
||||
LIBTORCH_ARCHIVE="libtorch-cxx11-abi-shared-with-deps-${LIBTORCH_VERSION}+cpu.zip"
|
||||
LIBTORCH_URL="https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-${LIBTORCH_VERSION}%2Bcpu.zip"
|
||||
LIBTORCH_SHA256="2d67cff381186f2a01140348d2da7ab35d2e526c5703f4a8312c9428bef6df88"
|
||||
|
||||
TMP_DIR="$(mktemp -d)"
|
||||
cleanup() {
|
||||
rm -rf "${TMP_DIR}"
|
||||
}
|
||||
trap cleanup 0
|
||||
|
||||
download-and-verify "${LIBTORCH_URL}" "${TMP_DIR}/${LIBTORCH_ARCHIVE}" sha256 "${LIBTORCH_SHA256}"
|
||||
|
||||
unzip -d /usr/local "${TMP_DIR}/${LIBTORCH_ARCHIVE}"
|
||||
@@ -0,0 +1,27 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
apt-get update && apt-install-and-clear -y \
|
||||
llvm-15 llvm-16 llvm-17\
|
||||
clang-15 libclang-15-dev libpolly-15-dev \
|
||||
clang-16 libclang-16-dev libpolly-16-dev \
|
||||
clang-17 libclang-17-dev libpolly-17-dev libzstd-dev
|
||||
Executable
+24
@@ -0,0 +1,24 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
uv pip install \
|
||||
nnef==1.0.8
|
||||
Executable
+29
@@ -0,0 +1,29 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
mkdir -p /usr/share/keyrings
|
||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \
|
||||
| gpg --dearmor -o /usr/share/keyrings/nodesource.gpg
|
||||
echo 'deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main' \
|
||||
> /etc/apt/sources.list.d/nodesource.list
|
||||
apt-get update
|
||||
apt-install-and-clear -y nodejs
|
||||
Executable
+44
@@ -0,0 +1,44 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
# Get the Python version
|
||||
PYTHON_VERSION=$(python3 -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')")
|
||||
|
||||
# Set default value for first argument
|
||||
DEVICE=${1:-cpu}
|
||||
|
||||
# Install the onnx package
|
||||
uv pip install \
|
||||
onnx==1.20.1 \
|
||||
onnxruntime==1.23.2 \
|
||||
onnxoptimizer==0.4.2
|
||||
|
||||
if [ "$DEVICE" == "cuda" ]; then
|
||||
uv pip install \
|
||||
torch==2.10.0 \
|
||||
torchvision==0.25.0
|
||||
else
|
||||
uv pip install \
|
||||
torch==2.10.0 \
|
||||
torchvision==0.25.0 \
|
||||
--extra-index-url https://download.pytorch.org/whl/cpu
|
||||
fi
|
||||
Executable
+32
@@ -0,0 +1,32 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
# Install OpenCL runtime in nvidia docker.
|
||||
apt-get update && apt-install-and-clear -y --no-install-recommends \
|
||||
ocl-icd-opencl-dev \
|
||||
clinfo
|
||||
|
||||
mkdir -p /etc/OpenCL/vendors && \
|
||||
echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd
|
||||
|
||||
echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && \
|
||||
echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf
|
||||
Executable
+76
@@ -0,0 +1,76 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
set -x
|
||||
|
||||
if [ -z "${TVM_VENV+x}" ]; then
|
||||
echo "ERROR: expect TVM_VENV env var to be set"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if [ "$#" -lt 1 ]; then
|
||||
echo "Usage: docker/install/ubuntu_install_python.sh <PYTHON_VERSION>"
|
||||
exit -1
|
||||
fi
|
||||
PYTHON_VERSION=$1
|
||||
|
||||
# Install base dependencies required by this script.
|
||||
apt-get update
|
||||
apt-install-and-clear -y acl
|
||||
|
||||
# Install managed Python to a shared location so both root and the CI runtime user can use it.
|
||||
UV_PYTHON_INSTALL_DIR=${UV_PYTHON_INSTALL_DIR:-/opt/uv/python}
|
||||
export UV_PYTHON_INSTALL_DIR
|
||||
export UV_MANAGED_PYTHON=${UV_MANAGED_PYTHON:-1}
|
||||
mkdir -p "${UV_PYTHON_INSTALL_DIR}"
|
||||
chmod 755 "${UV_PYTHON_INSTALL_DIR}"
|
||||
uv python install "${PYTHON_VERSION}"
|
||||
|
||||
# Allow disabling user site-packages, even with sudo; this makes it harder to repro CI failures
|
||||
# locally because it's hard to tell what might be in this directory.
|
||||
echo "Defaults env_keep += \"PYTHONNOUSERSITE\"" >/etc/sudoers.d/91-preserve-python-nousersite
|
||||
export PYTHONNOUSERSITE=1
|
||||
|
||||
venv_dir="$(dirname "${TVM_VENV}")"
|
||||
mkdir -p "${venv_dir}"
|
||||
uv venv --python "${PYTHON_VERSION}" "${TVM_VENV}"
|
||||
|
||||
# NOTE: Only in python3.9 does venv guarantee it creates the python3.X binary.
|
||||
# This is needed so that CMake's find_package(PythonInterp) works inside the venv.
|
||||
# See https://bugs.python.org/issue39656
|
||||
if [ ! -e "${TVM_VENV}/bin/python${PYTHON_VERSION}" ]; then
|
||||
ln -s "${TVM_VENV}/bin/python" "${TVM_VENV}/bin/python${PYTHON_VERSION}"
|
||||
fi
|
||||
|
||||
addgroup tvm-venv || true
|
||||
chgrp -R tvm-venv "${TVM_VENV}"
|
||||
setfacl -R -d -m group:tvm-venv:rwx "${TVM_VENV}"
|
||||
setfacl -R -m group:tvm-venv:rwx "${TVM_VENV}"
|
||||
|
||||
# Prevent further use of pip3 via the system.
|
||||
# There may be multiple (i.e. from python3-pip apt package and pip3 install -U).
|
||||
while command -v pip3 >/dev/null 2>&1; do
|
||||
rm -f "$(command -v pip3)"
|
||||
done
|
||||
while command -v pip >/dev/null 2>&1; do
|
||||
rm -f "$(command -v pip)"
|
||||
done
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
# install libraries for python package on ubuntu
|
||||
uv pip install --upgrade \
|
||||
"Pygments~=2.19" \
|
||||
"cloudpickle~=3.1" \
|
||||
"cython~=3.0" \
|
||||
"mypy~=1.15" \
|
||||
numpy==1.26.* \
|
||||
"orderedset~=2.0" \
|
||||
"packaging~=25.0" \
|
||||
Pillow==12.1.1 \
|
||||
"psutil~=7.0" \
|
||||
"pytest~=8.3" \
|
||||
"pytest-xdist~=3.6" \
|
||||
pytest-rerunfailures==16.1 \
|
||||
"requests~=2.32" \
|
||||
"scipy~=1.13" \
|
||||
"Jinja2~=3.1" \
|
||||
"six~=1.17" \
|
||||
"tornado~=6.4" \
|
||||
"ml_dtypes~=0.5" \
|
||||
z3-static==4.16.0.post1
|
||||
Executable
+30
@@ -0,0 +1,30 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
# Install ROCm cross compilation toolchain.
|
||||
wget -qO - https://repo.radeon.com/rocm/rocm.gpg.key \
|
||||
| gpg --dearmor -o /usr/share/keyrings/rocm.gpg
|
||||
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/6.4.4 noble main' \
|
||||
> /etc/apt/sources.list.d/rocm.list
|
||||
apt-get update && apt-install-and-clear -y \
|
||||
rocm-dev6.4.4 \
|
||||
lld-15
|
||||
Executable
+72
@@ -0,0 +1,72 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
workdir="$(mktemp -d)"
|
||||
|
||||
cleanup()
|
||||
{
|
||||
rm -rf "$workdir"
|
||||
}
|
||||
|
||||
trap cleanup 0
|
||||
|
||||
SCCACHE_VERSION="v0.14.0"
|
||||
SCCACHE_BASE_URL="https://github.com/mozilla/sccache/releases/download/${SCCACHE_VERSION}"
|
||||
|
||||
arch="$(uname -m)"
|
||||
case "${arch}" in
|
||||
x86_64)
|
||||
target="x86_64-unknown-linux-musl"
|
||||
expected_sha256="8424b38cda4ecce616a1557d81328f3d7c96503a171eab79942fad618b42af44"
|
||||
;;
|
||||
aarch64|arm64)
|
||||
target="aarch64-unknown-linux-musl"
|
||||
expected_sha256="62a6c942c47c93333bc0174704800cef7edfa0416d08e1356c1d3e39f0b462f2"
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported architecture '${arch}' for prebuilt sccache ${SCCACHE_VERSION}" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
archive="sccache-${SCCACHE_VERSION}-${target}.tar.gz"
|
||||
|
||||
download-and-verify "${SCCACHE_BASE_URL}/${archive}" "${workdir}/${archive}" sha256 "${expected_sha256}"
|
||||
|
||||
tar -xzf "${workdir}/${archive}" -C "${workdir}"
|
||||
|
||||
mkdir -p /opt/sccache
|
||||
install -m 0755 "${workdir}/sccache-${SCCACHE_VERSION}-${target}/sccache" /opt/sccache/sccache
|
||||
|
||||
# The docs specifically recommend hard links: https://github.com/mozilla/sccache#known-caveats
|
||||
ln -f /opt/sccache/sccache /opt/sccache/cc
|
||||
ln -f /opt/sccache/sccache /opt/sccache/c++
|
||||
|
||||
# Only add clang if it's on the PATH
|
||||
if command -v clang >/dev/null 2>&1
|
||||
then
|
||||
ln -f /opt/sccache/sccache /opt/sccache/clang
|
||||
ln -f /opt/sccache/sccache /opt/sccache/clang++
|
||||
fi
|
||||
|
||||
# make sccache usable by all users after install during container build
|
||||
chmod -R a+rw /opt/sccache
|
||||
Executable
+33
@@ -0,0 +1,33 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
uv pip install \
|
||||
autodocsumm==0.2.14 \
|
||||
commonmark==0.9.1 \
|
||||
docutils==0.21.2 \
|
||||
image==1.5.33 \
|
||||
matplotlib==3.10.8 \
|
||||
sphinx==8.1.3 \
|
||||
sphinx_autodoc_annotation~=1.0 \
|
||||
sphinx-gallery==0.20.0 \
|
||||
sphinx-book-theme==1.1.4 \
|
||||
pydata-sphinx-theme==0.15.4
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
uv pip install tensorflow==2.19.0
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
#!/bin/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 -euxo pipefail
|
||||
|
||||
# Build dependencies
|
||||
apt-install-and-clear -y --no-install-recommends libhdf5-dev
|
||||
|
||||
# TensorFlow package versions are aligned with ubuntu_install_tensorflow.sh.
|
||||
uv pip install \
|
||||
numpy==1.26.* \
|
||||
tensorflow==2.19.0
|
||||
Executable
+94
@@ -0,0 +1,94 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -x
|
||||
set -o pipefail
|
||||
|
||||
# The tflite version should have matched versions to the tensorflow
|
||||
# version installed from pip in ubuntu_install_tensorflow.sh
|
||||
TENSORFLOW_VERSION=$(python3 -c "import tensorflow; print(tensorflow.__version__)" 2> /dev/null)
|
||||
|
||||
# Download, build and install flatbuffers
|
||||
git clone --branch=v24.3.25 --depth=1 --recursive https://github.com/google/flatbuffers.git
|
||||
cd flatbuffers
|
||||
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-Wno-class-memaccess"
|
||||
cmake --build . --parallel "$(( $(nproc) - 1 ))"
|
||||
cmake --install .
|
||||
cd ..
|
||||
|
||||
# Install flatbuffers python packages.
|
||||
uv pip install flatbuffers==24.3.25
|
||||
|
||||
# Build the TFLite static library, necessary for building with TFLite ON.
|
||||
# The library is built at:
|
||||
# tensorflow/tensorflow/lite/tools/make/gen/*/lib/libtensorflow-lite.a.
|
||||
git clone https://github.com/tensorflow/tensorflow --branch=v${TENSORFLOW_VERSION} --depth 1
|
||||
|
||||
mkdir -p /opt/tflite
|
||||
cd /opt/tflite
|
||||
cmake \
|
||||
-DTFLITE_ENABLE_XNNPACK=OFF \
|
||||
/tensorflow/tensorflow/lite
|
||||
|
||||
cmake --build . --parallel "$(( $(nproc) - 1 ))"
|
||||
cd -
|
||||
|
||||
|
||||
# Setup tflite from schema
|
||||
mkdir tflite
|
||||
if [ -f tensorflow/tensorflow/compiler/mlir/lite/schema/schema.fbs ] ; then
|
||||
cp tensorflow/tensorflow/compiler/mlir/lite/schema/schema.fbs tflite
|
||||
else
|
||||
cp tensorflow/tensorflow/lite/schema/schema.fbs tflite
|
||||
fi
|
||||
|
||||
cd tflite
|
||||
flatc --python schema.fbs
|
||||
|
||||
cat <<EOM >setup.py
|
||||
import setuptools
|
||||
|
||||
setuptools.setup(
|
||||
name="tflite",
|
||||
version="${TENSORFLOW_VERSION}",
|
||||
author="google",
|
||||
author_email="google@google.com",
|
||||
description="TFLite",
|
||||
long_description="TFLite",
|
||||
long_description_content_type="text/markdown",
|
||||
url="https://www.tensorflow.org/lite",
|
||||
packages=setuptools.find_packages(),
|
||||
classifiers=[
|
||||
"Programming Language :: Python :: 2",
|
||||
"License :: OSI Approved :: MIT License",
|
||||
"Operating System :: OS Independent",
|
||||
],
|
||||
)
|
||||
EOM
|
||||
|
||||
cat <<EOM >__init__.py
|
||||
name = "tflite"
|
||||
EOM
|
||||
|
||||
# Install tflite over python3
|
||||
python3 setup.py install
|
||||
|
||||
cd ..
|
||||
rm -rf tflite
|
||||
Executable
+26
@@ -0,0 +1,26 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
git clone https://github.com/stillwater-sc/universal.git /opt/universal
|
||||
|
||||
# Use specific versioning tag.
|
||||
(cd /opt/universal && git checkout e32899d551b53d758865fabd5fdd69eed35bfb0f)
|
||||
Executable
+33
@@ -0,0 +1,33 @@
|
||||
#!/bin/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 -u
|
||||
set -o pipefail
|
||||
|
||||
VULKAN_VERSION=1.4.309
|
||||
UBUNTU_VERSION=noble
|
||||
|
||||
wget -qO - http://packages.lunarg.com/lunarg-signing-key-pub.asc \
|
||||
| gpg --dearmor -o /usr/share/keyrings/lunarg-vulkan.gpg
|
||||
wget -qO /tmp/lunarg-vulkan.list \
|
||||
http://packages.lunarg.com/vulkan/${VULKAN_VERSION}/lunarg-vulkan-${VULKAN_VERSION}-${UBUNTU_VERSION}.list
|
||||
sed -E 's|^deb(-src)? |deb\1 [signed-by=/usr/share/keyrings/lunarg-vulkan.gpg] |' /tmp/lunarg-vulkan.list \
|
||||
> /etc/apt/sources.list.d/lunarg-vulkan-${VULKAN_VERSION}-${UBUNTU_VERSION}.list
|
||||
rm -f /tmp/lunarg-vulkan.list
|
||||
apt-get update
|
||||
apt-install-and-clear -y vulkan-sdk
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
uv pip install xgboost==3.2.0
|
||||
Executable
+25
@@ -0,0 +1,25 @@
|
||||
#!/bin/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 -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
export TZ=Etc/UTC
|
||||
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime
|
||||
echo $TZ > /etc/timezone
|
||||
@@ -0,0 +1,105 @@
|
||||
CacheControl==0.12.11 \
|
||||
--hash=sha256:2c75d6a8938cb1933c75c50184549ad42728a27e9f6b92fd677c3151aa72555b
|
||||
SecretStorage==3.3.2 \
|
||||
--hash=sha256:755dc845b6ad76dcbcbc07ea3da75ae54bb1ea529eb72d15f83d26499a5df319
|
||||
cachy==0.3.0 \
|
||||
--hash=sha256:338ca09c8860e76b275aff52374330efedc4d5a5e45dc1c5b539c1ead0786fe7
|
||||
certifi==2022.5.18.1 \
|
||||
--hash=sha256:f1d53542ee8cbedbe2118b5686372fb33c297fcd6379b050cca0ef13a597382a
|
||||
cffi==1.15.0 \
|
||||
--hash=sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997
|
||||
charset-normalizer==2.0.12 \
|
||||
--hash=sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df
|
||||
cleo==0.8.1 \
|
||||
--hash=sha256:141cda6dc94a92343be626bb87a0b6c86ae291dfc732a57bf04310d4b4201753
|
||||
clikit==0.6.2 \
|
||||
--hash=sha256:71268e074e68082306e23d7369a7b99f824a0ef926e55ba2665e911f7208489e
|
||||
crashtest==0.3.1 \
|
||||
--hash=sha256:300f4b0825f57688b47b6d70c6a31de33512eb2fa1ac614f780939aa0cf91680
|
||||
cryptography==41.0.6 \
|
||||
--hash=sha256:068bc551698c234742c40049e46840843f3d98ad7ce265fd2bd4ec0d11306596 \
|
||||
--hash=sha256:0f27acb55a4e77b9be8d550d762b0513ef3fc658cd3eb15110ebbcbd626db12c \
|
||||
--hash=sha256:2132d5865eea673fe6712c2ed5fb4fa49dba10768bb4cc798345748380ee3660 \
|
||||
--hash=sha256:3288acccef021e3c3c10d58933f44e8602cf04dba96d9796d70d537bb2f4bbc4 \
|
||||
--hash=sha256:35f3f288e83c3f6f10752467c48919a7a94b7d88cc00b0668372a0d2ad4f8ead \
|
||||
--hash=sha256:398ae1fc711b5eb78e977daa3cbf47cec20f2c08c5da129b7a296055fbb22aed \
|
||||
--hash=sha256:422e3e31d63743855e43e5a6fcc8b4acab860f560f9321b0ee6269cc7ed70cc3 \
|
||||
--hash=sha256:48783b7e2bef51224020efb61b42704207dde583d7e371ef8fc2a5fb6c0aabc7 \
|
||||
--hash=sha256:4d03186af98b1c01a4eda396b137f29e4e3fb0173e30f885e27acec8823c1b09 \
|
||||
--hash=sha256:5daeb18e7886a358064a68dbcaf441c036cbdb7da52ae744e7b9207b04d3908c \
|
||||
--hash=sha256:60e746b11b937911dc70d164060d28d273e31853bb359e2b2033c9e93e6f3c43 \
|
||||
--hash=sha256:742ae5e9a2310e9dade7932f9576606836ed174da3c7d26bc3d3ab4bd49b9f65 \
|
||||
--hash=sha256:7e00fb556bda398b99b0da289ce7053639d33b572847181d6483ad89835115f6 \
|
||||
--hash=sha256:85abd057699b98fce40b41737afb234fef05c67e116f6f3650782c10862c43da \
|
||||
--hash=sha256:8efb2af8d4ba9dbc9c9dd8f04d19a7abb5b49eab1f3694e7b5a16a5fc2856f5c \
|
||||
--hash=sha256:ae236bb8760c1e55b7a39b6d4d32d2279bc6c7c8500b7d5a13b6fb9fc97be35b \
|
||||
--hash=sha256:afda76d84b053923c27ede5edc1ed7d53e3c9f475ebaf63c68e69f1403c405a8 \
|
||||
--hash=sha256:b27a7fd4229abef715e064269d98a7e2909ebf92eb6912a9603c7e14c181928c \
|
||||
--hash=sha256:b648fe2a45e426aaee684ddca2632f62ec4613ef362f4d681a9a6283d10e079d \
|
||||
--hash=sha256:c5a550dc7a3b50b116323e3d376241829fd326ac47bc195e04eb33a8170902a9 \
|
||||
--hash=sha256:da46e2b5df770070412c46f87bac0849b8d685c5f2679771de277a422c7d0b86 \
|
||||
--hash=sha256:f39812f70fc5c71a15aa3c97b2bbe213c3f2a460b79bd21c40d033bb34a9bf36 \
|
||||
--hash=sha256:ff369dd19e8fe0528b02e8df9f2aeb2479f89b1270d90f96a63500afe9af5cae
|
||||
distlib==0.3.4 \
|
||||
--hash=sha256:6564fe0a8f51e734df6333d08b8b94d4ea8ee6b99b5ed50613f731fd4089f34b
|
||||
filelock==3.7.0 \
|
||||
--hash=sha256:c7b5fdb219b398a5b28c8e4c1893ef5f98ece6a38c6ab2c22e26ec161556fed6
|
||||
html5lib==1.1 \
|
||||
--hash=sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d
|
||||
idna==3.3 \
|
||||
--hash=sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff
|
||||
importlib-metadata==1.7.0 \
|
||||
--hash=sha256:dc15b2969b4ce36305c51eebe62d418ac7791e9a157911d58bfb1f9ccd8e2070
|
||||
jeepney==0.8.0 \
|
||||
--hash=sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755
|
||||
keyring==22.3.0 \
|
||||
--hash=sha256:2bc8363ebdd63886126a012057a85c8cb6e143877afa02619ac7dbc9f38a207b
|
||||
lockfile==0.12.2 \
|
||||
--hash=sha256:6c3cb24f344923d30b2785d5ad75182c8ea7ac1b6171b08657258ec7429d50fa
|
||||
msgpack==1.0.3 \
|
||||
--hash=sha256:9c0903bd93cbd34653dd63bbfcb99d7539c372795201f39d16fdfde4418de43a
|
||||
packaging==20.9 \
|
||||
--hash=sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a
|
||||
pastel==0.2.1 \
|
||||
--hash=sha256:4349225fcdf6c2bb34d483e523475de5bb04a5c10ef711263452cb37d7dd4364
|
||||
pexpect==4.8.0 \
|
||||
--hash=sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937
|
||||
pip==22.1.1 \
|
||||
--hash=sha256:e7bcf0b2cbdec2af84cc1b7b79b25fdbd7228fbdb61a4dca0b82810d0ba9d18b
|
||||
pkginfo==1.8.2 \
|
||||
--hash=sha256:c24c487c6a7f72c66e816ab1796b96ac6c3d14d49338293d2141664330b55ffc
|
||||
platformdirs==2.5.2 \
|
||||
--hash=sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788
|
||||
poetry==1.1.13 \
|
||||
--hash=sha256:52deb0792a2e801967ba9c4cdb39b56fe68b0b5cd3f195b004bef603db9d51a7
|
||||
poetry-core==1.0.8 \
|
||||
--hash=sha256:54b0fab6f7b313886e547a52f8bf52b8cf43e65b2633c65117f8755289061924
|
||||
ptyprocess==0.7.0 \
|
||||
--hash=sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35
|
||||
pycparser==2.21 \
|
||||
--hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9
|
||||
pylev==1.4.0 \
|
||||
--hash=sha256:7b2e2aa7b00e05bb3f7650eb506fc89f474f70493271a35c242d9a92188ad3dd
|
||||
pyparsing==3.0.9 \
|
||||
--hash=sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc
|
||||
requests==2.27.1 \
|
||||
--hash=sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d
|
||||
requests-toolbelt==0.9.1 \
|
||||
--hash=sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f
|
||||
setuptools==62.3.2 \
|
||||
--hash=sha256:68e45d17c9281ba25dc0104eadd2647172b3472d9e01f911efa57965e8d51a36
|
||||
shellingham==1.4.0 \
|
||||
--hash=sha256:536b67a0697f2e4af32ab176c00a50ac2899c5a05e0d8e2dadac8e58888283f9
|
||||
six==1.16.0 \
|
||||
--hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254
|
||||
tomlkit==0.10.2 \
|
||||
--hash=sha256:905cf92c2111ef80d355708f47ac24ad1b6fc2adc5107455940088c9bbecaedb
|
||||
urllib3==1.26.18 \
|
||||
--hash=sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07 \
|
||||
--hash=sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0
|
||||
virtualenv==20.14.1 \
|
||||
--hash=sha256:e617f16e25b42eb4f6e74096b9c9e37713cf10bf30168fb4a739f3fa8f898a3a
|
||||
webencodings==0.5.1 \
|
||||
--hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78
|
||||
zipp==3.8.0 \
|
||||
--hash=sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099
|
||||
@@ -0,0 +1 @@
|
||||
/_venv
|
||||
Executable
+101
@@ -0,0 +1,101 @@
|
||||
#!/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 -euo pipefail
|
||||
|
||||
set -x
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
rm -rf build lockfiles
|
||||
mkdir build
|
||||
mkdir lockfiles
|
||||
|
||||
function lock() {
|
||||
mkdir -p build/$1
|
||||
cat >build/$1/pyproject.toml <<EOF
|
||||
# AUTOGENERATED DO NOT EDIT
|
||||
|
||||
[tool.poetry]
|
||||
name = "apache-tvm-bootstrap"
|
||||
authors = []
|
||||
version = "0.0.1"
|
||||
description = ""
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "^$1"
|
||||
pip = "*"
|
||||
poetry = "1.8.1"
|
||||
setuptools = "*"
|
||||
EOF
|
||||
|
||||
# Install poetry so that the env can be locked.
|
||||
python3 -mvenv build/$1/_venv
|
||||
pwd
|
||||
. build/$1/_venv/bin/activate
|
||||
(mkdir -p build/$1/downloaded && cd build/$1/downloaded && pip3 download pip setuptools && pip3 install *.whl)
|
||||
pip3 install poetry poetry-plugin-export
|
||||
(cd build/$1 && poetry lock)
|
||||
|
||||
# Now export requirements.txt and constraints.txt for
|
||||
# requirements.txt has to be generated by scanning pyproject.toml and translating the [tool.poetry.dependencies] section.
|
||||
(cd build/$1 && python3 <<EOF )
|
||||
found_deps = False
|
||||
requirements = []
|
||||
for line in open("pyproject.toml"):
|
||||
if line.startswith("[tool.poetry.dependencies]"):
|
||||
found_deps = True
|
||||
continue
|
||||
if found_deps and "=" in line:
|
||||
package = line.split("=", 1)[0].strip()
|
||||
if package != "python":
|
||||
requirements.append(package)
|
||||
|
||||
with open("requirements.txt", "w") as f:
|
||||
for r in sorted(requirements):
|
||||
f.write(f"{r}\n")
|
||||
EOF
|
||||
|
||||
# For
|
||||
(cd build/$1 && poetry export -f constraints.txt -o constraints.txt)
|
||||
|
||||
|
||||
(cd build/$1 && python3 <<EOF )
|
||||
import os
|
||||
import pkginfo
|
||||
import subprocess
|
||||
|
||||
with open("constraints.txt", "a") as constraints_f:
|
||||
for f in sorted(os.scandir("downloaded"), key=lambda x: x.name):
|
||||
if not f.is_file():
|
||||
continue
|
||||
p = pkginfo.get_metadata("downloaded/" + f.name)
|
||||
if p.name == "my-test-package":
|
||||
continue
|
||||
constraints_f.write(
|
||||
f"{p.name}=={p.version} {subprocess.check_output(['pip3', 'hash', '-a', 'sha256', p.filename], encoding='utf-8').split()[1]}\n")
|
||||
EOF
|
||||
|
||||
# Assemble the directory passed to docker
|
||||
cp build/$1/requirements.txt lockfiles/requirements-$1.txt
|
||||
cp build/$1/constraints.txt lockfiles/constraints-$1.txt
|
||||
deactivate
|
||||
}
|
||||
|
||||
lock 3.10
|
||||
@@ -0,0 +1,684 @@
|
||||
build==1.4.0 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:6a07c1b8eb6f2b311b96fcbdbce5dab5fe637ffda0fd83c9cac622e927501596 \
|
||||
--hash=sha256:f1b91b925aa322be454f8330c6fb48b465da993d1e7e7e6fa35027ec49f3c936
|
||||
cachecontrol==0.14.4 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:b7ac014ff72ee199b5f8af1de29d60239954f223e948196fa3d84adaffc71d2b \
|
||||
--hash=sha256:e6220afafa4c22a47dd0badb319f84475d79108100d04e26e8542ef7d3ab05a1
|
||||
certifi==2026.1.4 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c \
|
||||
--hash=sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120
|
||||
cffi==2.0.0 ; python_version >= "3.10" and python_version < "4.0" and (platform_python_implementation != "PyPy" or sys_platform == "darwin") and (sys_platform == "linux" or sys_platform == "darwin") \
|
||||
--hash=sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb \
|
||||
--hash=sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b \
|
||||
--hash=sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f \
|
||||
--hash=sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9 \
|
||||
--hash=sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44 \
|
||||
--hash=sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2 \
|
||||
--hash=sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c \
|
||||
--hash=sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75 \
|
||||
--hash=sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65 \
|
||||
--hash=sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e \
|
||||
--hash=sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a \
|
||||
--hash=sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e \
|
||||
--hash=sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25 \
|
||||
--hash=sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a \
|
||||
--hash=sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe \
|
||||
--hash=sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b \
|
||||
--hash=sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91 \
|
||||
--hash=sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592 \
|
||||
--hash=sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187 \
|
||||
--hash=sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c \
|
||||
--hash=sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1 \
|
||||
--hash=sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94 \
|
||||
--hash=sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba \
|
||||
--hash=sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb \
|
||||
--hash=sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165 \
|
||||
--hash=sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529 \
|
||||
--hash=sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca \
|
||||
--hash=sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c \
|
||||
--hash=sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6 \
|
||||
--hash=sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c \
|
||||
--hash=sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0 \
|
||||
--hash=sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743 \
|
||||
--hash=sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63 \
|
||||
--hash=sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5 \
|
||||
--hash=sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5 \
|
||||
--hash=sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4 \
|
||||
--hash=sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d \
|
||||
--hash=sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b \
|
||||
--hash=sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93 \
|
||||
--hash=sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205 \
|
||||
--hash=sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27 \
|
||||
--hash=sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512 \
|
||||
--hash=sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d \
|
||||
--hash=sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c \
|
||||
--hash=sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037 \
|
||||
--hash=sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26 \
|
||||
--hash=sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322 \
|
||||
--hash=sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb \
|
||||
--hash=sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c \
|
||||
--hash=sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8 \
|
||||
--hash=sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4 \
|
||||
--hash=sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414 \
|
||||
--hash=sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9 \
|
||||
--hash=sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664 \
|
||||
--hash=sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9 \
|
||||
--hash=sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775 \
|
||||
--hash=sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739 \
|
||||
--hash=sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc \
|
||||
--hash=sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062 \
|
||||
--hash=sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe \
|
||||
--hash=sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9 \
|
||||
--hash=sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92 \
|
||||
--hash=sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5 \
|
||||
--hash=sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13 \
|
||||
--hash=sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d \
|
||||
--hash=sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26 \
|
||||
--hash=sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f \
|
||||
--hash=sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495 \
|
||||
--hash=sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b \
|
||||
--hash=sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6 \
|
||||
--hash=sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c \
|
||||
--hash=sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef \
|
||||
--hash=sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5 \
|
||||
--hash=sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18 \
|
||||
--hash=sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad \
|
||||
--hash=sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3 \
|
||||
--hash=sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7 \
|
||||
--hash=sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5 \
|
||||
--hash=sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534 \
|
||||
--hash=sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49 \
|
||||
--hash=sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2 \
|
||||
--hash=sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5 \
|
||||
--hash=sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453 \
|
||||
--hash=sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf
|
||||
charset-normalizer==3.4.4 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad \
|
||||
--hash=sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93 \
|
||||
--hash=sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394 \
|
||||
--hash=sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89 \
|
||||
--hash=sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc \
|
||||
--hash=sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86 \
|
||||
--hash=sha256:194f08cbb32dc406d6e1aea671a68be0823673db2832b38405deba2fb0d88f63 \
|
||||
--hash=sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d \
|
||||
--hash=sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f \
|
||||
--hash=sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8 \
|
||||
--hash=sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0 \
|
||||
--hash=sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505 \
|
||||
--hash=sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161 \
|
||||
--hash=sha256:2aaba3b0819274cc41757a1da876f810a3e4d7b6eb25699253a4effef9e8e4af \
|
||||
--hash=sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152 \
|
||||
--hash=sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318 \
|
||||
--hash=sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72 \
|
||||
--hash=sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4 \
|
||||
--hash=sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e \
|
||||
--hash=sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3 \
|
||||
--hash=sha256:44c2a8734b333e0578090c4cd6b16f275e07aa6614ca8715e6c038e865e70576 \
|
||||
--hash=sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c \
|
||||
--hash=sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1 \
|
||||
--hash=sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8 \
|
||||
--hash=sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1 \
|
||||
--hash=sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2 \
|
||||
--hash=sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44 \
|
||||
--hash=sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26 \
|
||||
--hash=sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88 \
|
||||
--hash=sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016 \
|
||||
--hash=sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede \
|
||||
--hash=sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf \
|
||||
--hash=sha256:5cb4d72eea50c8868f5288b7f7f33ed276118325c1dfd3957089f6b519e1382a \
|
||||
--hash=sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc \
|
||||
--hash=sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0 \
|
||||
--hash=sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84 \
|
||||
--hash=sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db \
|
||||
--hash=sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1 \
|
||||
--hash=sha256:6aee717dcfead04c6eb1ce3bd29ac1e22663cdea57f943c87d1eab9a025438d7 \
|
||||
--hash=sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed \
|
||||
--hash=sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8 \
|
||||
--hash=sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133 \
|
||||
--hash=sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e \
|
||||
--hash=sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef \
|
||||
--hash=sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14 \
|
||||
--hash=sha256:778d2e08eda00f4256d7f672ca9fef386071c9202f5e4607920b86d7803387f2 \
|
||||
--hash=sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0 \
|
||||
--hash=sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d \
|
||||
--hash=sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828 \
|
||||
--hash=sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f \
|
||||
--hash=sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf \
|
||||
--hash=sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6 \
|
||||
--hash=sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328 \
|
||||
--hash=sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090 \
|
||||
--hash=sha256:837c2ce8c5a65a2035be9b3569c684358dfbf109fd3b6969630a87535495ceaa \
|
||||
--hash=sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381 \
|
||||
--hash=sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c \
|
||||
--hash=sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb \
|
||||
--hash=sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc \
|
||||
--hash=sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a \
|
||||
--hash=sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec \
|
||||
--hash=sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc \
|
||||
--hash=sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac \
|
||||
--hash=sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e \
|
||||
--hash=sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313 \
|
||||
--hash=sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569 \
|
||||
--hash=sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3 \
|
||||
--hash=sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d \
|
||||
--hash=sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525 \
|
||||
--hash=sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894 \
|
||||
--hash=sha256:a8bf8d0f749c5757af2142fe7903a9df1d2e8aa3841559b2bad34b08d0e2bcf3 \
|
||||
--hash=sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9 \
|
||||
--hash=sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a \
|
||||
--hash=sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9 \
|
||||
--hash=sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14 \
|
||||
--hash=sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25 \
|
||||
--hash=sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50 \
|
||||
--hash=sha256:b7cf1017d601aa35e6bb650b6ad28652c9cd78ee6caff19f3c28d03e1c80acbf \
|
||||
--hash=sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1 \
|
||||
--hash=sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3 \
|
||||
--hash=sha256:c4ef880e27901b6cc782f1b95f82da9313c0eb95c3af699103088fa0ac3ce9ac \
|
||||
--hash=sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e \
|
||||
--hash=sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815 \
|
||||
--hash=sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c \
|
||||
--hash=sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6 \
|
||||
--hash=sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6 \
|
||||
--hash=sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e \
|
||||
--hash=sha256:cd4b7ca9984e5e7985c12bc60a6f173f3c958eae74f3ef6624bb6b26e2abbae4 \
|
||||
--hash=sha256:ce8a0633f41a967713a59c4139d29110c07e826d131a316b50ce11b1d79b4f84 \
|
||||
--hash=sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69 \
|
||||
--hash=sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15 \
|
||||
--hash=sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191 \
|
||||
--hash=sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0 \
|
||||
--hash=sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897 \
|
||||
--hash=sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd \
|
||||
--hash=sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2 \
|
||||
--hash=sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794 \
|
||||
--hash=sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d \
|
||||
--hash=sha256:e912091979546adf63357d7e2ccff9b44f026c075aeaf25a52d0e95ad2281074 \
|
||||
--hash=sha256:eaabd426fe94daf8fd157c32e571c85cb12e66692f15516a83a03264b08d06c3 \
|
||||
--hash=sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224 \
|
||||
--hash=sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838 \
|
||||
--hash=sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a \
|
||||
--hash=sha256:f155a433c2ec037d4e8df17d18922c3a0d9b3232a396690f17175d2946f0218d \
|
||||
--hash=sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d \
|
||||
--hash=sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f \
|
||||
--hash=sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8 \
|
||||
--hash=sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490 \
|
||||
--hash=sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966 \
|
||||
--hash=sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9 \
|
||||
--hash=sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3 \
|
||||
--hash=sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e \
|
||||
--hash=sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608
|
||||
cleo==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:0b2c880b5d13660a7ea651001fb4acb527696c01f15c9ee650f377aa543fd523 \
|
||||
--hash=sha256:4a31bd4dd45695a64ee3c4758f583f134267c2bc518d8ae9a29cf237d009b07e
|
||||
colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and os_name == "nt" \
|
||||
--hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
|
||||
--hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
|
||||
crashtest==0.4.1 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:80d7b1f316ebfbd429f648076d6275c877ba30ba48979de4191714a75266f0ce \
|
||||
--hash=sha256:8d23eac5fa660409f57472e3851dab7ac18aba459a8d19cbbba86d3d5aecd2a5
|
||||
cryptography==46.0.5 ; python_version >= "3.10" and python_version < "4.0" and sys_platform == "linux" \
|
||||
--hash=sha256:02f547fce831f5096c9a567fd41bc12ca8f11df260959ecc7c3202555cc47a72 \
|
||||
--hash=sha256:039917b0dc418bb9f6edce8a906572d69e74bd330b0b3fea4f79dab7f8ddd235 \
|
||||
--hash=sha256:1abfdb89b41c3be0365328a410baa9df3ff8a9110fb75e7b52e66803ddabc9a9 \
|
||||
--hash=sha256:2ae6971afd6246710480e3f15824ed3029a60fc16991db250034efd0b9fb4356 \
|
||||
--hash=sha256:2b7a67c9cd56372f3249b39699f2ad479f6991e62ea15800973b956f4b73e257 \
|
||||
--hash=sha256:351695ada9ea9618b3500b490ad54c739860883df6c1f555e088eaf25b1bbaad \
|
||||
--hash=sha256:38946c54b16c885c72c4f59846be9743d699eee2b69b6988e0a00a01f46a61a4 \
|
||||
--hash=sha256:3b4995dc971c9fb83c25aa44cf45f02ba86f71ee600d81091c2f0cbae116b06c \
|
||||
--hash=sha256:3ce58ba46e1bc2aac4f7d9290223cead56743fa6ab94a5d53292ffaac6a91614 \
|
||||
--hash=sha256:3ee190460e2fbe447175cda91b88b84ae8322a104fc27766ad09428754a618ed \
|
||||
--hash=sha256:4108d4c09fbbf2789d0c926eb4152ae1760d5a2d97612b92d508d96c861e4d31 \
|
||||
--hash=sha256:420d0e909050490d04359e7fdb5ed7e667ca5c3c402b809ae2563d7e66a92229 \
|
||||
--hash=sha256:47fb8a66058b80e509c47118ef8a75d14c455e81ac369050f20ba0d23e77fee0 \
|
||||
--hash=sha256:4c3341037c136030cb46e4b1e17b7418ea4cbd9dd207e4a6f3b2b24e0d4ac731 \
|
||||
--hash=sha256:4d7e3d356b8cd4ea5aff04f129d5f66ebdc7b6f8eae802b93739ed520c47c79b \
|
||||
--hash=sha256:4d8ae8659ab18c65ced284993c2265910f6c9e650189d4e3f68445ef82a810e4 \
|
||||
--hash=sha256:4e817a8920bfbcff8940ecfd60f23d01836408242b30f1a708d93198393a80b4 \
|
||||
--hash=sha256:50bfb6925eff619c9c023b967d5b77a54e04256c4281b0e21336a130cd7fc263 \
|
||||
--hash=sha256:556e106ee01aa13484ce9b0239bca667be5004efb0aabbed28d353df86445595 \
|
||||
--hash=sha256:582f5fcd2afa31622f317f80426a027f30dc792e9c80ffee87b993200ea115f1 \
|
||||
--hash=sha256:5be7bf2fb40769e05739dd0046e7b26f9d4670badc7b032d6ce4db64dddc0678 \
|
||||
--hash=sha256:60ee7e19e95104d4c03871d7d7dfb3d22ef8a9b9c6778c94e1c8fcc8365afd48 \
|
||||
--hash=sha256:61aa400dce22cb001a98014f647dc21cda08f7915ceb95df0c9eaf84b4b6af76 \
|
||||
--hash=sha256:68f68d13f2e1cb95163fa3b4db4bf9a159a418f5f6e7242564fc75fcae667fd0 \
|
||||
--hash=sha256:7d1f30a86d2757199cb2d56e48cce14deddf1f9c95f1ef1b64ee91ea43fe2e18 \
|
||||
--hash=sha256:7d731d4b107030987fd61a7f8ab512b25b53cef8f233a97379ede116f30eb67d \
|
||||
--hash=sha256:803812e111e75d1aa73690d2facc295eaefd4439be1023fefc4995eaea2af90d \
|
||||
--hash=sha256:80a8d7bfdf38f87ca30a5391c0c9ce4ed2926918e017c29ddf643d0ed2778ea1 \
|
||||
--hash=sha256:8293f3dea7fc929ef7240796ba231413afa7b68ce38fd21da2995549f5961981 \
|
||||
--hash=sha256:8456928655f856c6e1533ff59d5be76578a7157224dbd9ce6872f25055ab9ab7 \
|
||||
--hash=sha256:890bcb4abd5a2d3f852196437129eb3667d62630333aacc13dfd470fad3aaa82 \
|
||||
--hash=sha256:94a76daa32eb78d61339aff7952ea819b1734b46f73646a07decb40e5b3448e2 \
|
||||
--hash=sha256:9f16fbdf4da055efb21c22d81b89f155f02ba420558db21288b3d0035bafd5f4 \
|
||||
--hash=sha256:a3d1fae9863299076f05cb8a778c467578262fae09f9dc0ee9b12eb4268ce663 \
|
||||
--hash=sha256:a3d507bb6a513ca96ba84443226af944b0f7f47dcc9a399d110cd6146481d24c \
|
||||
--hash=sha256:abace499247268e3757271b2f1e244b36b06f8515cf27c4d49468fc9eb16e93d \
|
||||
--hash=sha256:ba2a27ff02f48193fc4daeadf8ad2590516fa3d0adeeb34336b96f7fa64c1e3a \
|
||||
--hash=sha256:bc84e875994c3b445871ea7181d424588171efec3e185dced958dad9e001950a \
|
||||
--hash=sha256:bfd56bb4b37ed4f330b82402f6f435845a5f5648edf1ad497da51a8452d5d62d \
|
||||
--hash=sha256:c18ff11e86df2e28854939acde2d003f7984f721eba450b56a200ad90eeb0e6b \
|
||||
--hash=sha256:c3bcce8521d785d510b2aad26ae2c966092b7daa8f45dd8f44734a104dc0bc1a \
|
||||
--hash=sha256:c4143987a42a2397f2fc3b4d7e3a7d313fbe684f67ff443999e803dd75a76826 \
|
||||
--hash=sha256:c69fd885df7d089548a42d5ec05be26050ebcd2283d89b3d30676eb32ff87dee \
|
||||
--hash=sha256:ced80795227d70549a411a4ab66e8ce307899fad2220ce5ab2f296e687eacde9 \
|
||||
--hash=sha256:d66e421495fdb797610a08f43b05269e0a5ea7f5e652a89bfd5a7d3c1dee3648 \
|
||||
--hash=sha256:d861ee9e76ace6cf36a6a89b959ec08e7bc2493ee39d07ffe5acb23ef46d27da \
|
||||
--hash=sha256:e9251e3be159d1020c4030bd2e5f84d6a43fe54b6c19c12f51cde9542a2817b2 \
|
||||
--hash=sha256:f145bba11b878005c496e93e257c1e88f154d278d2638e6450d17e0f31e558d2 \
|
||||
--hash=sha256:fe346b143ff9685e40192a4960938545c699054ba11d4f9029f94751e3f71d87
|
||||
distlib==0.4.0 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16 \
|
||||
--hash=sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d
|
||||
dulwich==0.21.7 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:0fc3078a1ba04c588fabb0969d3530efd5cd1ce2cf248eefb6baf7cbc15fc285 \
|
||||
--hash=sha256:10893105c6566fc95bc2a67b61df7cc1e8f9126d02a1df6a8b2b82eb59db8ab9 \
|
||||
--hash=sha256:12d61334a575474e707614f2e93d6ed4cdae9eb47214f9277076d9e5615171d3 \
|
||||
--hash=sha256:2590e9b431efa94fc356ae33b38f5e64f1834ec3a94a6ac3a64283b206d07aa3 \
|
||||
--hash=sha256:25c3ab8fb2e201ad2031ddd32e4c68b7c03cb34b24a5ff477b7a7dcef86372f5 \
|
||||
--hash=sha256:274c18ec3599a92a9b67abaf110e4f181a4f779ee1aaab9e23a72e89d71b2bd9 \
|
||||
--hash=sha256:29bb5c1d70eba155ded41ed8a62be2f72edbb3c77b08f65b89c03976292f6d1b \
|
||||
--hash=sha256:2bc12697f0918bee324c18836053644035362bb3983dc1b210318f2fed1d7132 \
|
||||
--hash=sha256:2e2c66888207b71cd1daa2acb06d3984a6bc13787b837397a64117aa9fc5936a \
|
||||
--hash=sha256:404b8edeb3c3a86c47c0a498699fc064c93fa1f8bab2ffe919e8ab03eafaaad3 \
|
||||
--hash=sha256:40dcbd29ba30ba2c5bfbab07a61a5f20095541d5ac66d813056c122244df4ac0 \
|
||||
--hash=sha256:460b3849d5c3d3818a80743b4f7a0094c893c559f678e56a02fff570b49a644a \
|
||||
--hash=sha256:460ba74bdb19f8d498786ae7776745875059b1178066208c0fd509792d7f7bfc \
|
||||
--hash=sha256:4637cbd8ed1012f67e1068aaed19fcc8b649bcf3e9e26649826a303298c89b9d \
|
||||
--hash=sha256:471305af74790827fcbafe330fc2e8bdcee4fb56ca1177c8c481b1c8f806c4a4 \
|
||||
--hash=sha256:4a043b90958cec866b4edc6aef5fe3c2c96a664d0b357e1682a46f6c477273c4 \
|
||||
--hash=sha256:4b09bc3a64fb70132ec14326ecbe6e0555381108caff3496898962c4136a48c6 \
|
||||
--hash=sha256:4bc4c5366eaf26dda3fdffe160a3b515666ed27c2419f1d483da285ac1411de0 \
|
||||
--hash=sha256:4c51058ec4c0b45dc5189225b9e0c671b96ca9713c1daf71d622c13b0ab07681 \
|
||||
--hash=sha256:4f18f0a311fb7734b033a3101292b932158cade54b74d1c44db519e42825e5a2 \
|
||||
--hash=sha256:61e3451bd3d3844f2dca53f131982553be4d1b1e1ebd9db701843dd76c4dba31 \
|
||||
--hash=sha256:62bfb26bdce869cd40be443dfd93143caea7089b165d2dcc33de40f6ac9d812a \
|
||||
--hash=sha256:675a612ce913081beb0f37b286891e795d905691dfccfb9bf73721dca6757cde \
|
||||
--hash=sha256:6bd69921fdd813b7469a3c77bc75c1783cc1d8d72ab15a406598e5a3ba1a1503 \
|
||||
--hash=sha256:6c589468e5c0cd84e97eb7ec209ab005a2cb69399e8c5861c3edfe38989ac3a8 \
|
||||
--hash=sha256:6de6f8de4a453fdbae8062a6faa652255d22a3d8bce0cd6d2d6701305c75f2b3 \
|
||||
--hash=sha256:739b191f61e1c4ce18ac7d520e7a7cbda00e182c3489552408237200ce8411ad \
|
||||
--hash=sha256:74700e4c7d532877355743336c36f51b414d01e92ba7d304c4f8d9a5946dbc81 \
|
||||
--hash=sha256:7836da3f4110ce684dcd53489015fb7fa94ed33c5276e3318b8b1cbcb5b71e08 \
|
||||
--hash=sha256:7bca4b86e96d6ef18c5bc39828ea349efb5be2f9b1f6ac9863f90589bac1084d \
|
||||
--hash=sha256:7d8ab29c660125db52106775caa1f8f7f77a69ed1fe8bc4b42bdf115731a25bf \
|
||||
--hash=sha256:808e8b9cc0aa9ac74870b49db4f9f39a52fb61694573f84b9c0613c928d4caf8 \
|
||||
--hash=sha256:817822f970e196e757ae01281ecbf21369383285b9f4a83496312204cf889b8c \
|
||||
--hash=sha256:8278835e168dd097089f9e53088c7a69c6ca0841aef580d9603eafe9aea8c358 \
|
||||
--hash=sha256:858842b30ad6486aacaa607d60bab9c9a29e7c59dc2d9cb77ae5a94053878c08 \
|
||||
--hash=sha256:869eb7be48243e695673b07905d18b73d1054a85e1f6e298fe63ba2843bb2ca1 \
|
||||
--hash=sha256:8869fc8ec3dda743e03d06d698ad489b3705775fe62825e00fa95aa158097fc0 \
|
||||
--hash=sha256:8929c37986c83deb4eb500c766ee28b6670285b512402647ee02a857320e377c \
|
||||
--hash=sha256:a0650ec77d89cb947e3e4bbd4841c96f74e52b4650830112c3057a8ca891dc2f \
|
||||
--hash=sha256:a7b5624b02ef808cdc62dabd47eb10cd4ac15e8ac6df9e2e88b6ac6b40133673 \
|
||||
--hash=sha256:a9e9c66833cea580c3ac12927e4b9711985d76afca98da971405d414de60e968 \
|
||||
--hash=sha256:b0d2e4485b98695bf95350ce9d38b1bb0aaac2c34ad00a0df789aa33c934469b \
|
||||
--hash=sha256:c01a735b9a171dcb634a97a3cec1b174cfbfa8e840156870384b633da0460f18 \
|
||||
--hash=sha256:c3a539b4696a42fbdb7412cb7b66a4d4d332761299d3613d90a642923c7560e1 \
|
||||
--hash=sha256:c3d1685f320907a52c40fd5890627945c51f3a5fa4bcfe10edb24fec79caadec \
|
||||
--hash=sha256:c92e72c43c9e9e936b01a57167e0ea77d3fd2d82416edf9489faa87278a1cdf7 \
|
||||
--hash=sha256:cc1e11be527ac06316539b57a7688bcb1b6a3e53933bc2f844397bc50734e9ae \
|
||||
--hash=sha256:ce8db196e79c1f381469410d26fb1d8b89c6b87a4e7f00ff418c22a35121405c \
|
||||
--hash=sha256:d05d3c781bc74e2c2a2a8f4e4e2ed693540fbe88e6ac36df81deac574a6dad99 \
|
||||
--hash=sha256:d097e963eb6b9fa53266146471531ad9c6765bf390849230311514546ed64db2 \
|
||||
--hash=sha256:d4a2d76c96426e791556836ef43542b639def81be4f1d6d4322cd886c115eae1 \
|
||||
--hash=sha256:d4c0110798099bb7d36a110090f2688050703065448895c4f53ade808d889dd3 \
|
||||
--hash=sha256:d54c9d0e845be26f65f954dff13a1cd3f2b9739820c19064257b8fd7435ab263 \
|
||||
--hash=sha256:d5882e70b74ac3c736a42d3fdd4f5f2e6570637f59ad5d3e684760290b58f041 \
|
||||
--hash=sha256:d62446797163317a397a10080c6397ffaaca51a7804c0120b334f8165736c56a \
|
||||
--hash=sha256:d96ca5e0dde49376fbcb44f10eddb6c30284a87bd03bb577c59bb0a1f63903fa \
|
||||
--hash=sha256:e0064363bd5e814359657ae32517fa8001e8573d9d040bd997908d488ab886ed \
|
||||
--hash=sha256:e138d516baa6b5bafbe8f030eccc544d0d486d6819b82387fc0e285e62ef5261 \
|
||||
--hash=sha256:e1957b65f96e36c301e419d7adaadcff47647c30eb072468901bb683b1000bc5 \
|
||||
--hash=sha256:e25953c7acbbe4e19650d0225af1c0c0e6882f8bddd2056f75c1cc2b109b88ad \
|
||||
--hash=sha256:e274cebaf345f0b1e3b70197f2651de92b652386b68020cfd3bf61bc30f6eaaa \
|
||||
--hash=sha256:e598d743c6c0548ebcd2baf94aa9c8bfacb787ea671eeeb5828cfbd7d56b552f \
|
||||
--hash=sha256:e84cc606b1f581733df4350ca4070e6a8b30be3662bbb81a590b177d0c996c91 \
|
||||
--hash=sha256:ecd315847dea406a4decfa39d388a2521e4e31acde3bd9c2609c989e817c6d62 \
|
||||
--hash=sha256:ed60d1f610ef6437586f7768254c2a93820ccbd4cfdac7d182cf2d6e615969bb \
|
||||
--hash=sha256:f34bf9b9fa9308376263fd9ac43143c7c09da9bc75037bb75c6c2423a151b92c \
|
||||
--hash=sha256:f6c88acb60a1f4d31bd6d13bfba465853b3df940ee4a0f2a3d6c7a0778c705b7 \
|
||||
--hash=sha256:fa4d14767cf7a49c9231c2e52cb2a3e90d0c83f843eb6a2ca2b5d81d254cf6b9 \
|
||||
--hash=sha256:ffc27fb063f740712e02b4d2f826aee8bbed737ed799962fef625e2ce56e2d29
|
||||
fastjsonschema==2.21.2 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463 \
|
||||
--hash=sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de
|
||||
filelock==3.21.2 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:cfd218cfccf8b947fce7837da312ec3359d10ef2a47c8602edd59e0bacffb708 \
|
||||
--hash=sha256:d6cd4dbef3e1bb63bc16500fc5aa100f16e405bbff3fb4231711851be50c1560
|
||||
idna==3.11 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea \
|
||||
--hash=sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902
|
||||
importlib-metadata==8.7.1 ; python_version >= "3.10" and python_version < "3.12" \
|
||||
--hash=sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb \
|
||||
--hash=sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151
|
||||
installer==0.7.0 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:05d1933f0a5ba7d8d6296bb6d5018e7c94fa473ceb10cf198a92ccea19c27b53 \
|
||||
--hash=sha256:a26d3e3116289bb08216e0d0f7d925fcef0b0194eedfa0c944bcaaa106c4b631
|
||||
jaraco-classes==3.4.0 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd \
|
||||
--hash=sha256:f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790
|
||||
jeepney==0.9.0 ; python_version >= "3.10" and python_version < "4.0" and sys_platform == "linux" \
|
||||
--hash=sha256:97e5714520c16fc0a45695e5365a2e11b81ea79bba796e26f9f1d178cb182683 \
|
||||
--hash=sha256:cf0e9e845622b81e4a28df94c40345400256ec608d0e55bb8a3feaa9163f5732
|
||||
keyring==24.3.1 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:c3327b6ffafc0e8befbdb597cacdb4928ffe5c1212f7645f186e6d9957a898db \
|
||||
--hash=sha256:df38a4d7419a6a60fea5cef1e45a948a3e8430dd12ad88b0f423c5c143906218
|
||||
more-itertools==10.8.0 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:52d4362373dcf7c52546bc4af9a86ee7c4579df9a8dc268be0a2f949d376cc9b \
|
||||
--hash=sha256:f638ddf8a1a0d134181275fb5d58b086ead7c6a72429ad725c67503f13ba30bd
|
||||
msgpack==1.1.2 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:0051fffef5a37ca2cd16978ae4f0aef92f164df86823871b5162812bebecd8e2 \
|
||||
--hash=sha256:04fb995247a6e83830b62f0b07bf36540c213f6eac8e851166d8d86d83cbd014 \
|
||||
--hash=sha256:180759d89a057eab503cf62eeec0aa61c4ea1200dee709f3a8e9397dbb3b6931 \
|
||||
--hash=sha256:1d1418482b1ee984625d88aa9585db570180c286d942da463533b238b98b812b \
|
||||
--hash=sha256:1de460f0403172cff81169a30b9a92b260cb809c4cb7e2fc79ae8d0510c78b6b \
|
||||
--hash=sha256:1fdf7d83102bf09e7ce3357de96c59b627395352a4024f6e2458501f158bf999 \
|
||||
--hash=sha256:1fff3d825d7859ac888b0fbda39a42d59193543920eda9d9bea44d958a878029 \
|
||||
--hash=sha256:283ae72fc89da59aa004ba147e8fc2f766647b1251500182fac0350d8af299c0 \
|
||||
--hash=sha256:2929af52106ca73fcb28576218476ffbb531a036c2adbcf54a3664de124303e9 \
|
||||
--hash=sha256:2e86a607e558d22985d856948c12a3fa7b42efad264dca8a3ebbcfa2735d786c \
|
||||
--hash=sha256:350ad5353a467d9e3b126d8d1b90fe05ad081e2e1cef5753f8c345217c37e7b8 \
|
||||
--hash=sha256:354e81bcdebaab427c3df4281187edc765d5d76bfb3a7c125af9da7a27e8458f \
|
||||
--hash=sha256:365c0bbe981a27d8932da71af63ef86acc59ed5c01ad929e09a0b88c6294e28a \
|
||||
--hash=sha256:372839311ccf6bdaf39b00b61288e0557916c3729529b301c52c2d88842add42 \
|
||||
--hash=sha256:3b60763c1373dd60f398488069bcdc703cd08a711477b5d480eecc9f9626f47e \
|
||||
--hash=sha256:41d1a5d875680166d3ac5c38573896453bbbea7092936d2e107214daf43b1d4f \
|
||||
--hash=sha256:42eefe2c3e2af97ed470eec850facbe1b5ad1d6eacdbadc42ec98e7dcf68b4b7 \
|
||||
--hash=sha256:446abdd8b94b55c800ac34b102dffd2f6aa0ce643c55dfc017ad89347db3dbdb \
|
||||
--hash=sha256:454e29e186285d2ebe65be34629fa0e8605202c60fbc7c4c650ccd41870896ef \
|
||||
--hash=sha256:4efd7b5979ccb539c221a4c4e16aac1a533efc97f3b759bb5a5ac9f6d10383bf \
|
||||
--hash=sha256:5559d03930d3aa0f3aacb4c42c776af1a2ace2611871c84a75afe436695e6245 \
|
||||
--hash=sha256:5928604de9b032bc17f5099496417f113c45bc6bc21b5c6920caf34b3c428794 \
|
||||
--hash=sha256:59415c6076b1e30e563eb732e23b994a61c159cec44deaf584e5cc1dd662f2af \
|
||||
--hash=sha256:5a46bf7e831d09470ad92dff02b8b1ac92175ca36b087f904a0519857c6be3ff \
|
||||
--hash=sha256:602b6740e95ffc55bfb078172d279de3773d7b7db1f703b2f1323566b878b90e \
|
||||
--hash=sha256:61c8aa3bd513d87c72ed0b37b53dd5c5a0f58f2ff9f26e1555d3bd7948fb7296 \
|
||||
--hash=sha256:67016ae8c8965124fdede9d3769528ad8284f14d635337ffa6a713a580f6c030 \
|
||||
--hash=sha256:6bde749afe671dc44893f8d08e83bf475a1a14570d67c4bb5cec5573463c8833 \
|
||||
--hash=sha256:6c15b7d74c939ebe620dd8e559384be806204d73b4f9356320632d783d1f7939 \
|
||||
--hash=sha256:70a0dff9d1f8da25179ffcf880e10cf1aad55fdb63cd59c9a49a1b82290062aa \
|
||||
--hash=sha256:70c5a7a9fea7f036b716191c29047374c10721c389c21e9ffafad04df8c52c90 \
|
||||
--hash=sha256:7bc8813f88417599564fafa59fd6f95be417179f76b40325b500b3c98409757c \
|
||||
--hash=sha256:80a0ff7d4abf5fecb995fcf235d4064b9a9a8a40a3ab80999e6ac1e30b702717 \
|
||||
--hash=sha256:86f8136dfa5c116365a8a651a7d7484b65b13339731dd6faebb9a0242151c406 \
|
||||
--hash=sha256:897c478140877e5307760b0ea66e0932738879e7aa68144d9b78ea4c8302a84a \
|
||||
--hash=sha256:8b696e83c9f1532b4af884045ba7f3aa741a63b2bc22617293a2c6a7c645f251 \
|
||||
--hash=sha256:8e22ab046fa7ede9e36eeb4cfad44d46450f37bb05d5ec482b02868f451c95e2 \
|
||||
--hash=sha256:94fd7dc7d8cb0a54432f296f2246bc39474e017204ca6f4ff345941d4ed285a7 \
|
||||
--hash=sha256:99e2cb7b9031568a2a5c73aa077180f93dd2e95b4f8d3b8e14a73ae94a9e667e \
|
||||
--hash=sha256:9ade919fac6a3e7260b7f64cea89df6bec59104987cbea34d34a2fa15d74310b \
|
||||
--hash=sha256:9fba231af7a933400238cb357ecccf8ab5d51535ea95d94fc35b7806218ff844 \
|
||||
--hash=sha256:a465f0dceb8e13a487e54c07d04ae3ba131c7c5b95e2612596eafde1dccf64a9 \
|
||||
--hash=sha256:a605409040f2da88676e9c9e5853b3449ba8011973616189ea5ee55ddbc5bc87 \
|
||||
--hash=sha256:a668204fa43e6d02f89dbe79a30b0d67238d9ec4c5bd8a940fc3a004a47b721b \
|
||||
--hash=sha256:a7787d353595c7c7e145e2331abf8b7ff1e6673a6b974ded96e6d4ec09f00c8c \
|
||||
--hash=sha256:a8f6e7d30253714751aa0b0c84ae28948e852ee7fb0524082e6716769124bc23 \
|
||||
--hash=sha256:ad09b984828d6b7bb52d1d1d0c9be68ad781fa004ca39216c8a1e63c0f34ba3c \
|
||||
--hash=sha256:bafca952dc13907bdfdedfc6a5f579bf4f292bdd506fadb38389afa3ac5b208e \
|
||||
--hash=sha256:be52a8fc79e45b0364210eef5234a7cf8d330836d0a64dfbb878efa903d84620 \
|
||||
--hash=sha256:be5980f3ee0e6bd44f3a9e9dea01054f175b50c3e6cdb692bc9424c0bbb8bf69 \
|
||||
--hash=sha256:c63eea553c69ab05b6747901b97d620bb2a690633c77f23feb0c6a947a8a7b8f \
|
||||
--hash=sha256:d198d275222dc54244bf3327eb8cbe00307d220241d9cec4d306d49a44e85f68 \
|
||||
--hash=sha256:d62ce1f483f355f61adb5433ebfd8868c5f078d1a52d042b0a998682b4fa8c27 \
|
||||
--hash=sha256:d99ef64f349d5ec3293688e91486c5fdb925ed03807f64d98d205d2713c60b46 \
|
||||
--hash=sha256:db6192777d943bdaaafb6ba66d44bf65aa0e9c5616fa1d2da9bb08828c6b39aa \
|
||||
--hash=sha256:e23ce8d5f7aa6ea6d2a2b326b4ba46c985dbb204523759984430db7114f8aa00 \
|
||||
--hash=sha256:e64c8d2f5e5d5fda7b842f55dec6133260ea8f53c4257d64494c534f306bf7a9 \
|
||||
--hash=sha256:e69b39f8c0aa5ec24b57737ebee40be647035158f14ed4b40e6f150077e21a84 \
|
||||
--hash=sha256:ea5405c46e690122a76531ab97a079e184c0daf491e588592d6a23d3e32af99e \
|
||||
--hash=sha256:f2cb069d8b981abc72b41aea1c580ce92d57c673ec61af4c500153a626cb9e20 \
|
||||
--hash=sha256:fac4be746328f90caa3cd4bc67e6fe36ca2bf61d5c6eb6d895b6527e3f05071e \
|
||||
--hash=sha256:fffee09044073e69f2bad787071aeec727183e7580443dfeb8556cbf1978d162
|
||||
packaging==26.0 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4 \
|
||||
--hash=sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529
|
||||
pexpect==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523 \
|
||||
--hash=sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f
|
||||
pip==26.0.1 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:bdb1b08f4274833d62c1aa29e20907365a2ceb950410df15fc9521bad440122b \
|
||||
--hash=sha256:c4037d8a277c89b320abe636d59f91e6d0922d08a05b60e85e53b296613346d8
|
||||
pkginfo==1.12.1.2 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:5cd957824ac36f140260964eba3c6be6442a8359b8c48f4adf90210f33a04b7b \
|
||||
--hash=sha256:c783ac885519cab2c34927ccfa6bf64b5a704d7c69afaea583dd9b7afe969343
|
||||
platformdirs==4.7.0 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:1ed8db354e344c5bb6039cd727f096af975194b508e37177719d562b2b540ee6 \
|
||||
--hash=sha256:fd1a5f8599c85d49b9ac7d6e450bc2f1aaf4a23f1fe86d09952fe20ad365cf36
|
||||
poetry-core==1.9.0 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:4e0c9c6ad8cf89956f03b308736d84ea6ddb44089d16f2adc94050108ec1f5a1 \
|
||||
--hash=sha256:fa7a4001eae8aa572ee84f35feb510b321bd652e5cf9293249d62853e1f935a2
|
||||
poetry-plugin-export==1.8.0 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:1fa6168a85d59395d835ca564bc19862a7c76061e60c3e7dfaec70d50937fc61 \
|
||||
--hash=sha256:adbe232cfa0cc04991ea3680c865cf748bff27593b9abcb1f35fb50ed7ba2c22
|
||||
poetry==1.8.1 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:23519cc45eb3cf48e899145bc762425a141e3afd52ecc53ec443ca635122327f \
|
||||
--hash=sha256:cf133946661025822672422769567980f8e489ed5b6fc170d1025a4d6c9aac29
|
||||
ptyprocess==0.7.0 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35 \
|
||||
--hash=sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220
|
||||
pycparser==3.0 ; python_version >= "3.10" and python_version < "4.0" and (platform_python_implementation != "PyPy" and sys_platform == "linux" or sys_platform == "darwin") and implementation_name != "PyPy" \
|
||||
--hash=sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29 \
|
||||
--hash=sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992
|
||||
pyproject-hooks==1.2.0 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8 \
|
||||
--hash=sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913
|
||||
pywin32-ctypes==0.2.3 ; python_version >= "3.10" and python_version < "4.0" and sys_platform == "win32" \
|
||||
--hash=sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8 \
|
||||
--hash=sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755
|
||||
rapidfuzz==3.14.3 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:010e12e2411a4854b0434f920e72b717c43f8ec48d57e7affe5c42ecfa05dd0e \
|
||||
--hash=sha256:02821366d928e68ddcb567fed8723dad7ea3a979fada6283e6914d5858674850 \
|
||||
--hash=sha256:07aa0b5d8863e3151e05026a28e0d924accf0a7a3b605da978f0359bb804df43 \
|
||||
--hash=sha256:0e38828d1381a0cceb8a4831212b2f673d46f5129a1897b0451c883eaf4a1747 \
|
||||
--hash=sha256:152555187360978119e98ce3e8263d70dd0c40c7541193fc302e9b7125cf8f58 \
|
||||
--hash=sha256:1704fc70d214294e554a2421b473779bcdeef715881c5e927dc0f11e1692a0ff \
|
||||
--hash=sha256:1b7ef2f4b8583a744338a18f12c69693c194fb6777c0e9ada98cd4d9e8f09d10 \
|
||||
--hash=sha256:1b86daa7419b5e8b180690efd1fdbac43ff19230803282521c5b5a9c83977655 \
|
||||
--hash=sha256:1d83b8b712fa37e06d59f29a4b49e2e9e8635e908fbc21552fe4d1163db9d2a1 \
|
||||
--hash=sha256:1e6eefec45625c634926a9fd46c9e4f31118ac8f3156fff9494422cee45207e6 \
|
||||
--hash=sha256:1ec0c8c0c3d4f97ced46b2e191e883f8c82dbbf6d5ebc1842366d7eff13cd5a6 \
|
||||
--hash=sha256:1f1925619627f8798f8c3a391d81071336942e5fe8467bc3c567f982e7ce2897 \
|
||||
--hash=sha256:1faa0f8f76ba75fd7b142c984947c280ef6558b5067af2ae9b8729b0a0f99ede \
|
||||
--hash=sha256:2491937177868bc4b1e469087601d53f925e8d270ccc21e07404b4b5814b7b5f \
|
||||
--hash=sha256:2dc37bc20272f388b8c3a4eba4febc6e77e50a8f450c472def4751e7678f55e4 \
|
||||
--hash=sha256:32eeafa3abce138bb725550c0e228fc7eaeec7059aa8093d9cbbec2b58c2371a \
|
||||
--hash=sha256:33a325ed0e8e1aa20c3e75f8ab057a7b248fdea7843c2a19ade0008906c14af0 \
|
||||
--hash=sha256:33da4bbaf44e9755b0ce192597f3bde7372fe2e381ab305f41b707a95ac57aa7 \
|
||||
--hash=sha256:37d3c653af15cd88592633e942f5407cb4c64184efab163c40fcebad05f25141 \
|
||||
--hash=sha256:3fecce764cf5a991ee2195a844196da840aba72029b2612f95ac68a8b74946bf \
|
||||
--hash=sha256:43d0305c36f504232f18ea04e55f2059bb89f169d3119c4ea96a0e15b59e2a91 \
|
||||
--hash=sha256:43e38c1305cffae8472572a0584d4ffc2f130865586a81038ca3965301f7c97c \
|
||||
--hash=sha256:442125473b247227d3f2de807a11da6c08ccf536572d1be943f8e262bae7e4ea \
|
||||
--hash=sha256:442cba39957a008dfc5bdef21a9c3f4379e30ffb4e41b8555dbaf4887eca9300 \
|
||||
--hash=sha256:489ce98a895c98cad284f0a47960c3e264c724cb4cfd47a1430fa091c0c25204 \
|
||||
--hash=sha256:4ad73afb688b36864a8d9b7344a9cf6da186c471e5790cbf541a635ee0f457f2 \
|
||||
--hash=sha256:4b39921df948388a863f0e267edf2c36302983459b021ab928d4b801cbe6a421 \
|
||||
--hash=sha256:4e49c9e992bc5fc873bd0fff7ef16a4405130ec42f2ce3d2b735ba5d3d4eb70f \
|
||||
--hash=sha256:52619d25a09546b8db078981ca88939d72caa6b8701edd8b22e16482a38e799f \
|
||||
--hash=sha256:54fa03062124e73086dae66a3451c553c1e20a39c077fd704dc7154092c34c63 \
|
||||
--hash=sha256:56fefb4382bb12250f164250240b9dd7772e41c5c8ae976fd598a32292449cc5 \
|
||||
--hash=sha256:576e4b9012a67e0bf54fccb69a7b6c94d4e86a9540a62f1a5144977359133583 \
|
||||
--hash=sha256:57f878330c8d361b2ce76cebb8e3e1dc827293b6abf404e67d53260d27b5d941 \
|
||||
--hash=sha256:5cfc3d57abd83c734d1714ec39c88a34dd69c85474918ebc21296f1e61eb5ca8 \
|
||||
--hash=sha256:656e52b054d5b5c2524169240e50cfa080b04b1c613c5f90a2465e84888d6f15 \
|
||||
--hash=sha256:685c93ea961d135893b5984a5a9851637d23767feabe414ec974f43babbd8226 \
|
||||
--hash=sha256:6a014ba09657abfcfeed64b7d09407acb29af436d7fc075b23a298a7e4a6b41c \
|
||||
--hash=sha256:6c5f545f454871e6af05753a0172849c82feaf0f521c5ca62ba09e1b382d6382 \
|
||||
--hash=sha256:6de00eb84c71476af7d3110cf25d8fe7c792d7f5fa86764ef0b4ca97e78ca3ed \
|
||||
--hash=sha256:73b07566bc7e010e7b5bd490fb04bb312e820970180df6b5655e9e6224c137db \
|
||||
--hash=sha256:769f31c60cd79420188fcdb3c823227fc4a6deb35cafec9d14045c7f6743acae \
|
||||
--hash=sha256:7ba009977601d8b0828bfac9a110b195b3e4e79b350dcfa48c11269a9f1918a0 \
|
||||
--hash=sha256:7ccbf68100c170e9a0581accbe9291850936711548c6688ce3bfb897b8c589ad \
|
||||
--hash=sha256:7cf174b52cb3ef5d49e45d0a1133b7e7d0ecf770ed01f97ae9962c5c91d97d23 \
|
||||
--hash=sha256:7d9af908c2f371bfb9c985bd134e295038e3031e666e4b2ade1e7cb7f5af2f1a \
|
||||
--hash=sha256:834d1e818005ed0d4ae38f6b87b86fad9b0a74085467ece0727d20e15077c094 \
|
||||
--hash=sha256:8383b6d0d92f6cd008f3c9216535be215a064b2cc890398a678b56e6d280cb63 \
|
||||
--hash=sha256:89acb8cbb52904f763e5ac238083b9fc193bed8d1f03c80568b20e4cef43a519 \
|
||||
--hash=sha256:948b00e8476a91f510dd1ec07272efc7d78c275d83b630455559671d4e33b678 \
|
||||
--hash=sha256:9ec02e62ae765a318d6de38df609c57fc6dacc65c0ed1fd489036834fd8a620c \
|
||||
--hash=sha256:a0a28add871425c2fe94358c6300bbeb0bc2ed828ca003420ac6825408f5a424 \
|
||||
--hash=sha256:a2135b138bcdcb4c3742d417f215ac2d8c2b87bde15b0feede231ae95f09ec41 \
|
||||
--hash=sha256:adb44d996fc610c7da8c5048775b21db60dd63b1548f078e95858c05c86876a3 \
|
||||
--hash=sha256:b5100fd6bcee4d27f28f4e0a1c6b5127bc8ba7c2a9959cad9eab0bf4a7ab3329 \
|
||||
--hash=sha256:b9fcd4d751a4fffa17aed1dde41647923c72c74af02459ad1222e3b0022da3a1 \
|
||||
--hash=sha256:beda6aa9bc44d1d81242e7b291b446be352d3451f8217fcb068fc2933927d53b \
|
||||
--hash=sha256:c5fb2d978a601820d2cfd111e2c221a9a7bfdf84b41a3ccbb96ceef29f2f1ac7 \
|
||||
--hash=sha256:c71ce6d4231e5ef2e33caa952bfe671cb9fd42e2afb11952df9fad41d5c821f9 \
|
||||
--hash=sha256:c7bd1816db05d6c5ffb3a4df0a2b7b56fb8c81ef584d08e37058afa217da91b1 \
|
||||
--hash=sha256:c7e40c0a0af02ad6e57e89f62bef8604f55a04ecae90b0ceeda591bbf5923317 \
|
||||
--hash=sha256:cc594bbcd3c62f647dfac66800f307beaee56b22aaba1c005e9c4c40ed733923 \
|
||||
--hash=sha256:cc65e72790ddfd310c2c8912b45106e3800fefe160b0c2ef4d6b6fec4e826457 \
|
||||
--hash=sha256:cec3c0da88562727dd5a5a364bd9efeb535400ff0bfb1443156dd139a1dd7b50 \
|
||||
--hash=sha256:cfe8df315ab4e6db4e1be72c5170f8e66021acde22cd2f9d04d2058a9fd8162e \
|
||||
--hash=sha256:d1fa009f8b1100e4880868137e7bf0501422898f7674f2adcd85d5a67f041296 \
|
||||
--hash=sha256:d7843a1abf0091773a530636fdd2a49a41bcae22f9910b86b4f903e76ddc82dc \
|
||||
--hash=sha256:da2a007434323904719158e50f3076a4dadb176ce43df28ed14610c773cc9825 \
|
||||
--hash=sha256:dbcb726064b12f356bf10fffdb6db4b6dce5390b23627c08652b3f6e49aa56ae \
|
||||
--hash=sha256:dc8c07801df5206b81ed6bd6c35cb520cf9b6c64b9b0d19d699f8633dc942897 \
|
||||
--hash=sha256:dea2d113e260a5da0c4003e0a5e9fdf24a9dc2bb9eaa43abd030a1e46ce7837d \
|
||||
--hash=sha256:dea97ac3ca18cd3ba8f3d04b5c1fe4aa60e58e8d9b7793d3bd595fdb04128d7a \
|
||||
--hash=sha256:dee362e7e79bae940a5e2b3f6d09c6554db6a4e301cc68343886c08be99844f1 \
|
||||
--hash=sha256:e195a77d06c03c98b3fc06b8a28576ba824392ce40de8c708f96ce04849a052e \
|
||||
--hash=sha256:e6b5e3036976f0fde888687d91be86d81f9ac5f7b02e218913c38285b756be6c \
|
||||
--hash=sha256:e6c31a4aa68cfa75d7eede8b0ed24b9e458447db604c2db53f358be9843d81d3 \
|
||||
--hash=sha256:e805e52322ae29aa945baf7168b6c898120fbc16d2b8f940b658a5e9e3999253 \
|
||||
--hash=sha256:ea188aa00e9bcae8c8411f006a5f2f06c4607a02f24eab0d8dc58566aa911f35 \
|
||||
--hash=sha256:ecd7453e02cf072258c3a6b8e930230d789d5d46cc849503729f9ce475d0e785 \
|
||||
--hash=sha256:ef6bf930b947bd0735c550683939a032090f1d688dfd8861d6b45307b96fd5c5 \
|
||||
--hash=sha256:f3d15d8527e2b293e38ce6e437631af0708df29eafd7c9fc48210854c94472f9 \
|
||||
--hash=sha256:f3eb0ff3b75d6fdccd40b55e7414bb859a1cda77c52762c9c82b85569f5088e7 \
|
||||
--hash=sha256:fa7c8f26f009f8c673fbfb443792f0cf8cf50c4e18121ff1e285b5e08a94fbdb \
|
||||
--hash=sha256:fce3152f94afcfd12f3dd8cf51e48fa606e3cb56719bccebe3b401f43d0714f9
|
||||
requests-toolbelt==1.0.0 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6 \
|
||||
--hash=sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06
|
||||
requests==2.32.5 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6 \
|
||||
--hash=sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf
|
||||
secretstorage==3.5.0 ; python_version >= "3.10" and python_version < "4.0" and sys_platform == "linux" \
|
||||
--hash=sha256:0ce65888c0725fcb2c5bc0fdb8e5438eece02c523557ea40ce0703c266248137 \
|
||||
--hash=sha256:f04b8e4689cbce351744d5537bf6b1329c6fc68f91fa666f60a380edddcd11be
|
||||
setuptools==82.0.0 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:22e0a2d69474c6ae4feb01951cb69d515ed23728cf96d05513d36e42b62b37cb \
|
||||
--hash=sha256:70b18734b607bd1da571d097d236cfcfacaf01de45717d59e6e04b96877532e0
|
||||
shellingham==1.5.4 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686 \
|
||||
--hash=sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de
|
||||
tomli==2.4.0 ; python_version == "3.10" \
|
||||
--hash=sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729 \
|
||||
--hash=sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b \
|
||||
--hash=sha256:0e0fe8a0b8312acf3a88077a0802565cb09ee34107813bba1c7cd591fa6cfc8d \
|
||||
--hash=sha256:0f2e3955efea4d1cfbcb87bc321e00dc08d2bcb737fd1d5e398af111d86db5df \
|
||||
--hash=sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576 \
|
||||
--hash=sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d \
|
||||
--hash=sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1 \
|
||||
--hash=sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a \
|
||||
--hash=sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e \
|
||||
--hash=sha256:20cedb4ee43278bc4f2fee6cb50daec836959aadaf948db5172e776dd3d993fc \
|
||||
--hash=sha256:20ffd184fb1df76a66e34bd1b36b4a4641bd2b82954befa32fe8163e79f1a702 \
|
||||
--hash=sha256:26ab906a1eb794cd4e103691daa23d95c6919cc2fa9160000ac02370cc9dd3f6 \
|
||||
--hash=sha256:2add28aacc7425117ff6364fe9e06a183bb0251b03f986df0e78e974047571fd \
|
||||
--hash=sha256:2b1e3b80e1d5e52e40e9b924ec43d81570f0e7d09d11081b797bc4692765a3d4 \
|
||||
--hash=sha256:31d556d079d72db7c584c0627ff3a24c5d3fb4f730221d3444f3efb1b2514776 \
|
||||
--hash=sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a \
|
||||
--hash=sha256:39b0b5d1b6dd03684b3fb276407ebed7090bbec989fa55838c98560c01113b66 \
|
||||
--hash=sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87 \
|
||||
--hash=sha256:3d895d56bd3f82ddd6faaff993c275efc2ff38e52322ea264122d72729dca2b2 \
|
||||
--hash=sha256:413540dce94673591859c4c6f794dfeaa845e98bf35d72ed59636f869ef9f86f \
|
||||
--hash=sha256:43e685b9b2341681907759cf3a04e14d7104b3580f808cfde1dfdb60ada85475 \
|
||||
--hash=sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f \
|
||||
--hash=sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95 \
|
||||
--hash=sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9 \
|
||||
--hash=sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3 \
|
||||
--hash=sha256:5b5807f3999fb66776dbce568cc9a828544244a8eb84b84b9bafc080c99597b9 \
|
||||
--hash=sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76 \
|
||||
--hash=sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da \
|
||||
--hash=sha256:75c2f8bbddf170e8effc98f5e9084a8751f8174ea6ccf4fca5398436e0320bc8 \
|
||||
--hash=sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51 \
|
||||
--hash=sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86 \
|
||||
--hash=sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8 \
|
||||
--hash=sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0 \
|
||||
--hash=sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b \
|
||||
--hash=sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1 \
|
||||
--hash=sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e \
|
||||
--hash=sha256:a26d7ff68dfdb9f87a016ecfd1e1c2bacbe3108f4e0f8bcd2228ef9a766c787d \
|
||||
--hash=sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c \
|
||||
--hash=sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867 \
|
||||
--hash=sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a \
|
||||
--hash=sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c \
|
||||
--hash=sha256:c084ad935abe686bd9c898e62a02a19abfc9760b5a79bc29644463eaf2840cb0 \
|
||||
--hash=sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4 \
|
||||
--hash=sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614 \
|
||||
--hash=sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132 \
|
||||
--hash=sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa \
|
||||
--hash=sha256:d878f2a6707cc9d53a1be1414bbb419e629c3d6e67f69230217bb663e76b5087
|
||||
tomlkit==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:592064ed85b40fa213469f81ac584f67a4f2992509a7c3ea2d632208623a3680 \
|
||||
--hash=sha256:cf00efca415dbd57575befb1f6634c4f42d2d87dbba376128adb42c121b87064
|
||||
trove-classifiers==2026.1.14.14 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:00492545a1402b09d4858605ba190ea33243d361e2b01c9c296ce06b5c3325f3 \
|
||||
--hash=sha256:1f9553927f18d0513d8e5ff80ab8980b8202ce37ecae0e3274ed2ef11880e74d
|
||||
typing-extensions==4.15.0 ; python_version == "3.10" \
|
||||
--hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \
|
||||
--hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548
|
||||
urllib3==2.6.3 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed \
|
||||
--hash=sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4
|
||||
virtualenv==20.36.1 ; python_version >= "3.10" and python_version < "4.0" \
|
||||
--hash=sha256:575a8d6b124ef88f6f51d56d656132389f961062a9177016a50e4f507bbcc19f \
|
||||
--hash=sha256:8befb5c81842c641f8ee658481e42641c68b5eab3521d8e092d18320902466ba
|
||||
xattr==1.3.0 ; python_version >= "3.10" and python_version < "4.0" and sys_platform == "darwin" \
|
||||
--hash=sha256:03712f84e056dcd23c36db03a1f45417a26eef2c73d47c2c7d425bf932601587 \
|
||||
--hash=sha256:05f8e068409742d246babba60cff8310b2c577745491f498b08bf068e0c867a3 \
|
||||
--hash=sha256:196360f068b74fa0132a8c6001ce1333f095364b8f43b6fd8cdaf2f18741ef89 \
|
||||
--hash=sha256:1e0dabb39596d8d7b83d6f9f7fa30be68cf15bfb135cb633e2aad9887d308a32 \
|
||||
--hash=sha256:1e6c216927b16fd4b72df655d5124b69b2a406cb3132b5231179021182f0f0d1 \
|
||||
--hash=sha256:1fd185b3f01121bd172c98b943f9341ca3b9ea6c6d3eb7fe7074723614d959ff \
|
||||
--hash=sha256:2aaa5d66af6523332189108f34e966ca120ff816dfa077ca34b31e6263f8a236 \
|
||||
--hash=sha256:2c5e7ba0e893042deef4e8638db7a497680f587ac7bd6d68925f29af633dfa6b \
|
||||
--hash=sha256:2c69999ed70411ac2859f1f8c918eb48a6fd2a71ef41dc03ee846f69e2200bb2 \
|
||||
--hash=sha256:2fea070768d7d2d25797817bea93bf0a6fda6449e88cfee8bb3d75de9ed11c7b \
|
||||
--hash=sha256:30439fabd7de0787b27e9a6e1d569c5959854cb322f64ce7380fedbfa5035036 \
|
||||
--hash=sha256:31fefcf20d040e79ec3bf6e7dc0fdcfd972f70f740d5a69ed67b20c699bb9cea \
|
||||
--hash=sha256:331a51bf8f20c27822f44054b0d760588462d3ed472d5e52ba135cf0bea510e8 \
|
||||
--hash=sha256:405d2e4911d37f2b9400fa501acd920fe0c97fe2b2ec252cb23df4b59c000811 \
|
||||
--hash=sha256:45f85233a51c71659969ce364abe6bd0c9048a302b7fcdbea675dc63071e47ff \
|
||||
--hash=sha256:4a04ada131e9bdfd32db3ab1efa9f852646f4f7c9d6fde0596c3825c67161be3 \
|
||||
--hash=sha256:4ae3a66ae1effd40994f64defeeaa97da369406485e60bfb421f2d781be3b75d \
|
||||
--hash=sha256:50c12d92f5214b0416cf4b4fafcd02dca5434166657553b74b8ba6abc66cb4b4 \
|
||||
--hash=sha256:51cdaa359f5cd2861178ae01ea3647b56dbdfd98e724a8aa3c04f77123b78217 \
|
||||
--hash=sha256:5eeaa944516b7507ec51456751334b4880e421de169bbd067c4f32242670d606 \
|
||||
--hash=sha256:630c85020282bd0bcb72c3d031491c4e91d7f29bb4c094ebdfb9db51375c5b07 \
|
||||
--hash=sha256:64f1fb511f8463851e0d97294eb0e0fde54b059150da90582327fb43baa1bb92 \
|
||||
--hash=sha256:69bca34be2d7a928389aff4e32f27857e1c62d04c91ec7c1519b1636870bd58f \
|
||||
--hash=sha256:69cd3bfe779f7ba87abe6473fdfa428460cf9e78aeb7e390cfd737b784edf1b5 \
|
||||
--hash=sha256:6c42ef5bdac3febbe28d3db14d3a8a159d84ba5daca2b13deae6f9f1fc0d4092 \
|
||||
--hash=sha256:726b4d0b66724759132cacdcd84a5b19e00b0cdf704f4c2cf96d0c08dc5eaeb5 \
|
||||
--hash=sha256:78df56bfe3dd4912548561ed880225437d6d49ef082fe6ccd45670810fa53cfe \
|
||||
--hash=sha256:864c34c14728f21c3ef89a9f276d75ae5e31dd34f48064e0d37e4bf0f671fc6e \
|
||||
--hash=sha256:88557c0769f64b1d014aada916c9630cfefa38b0be6c247eae20740d2d8f7b47 \
|
||||
--hash=sha256:928c49ceb0c70fc04732e46fa236d7c8281bfc3db1b40875e5f548bb14d2668c \
|
||||
--hash=sha256:937d8c91f6f372788aff8cc0984c4be3f0928584839aaa15ff1c95d64562071c \
|
||||
--hash=sha256:95f1e14a4d9ca160b4b78c527bf2bac6addbeb0fd9882c405fc0b5e3073a8752 \
|
||||
--hash=sha256:995843ef374af73e3370b0c107319611f3cdcdb6d151d629449efecad36be4c4 \
|
||||
--hash=sha256:9e68a02adde8a5f8675be5e8edc837eb6fdbe214a6ee089956fae11d633c0e51 \
|
||||
--hash=sha256:a80c4617e08670cdc3ba71f1dbb275c1627744c5c3641280879cb3bc95a07237 \
|
||||
--hash=sha256:b3cf29da6840eb94b881eab692ae83b1421c9c15a0cd92ffb97a0696ceac8cac \
|
||||
--hash=sha256:b4345387087fffcd28f709eb45aae113d911e1a1f4f0f70d46b43ba81e69ccdd \
|
||||
--hash=sha256:b8589744116d2c37928b771c50383cb281675cd6dcfd740abfab6883e3d4af85 \
|
||||
--hash=sha256:bbd06987102bc11f5cbd08b15d1029832b862cf5bc61780573fc0828812f01ca \
|
||||
--hash=sha256:c0d9ab346cdd20539afddf2f9e123efee0fe8d54254d9fc580b4e2b4e6d77351 \
|
||||
--hash=sha256:c5742ca61761a99ae0c522f90a39d5fb8139280f27b254e3128482296d1df2db \
|
||||
--hash=sha256:c6992eb5da32c0a1375a9eeacfab15c66eebc8bd34be63ebd1eae80cc2f8bf03 \
|
||||
--hash=sha256:da5954424099ca9d402933eaf6112c29ddde26e6da59b32f0bf5a4e35eec0b28 \
|
||||
--hash=sha256:dd4e63614722d183e81842cb237fd1cc978d43384166f9fe22368bfcb187ebe5 \
|
||||
--hash=sha256:e470b3f15e9c3e263662506ff26e73b3027e1c9beac2cbe9ab89cad9c70c0495 \
|
||||
--hash=sha256:f2238b2a973fcbf5fefa1137db97c296d27f4721f7b7243a1fac51514565e9ec \
|
||||
--hash=sha256:f32bb00395371f4a3bed87080ae315b19171ba114e8a5aa403a2c8508998ce78 \
|
||||
--hash=sha256:f3bef26fd2d5d7b17488f4cc4424a69894c5a8ed71dd5f657fbbf69f77f68a51 \
|
||||
--hash=sha256:fa23a25220e29d956cedf75746e3df6cc824cc1553326d6516479967c540e386 \
|
||||
--hash=sha256:fe92bb05eb849ab468fe13e942be0f8d7123f15d074f3aba5223fad0c4b484de
|
||||
zipp==3.23.0 ; python_version >= "3.10" and python_version < "3.12" \
|
||||
--hash=sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e \
|
||||
--hash=sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166
|
||||
pip==26.0.1 --hash=sha256:bdb1b08f4274833d62c1aa29e20907365a2ceb950410df15fc9521bad440122b
|
||||
setuptools==82.0.0 --hash=sha256:70b18734b607bd1da571d097d236cfcfacaf01de45717d59e6e04b96877532e0
|
||||
@@ -0,0 +1,3 @@
|
||||
pip
|
||||
poetry
|
||||
setuptools
|
||||
Executable
+19
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash -e
|
||||
# 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.
|
||||
|
||||
apt-get install $@ && apt-get clean
|
||||
Executable
+50
@@ -0,0 +1,50 @@
|
||||
#!/bin/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.
|
||||
|
||||
# Download a file with curl and verify its checksum (sha256 or sha512).
|
||||
if [[ "$#" -lt 4 || "$#" -gt 5 ]]; then
|
||||
echo "Usage: $0 URL OUTPUT_PATH CHECKSUM_ALGO EXPECTED_CHECKSUM [RETRIES]" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
url="$1"
|
||||
output_path="$2"
|
||||
checksum_algo="$3"
|
||||
expected_checksum="$4"
|
||||
retries="${5:-0}"
|
||||
|
||||
case "${checksum_algo}" in
|
||||
sha256)
|
||||
checksum_bin="sha256sum"
|
||||
;;
|
||||
sha512)
|
||||
checksum_bin="sha512sum"
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported checksum algorithm: ${checksum_algo}" >&2
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "${retries}" -gt 0 ]; then
|
||||
curl --retry "${retries}" -fsSL "${url}" -o "${output_path}"
|
||||
else
|
||||
curl -fsSL "${url}" -o "${output_path}"
|
||||
fi
|
||||
|
||||
printf "%s %s\n" "${expected_checksum}" "${output_path}" | "${checksum_bin}" -c -
|
||||
@@ -0,0 +1,85 @@
|
||||
#!/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.
|
||||
|
||||
# This script is a wrapper creating the same user inside container as the one
|
||||
# running the docker/build.sh outside the container. It also set the home directory
|
||||
# for the user inside container to match the same absolute path as the workspace
|
||||
# outside of container. Do not run this manually. It does not make sense. It is
|
||||
# intended to be called by ci_build.sh only.
|
||||
|
||||
set -e
|
||||
|
||||
# NOTE: sudo uses the env_reset option to reset environment variables to a secure bare minimum.
|
||||
# The --preserve-env option below passes those variables through to the invoked process; however,
|
||||
# this appears not to affect the environment used with execve, so we resolve the binary to run
|
||||
# in this file using the $PATH specified in the Dockerfile.
|
||||
COMMAND=( "$(which "$1")" )
|
||||
shift
|
||||
COMMAND=( "${COMMAND[@]}" "$@" )
|
||||
|
||||
if ! touch /this_is_writable_file_system; then
|
||||
echo "You can't write to your filesystem!"
|
||||
echo "If you are in Docker you should check you do not have too many images" \
|
||||
"with too many files in them. Docker has some issue with it."
|
||||
exit 1
|
||||
else
|
||||
rm /this_is_writable_file_system
|
||||
fi
|
||||
|
||||
getent group "${CI_BUILD_GID}" || (
|
||||
# Ensure "${CI_BUILD_GROUP}" is not already some other gid inside container.
|
||||
if grep -q "^${CI_BUILD_GROUP}:" /etc/group; then
|
||||
CI_BUILD_GROUP="${CI_BUILD_GROUP}2"
|
||||
fi
|
||||
addgroup --force-badname --gid "${CI_BUILD_GID}" "${CI_BUILD_GROUP}" >/dev/null)
|
||||
|
||||
getent group tvm-venv || (addgroup tvm-venv >/dev/null)
|
||||
getent passwd "${CI_BUILD_UID}" || adduser --force-badname --gid "${CI_BUILD_GID}" --uid "${CI_BUILD_UID}" \
|
||||
--gecos "${CI_BUILD_USER} (generated by with_the_same_user script)" \
|
||||
--disabled-password --home "${CI_BUILD_HOME}" --quiet "${CI_BUILD_USER}"
|
||||
usermod -a -G sudo -G tvm-venv "${CI_BUILD_USER}"
|
||||
usermod -a -G sudo -G dialout "${CI_BUILD_USER}"
|
||||
|
||||
# Add user to video group for ROCm
|
||||
if [[ ! -z "${ROCM_ENABLED-}" ]]; then
|
||||
usermod -a -G video "${CI_BUILD_USER}"
|
||||
fi
|
||||
|
||||
# This is a grotesque hack to get PYTEST_ADD_OPTS available to all task scripts.
|
||||
echo "${CI_BUILD_USER} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/90-nopasswd-sudo
|
||||
|
||||
if [[ ! -z "${CUDA_VISIBLE_DEVICES-}" ]]; then
|
||||
CUDA_ENV="CUDA_VISIBLE_DEVICES=${CUDA_VISIBLE_DEVICES}"
|
||||
else
|
||||
CUDA_ENV=""
|
||||
fi
|
||||
|
||||
if [[ "$CI_IMAGE_NAME" == *"hexagon"* ]] && [[ ${CI:-false} != "true" ]]; then
|
||||
PATH=$(echo "$PATH" | sed 's/\/opt\/sccache://g')
|
||||
fi
|
||||
|
||||
sudo -u "#${CI_BUILD_UID}" --preserve-env \
|
||||
${CUDA_ENV} \
|
||||
PATH=${PATH} \
|
||||
JAVA_HOME=${JAVA_HOME} \
|
||||
LD_LIBRARY_PATH="${LD_LIBRARY_PATH-}" \
|
||||
PYTHONPATH="${PYTHONPATH-}" \
|
||||
CI_IMAGE_NAME="${CI_IMAGE_NAME-}" \
|
||||
HOME="${CI_BUILD_HOME-}" \
|
||||
"${COMMAND[@]}"
|
||||
Reference in New Issue
Block a user