FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONUNBUFFERED=1
ENV QT_QPA_PLATFORM=offscreen
RUN apt-get update && \
apt-get install -y --no-install-recommends \
python3 python3-pip python3-venv build-essential \
libgl1-mesa-dri libgl1-mesa-glx libx11-6 libxcb1 libxcb-icccm4 libxcb-image0 libxcb-render0 libxcb-render-util0 libxcb-keysyms1 libxkbcommon0 libfontconfig1 && \
rm -rf /var/lib/apt/lists/*
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install poetry
WORKDIR /workspace
COPY . /workspace/
RUN poetry install --no-root
RUN poetry build
RUN python3 -m pip install dist/*.whl
CMD ["dangerzone-cli","--help"]
# Docker build ignore file .git .github -tests **/__pycache__/ *.pyc *.pyo *.pyd venv/ env/ ENV/ dist/ build/ *.log *.tmp *.swap mazette.lock share/vendor/ share/tessdata/ __pycache__/ *.egg-info/ *.mypy_cache/ *.pytest_cache/
Build timed out after 600s
Concerns: The CMD uses dangerzone-cli --help; ensure the built wheel actually provides a console script named dangerzone-cli. If the entry point differs, the container may fail to start., The smoke test relies on a tests/smoke directory existing in the repo; if this path doesn't exist in the image, the test could fail. Smoke [FAIL]: cd /workspace && pytest -q tests/smoke -x Output: sh: 1: pytest: not found
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONUNBUFFERED=1
ENV QT_QPA_PLATFORM=offscreen
RUN apt-get update && \
apt-get install -y --no-install-recommends \
python3 python3-pip python3-venv build-essential \
libgl1-mesa-dri libgl1-mesa-glx libx11-6 libxcb1 libxcb-icccm4 libxcb-image0 libxcb-render0 libxcb-render-util0 libxcb-keysyms1 libxkbcommon0 libfontconfig1 && \
rm -rf /var/lib/apt/lists/*
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install poetry
WORKDIR /workspace
COPY . /workspace/
# Install runtime and test dependencies (including pytest for smoke tests)
RUN poetry install --no-root --with test
RUN poetry build
RUN python3 -m pip install dist/*.whl
CMD ["dangerzone-cli","--help"]
Failing step and error
- Failing step: [9/9] RUN python3 -m pip install dist/*.whl (Dockerfile:23)
- Exact error message:
- ERROR: Could not install packages due to an OSError: [Errno 28] No space left on device
- OSError: [Errno 28] No space left on device (during tempfile cleanup)
- Exit code: 1
- Command that failed: python3 -m pip install dist/*.whl
Context and version info
- Base image involved: ubuntu:22.04 (as seen in prior steps)
- The wheel installation was building and installing dangerzone==0.10.0 and its dependencies (no root warnings noted as blockers in this step)
- Dependency constraints in play for the wheel:
- PyMuPDF<2.0.0,>=1.25.3 (got pymupdf-1.27.2.3)
- PySide6<7.0.0,>=6.7.1 (got pyside6-6.11.1)
- Other Python deps: PySide6_Essentials==6.11.1, PySide6_Addons==6.11.1, etc.
- No version mismatch indicated; the resolved versions fit the declared constraints. The failure is due to disk space rather than incompatible packages.
Missing packages/files
- None mentioned. The failure is due to insufficient disk space ("No space left on device").
Recommendation (quick check)
- Free up disk space or allocate more space to the build environment, then re-run the last step. If space is constrained by image size, consider slimming dependencies or using a smaller base image.FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONUNBUFFERED=1
ENV QT_QPA_PLATFORM=offscreen
# Install base system dependencies
RUN apt-get update && \
apt-get install -y --no-install-recommends \
python3 python3-pip python3-venv build-essential \
libgl1-mesa-dri libgl1-mesa-glx libx11-6 libxcb1 libxcb-icccm4 libxcb-image0 libxcb-render0 libxcb-render-util0 \
libxcb-keysyms1 libxkbcommon0 libfontconfig1 && \
rm -rf /var/lib/apt/lists/*
# Install Poetry (Python packaging tool)
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install poetry
WORKDIR /workspace
# Pre-copy the pyproject.toml to leverage Docker cache for dependencies
COPY pyproject.toml poetry.lock /workspace/
# Build in-project virtual environment to minimize image size
ENV POETRY_VIRTUALENVS_IN_PROJECT=true
RUN poetry config virtualenvs.in-project true && \
poetry install --no-root
# Copy the rest of the project
COPY . /workspace/
# Install the package into the in-project virtualenv
RUN poetry install
# Ensure the virtualenv bin directory is in PATH
ENV PATH=/workspace/.venv/bin:$PATH
# Expose nothing specific; container is intended to be run via CLI
CMD ["dangerzone-cli","--help"]
Summary (under 1500 chars): - Exact error message and exit code - OSError - [Errno 28] No space left on device - Cannot install pyside6-addons. - Cannot install pyside6-essentials. - Exit code: 1 - Failing command/step - [7/9] RUN poetry config virtualenvs.in-project true && poetry install --no-root - Missing packages or files mentioned - pyside6-addons - pyside6-essentials - Version mismatch info - No explicit version mismatch reported in the excerpt. The failure occurs during Poetry-based install inside a Python 3.10 environment (virtualenv at /workspace/.venv) while pulling PySide6-related wheels. Root cause appears to be disk space (No space left on device).
FROM ubuntu:22.04 as builder
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y --no-install-recommends \
python3 python3-pip python3-venv build-essential \
libgl1-mesa-dri libgl1-mesa-glx libx11-6 libxcb1 libxcb-icccm4 libxcb-image0 libxcb-render0 libxcb-render-util0 \
libxcb-keysyms1 libxkbcommon0 libfontconfig1 \
ca-certificates && \
rm -rf /var/lib/apt/lists/*
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install poetry
WORKDIR /workspace
COPY pyproject.toml poetry.lock /workspace/
ENV POETRY_VIRTUALENVS_IN_PROJECT=true
RUN poetry config virtualenvs.in-project true && \
poetry install --no-root
COPY . /workspace/
RUN poetry build
# In the final image, we will install the produced wheel from /workspace/dist
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONUNBUFFERED=1
ENV QT_QPA_PLATFORM=offscreen
RUN apt-get update && \
apt-get install -y --no-install-recommends \
python3 python3-pip python3-venv build-essential \
libgl1-mesa-dri libgl1-mesa-glx libx11-6 libxcb1 libxcb-icccm4 libxcb-image0 libxcb-render0 libxcb-render-util0 \
libxcb-keysyms1 libxkbcommon0 libfontconfig1 \
ca-certificates && \
rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
# Copy the built wheel from the builder
COPY --from=builder /workspace/dist/*.whl /tmp/dangerzone.whl
# Install the wheel (this will pull in dependencies as needed)
RUN python3 -m pip install /tmp/dangerzone.whl && \
rm -f /tmp/dangerzone.whl && \
rm -rf /root/.cache/pip
ENV PATH=/workspace/.venv/bin:$PATH
CMD ["dangerzone-cli", "--help"]
FROM ubuntu:22.04 as builder
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y --no-install-recommends \
python3 python3-pip python3-venv build-essential \
libgl1-mesa-dri libgl1-mesa-glx libx11-6 libxcb1 libxcb-icccm4 libxcb-image0 libxcb-render0 libxcb-render-util0 \
libxcb-keysyms1 libxkbcommon0 libfontconfig1 \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install poetry
WORKDIR /workspace
COPY pyproject.toml poetry.lock /workspace/
ENV POETRY_VIRTUALENVS_IN_PROJECT=true
RUN poetry config virtualenvs.in-project true && \
poetry install --no-root
COPY . /workspace/
RUN poetry build
# In the final image, we will install the produced wheel from /workspace/dist
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONUNBUFFERED=1
ENV QT_QPA_PLATFORM=offscreen
RUN apt-get update && \
apt-get install -y --no-install-recommends \
python3 python3-pip python3-venv build-essential \
libgl1-mesa-dri libgl1-mesa-glx libx11-6 libxcb1 libxcb-icccm4 libxcb-image0 libxcb-render0 libxcb-render-util0 \
libxcb-keysyms1 libxkbcommon0 libfontconfig1 \
ca-certificates && \
rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
COPY --from=builder /workspace/dist/*.whl /tmp/dangerzone.whl
RUN python3 -m pip install /tmp/dangerzone.whl && \
rm -f /tmp/dangerzone.whl && \
rm -rf /root/.cache/pip
ENV PATH=/workspace/.venv/bin:$PATH
CMD ["dangerzone-cli", "--help"]
Summary:
- Exact error message and exit code
- dpkg: unrecoverable fatal error, aborting:
unable to flush /var/lib/dpkg/updates/tmp.i after padding: No space left on device
- E: Sub-process /usr/bin/dpkg returned an error code (2)
- Docker build exit code: 100 (build failed)
- Failing command/step
- [stage-1 2/5] RUN apt-get update && apt-get install -y --no-install-recommends python3 python3-pip python3-venv build-essential libgl1-mesa-dri libgl1-mesa-glx libx11-6 libxcb1 libxcb-icccm4 libxcb-image0 libxcb-render0 libxcb-render-util0 libxcb-keysyms1 libxkbcommon0 libfontconfig1 ca-certificates && rm -rf /var/lib/apt/lists/*
- Missing packages or files mentioned
- None reported; the failure is due to no space left on device during dpkg processing, not missing packages/files.
- Version mismatch information
- Base image uses Ubuntu 22.04 (jammy) as part of ubuntu:22.04 lineage
- Package versions shown (examples):
- libllvm15: 1:15.0.7-0ubuntu0.22.04.3
- python3.10-minimal: 3.10.12-1~22.04.15
- python3-minimal: 3.10.6-1~22.04.1
- No explicit version mismatch error is shown; the failure is space-related during installation.FROM ubuntu:22.04 as builder
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y --no-install-recommends \
python3 python3-pip python3-venv build-essential \
libgl1-mesa-dri libgl1-mesa-glx libx11-6 libxcb1 libxcb-icccm4 libxcb-image0 libxcb-render0 libxcb-render-util0 \
libxcb-keysyms1 libxkbcommon0 libfontconfig1 \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install --no-cache-dir poetry
WORKDIR /workspace
COPY pyproject.toml poetry.lock /workspace/
ENV POETRY_VIRTUALENVS_IN_PROJECT=true
RUN poetry config virtualenvs.in-project true && \
poetry install --no-root
COPY . /workspace/
RUN poetry build
# In the final image, we will install the produced wheel from /workspace/dist
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
ENV QT_QPA_PLATFORM=offscreen
RUN apt-get update && \
apt-get install -y --no-install-recommends \
python3 python3-pip python3-venv libgl1-mesa-dri libgl1-mesa-glx libx11-6 libxcb1 libxcb-icccm4 libxcb-image0 libxcb-render0 libxcb-render-util0 \
libxcb-keysyms1 libxkbcommon0 libfontconfig1 \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
COPY --from=builder /workspace/dist/*.whl /tmp/dangerzone.whl
RUN python3 -m pip install /tmp/dangerzone.whl \
&& rm -f /tmp/dangerzone.whl \
&& rm -rf /root/.cache/pip
CMD ["dangerzone-cli","--help"]
- VerifyBuild status: build_failed - Core error: No space left on device during Poetry install; cannot install pymupdf, mypy, pyside6-essentials - Failing command/step: Step [builder 7/9] RUN poetry config virtualenvs.in-project true && poetry install --no-root; Dockerfile location: builder stage 7 - Missing packages/files referenced: pymupdf, mypy, pyside6-essentials - Evidence/log snippets: “Cannot install pymupdf.”, “Cannot install mypy.”, “Cannot install pyside6-essentials.”; root cause: OSError [Errno 28] No space left on device - Environment details: Base image Ubuntu 22.04 (jammy) with Python 3.10.x; Poetry 2.4.1; pip 26.1.1; Python environment in /workspace/.venv - Version mismatch note: No explicit package-version mismatch indicated; failure attributed to disk space, not incompatibility - Final stage behavior: Copies wheel (*.whl) to /tmp/dangerzone.whl; if more than one wheel is produced, COPY may fail at build time - CLI expectation: image relies on dangerzone-cli installed as a console script; if wheel name or entry-point differs, CMD may not resolve
Concise summary of the Dangerzone CLI tool (highlights + flow)
- Tool / entry point
- Dangerzone CLI Python app using Click. Version shown via get_version() in banner; ASCII banner includes “Dangerzone v{version}” and https://dangerzone.rocks.
- Key imports / packages
- External: click, colorama
- Internal: args, errors, shutdown, startup, document (ARCHIVE_SUBDIR, SAFE_EXTENSION), isolation_providers (Container, Dummy, Qubes), DangerzoneCore, PodmanMachineManager, Settings, updater.install, util (get_version, replace_control_chars)
- CLI command and options
- Command: run
- Options:
- --output-filename: validated by args.validate_output_filename; default is a filename ending with SAFE_EXTENSION
- --ocr-lang: OCR language code
- --archive: archive unsafe originals to ARCHIVE_SUBDIR
- --unsafe-dummy-conversion: hidden flag (mapped to dummy_conversion)
- filenames: 0+ input file paths (nargs=-1)
- --debug: enable debug logs
- --set-container-runtime: set or reset container runtime (special handling)
- --linger: do not stop Podman VM after conversions (Windows/macOS)
- --version: shows version
- Validation: if multiple input files with --output-filename, error 1
- Core behavior
- If --set-container-runtime provided:
- value "default": unset custom runtime and print confirmation
- other: set custom runtime, print confirmation, exit(0)
- Must have at least one input filename; otherwise usage error
- Provider selection:
- dev + dummy conversion => Dummy
- native QuBes conversion => Qubes
- otherwise => Container(debug)
- OCR language validation against dangerzone.ocr_languages; if invalid, print valid codes and exit(1)
- Startup / installation flow (when provider.requires_install())
- Tasks prepared: WSLInstallTask, MachineStopOthersTask, MachineInitTask, MachineStartTask, UpdateCheckTask, ContainerInstallTask
- StartupLogic(tasks).run()
- Document processing
- If one input and output filename given: dangerzone.add_document_from_filename(input, output, archive)
- If multiple inputs with output filename: error and exit(1)
- Else: add each input document individually (archive option respected)
- Conversion & cleanup
- Print header "Converting document(s) to safe PDF"
- dangerzone.convert_documents(ocr_lang)
- If installation was done and not linger, shutdown container and VM (ContainerStopTask, MachineStopTask)
- Output results
- documents_safe: list of safe PDFs
- documents_failed: list of failed inputs
- On success: print "Safe PDF(s) created successfully" and list filenames (sanitized via replace_control_chars)
- If archive is enabled, print message about moving unsafe originals to ARCHIVE_SUBDIR
- On failure: print each failed input and exit(1)
- Exit 0 if all succeed
- Logging
- setup_logging: custom formatter; in dev mode (dangerzone_dev), use DEBUG with simple format; otherwise prefix non-INFO logs with level name
- Misc
- args.override_parser_and_check_suspicious_options(run) hooks additional option checks
- display_banner prints ASCII art + version line and URL
- Notable constants / references
- ARCHIVE_SUBDIR
- SAFE_EXTENSION
- get_version() (for banner)
- replace_control_chars (sanitizing output)
- Output patterns to expect
- “Converting document(s) to safe PDF”
- “Safe PDF(s) created successfully”
- “Unsafe (original) documents moved to 'ARCHIVE_SUBDIR' subdirectory” (if archive)
- “Failed to convert document(s)” with input filenames for failures
- No external errors shown in the excerpt; behavior relies on internal modules (startup/shutdown, provider classes, etc.)
Total length: concise, under 1500 chars, preserving actionable items like options, flow, and exit behavior.FROM ubuntu:22.04 as builder
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y --no-install-recommends \
python3 python3-pip python3-venv build-essential \
libgl1-mesa-dri libgl1-mesa-glx libx11-6 libxcb1 libxcb-icccm4 libxcb-image0 libxcb-render0 libxcb-render-util0 \
libxcb-keysyms1 libxkbcommon0 libfontconfig1 \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install --no-cache-dir poetry
WORKDIR /workspace
COPY pyproject.toml poetry.lock /workspace/
ENV POETRY_VIRTUALENVS_IN_PROJECT=true
RUN poetry config virtualenvs.in-project true && \
poetry install --no-root
COPY . /workspace/
RUN poetry build
# In the final image, we will install the produced wheel from /workspace/dist
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
ENV QT_QPA_PLATFORM=offscreen
RUN apt-get update && \
apt-get install -y --no-install-recommends \
python3 python3-pip python3-venv libgl1-mesa-dri libgl1-mesa-glx libx11-6 libxcb1 libxcb-icccm4 libxcb-image0 libxcb-render0 libxcb-render-util0 \
libxcb-keysyms1 libxkbcommon0 libfontconfig1 \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
COPY --from=builder /workspace/dist/*.whl /tmp/dangerzone.whl
RUN python3 -m pip install /tmp/dangerzone.whl \
&& rm -f /tmp/dangerzone.whl \
&& rm -rf /root/.cache/pip
# Ensure the console script is in PATH
ENV PATH=/usr/local/bin:/usr/bin:/bin:$PATH
CMD ["dangerzone-cli","--help"]
- Failing step (command): [builder 7/9] RUN poetry config virtualenvs.in-project true && poetry install --no-root - Exact error message and exit code: ERROR: process "/bin/sh -c poetry config virtualenvs.in-project true && poetry install --no-root" did not complete successfully: exit code: 1 - Other relevant error details shown Just before the failure: - OSError [Errno 28] No space left on device - Cannot install pyside6-essentials. - Cannot install pyside6-addons. - Missing packages/files mentioned: Not missing files; failure is due to disk space (No space left on device) during installation of PySide6 components. - Version mismatch information: None indicated in the log. Environment shows Ubuntu 22.04 and Python 3.10, with Poetry installing dependencies; no explicit version mismatch reported. The failure is due to insufficient disk space rather than incompatibilities.
FROM ubuntu:22.04
# Non-interactive frontend for Debian/Ubuntu
ENV DEBIAN_FRONTEND=noninteractive
# Install system dependencies for building and running PySide6-based GUI apps
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
python3 \
python3-pip \
python3-venv \
build-essential \
libgl1-mesa-dri \
libgl1-mesa-glx \
libx11-6 \
libxcb1 \
libxcb-icccm4 \
libxcb-image0 \
libxcb-render0 \
libxcb-render-util0 \
libxcb-keysyms1 \
libxkbcommon0 \
libfontconfig1 \
ca-certificates \
tzdata; \
rm -rf /var/lib/apt/lists/*;
# Install Poetry (Python dependency manager)
RUN python3 -m pip install --no-cache-dir --upgrade pip
RUN python3 -m pip install --no-cache-dir poetry
# Build and install the Dangerzone project from source
WORKDIR /workspace
# First install dependencies (without building/installing the package itself)
COPY pyproject.toml poetry.lock* /workspace/
RUN poetry config virtualenvs.create false && \
poetry install --no-root --no-interaction
# Copy the full source tree
COPY . /workspace/
# Build the package and install the built wheel
RUN poetry build && \
pip install --no-cache-dir dist/*.whl
# Ensure GUI can run headless (tests and CI may use offscreen rendering)
ENV QT_QPA_PLATFORM=offscreen
WORKDIR /workspace
# Default to showing CLI help if no arguments are provided
CMD ["dangerzone-cli", "--help"]
FROM ubuntu:22.04
# Non-interactive frontend for Debian/Ubuntu
ENV DEBIAN_FRONTEND=noninteractive
# Install system dependencies for building and running PySide6-based GUI apps
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
python3 \
python3-pip \
python3-venv \
build-essential \
libgl1-mesa-dri \
libgl1-mesa-glx \
libx11-6 \
libxcb1 \
libxcb-icccm4 \
libxcb-image0 \
libxcb-render0 \
libxcb-render-util0 \
libxcb-keysyms1 \
libxkbcommon0 \
libfontconfig1 \
ca-certificates \
tzdata; \
rm -rf /var/lib/apt/lists/*;
# Install Poetry (Python dependency manager)
RUN python3 -m pip install --no-cache-dir --upgrade pip
RUN python3 -m pip install --no-cache-dir poetry
# Build and install the Dangerzone project from source
WORKDIR /workspace
# First install dependencies (without building/installing the package itself)
COPY pyproject.toml poetry.lock* /workspace/
RUN poetry config virtualenvs.create false && \
poetry install --no-root --no-interaction
# Copy the full source tree
COPY . /workspace/
# Build the package and install the built wheel
RUN poetry build && \
pip install --no-cache-dir dist/*.whl
# Ensure GUI can run headless (tests and CI may use offscreen rendering)
ENV QT_QPA_PLATFORM=offscreen
WORKDIR /workspace
# Default to showing CLI help if no arguments are provided
CMD ["dangerzone-cli", "--help"]
$HOME/.cache/pip **/.cache **/__pycache__ **/.pytest_cache **/.venv **/.venv*/ **/dist/ **/build/ **/.mypy_cache **/.ruff_cache **/.Mazette **/.pytest_cache
**/.git **/node_modules **/dist **/__pycache__ **/.pytest_cache
Build status and context - Status: build_failed - Docker/poetry notes: Dockerfile relies on Poetry to install dependencies and build wheel; COPY pyproject.toml poetry.lock* /workspace/ assumes poetry.lock exists; GUI app built with PySide6 but run with QT_QPA_PLATFORM=offscreen; default CMD is dangerzone-cli --help. Failing step and error - Step: [7/10] RUN poetry config virtualenvs.create false && poetry install --no-root --no-interaction - Command reference: the invocation shown at the error - Overall error: ERROR: process "/bin/sh -c poetry config virtualenvs.create false && poetry install --no-root --no-interaction" did not complete successfully: exit code: 1 - Underlying OSEs: - OSError [Errno 28] No space left on device at /usr/local/lib/python3.10/dist-packages/poetry/installation/wheel_installer.py:79 in write_to_fs - Cannot install pymupdf. - OSError [Errno 28] No space left on device at /usr/local/lib/python3.10/dist-packages/poetry/installation/wheel_installer.py:79 in write_to_fs - Cannot install numpy. - OSError [Errno 28] No space left on device at /usr/local/lib/python3.10/dist-packages/poetry/utils/helpers.py:240 in download_with_progress - Cannot install pyside6-essentials. - OSError [Errno 28] No space left on device at /usr/local/lib/python3.10/dist-packages/poetry/utils/helpers.py:240 in download_with_progress - Cannot install pyside6-addons. Missing/misleading references - Missing packages referenced due to disk space, not missing files: pymupdf, numpy, pyside6-essentials, pyside6-addons. - No actual missing-file path cited. Dependency/version notes - Downgrades during Installing dependencies from lock file: - anyio: 4.13.0 -> 4.11.0 - certifi: 2026.4.22 -> 2025.11.12 - charset-normalizer: 3.4.7 -> 3.4.4 - httpx: 0.28.1 -> 0.27.2 - idna: 3.15 -> 3.11 - importlib-metadata: 9.0.0 -> 8.7.0 - packaging: 26.2 -> 25.0 - platformdirs: 4.9.6 -> 4.5.0 Actionable items inferred - Free disk space on build host/container (space error is the root cause). - Ensure poetry.lock exists and is accessible; consider cleaning cache or increasing build image space. - If needed, adjust Docker build to limit simultaneous large downloads or pre-cache wheels.
FROM ubuntu:22.04 AS builder
# Non-interactive frontend for Debian/Ubuntu
ENV DEBIAN_FRONTEND=noninteractive
# Install system dependencies for building PySide6-based GUI apps
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
python3 \
python3-pip \
python3-venv \
build-essential \
libgl1-mesa-dri \
libgl1-mesa-glx \
libx11-6 \
libxcb1 \
libxcb-icccm4 \
libxcb-image0 \
libxcb-render0 \
libxcb-render-util0 \
libxcb-keysyms1 \
libxkbcommon0 \
libfontconfig1 \
ca-certificates \
tzdata; \
rm -rf /var/lib/apt/lists/*;
# Install Poetry (Python dependency manager)
RUN python3 -m pip install --no-cache-dir --upgrade pip
RUN python3 -m pip install --no-cache-dir poetry
# Build and install the Dangerzone project from source
WORKDIR /workspace
# First install dependencies (without building/installing the package itself)
COPY pyproject.toml poetry.lock* /workspace/
RUN poetry config virtualenvs.create false && \
poetry install --no-root --no-interaction
# Copy the full source tree
COPY . /workspace/
# Build the package (wheel)
RUN poetry build
# Install the built wheel into the builder's environment (to reduce final image needs)
RUN pip install --no-cache-dir dist/*.whl
# Final stage
FROM ubuntu:22.04
# Non-interactive frontend for Debian/Ubuntu
ENV DEBIAN_FRONTEND=noninteractive
# Install runtime dependencies (smaller footprint than build tools)
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
python3 \
python3-pip \
python3-venv \
libgl1-mesa-dri \
libgl1-mesa-glx \
libx11-6 \
libxcb1 \
libxcb-image0 \
libxcb-render0 \
libxcb-render-util0 \
libxcb-icccm4 \
libxcb-keysyms1 \
libxkbcommon0 \
libfontconfig1 \
ca-certificates \
tzdata; \
rm -rf /var/lib/apt/lists/*;
# Copy the built wheel from the builder stage
COPY --from=builder /workspace/dist/*.whl /tmp/
# Install the built wheel
RUN python3 -m pip install --no-cache-dir /tmp/*.whl
# Ensure GUI can run headless (tests and CI may use offscreen rendering)
ENV QT_QPA_PLATFORM=offscreen
WORKDIR /workspace
# Default to showing CLI help if no arguments are provided
CMD ["dangerzone-cli", "--help"]
FROM ubuntu:22.04 # placeholder template
Exact error message and exit code - ERROR: process "/bin/sh -c poetry config virtualenvs.create false && poetry install --no-root --no-interaction" did not complete successfully: exit code: 1 - Underlying cause repeatedly shown: OSError [Errno 28] No space left on device Failing command/step - [builder 7/10] RUN poetry config virtualenvs.create false && poetry install --no-root --no-interaction - Dockerfile line: RUN poetry config virtualenvs.create false && poetry install --no-root --no-interaction Missing packages or files mentioned - Packages that could not be installed due to the space issue: - types-pygments - pyside6-essentials - pyside6-addons - types-docutils - Note: The errors are triggered by disk space exhaustion rather than missing files; several packages fail to install because of No space left on device during Poetry wheel/download steps. Version mismatch info - Dependency reconciliation visible as version downgrades to satisfy the lockfile (not a hard mismatch, but intentional downgrades): - Downgrading anyio (4.13.0 -> 4.11.0) - Downgrading certifi (2026.4.22 -> 2025.11.12) - Downgrading charset-normalizer (3.4.7 -> 3.4.4) - Downgrading httpx (0.28.1 -> 0.27.2) - Downgrading idna (3.15 -> 3.11) - Downgrading importlib-metadata (9.0.0 -> 8.7.0) - Downgrading packaging (26.2 -> 25.0) - Downgrading platformdirs (4.9.6 -> 4.5.0) - Also noted: setuptools updated during installation (59.6.0 -> 80.9.0) Root cause (summary) - The build encounters No space left on device during Poetry-based dependency installation, causing multiple package installations to fail and ultimately the Poetry step to exit with code 1.
FROM ubuntu:22.04 AS builder
# Non-interactive frontend for Debian/Ubuntu
ENV DEBIAN_FRONTEND=noninteractive
# Reduce space usage for caches
ENV POETRY_CACHE_DIR=/tmp/poetry-cache
ENV PIP_CACHE_DIR=/tmp/pip-cache
# Install system dependencies for building PySide6-based GUI apps
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
python3 \
python3-pip \
python3-venv \
build-essential \
libgl1-mesa-dri \
libgl1-mesa-glx \
libx11-6 \
libxcb1 \
libxcb-icccm4 \
libxcb-image0 \
libxcb-render0 \
libxcb-render-util0 \
libxcb-keysyms1 \
libxkbcommon0 \
libfontconfig1 \
ca-certificates \
tzdata; \
rm -rf /var/lib/apt/lists/*;
# Install Poetry (Python dependency manager)
RUN python3 -m pip install --no-cache-dir --upgrade pip
RUN python3 -m pip install --no-cache-dir poetry
# Build and install the Dangerzone project from source
WORKDIR /workspace
# First install dependencies (without building/installing the package itself)
COPY pyproject.toml poetry.lock* /workspace/
RUN poetry config virtualenvs.create false && \
poetry install --no-root --no-interaction
# Copy the full source tree
COPY . /workspace/
# Build the package (wheel)
RUN poetry build
# Install the built wheel into the builder's environment (to reduce final image needs)
RUN pip install --no-cache-dir dist/*.whl
# Final stage
FROM ubuntu:22.04
# Non-interactive frontend for Debian/Ubuntu
ENV DEBIAN_FRONTEND=noninteractive
# Install runtime dependencies (smaller footprint than build tools)
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
python3 \
python3-pip \
python3-venv \
libgl1-mesa-dri \
libgl1-mesa-glx \
libx11-6 \
libxcb1 \
libxcb-image0 \
libxcb-render0 \
libxcb-render-util0 \
libxcb-icccm4 \
libxcb-keysyms1 \
libxkbcommon0 \
libfontconfig1 \
ca-certificates \
tzdata; \
rm -rf /var/lib/apt/lists/*;
# Copy the built wheel from the builder stage
COPY --from=builder /workspace/dist/*.whl /tmp/
# Install the built wheel
RUN python3 -m pip install --no-cache-dir /tmp/*.whl
# Ensure GUI can run headless (tests and CI may use offscreen rendering)
ENV QT_QPA_PLATFORM=offscreen
WORKDIR /workspace
# Default to showing CLI help if no arguments are provided
CMD ["dangerzone-cli", "--help"]
Summary (under 1500 chars):
- Build status: build_failed
- Failing step:
- Builder step [builder 2/10]: RUN set -eux; apt-get update; apt-get install -y --no-install-recommends python3 ... tzdata; rm -rf /var/lib/apt/lists/*;
- Exact error messages:
- "[Errno 28] No space left on devicedpkg: error processing package python3.10 (--configure):"
- "dpkg: unrecoverable fatal error, aborting: unable to fill /var/lib/dpkg/updates/tmp.i with padding: No space left on device"
- "E: Sub-process /usr/bin/dpkg returned an error code (2)"
- The overall build ends: "failed to solve: ... exit code: 100"
- Missing packages or files:
- "Package python3.10 is not configured yet." (dpkg: dependency problems prevent configuration of python3)
- "python3 depends on python3.10 (>= 3.10.6-1~); however: Package python3.10 is not configured yet."
- Version mismatch info:
- Observed mixed Python 3.10 component versions during apt install:
- python3-minimal: 3.10.12-1~22.04.15 (seen during install)
- Later: python3-minimal: 3.10.6-1~22.04.1 (selected/unpacked later)
- Other components show 3.10.12-1~22.04.15 vs 3.10.6-1~22.04.1, indicating a version mismatch in Ubuntu jammy.
- Root cause:
- Install ran out of disk space during apt/dpkg, causing multiple packages (notably python3.10 and stdlib) to fail configuration and terminate the build.
- Final status:
- Build failed with exit code 100.
- Additional actionable notes (from Concerns):
- COPY --from=builder /workspace/dist/*.whl /tmp/ relies on the wheel existing at that path; pin to exact filename or use an explicit path.
- Final image installs a broad set of runtime dependencies (including many X11/GL libs); to reduce size, consider narrowing dependencies once PySide6 works with a minimal set.
- CMD defaults to dangerzone-cli --help; if the intended default is a GUI app or a different CLI entrypoint, ensure the entrypoint matches the installed console script in the wheel.FROM ubuntu:22.04 AS builder
# Non-interactive frontend for Debian/Ubuntu
ENV DEBIAN_FRONTEND=noninteractive
# Reduce space usage for caches
ENV POETRY_CACHE_DIR=/tmp/poetry-cache
ENV PIP_CACHE_DIR=/tmp/pip-cache
# Install system dependencies for building PySide6-based GUI apps
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
python3 \
python3-pip \
python3-venv \
build-essential \
libgl1-mesa-dri \
libgl1-mesa-glx \
libx11-6 \
libxcb1 \
libxcb-icccm4 \
libxcb-image0 \
libxcb-render0 \
libxcb-render-util0 \
libxcb-keysyms1 \
libxkbcommon0 \
libfontconfig1 \
ca-certificates \
tzdata; \
rm -rf /var/lib/apt/lists/*; \
apt-get clean; \
rm -rf /var/cache/apt/archives/*; \
rm -rf /usr/share/doc/* /usr/share/man/* /usr/share/locale/*
# Install Poetry (Python dependency manager)
RUN python3 -m pip install --no-cache-dir --upgrade pip
RUN python3 -m pip install --no-cache-dir poetry
# Build and install the Dangerzone project from source
WORKDIR /workspace
# First install dependencies (without building/installing the package itself)
COPY pyproject.toml poetry.lock* /workspace/
RUN poetry config virtualenvs.create false && \
poetry install --no-root --no-interaction
# Copy the full source tree
COPY . /workspace/
# Build the package (wheel)
RUN poetry build
# Install the built wheel into the builder's environment (to reduce final image needs)
RUN pip install --no-cache-dir dist/*.whl
# Optional cleanup to reduce image size before final stage
RUN rm -rf /root/.cache/pip /root/.cache/pypoetry
# Final stage
FROM ubuntu:22.04
# Non-interactive frontend for Debian/Ubuntu
ENV DEBIAN_FRONTEND=noninteractive
# Install runtime dependencies (smaller footprint than build tools)
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
python3 \
python3-pip \
python3-venv \
libgl1-mesa-dri \
libgl1-mesa-glx \
libx11-6 \
libxcb1 \
libxcb-image0 \
libxcb-render0 \
libxcb-render-util0 \
libxcb-icccm4 \
libxcb-keysyms1 \
libxkbcommon0 \
libfontconfig1 \
ca-certificates \
tzdata; \
rm -rf /var/lib/apt/lists/*; \
apt-get clean; \
rm -rf /usr/share/doc/* /usr/share/man/* /usr/share/locale/*
# Copy the built wheel from the builder stage
COPY --from=builder /workspace/dist/*.whl /tmp/
# Install the built wheel
RUN python3 -m pip install --no-cache-dir /tmp/*.whl
# Ensure GUI can run headless (tests and CI may use offscreen rendering)
ENV QT_QPA_PLATFORM=offscreen
WORKDIR /workspace
# Default to showing CLI help if no arguments are provided
CMD ["dangerzone-cli", "--help"]
- Build status: build_failed
- Concerns
- COPY --from=builder /workspace/dist/*.whl /tmp/ may fail if the glob does not match (Docker glob handling)
- COPY pyproject.toml poetry.lock* /workspace/ relies on poetry.lock being present; if lock file is absent, the glob may fail during build
- Final CMD assumes a console script named dangerzone-cli exists; entry point may differ if wheel packaging changes
- Build error (exact messages and exit code)
- [Errno 28] No space left on devicedpkg: error processing package python3.10 (--configure): installed python3.10 package post-installation script subprocess returned error exit status 1
- dpkg: unrecoverable fatal error, aborting: unable to flush /var/lib/dpkg/updates/tmp.i after padding: No space left on device
- Exit code: 100
- Failing command/step
- Dockerfile step: RUN that installs system dependencies
- Command:
RUN set -eux; apt-get update; apt-get install -y --no-install-recommends python3 python3-pip python3-venv build-essential libgl1-mesa-dri libgl1-mesa-glx libx11-6 libxcb1 libxcb-icccm4 libxcb-image0 libxcb-render0 libxcb-render-util0 libxcb-keysyms1 libxkbcommon0 libfontconfig1 ca-certificates tzdata; rm -rf /var/lib/apt/lists/*; apt-get clean; rm -rf /usr/share/doc/* /usr/share/man/* /usr/share/locale/*
- Failure occurs during apt/dpkg installation in the builder (exit 100)
- Missing packages or files
- No missing package files mentioned; log indicates disk space exhaustion (No space left on device)
- Version mismatch info
- python3-minimal 3.10.6-1~22.04.1
- python3.10-minimal 3.10.12-1~22.04.15
- libpython3-stdlib 3.10.12-1~22.04.15 (and later 3.10.6-1~22.04.1 appears)
- python3 3.10.6-1~22.04.1
- Indicates mixed/inconsistent Python-related package versions being configured in the same apt transaction (e.g., 3.10.6 vs 3.10.12)
- Notes
- Root cause appears to be insufficient disk space during apt/dpkg, not a single missing file. Error lines show “No space left on device” and a dpkg fatal error while processing python3.10, leading to exit code 100.FROM ubuntu:22.04 AS builder
# Non-interactive frontend for Debian/Ubuntu
ENV DEBIAN_FRONTEND=noninteractive
# Reduce space usage for caches
ENV POETRY_CACHE_DIR=/tmp/poetry-cache
ENV PIP_CACHE_DIR=/tmp/pip-cache
# Install system dependencies for building PySide6-based GUI apps
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
python3 \
python3-pip \
python3-venv \
build-essential \
libgl1-mesa-dri \
libgl1-mesa-glx \
libx11-6 \
libxcb1 \
libxcb-icccm4 \
libxcb-image0 \
libxcb-render0 \
libxcb-render-util0 \
libxcb-keysyms1 \
libxkbcommon0 \
libfontconfig1 \
ca-certificates \
tzdata; \
rm -rf /var/lib/apt/lists/*; \
apt-get clean; \
rm -rf /var/cache/apt/archives/*; \
rm -rf /usr/share/doc/* /usr/share/man/* /usr/share/locale/*
# Install Poetry (Python dependency manager)
RUN python3 -m pip install --no-cache-dir --upgrade pip
RUN python3 -m pip install --no-cache-dir poetry
# Build and install the Dangerzone project from source
WORKDIR /workspace
# First install dependencies (without building/installing the package itself)
COPY pyproject.toml poetry.lock* /workspace/
RUN poetry config virtualenvs.create false && \
poetry install --no-root --no-interaction --no-dev
# Copy the full source tree
COPY . /workspace/
# Build the package (wheel)
RUN poetry build
# Install the built wheel into the builder's environment (to reduce final image needs)
RUN pip install --no-cache-dir dist/*.whl
# Optional cleanup to reduce image size before final stage
RUN rm -rf /root/.cache/pip /root/.cache/pypoetry
# Final stage
FROM ubuntu:22.04
# Non-interactive frontend for Debian/Ubuntu
ENV DEBIAN_FRONTEND=noninteractive
# Install runtime dependencies (smaller footprint than build tools)
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
python3 \
python3-pip \
python3-venv \
libgl1-mesa-dri \
libgl1-mesa-glx \
libx11-6 \
libxcb1 \
libxcb-image0 \
libxcb-render0 \
libxcb-render-util0 \
libxcb-icccm4 \
libxcb-keysyms1 \
libxkbcommon0 \
libfontconfig1 \
ca-certificates \
tzdata; \
rm -rf /var/lib/apt/lists/*; \
apt-get clean; \
rm -rf /usr/share/doc/* /usr/share/man/* /usr/share/locale/*
# Copy the built wheel from the builder stage
COPY --from=builder /workspace/dist/*.whl /tmp/
# Install the built wheel
RUN python3 -m pip install --no-cache-dir /tmp/*.whl
# Ensure GUI can run headless (tests and CI may use offscreen rendering)
ENV QT_QPA_PLATFORM=offscreen
WORKDIR /workspace
# Default to showing CLI help if no arguments are provided
CMD ["dangerzone-cli", "--help"]