FROM ubuntu:jammy
# Non-interactive apt
ENV DEBIAN_FRONTEND=noninteractive
# Install system build tooling and Python
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
ninja-build \
meson \
ca-certificates \
git \
pkg-config \
python3 \
python3-pip \
python3-venv \
python3-dev \
gfortran \
libgfortran5 && \
rm -rf /var/lib/apt/lists/*
# Install the spin tool (NumPy CI helper) from PyPI
RUN python3 -m pip install --no-cache-dir --upgrade pip setuptools wheel && \
python3 -m pip install --no-cache-dir spin
# Copy source code into the image
WORKDIR /src
COPY . /src
# Install Python build/test dependencies if present in the repo
RUN if [ -f requirements/build_requirements.txt ]; then python3 -m pip install --no-cache-dir -r requirements/build_requirements.txt; fi && \
if [ -f requirements/test_requirements.txt ]; then python3 -m pip install --no-cache-dir -r requirements/test_requirements.txt; fi
# Build from source using Meson/Spin (first noblas, then with noblas disabled)
RUN spin build -- -Dallow-noblas=true -Dcpu-baseline=none -Dcpu-dispatch=none
RUN spin build -- -Dallow-noblas=false
# Install the package in editable mode to mimic a development environment
RUN python3 -m pip install --no-build-isolation -e .
# Default to a shell so users can inspect the image or run tests
CMD ["/bin/bash"]
.git __pycache__ *.pyc *.pyo *.pyd .Python build/ dist/ doctest/ *.egg-info/ *.egg-info *.log *.cover .coverage *.sqlite *.sqlite3 *.pytest_cache *.mypy_cache .meson_build build*/ venv/ ENV/ .env/ *.zip *.tar.gz *.whl .harvested *.so *.dylib .cache/ *.egg-info/ venv*/ *.tox .coverage coverage.xml "}
- Failing step/command: - [7/9] RUN spin build -- -Dallow-noblas=true -Dcpu-baseline=none -Dcpu-dispatch=none - Exact error message and exit code: - RuntimeError: The `vendored-meson/meson` git submodule does not exist! Run `git submodule update --init` to fix this problem. - Exit code: 1 - Missing packages/files referenced: - vendored-meson/meson git submodule missing (causing the RuntimeError). - Also earlier: could not import file `.spin/cmds.py` to load custom command `.spin/cmds.py:build`. - Version mismatch information: - None reported. The failure is due to a missing submodule, not a version incompatibility.
FROM ubuntu:jammy
# Non-interactive apt
ENV DEBIAN_FRONTEND=noninteractive
# Install system build tooling and Python
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
ninja-build \
meson \
ca-certificates \
git \
pkg-config \
python3 \
python3-pip \
python3-venv \
python3-dev \
gfortran \
libgfortran5 && \
rm -rf /var/lib/apt/lists/*
# Install the spin tool (NumPy CI helper) from PyPI
RUN python3 -m pip install --no-cache-dir --upgrade pip setuptools wheel && \
python3 -m pip install --no-cache-dir spin
# Copy source code into the image
WORKDIR /src
COPY . /src
# Initialize git submodules if possible (vendored meson, etc.)
RUN if [ -d .git ]; then git submodule update --init --recursive; fi
# Install Python build/test dependencies if present in the repo
RUN if [ -f requirements/build_requirements.txt ]; then python3 -m pip install --no-cache-dir -r requirements/build_requirements.txt; fi && \
if [ -f requirements/test_requirements.txt ]; then python3 -m pip install --no-cache-dir -r requirements/test_requirements.txt; fi
# Build from source using Meson/Spin (first noblas, then with noblas disabled)
RUN spin build -- -Dallow-noblas=true -Dcpu-baseline=none -Dcpu-dispatch=none
RUN spin build -- -Dallow-noblas=false
# Install the package in editable mode to mimic a development environment
RUN python3 -m pip install --no-build-isolation -e .
# Default to a shell so users can inspect the image or run tests
CMD ["/bin/bash"]
- Failing step (command/step): [8/10] RUN spin build -- -Dallow-noblas=true -Dcpu-baseline=none -Dcpu-dispatch=none - Exact error message and exit code: - RuntimeError: The `vendored-meson/meson` git submodule does not exist! Run `git submodule update --init` to fix this problem. - Exit code: 1 - Missing packages or files mentioned: - Missing git submodule: vendored-meson/meson (as referenced by .spin/cmds.py). The error instructs to run git submodule update --init to fix. - Version mismatch information: - During build, Meson was upgraded/uninstalled-reinstalled: meson-0.61.2 was uninstalled and meson-1.10.2 (along with related tooling) was installed via pip. This indicates a Meson version change/mismatch during the build.
FROM ubuntu:jammy
# Non-interactive apt
ENV DEBIAN_FRONTEND=noninteractive
# Install system build tooling and Python
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
ninja-build \
meson \
ca-certificates \
git \
pkg-config \
python3 \
python3-pip \
python3-venv \
python3-dev \
gfortran \
libgfortran5 && \
rm -rf /var/lib/apt/lists/*
# Install the spin tool (NumPy CI helper) from PyPI
RUN python3 -m pip install --no-cache-dir --upgrade pip setuptools wheel && \
python3 -m pip install --no-cache-dir spin
# Copy source code into the image
WORKDIR /src
COPY . /src
# Initialize git submodules if possible (vendored meson, etc.)
RUN git submodule update --init --recursive || true
# Install Python build/test dependencies if present in the repo
RUN if [ -f requirements/build_requirements.txt ]; then python3 -m pip install --no-cache-dir -r requirements/build_requirements.txt; fi && \
if [ -f requirements/test_requirements.txt ]; then python3 -m pip install --no-cache-dir -r requirements/test_requirements.txt; fi
# Build from source using Meson/Spin (first noblas, then with noblas disabled)
RUN spin build -- -Dallow-noblas=true -Dcpu-baseline=none -Dcpu-dispatch=none
RUN spin build -- -Dallow-noblas=false
# Install the package in editable mode to mimic a development environment
RUN python3 -m pip install --no-build-isolation -e .
# Default to a shell so users can inspect the image or run tests
CMD ["/bin/bash"]
- Failing command/step
- [ 8/10] RUN spin build -- -Dallow-noblas=true -Dcpu-baseline=none -Dcpu-dispatch=none
- Exact error message and exit code
- "!! Could not import file `.spin/cmds.py` to load custom command `.spin/cmds.py:build`."
- RuntimeError: The `vendored-meson/meson` git submodule does not exist! Run `git submodule update --init` to fix this problem.
- Exit code: 1
- Missing packages or files mentioned
- vendored-meson/meson git submodule does not exist (as referenced by the RuntimeError).
- Prior git submodule update attempt showed: fatal: not a git repository (or any of the parent directories): .git
- Version mismatch info
- Meson version change observed during build:
- Uninstalled: meson-0.61.2
- Installed: meson-1.10.2
- This indicates a Meson version upgrade/downgrade during the build process.FROM ubuntu:jammy
# Non-interactive apt
ENV DEBIAN_FRONTEND=noninteractive
# Install system build tooling and Python 3.12
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
ninja-build \
meson \
ca-certificates \
git \
pkg-config \
software-properties-common \
ca-certificates \
wget \
curl \
python3.12 \
python3.12-venv \
python3.12-dev \
python3-pip \
gfortran \
libgfortran5 && \
rm -rf /var/lib/apt/lists/*
# Install the spin tool (NumPy CI helper) from PyPI
RUN python3.12 -m pip install --no-cache-dir --upgrade pip setuptools wheel && \
python3.12 -m pip install --no-cache-dir spin
# Copy source code into the image
WORKDIR /src
COPY . /src
# Ensure submodules exist: if repo is copied without .git, clone with submodules; otherwise update
RUN if [ -d ".git" ]; then git submodule update --init --recursive; else rm -rf /src && git clone --recurse-submodules https://github.com/numpy/numpy.git /src; fi
# Install Python build/test dependencies if present in the repo
RUN if [ -f requirements/build_requirements.txt ]; then python3.12 -m pip install --no-cache-dir -r requirements/build_requirements.txt; fi && \
if [ -f requirements/test_requirements.txt ]; then python3.12 -m pip install --no-cache-dir -r requirements/test_requirements.txt; fi
# Build from source using Meson/Spin (first noblas, then with noblas disabled)
RUN spin build -- -Dallow-noblas=true -Dcpu-baseline=none -Dcpu-dispatch=none
RUN spin build -- -Dallow-noblas=false
# Install the package in editable mode to mimic a development environment
RUN python3.12 -m pip install --no-build-isolation -e .
# Default to a shell so users can inspect the image or run tests
CMD ["/bin/bash"]
- Failing step (Dockerfile): [ 2/10] RUN apt-get update && apt-get install -y --no-install-recommends build-essential ninja-build meson ca-certificates git pkg-config software-properties-common ca-certificates wget curl python3.12 python3.12-venv python3.12-dev python3-pip gfortran libgfortran5 && rm -rf /var/lib/apt/lists/* - Exact error message and exit code: - E: Unable to locate package python3.12 - E: Couldn't find any package by glob 'python3.12' - E: Couldn't find any package by regex 'python3.12' - E: Unable to locate package python3.12-venv - E: Couldn't find any package by glob 'python3.12-venv' - E: Couldn't find any package by regex 'python3.12-venv' - E: Unable to locate package python3.12-dev - E: Couldn't find any package by glob 'python3.12-dev' - E: Couldn't find any package by regex 'python3.12-dev' - The build failed: "failed to solve: process "/bin/sh -c apt-get update && ... did not complete successfully: exit code: 100" - Missing packages/files mentioned: - python3.12 - python3.12-venv - python3.12-dev - Version mismatch / root cause info: - Base image is Ubuntu Jammy (jammy). The apt install cannot locate Python 3.12 packages in Jammy’s default repositories, causing the install to fail with exit code 100.
FROM ubuntu:jammy
# Non-interactive apt
ENV DEBIAN_FRONTEND=noninteractive
# Install system build tooling and a Python 3.12 toolchain
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
ninja-build \
ca-certificates \
git \
pkg-config \
software-properties-common \
curl \
wget \
gfortran \
libgfortran5 \
python3 \
python3-pip \
python3-venv \
python3-dev && \
rm -rf /var/lib/apt/lists/*
# Install Python 3.12 from deadsnakes PPA to match the project expectations
RUN apt-get update && \
apt-get install -y --no-install-recommends software-properties-common && \
add-apt-repository -y ppa:deadsnakes/ppa && \
apt-get update && \
apt-get install -y --no-install-recommends \
python3.12 \
python3.12-venv \
python3.12-dev && \
rm -rf /var/lib/apt/lists/*
# Install spin (NumPy CI helper) from PyPI using Python 3.12
RUN python3.12 -m pip install --no-cache-dir --upgrade pip setuptools wheel && \
python3.12 -m pip install --no-cache-dir spin
# Clone the repository (with submodules) into /src
WORKDIR /src
RUN git clone --depth 1 --recurse-submodules https://github.com/numpy/numpy.git .
# Install Python build/test dependencies if present in the repo
RUN python3.12 -m pip install --no-cache-dir -r requirements/build_requirements.txt && \
python3.12 -m pip install --no-cache-dir -r requirements/test_requirements.txt
# Build from source using Meson/Spin (first noblas, then with noblas disabled)
RUN spin build -- -Dallow-noblas=true -Dcpu-baseline=none -Dcpu-dispatch=none
RUN spin build -- -Dallow-noblas=false
# Install the package in editable mode to mimic a development environment
RUN python3.12 -m pip install --no-build-isolation -e .
# Default to a shell so users can inspect the image or run tests
CMD ["/bin/bash"]
Concerns - Build expects requirements/build_requirements.txt and requirements/test_requirements.txt in the numpy repo; missing files/paths will cause docker build failure. - Building with spin twice (noblas and no-noblas) may lead to long build times and large images; assess necessity for smoke tests. Build error - Traceback leading to subprocess.CalledProcessError: Command '['gpg', '-q', '--no-options', '--no-default-keyring', '--batch', '--keyring', '/etc/apt/trusted.gpg.d/deadsnakes-ubuntu-ppa.gpg', '--homedir', '/tmp/tmppplnt8er', '--import']' returned non-zero exit status 2. - During handling, another exception: softwareproperties.shortcuthandler.ShortcutException: Command '['gpg', '-q', '--no-options', '--no-default-keyring', '--batch', '--keyring', '/etc/apt/trusted.gpg.d/deadsnakes-ubuntu-ppa.gpg', '--homedir', '/tmp/tmppplnt8er', '--import']' returned non-zero exit status 2. - Dockerfile:26 - The build reports: failed to solve: process "/bin/sh -c ..." did not complete successfully: exit code: 1 Failing command/step - [ 3/10] RUN apt-get update && apt-get install -y --no-install-recommends software-properties-common && add-apt-repository -y ppa:deadsnakes/ppa && apt-get update && apt-get install -y --no-install-recommends python3.12 python3.12-venv python3.12-dev && rm -rf /var/lib/apt/lists/* - Exact failing point: add-apt-repository step trying to add ppa:deadsnakes/ppa. Missing packages or files - gpg-agent not installed when attempting GPG key import: gpg: error running '/usr/bin/gpg-agent': probably not installed - Deadsnakes PPA key import failed, causing the ShortcutException. Version mismatch / context - Note: Python 3.10 (jammy), Python3.12 (noble) are not provided by deadsnakes as upstream ubuntu provides those packages. This explains why installing python3.12 from this PPA on Ubuntu jammy fails due to lack of support.
FROM ubuntu:22.04
# Non-interactive apt
ENV DEBIAN_FRONTEND=noninteractive
# Install system build tooling and Python 3.12-like environment
RUN apt-get update && \
apt-get install -y --no-install-recommends \
ca-certificates \
build-essential \
ninja-build \
meson \
git \
pkg-config \
python3 \
python3-pip \
python3-venv \
python3-dev \
gfortran \
libgfortran5 \
&& rm -rf /var/lib/apt/lists/*
# Install spin (NumPy CI helper) from PyPI
RUN python3 -m pip install --no-cache-dir --upgrade pip setuptools wheel && \
python3 -m pip install --no-cache-dir spin
# Copy source code into the image
WORKDIR /src
COPY . /src
# Install Python build/test dependencies if present in the repo
RUN if [ -f requirements/build_requirements.txt ]; then python3 -m pip install --no-cache-dir -r requirements/build_requirements.txt; fi && \
if [ -f requirements/test_requirements.txt ]; then python3 -m pip install --no-cache-dir -r requirements/test_requirements.txt; fi
# Build from source using Meson/Spin (first noblas, then with noblas disabled)
RUN spin build -- -Dallow-noblas=true -Dcpu-baseline=none -Dcpu-dispatch=none
RUN spin build -- -Dallow-noblas=false
# Install the package in editable mode to mimic a development environment
RUN python3 -m pip install --no-build-isolation -e .
# Default to a shell so users can inspect the image or run tests
CMD ["/bin/bash"]
Key error details - Failing command/step: - [7/9] RUN spin build -- -Dallow-noblas=true -Dcpu-baseline=none -Dcpu-dispatch=none - Exact error message and exit code: - RuntimeError: The `vendored-meson/meson` git submodule does not exist! Run `git submodule update --init` to fix this problem. - Exit code: 1 - Missing packages or files mentioned: - Missing git submodule: vendored-meson/meson (submodule not present). Suggested fix: run git submodule update --init. - Version mismatch / environment notes observed: - apt-get install step shows GCC-related upgrades during package install (the log mentions upgrading: gcc-12-base, libgcc-s1, libstdc++6). - Meson-related tooling was updated during build (meson-python and related components pulled in; initial Meson version seen was 0.61.2, later replaced by Meson 1.10.2 via upgrades). - These indicate version changes in the build environment, but the immediate failure is due to the missing vendored submodule, not a direct incompatibility.
FROM ubuntu:20.04
# Non-interactive apt
ENV DEBIAN_FRONTEND=noninteractive
# Install system build tooling and Python 3.8 toolchain (as a safe baseline)
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
ninja-build \
ca-certificates \
git \
python3 \
python3-pip \
python3-venv \
python3-dev \
gfortran \
libgfortran5 \
meson \
pkg-config \
wget \
curl && \
rm -rf /var/lib/apt/lists/*
# Install spin (NumPy CI helper) from PyPI
RUN python3 -m pip install --no-cache-dir --upgrade pip setuptools wheel && \
python3 -m pip install --no-cache-dir spin
# Copy source code into the image
WORKDIR /src
COPY . /src
# Build from source using Meson/Spin (first noblas, then with noblas disabled)
RUN spin build -- -Dallow-noblas=true -Dcpu-baseline=none -Dcpu-dispatch=none
RUN spin build -- -Dallow-noblas=false
# Install the package in editable mode to mimic a development environment
RUN python3 -m pip install --no-build-isolation -e .
# Default to a shell so users can inspect the image or run tests
CMD ["/bin/bash"]
Summary: - Failing step (command): [6/8] RUN spin build -- -Dallow-noblas=true -Dcpu-baseline=none -Dcpu-dispatch=none - Exact error message and exit code: - TypeError: 'ABCMeta' object is not subscriptable - exit code: 1 - Evidence: Docker reported the failure at the spin build step with exit code 1 - Missing packages or files mentioned: None indicated (the apt-get install step completed; no missing-file errors shown) - Version mismatch / compatibility info: - Base image: ubuntu:20.04 (Python 3.8 in /usr/local/lib/python3.8) - Spin version: 0.13 (installed via pip in the build) - Potential root cause: Spin 0.13 appears incompatible with Python 3.8 in this environment, causing a typing-related TypeError (Decorator = Callable[[Callable], Callable] using ABCMeta) - Spin code path implicated: /usr/local/lib/python3.8/dist-packages/spin/cmds/util.py, line where Decorator = Callable[[Callable], Callable] is defined - Quick takeaway: This is likely a Spin/Python version compatibility issue (Spin 0.13 with Python 3.8). Consider using a Python version compatible with Spin (or upgrade Spin to a version that supports Python 3.8) or pin the environment to a known-good combination.
FROM ubuntu:jammy
ENV DEBIAN_FRONTEND=noninteractive
# Install essentials and Python 3.12 from deadsnakes to align with runtime 3.12
RUN apt-get update && \
apt-get install -y --no-install-recommends \
software-properties-common \
build-essential \
git \
curl \
ca-certificates && \
rm -rf /var/lib/apt/lists/*
# Install Python 3.12 from the deadsnakes PPA
RUN add-apt-repository ppa:deadsnakes/ppa -y && \
apt-get update && \
apt-get install -y --no-install-recommends \
python3.12 \
python3.12-venv \
python3.12-dev \
python3-pip && \
rm -rf /var/lib/apt/lists/*
# Upgrade pip and tooling
RUN python3.12 -m pip install --no-cache-dir --upgrade pip setuptools wheel
# Build tooling required for NumPy Meson spin-based builds
RUN python3.12 -m pip install --no-cache-dir spin meson ninja
# Open Fortran libraries (used by NumPy builds that rely on BLAS/OpenBLAS)
RUN apt-get update && \
apt-get install -y --no-install-recommends \
gfortran libgfortran5 && \
rm -rf /var/lib/apt/lists/*
# Copy the repository and set working directory
COPY . /src
WORKDIR /src
# Build steps (two phases) to mirror CI workflows: noblas first, then with BLAS
RUN spin build -- -Dallow-noblas=true -Dcpu-baseline=none -Dcpu-dispatch=none
RUN spin build -- -Dallow-noblas=false
# Default command
CMD ["/bin/bash"]
# Ignore git and Python build artifacts .git __pycache__/ *.pyc *.pyo *.pyd build/ dist/ *.egg-info/ *.egg-info *.tox .vscode/ .env .env.* *.tox/ *.pytest_cache/ .meson/ MesonBuild/ meson-out/ *.dll *.so *.dylib -src/
Status: VerifyBuild status: build_failed Failing step - RUN add-apt-repository ppa:deadsnakes/ppa -y && apt-get update && apt-get install -y --no-install-recommends python3.12 python3.12-venv python3.12-dev python3-pip && rm -rf /var/lib/apt/lists/* Exact errors - The container run did not complete: exit code: 1 - gpg: error running '/usr/bin/gpg-agent': probably not installed - gpg: failed to start agent '/usr/bin/gpg-agent': Configuration error - gpg: can't connect to the agent: Configuration error - Repository: 'deb https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu/ jammy main' - Traceback ... subprocess.CalledProcessError: Command '['gpg', '-q', '--no-options', '--no-default-keyring', '--batch', '--keyring', '/etc/apt/trusted.gpg.d/deadsnakes-ubuntu-ppa.gpg', '--homedir', '/tmp/tmpjyrxsxt_', '--import']' returned non-zero exit status 2. - softwareproperties.shortcuthandler.ShortcutException: Command '['gpg', '-q', '--no-options', '--no-default-keyring', '--batch', '--keyring', '/etc/apt/trusted.gpg.d/deadsnakes-ubuntu-ppa.gpg', '--homedir', '/tmp/tmpjyrxsxt_', '--import']' returned non-zero exit status 2. Missing packages/files - gpg-agent is not installed - DBus/system bus not available in container: Failed to open connection to "system" message bus; /run/dbus/system_bus_socket missing Version mismatch / notes - Note: Python 3.10 (jammy), Python3.12 (noble) are not provided by deadsnakes as upstream ubuntu provides those packages. - Indicates a mismatch between requested Python 3.12 and Deadsnakes support on jammy. Additional context - Build relies on deadsnakes PPA to install Python 3.12; if PPA is unavailable, image build fails. - Smoke tests only verify Python/PIP/Spin presence; not that repo was built or artifacts exist. Consider adding a test that exercises an artifact or a tiny import. Recommendations (actionable) - Pin to a base image with Python 3.12 or use a reproducible multi-stage build to avoid deadsnakes dependency. - Ensure gpg-agent and DBus are available in the build container if continuing with deadsnakes. - Consider alternatives to deadsnakes for Python 3.12 on Jammy, or adjust supported Python versions. - Update tests to verify an artifact or a tiny import if the project is intended to be importable.
FROM ubuntu:jammy
ENV DEBIAN_FRONTEND=noninteractive
# System dependencies for building Python and NumPy
RUN apt-get update && \
apt-get install -y --no-install-recommends \
ca-certificates \
build-essential \
libssl-dev \
zlib1g-dev \
libncurses5-dev \
libncursesw5-dev \
libreadline-dev \
libsqlite3-dev \
libgdbm-dev \
libdb5-compat-dev \
libbz2-dev \
liblzma-dev \
tk-dev \
libffi-dev \
curl \
git \
wget \
ca-certificates \
gfortran \
libgfortran5 \
pkg-config \
ninja-build \
ca-certificates \
\
&& rm -rf /var/lib/apt/lists/*
# Build Python 3.12 from source to avoid external PPAs
RUN mkdir -p /usr/src && \
cd /usr/src && \
wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tar.xz && \
tar -xf Python-3.12.0.tar.xz && \
cd Python-3.12.0 && \
./configure --enable-optimizations && \
make -j$(nproc) && \
make altinstall && \
cd / && \
rm -rf /usr/src/Python-3.12.0.tar.xz /usr/src/Python-3.12.0
# Ensure Python 3.12 is in PATH
ENV PATH=/usr/local/bin:$PATH
# Install Python tooling
RUN python3.12 -m ensurepip --upgrade
RUN python3.12 -m pip install --no-cache-dir --upgrade pip setuptools wheel
# Install spin/meson/ninja for the Meson-based build helper
RUN python3.12 -m pip install --no-cache-dir spin meson ninja
# Copy source and set workdir
COPY . /src
WORKDIR /src
# Build in two passes to mirror the CI workflow
RUN /bin/bash -lc 'export PATH=/usr/local/bin:$PATH; spin build -- -Dallow-noblas=true -Dcpu-baseline=none -Dcpu-dispatch=none'
RUN /bin/bash -lc 'export PATH=/usr/local/bin:$PATH; spin build -- -Dallow-noblas=false'
# Default to an interactive shell
CMD ["/bin/bash"]
Error summary: - Exact error message and exit code: - E: Unable to locate package libdb5-compat-dev (exit code: 100) - Failing command/step: - Dockerfile step [ 2/10 ]: RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates build-essential libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libgdbm-dev libdb5-compat-dev libbz2-dev liblzma-dev tk-dev libffi-dev curl git wget ca-certificates gfortran libgfortran5 pkg-config ninja-build ca-certificates && rm -rf /var/lib/apt/lists/* - Missing packages or files mentioned: - libdb5-compat-dev (not found in the repositories for this base image) - Version mismatch / context: - Base image shown: ubuntu:jammy (Jammy Jellyfish, Ubuntu 22.04). The apt sources for jammy are being used, and libdb5-compat-dev is not available in those repositories, suggesting a package availability/matching issue for this Ubuntu version.
FROM ubuntu:jammy
ENV DEBIAN_FRONTEND=noninteractive
# System dependencies for building Python and NumPy
RUN apt-get update && \
apt-get install -y --no-install-recommends \
ca-certificates \
build-essential \
libssl-dev \
zlib1g-dev \
libncurses5-dev \
libncursesw5-dev \
libreadline-dev \
libsqlite3-dev \
libgdbm-dev \
libbz2-dev \
liblzma-dev \
tk-dev \
libffi-dev \
curl \
git \
wget \
gfortran \
libgfortran5 \
pkg-config \
ninja-build \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Build Python 3.12 from source to avoid external PPAs
RUN mkdir -p /usr/src && \
cd /usr/src && \
wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tar.xz && \
tar -xf Python-3.12.0.tar.xz && \
cd Python-3.12.0 && \
./configure --enable-optimizations && \
make -j$(nproc) && \
make altinstall && \
cd / && \
rm -rf /usr/src/Python-3.12.0.tar.xz /usr/src/Python-3.12.0
# Ensure Python 3.12 is in PATH
ENV PATH=/usr/local/bin:$PATH
# Install Python tooling
RUN python3.12 -m ensurepip --upgrade
RUN python3.12 -m pip install --no-cache-dir --upgrade pip setuptools wheel
# Install spin/meson/ninja for the Meson-based build helper
RUN python3.12 -m pip install --no-cache-dir spin meson ninja
# Copy source and set workdir
COPY . /src
WORKDIR /src
# Build in two passes to mirror the CI workflow
RUN /bin/bash -lc 'export PATH=/usr/local/bin:$PATH; spin build -- -Dallow-noblas=true -Dcpu-baseline=none -Dcpu-dispatch=none'
RUN /bin/bash -lc 'export PATH=/usr/local/bin:$PATH; spin build -- -Dallow-noblas=false'
# Default to an interactive shell
CMD ["/bin/bash"]