Rust IPS work
  • Rust 95.7%
  • HTML 1.9%
  • CSS 1.4%
  • Shell 0.9%
Find a file
Image Till Wegmueller 110ee513bc fix: Stream catalog parts to disk during rebuild
rebuild_catalog_batched accumulated three Vec<(Fmri, Option<Vec<String>>,
String)> for base/dependency/summary entries, then materialised three
CatalogPart trees and serialised each in one go. On a 200k-package
publisher these accumulators plus the trees overran available RAM and
OOMed midway through the rebuild, after the per-manifest pest fix.

Add StreamingCatalogPartWriter, which emits `{"<publisher>":{<stem>:[
versions...]...}` directly to a temp file as the caller produces stems,
mirroring every byte into a SHA-1 hasher so the part signature is
computed without buffering. The trailing `,"_SIGNATURE":...}` is
appended after finalisation to keep the on-disk byte sequence
identical to write_catalog_part's output (verified by a new round-trip
test).

Refactor rebuild_catalog_batched to walk the FMRI-sorted package list,
buffer one stem's PackageVersionEntry instances at a time, and flush
them to the three streaming writers when the stem changes. Memory now
scales with versions-per-stem, not packages-per-publisher.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 23:10:52 +02:00
.github
.idea
.junie
.solstice Add comment for testing in Solstice CI workflow configuration 2026-01-25 22:02:03 +01:00
.vscode
doc
docker feat: Add Docker deployment for pkg.solstice-ci.org 2026-03-14 22:56:32 +01:00
docs/ai feat: Add OIDC JWT authentication middleware for pkg6depotd 2026-04-09 22:39:20 +02:00
libips fix: Stream catalog parts to disk during rebuild 2026-05-05 23:10:52 +02:00
pkg6 feat: Preserve manifest text through install pipeline, add architecture plans 2026-03-23 17:28:10 +01:00
pkg6depotd feat: Add OIDC JWT authentication middleware for pkg6depotd 2026-04-09 22:39:20 +02:00
pkg6recv feat: Add .p6p archive format support for portable package distribution 2026-04-03 13:21:36 +02:00
pkg6repo test: Isolate libips repository tests in per-test tempdirs 2026-05-02 21:14:31 +02:00
pkgtree chore(format): format code 2026-01-25 23:17:49 +01:00
ports
specfile
testing/manual
userland
xtask chore(format): format code 2026-01-25 23:17:49 +01:00
.dockerignore feat: Add Docker deployment for pkg.solstice-ci.org 2026-03-14 22:56:32 +01:00
.gitignore feat: Add Docker deployment for pkg.solstice-ci.org 2026-03-14 22:56:32 +01:00
Cargo.lock feat: Add OIDC JWT authentication middleware for pkg6depotd 2026-04-09 22:39:20 +02:00
Cargo.toml
CLAUDE.md Rewrite CLAUDE.md for IPS project, remove Barycenter content 2026-03-23 17:18:43 +01:00
docker-compose.yml Update docker-compose for test deployment 2026-03-14 23:08:44 +01:00
Dockerfile feat: Add Docker deployment for pkg.solstice-ci.org 2026-03-14 22:56:32 +01:00
IMPLEMENTATION_STATUS.md
LICENSE
Makefile
pkg6depotd.kdl
ports.spec
README.md Update readme and remove old info 2026-02-07 14:51:09 +01:00
rebuild_test_repo.sh
run_local_import_test.sh
run_openindiana_image_import.sh
run_sample_install.sh
test_repo_operations.sh
Vagrantfile

Image Packaging System for illumos

libips

The libips crate contains all modules and functions one needs to implement an Image Packaging System based utility.

Be that a server, client or other utilities.

This project is intended to gradually replace the current python based implementation of IPS. Most things are documented in the docs directory but some things have been added over the years which has not been properly documented. Help is welcome but be advised, this is mainly intended for use within the illumos community and it's distributions. Big changes which are not in the current IPS will need to be carefully coordinated to not break the current IPS.

Development and Release

Releasing

This project uses cargo-release for versioning and tagging.

  1. Ensure you have cargo-release installed: cargo install cargo-release
  2. Prepare the release (dry-run): cargo release [level] --dry-run (e.g., cargo release patch --dry-run)
  3. Execute the release: cargo release [level] --execute
  4. Push the changes and tags: git push --follow-tags

Pushing a tag starting with v (e.g., v0.5.1) will trigger the GitHub Actions release pipeline, which builds artifacts for Illumos (OpenIndiana) and Linux, and creates a GitHub Release.