diff --git a/platform/packaging/build/Dockerfile b/platform/packaging/build/Dockerfile index d318d90..99fc5ae 100644 --- a/platform/packaging/build/Dockerfile +++ b/platform/packaging/build/Dockerfile @@ -3,37 +3,39 @@ FROM docker.io/library/debian:12 ENV DEBIAN_FRONTEND=noninteractive # Phase 1: Install free components. -RUN apt-get update -RUN apt-get install -y --no-install-recommends \ - python3-dev python3-numpy-dev swig python3-virtualenv \ - cmake git gpg wget +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + python3-dev python3-numpy-dev swig python3-virtualenv \ + cmake git gpg default-jre # Phase 2: Install non-free components. -RUN sed -i -e 's/main/main contrib non-free/g' /etc/apt/sources.list.d/debian.sources -# Add nVidia CUDA repository. -RUN wget https://developer.download.nvidia.com/compute/cuda/repos/debian11/x86_64/cuda-keyring_1.1-1_all.deb +# Configure Intel repo and non-free/contrib Debian repos. +ADD debian.sources oneAPI.list /etc/apt/sources.list.d/ + +# Set up build directory. +WORKDIR /build + +# Add nVidia CUDA repo and keyring. +ADD https://developer.download.nvidia.com/compute/cuda/repos/debian11/x86_64/cuda-keyring_1.1-1_all.deb /build/ RUN dpkg -i cuda-keyring_1.1-1_all.deb -# Add Intel repository. -RUN wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \ - | gpg --dearmor | tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null -RUN echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" \ - >> /etc/apt/sources.list.d/oneAPI.list +# Add Intel keyring. +ADD https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB /build/ +RUN < GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB gpg --dearmor > /usr/share/keyrings/oneapi-archive-keyring.gpg -RUN apt-get update -RUN apt-get install -y --no-install-recommends \ - cuda intel-basekit +# Do a big install. +RUN apt-get update && \ + apt-get install -y --no-install-recommends cuda intel-basekit # Phase 3: Prepare the build tree with CMake. -RUN mkdir /build -WORKDIR /build +ADD https://github.com/facebookresearch/faiss/archive/refs/tags/v1.7.4.tar.gz /build/ +# XXX For whatever reason, Podman *doesn't* automatically unpack the source +# tarball. This is fine, but at odds with Docker's behavior. +RUN tar zxf v1.7.4.tar.gz RUN virtualenv /build/local -RUN wget https://github.com/facebookresearch/faiss/archive/refs/tags/v1.7.4.tar.gz -RUN tar zxvf v1.7.4.tar.gz > /dev/null - ENV CUDACXX=/usr/local/cuda/bin/nvcc COPY run-cmake.sh /build RUN sh run-cmake.sh diff --git a/platform/packaging/build/debian.sources b/platform/packaging/build/debian.sources new file mode 100644 index 0000000..0780fac --- /dev/null +++ b/platform/packaging/build/debian.sources @@ -0,0 +1,11 @@ +Types: deb +URIs: http://deb.debian.org/debian +Suites: bookworm bookworm-updates +Components: main contrib non-free +Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg + +Types: deb +URIs: http://deb.debian.org/debian-security +Suites: bookworm-security +Components: main contrib non-free +Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg diff --git a/platform/packaging/build/oneAPI.list b/platform/packaging/build/oneAPI.list new file mode 100644 index 0000000..3939bca --- /dev/null +++ b/platform/packaging/build/oneAPI.list @@ -0,0 +1 @@ +deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main diff --git a/platform/packaging/build/run-cmake.sh b/platform/packaging/build/run-cmake.sh index 20efd59..d64abb3 100644 --- a/platform/packaging/build/run-cmake.sh +++ b/platform/packaging/build/run-cmake.sh @@ -1,4 +1,4 @@ #!/bin/sh . /opt/intel/oneapi/setvars.sh -cmake -B build faiss-1.7.3 -DBUILD_SHARED_LIBS=ON -DFAISS_ENABLE_GPU=ON -DFAISS_ENABLE_PYTHON=ON -DFAISS_ENABLE_RAFT=OFF -DBUILD_TESTING=ON -DBUILD_SHARED_LIBS=ON -DFAISS_ENABLE_C_API=ON -DCMAKE_BUILD_TYPE=Release -DFAISS_OPT_LEVEL=avx2 -Wno-dev +cmake -B build faiss-1.7.4 -DBUILD_SHARED_LIBS=ON -DFAISS_ENABLE_GPU=ON -DFAISS_ENABLE_PYTHON=ON -DFAISS_ENABLE_RAFT=OFF -DBUILD_TESTING=ON -DBUILD_SHARED_LIBS=ON -DFAISS_ENABLE_C_API=ON -DCMAKE_BUILD_TYPE=Release -DFAISS_OPT_LEVEL=avx2 -Wno-dev