No description
Find a file
2026-05-21 16:24:15 +02:00
app-data Actual State 20260504-231328 2026-05-04 23:13:37 +02:00
build fix: add yasm to VeraCrypt build deps 2026-05-21 14:23:37 +02:00
debian feat: rebuild veracrypt 1.26.28 debian/12 - fix nogui deps, add yasm 2026-05-21 14:29:10 +02:00
tools error corrections 2026-05-21 16:24:15 +02:00
ubuntu Actual State 20260505-102954 2026-05-05 10:29:55 +02:00
README.md add: VeraCrypt 1.26.28 amd64 packages for all 4 distros 2026-05-04 20:27:41 +02:00

debian-ubuntu-packages

Binary packages and .deb files built from source for Debian and Ubuntu targets.

Directory Structure

debian-ubuntu-packages/
├── build/                  # Build system (scripts, Dockerfiles, per-package hooks)
│   ├── Dockerfile.*        # One per supported distro
│   ├── pkg-build.sh        # Main build orchestrator
│   └── pkg/
│       └── <package>/      # Per-package hook scripts
│           ├── build.sh        # Build command(s) — mandatory
│           ├── artifact.sh     # Prints path to built artifact — mandatory
│           ├── patches.sh      # Pre-build patches — optional
│           ├── deps.txt        # Extra apt packages — optional
│           ├── notes.txt       # Free-form notes for .txt description — optional
│           ├── src.txt         # Source dir name override — optional (default: pkg name)
│           └── distro-block.txt  # Distros to exclude (blocklist) — optional
├── debian/
│   ├── 12/
│   │   ├── amd64/          # Built packages for Debian 12 (Bookworm) x86-64
│   │   └── arm64/          # Built packages for Debian 12 (Bookworm) arm64
│   └── 13/
│       ├── amd64/          # Built packages for Debian 13 (Trixie) x86-64
│       └── arm64/          # Built packages for Debian 13 (Trixie) arm64
└── ubuntu/
    ├── 24.04/
    │   ├── amd64/          # Built packages for Ubuntu 24.04 (Noble) x86-64
    │   └── arm64/          # Built packages for Ubuntu 24.04 (Noble) arm64
    └── 26.04/
        ├── amd64/          # Built packages for Ubuntu 26.04 (Resolute) x86-64
        └── arm64/          # Built packages for Ubuntu 26.04 (Resolute) arm64

The architecture subdir is detected automatically from the Docker container at build time (uname -m mapped to amd64, arm64, armhf). Builds on different host architectures write to their respective subdirs without conflict.

Sparse checkout is used on non-amd64 build hosts (e.g. raspi-seeed / arm64) to avoid checking out foreign architecture binaries.

Important: Both this repository and all source repositories to be built must reside on local storage. Docker bind mounts cannot traverse SSHFS or other network filesystems. Symlinks pointing to network-mounted paths will cause Docker mount failures.

Build System

Requirements

  • Docker
  • User must be in the docker group

Usage

# Build a package for all its target distros (skips if output already exists)
build/pkg-build.sh <package>

# Force rebuild even if output exists
build/pkg-build.sh --rebuild <package>

# Build for all versions of a distro family
build/pkg-build.sh <package> debian
build/pkg-build.sh <package> ubuntu

# Build for a specific distro version
build/pkg-build.sh <package> debian/12

# Mix of family and specific targets
build/pkg-build.sh <package> debian ubuntu/26.04

# (Re)build Docker images
build/pkg-build.sh --build-images
build/pkg-build.sh --build-images debian

# Show version
build/pkg-build.sh --version

Supported Distros

Distros are discovered automatically from Dockerfile.* files in build/. Currently:

Tag Base Image
debian/12 debian:12
debian/13 debian:13
ubuntu/24.04 ubuntu:24.04
ubuntu/26.04 ubuntu:26.04

Adding a new Dockerfile.<family>-<version> automatically makes it available as a build target.

How It Works

  1. Builds a Docker image for the target distro if not already present
  2. Detects the container architecture (uname -m) and maps to amd64/arm64/armhf
  3. Checks if output artifact already exists — skips build if so (use --rebuild to force)
  4. Runs a container with ~/_git mounted at /home/jcf/_git
  5. Inside the container, in order:
    • Installs extra apt packages from pkg/<package>/deps.txt
    • Runs pkg/<package>/patches.sh if present
    • Runs pkg/<package>/build.sh
  6. Calls pkg/<package>/artifact.sh to locate the output file(s)
  7. Copies artifacts to <distro>/<arch>/
  8. Generates <artifact>.txt description file if not already present

Docker images are kept after builds. Containers are ephemeral (--rm). Cargo and Gradle caches are persisted in named Docker volumes (pkg-builder-cargo-cache, pkg-builder-gradle-cache) shared across all distros.

Description Files

Each artifact gets a <name>.txt sidecar file generated automatically on first build. Content: Package, Version, Arch, Distro, Built, Source, Branch, Build, Host, Notes.

The Notes: field is populated from pkg/<package>/notes.txt if present. Description files are not regenerated if they already exist.

Adding a New Package

  1. Create build/pkg/<package>/
  2. Add build.sh with the build command
  3. Add artifact.sh that prints the path to the output file(s)
  4. Optionally add deps.txt, patches.sh, notes.txt, distro-block.txt
  5. Optionally add src.txt with the source repo directory name if it differs from the package name
  6. Run build/pkg-build.sh <package>

distro-block.txt accepts family names (debian, ubuntu) or specific versions (debian/12, ubuntu/24.04), one per line.

Packages

iamb

Terminal-based Matrix chat client.

  • Source: https://github.com/ulyssa/iamb
  • Language: Rust
  • Build tool: Cargo
  • Output: iamb_<version>_<arch>.deb
  • Notes: Requires RUSTUP_TOOLCHAIN=stable override (repo pins an older toolchain). Applies recursion limit patch to matrix-sdk-0.16.0 due to upstream compiler bug.

tammy

Desktop Matrix client built with Kotlin Multiplatform / Compose Desktop.

  • Source: https://gitlab.com/connect2x/tammy
  • Language: Kotlin
  • Build tool: Gradle (./gradlew packageDeb)
  • Output: tammy_<version>_<arch>.deb
  • Notes: Requires TargetFormat.Deb to be enabled in build.gradle.kts (patched automatically).

VeraCrypt

Disk encryption software based on TrueCrypt.

  • Source: https://github.com/veracrypt/VeraCrypt
  • Language: C++
  • Build tool: make
  • Output: veracrypt_<version>_<arch>.deb (GUI + CLI), veracrypt-nogui_<version>_<arch>.deb (CLI only)
  • Notes: Built with WITHFUSE3=1 (fuse3). CLI binary built first, then GUI reuses object files.

For new version requests or questions: jens@franik.net