Commit Graph

20 Commits

Author SHA1 Message Date
d0c590c185 wip 2026-03-20 10:47:58 +01:00
f791799105 ts 2026-03-20 10:26:38 +01:00
998339d2b5 Wip 2026-03-20 10:03:00 +01:00
d6ea38db14 Moved to new phase 2026-03-20 09:45:20 +01:00
f41cc5aef1 Wip 2026-03-20 08:57:03 +01:00
b85f3d1fdd wip 2026-03-20 08:40:38 +01:00
ea00688fe9 wip 2026-03-20 08:35:32 +01:00
8a7603ffcc More test fixes 2026-03-20 08:28:23 +01:00
de45176e6c wip, more installs 2026-03-20 08:21:02 +01:00
a8a1c4901d more test fixes 2026-03-20 08:16:04 +01:00
88e8411ec3 Added more tests 2026-03-20 07:32:37 +01:00
c571c13c3d Fix test_parse_dep_atoms: strip version suffix after regex match
The regex required names to end with a letter ([a-zA-Z]) to avoid
capturing version numbers, but this rejected valid packages like
"nghttp2" that end with a digit.

Fix: use a greedy regex that captures the full "category/name-version"
string, then strip the version suffix with a dedicated function that
finds the last "-" followed by a digit. This correctly handles:
- "dev-libs/openssl-1.0.2" → "openssl"
- "net-libs/nghttp2" → "nghttp2" (no version, ends in digit)
- "sys-libs/zlib" → "zlib"
- "dev-qt/qt6-base-6.8.0" → "qt6-base" (hyphen in name)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 16:43:51 +01:00
4d8e27cd50 Fix OVMF 4m variant detection and Gentoo dep atom parsing
1. host.ovmf: Arch edk2-ovmf 202508+ uses OVMF_CODE.4m.fd (4MB variant)
   instead of OVMF_CODE.fd. Added .4m.fd paths to the search list and
   updated the find fallback to match OVMF_CODE*.fd glob.

2. test_parse_dep_atoms: The single-regex approach with lazy quantifiers
   failed on atoms like "sys-libs/zlib" at end-of-string. Rewrote
   parse_dep_atoms to split on whitespace first, strip [:slot] and [USE]
   suffixes, then match category/name with a simple anchored regex.
   This is more robust and easier to reason about.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 16:40:52 +01:00
658289dc51 Fix 4 test failures from Proxmox VM report
1. converter panic (5 unit tests): "FIXME_CHECKSUM".repeat(4) is only
   56 chars but was sliced to [..64], causing index-out-of-bounds panic.
   Both crux.rs and gentoo.rs converters now use "a".repeat(64) as the
   placeholder checksum instead.

2. dpack list/check exit code 1: these commands call PackageDb::open()
   which tries to create /var/lib/dpack/db — fails without root.
   Test runner now creates a temp dpack.conf pointing at a writable
   temp directory with repos symlinked from the project. Also added
   search and info smoke tests.

3. host.ovmf: not a code bug — edk2-ovmf just needs to be installed
   on the test VM (sudo pacman -S edk2-ovmf --noconfirm).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 16:37:34 +01:00
c6a3f33746 Use has_repo_update field in check-updates display
The CheckUpdates handler now reads has_repo_update to label each
update with its source: [repo], [upstream], or [repo+upstream].
This was the last remaining warning — build should now be fully clean.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 13:10:53 +01:00
3d5390b515 Fix all warnings properly — no blanket #![allow(dead_code)]
Removed both blanket #![allow(dead_code)] from main.rs and lib.rs.
Each warning is now handled individually with a targeted #[allow]
and a comment explaining WHY the item exists and WHEN it will be used.

Fixes:
- resolver/mod.rs: Added missing SourceInfo fields (git, branch, tag,
  commit, update_check) to test helper make_pkg() — fixes cargo test
- main.rs: Wire DEFAULT_CONFIG_PATH constant into CLI default_value
  instead of hardcoding the string (eliminates unused constant warning)

Targeted #[allow(dead_code)] with justification on:
- config/global.rs: load_default() (future system service mode),
  find_package() (future replacement for inline Info search)
- resolver/solib.rs: SharedLib, LibConflict, ConflictResolution structs
  (planned upgrade conflict UI), get_soname(), check_upgrade_conflicts(),
  format_conflict_report(), collect_provided_sonames(), soname_base()
  (entire conflict detection chain — will be wired into dpack upgrade)
- resolver/mod.rs: definition_path field (populated but read in future)
- sandbox/mod.rs: add_ro_bind() (planned dep mounting), staging_dir(),
  build_dir() (accessor methods for post-build inspection)
- db/mod.rs: is_installed() (used by tests, future install guard),
  who_owns() (planned dpack owns <file> command)
- build/mod.rs: db(), db_mut() (accessors for advanced orchestration)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 12:30:40 +01:00
1766909379 Update repos submodule: all 154 package deps now fully resolve
Added 16 missing packages (boost, opencascade, xerces-c, swig,
tcl, tk, nodejs, cbindgen, unibilium, libtermkey, libvterm,
msgpack-c, xcb, xcb-proto, libxau, libxdmcp).

Every package in all 4 repos can now be installed via dpack
with zero unresolvable dependencies.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 12:18:07 +01:00
3a5c200a28 Add dpack sign command, test runner, ISO builders, fix build errors
dpack fixes:
- Fixed missing SourceInfo fields in CRUX/Gentoo converters (git, branch,
  tag, commit, update_check fields added to struct initializers)
- Added 'sign' command: downloads source tarballs and computes real SHA256
  checksums, updating .toml definitions in-place. Replaces placeholder
  checksums. Usage: dpack sign zlib  or  dpack sign all

Testing:
- tests/run-tests.sh: comprehensive integration test runner for Arch Linux
  host. 7 test suites covering host env, dpack build/tests, package defs,
  toolchain scripts, kernel config, init system, and QEMU boot.
  Generates JSON + text reports for automated debugging.
  Usage: bash tests/run-tests.sh [--quick]

ISO builders:
- src/iso/build-iso-arch.sh: builds live ISO from Arch Linux host
  Creates rootfs from pre-built base system or busybox fallback,
  includes installer + dpack + package repos, UEFI-only boot
- src/iso/build-iso-darkforge.sh: builds live ISO from running DarkForge
  Snapshots the live system via rsync, creates redistributable ISO

Package repository (submodule updated):
- 14 new self-hosting packages: qemu, edk2-ovmf, squashfs-tools,
  xorriso, mtools, efibootmgr, efivar, rsync, lz4, nasm,
  neovim, htop, tmux, libevent
- Total: 138 packages across 4 repos

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 12:11:59 +01:00
5fb597e2d6 Add git sources, check-updates, repos submodule, improve docs
dpack features:
- Git source support: packages can specify [source].git for cloning
  instead of tarball download. Supports branch, tag, and commit pinning.
  SHA256 can be set to "SKIP" for git sources.
- check-updates command: queries upstream APIs (GitHub releases/tags)
  to find available updates. Packages set [source].update_check URL.
- CheckUpdates CLI subcommand wired into main.rs

Package changes:
- FreeCAD updated to weekly-2026.03.19 development builds
- dwl: added update_check URL and git source documentation
- src/repos extracted to standalone git repo (danny8632/repos.git)
  and added as git submodule

Documentation:
- All 7 README.md files updated with detailed requirements sections
  including which Linux distros are supported, exact package names
  for Arch/Ubuntu/Fedora, and clear notes about which components
  require Linux vs can be built on macOS
- dpack README: added git source and check-updates documentation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 11:58:23 +01:00
029642ae5b Initial commit: DarkForge Linux — Phases 0-12
Complete from-scratch Linux distribution targeting AMD Ryzen 9 9950X3D +
NVIDIA RTX 5090 on ASUS ROG CROSSHAIR X870E HERO.

Deliverables:
- dpack: custom package manager in Rust (3,800 lines)
  - TOML package parser, dependency resolver, build sandbox
  - CRUX Pkgfile and Gentoo ebuild converters
  - Shared library conflict detection
- 124 package definitions across 4 repos (core/extra/desktop/gaming)
- 34 toolchain bootstrap scripts (LFS 13.0 adapted for Zen 5)
- Linux 6.19.8 kernel config (hardware-specific, fully commented)
- SysVinit init system with rc.d service scripts
- Live ISO builder (UEFI-only, squashfs+xorriso)
- Interactive installer (GPT partitioning, EFISTUB boot)
- Integration test checklist (docs/TESTING.md)

No systemd. No bootloader. No display manager.
Kernel boots via EFISTUB → auto-login → dwl Wayland compositor.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 11:30:40 +01:00