100 Commits
Author SHA1 Message Date
vhaudiquet e5adf600c3 deb: change ui/ux of pkh deb
CI / build (push) Successful in 2m54s
CI / test (push) Skipped
CI / snap (push) Failing after 12s
2026-08-22 22:26:20 +02:00
vhaudiquet e2d201d815 ci: tryfix snap building
CI / build (push) Successful in 2m45s
CI / test (push) Skipped
CI / snap (push) Failing after 27s
2026-08-22 21:20:44 +02:00
vhaudiquet c1079d43be ci: split build and test jobs, disable tests
CI / build (push) Successful in 2m43s
CI / test (push) Skipped
CI / snap (push) Failing after 17s
The test suite is too heavy for the current CI infra (CPU/RAM
exhaustion), so it must not run alongside lint/build feedback.

- add a dedicated test job (needs: build) running runtime deps
  install, subuid/subgid setup and 'cargo test'
- share the compiled target/ dir and cargo caches between both jobs
  via actions/cache keyed on the commit sha, so the test job only
  compiles the test binaries
- disable the test job with 'if: false' until infra can handle it;
  re-enable by removing that line
- snap: bump upload-artifact v3 -> v4 (v3 is decommissioned) and
  checkout to v6
- update images to ubuntu:26.04
2026-08-22 13:54:01 +02:00
vhaudiquet 18be62d4a0 clippy
CI / build (push) Failing after 32m38s
CI / snap (push) Skipped
2026-08-22 12:46:22 +02:00
vhaudiquet 24faad6e11 deb: pin proposed pocket when building against it
'proposed' pockets are marked 'NotAutomatic' in their Release file,
which gives them an apt priority of 1: apt would ignore them during
build-dependency resolution even when the suite is enabled.

Write an apt preferences entry pinning '{series}-proposed' at
priority 600 so build-dependencies are actually resolved from the
requested pocket.

Apt preferences are global: a single 'release' pin matches the pinned
suite on every repository carrying it (archive, security and ports),
for all architectures, so this also covers cross-builds pulling
dependencies from 'ports.ubuntu.com'.
2026-08-22 12:45:16 +02:00
vhaudiquet cc7cbaaa8f deb: apply quilt patches before building 2026-08-22 12:31:30 +02:00
vhaudiquet f54be8ad8c pull,deb: add top-level --pocket option
CI / build (push) Failing after 2m31s
CI / snap (push) Skipped
- pull: select the pocket to download the source package from
- deb: build against dependencies from a specific pocket:
  - local mode: enable '{series}-{pocket}' suite on archive sources
  - cross mode: include the pocket suite in required repositories
2026-08-22 12:02:05 +02:00
vhaudiquet ec77bc6d4d prune: add 'pkh prune' command
CI / build (push) Successful in 15m13s
CI / snap (push) Successful in 2m13s
2026-08-14 10:28:56 +02:00
vhaudiquet 09cbf56ebc pull: fix hang caused by blocking git2 call and redundant Launchpad checks
CI / build (push) Successful in 14m59s
CI / snap (push) Successful in 2m18s
2026-08-12 17:45:36 +02:00
vhaudiquet 7c3ce1caa5 pull: fix error message when directory already exists
CI / build (push) Successful in 15m39s
CI / snap (push) Failing after 39s
2026-08-12 16:43:45 +02:00
vhaudiquet 317dbcd062 deb: use overlayfs instead of copy
CI / build (push) Failing after 14m44s
CI / snap (push) Has been skipped
2026-08-12 15:44:13 +02:00
vhaudiquet e25645b3bb pull: qol fix, highlight release
CI / build (push) Successful in 14m50s
CI / snap (push) Successful in 1m46s
2026-08-11 16:33:57 +02:00
vhaudiquet d3a07bc80d chlog: add series selector
CI / build (push) Successful in 15m3s
CI / snap (push) Successful in 2m6s
2026-08-11 14:42:23 +02:00
vhaudiquet e3d855ca66 deb: detect package directory using cwd
CI / build (push) Successful in 16m19s
CI / snap (push) Successful in 3m52s
remove linux-riscv specific quirk
2026-08-11 11:33:12 +02:00
vhaudiquet 62ce4e3696 deb: remove sbuild build mode
CI / build (push) Successful in 8m15s
CI / snap (push) Successful in 3m28s
2026-07-24 14:32:47 +02:00
vhaudiquet a0d35bb18e pull,context: preserve file mtimes when copying sources
CI / build (push) Successful in 8m11s
CI / snap (push) Successful in 6m9s
std::fs::copy resets the destination mtime to "now", which breaks
timestamp-based build systems (autotools/gnulib). Packages like
'hello' from Debian sid ship pre-generated files alongside their
prerequisites; when the copy flattens all mtimes, make considers the
generated targets out-of-date and tries to regenerate them with tools
(e.g. gperf) that are not declared build-dependencies, failing the
build.

Restore the source modification and access times after every file copy
in pull::copy_dir_all, pull::fetch_archive_sources merge step, and
context::unshare copy_dir_recursive/ensure_available.
2026-07-24 14:14:18 +02:00
vhaudiquet e1668d5d80 pull: support Sources.gz without Checksums-Sha256
CI / build (push) Failing after 8m34s
CI / snap (push) Has been skipped
The Ubuntu development series (stonking) Sources.gz no longer ships a
Checksums-Sha256 field, only Checksums-Sha512 and the legacy Files
(MD5) field. The package_info parser only read Checksums-Sha256, so
the file list ended up empty and fetch_orig_tarball panicked on
Option::unwrap() when looking for the orig tarball.

- Add a ChecksumAlgo enum (Md5/Sha256/Sha512) to FileEntry, replacing
  the hardcoded sha256 field, and parse the strongest available
  checksum field (Sha256 > Sha512 > MD5).
- Make download_file_checksum verify against the correct algorithm
  instead of always using SHA-256.
- Replace the unwrap() on the orig tarball search with a proper error
  listing the available files, so future regressions fail clearly
  instead of panicking.
- Add md-5 dependency for MD5 verification.
2026-07-24 12:56:31 +02:00
vhaudiquet f9e11e951b clippy
CI / build (push) Failing after 8m37s
CI / snap (push) Has been skipped
2026-07-24 10:53:27 +02:00
vhaudiquet 768e1c4f78 fmt
CI / build (push) Failing after 1m56s
CI / snap (push) Has been skipped
2026-07-22 14:36:28 +02:00
vhaudiquet 48248fdf9c Merge branch 'main' of https://git.vhaudiquet.fr/vhaudiquet/pkh
CI / build (push) Failing after 1m1s
CI / snap (push) Has been skipped
* 'main' of https://git.vhaudiquet.fr/vhaudiquet/pkh:
  deb: fix injection of .deb packages with apt-get
  deb: allow injecting .deb files packages
2026-07-17 10:12:48 +02:00
vhaudiquet c4b59a4376 context: copy symlinks as symlinks and improve error messages 2026-07-17 10:12:46 +02:00
vhaudiquet 73511c258b deb: fix injection of .deb packages with apt-get
CI / build (push) Successful in 9m5s
CI / snap (push) Successful in 3m56s
2026-04-04 12:41:52 +02:00
vhaudiquet d83174c980 deb: allow injecting .deb files packages
CI / build (push) Failing after 1m19s
CI / snap (push) Has been skipped
2026-04-04 12:35:14 +02:00
vhaudiquet 2b27b7b06e deb: add quirks to allow packages to declare specific package directories
CI / build (push) Successful in 8m41s
CI / snap (push) Successful in 3m55s
2026-03-25 17:40:55 +01:00
vhaudiquet 32e15b1106 deb: ignore linux-riscv test
CI / build (push) Successful in 8m16s
CI / snap (push) Failing after 7s
2026-03-19 11:27:02 +01:00
vhaudiquet 7640952bdc unshare: mount proc differently depending on root privileges 2026-03-19 11:26:10 +01:00
vhaudiquet 2b6207981a deb: make tests parallel
CI / build (push) Failing after 12m10s
CI / snap (push) Has been skipped
2026-03-19 00:24:48 +01:00
vhaudiquet daaf33cd6b deb: fix race condition for test
CI / build (push) Failing after 18m26s
CI / snap (push) Has been skipped
Fix race condition around current context,
related to find_package_directory.
2026-03-18 23:34:33 +01:00
vhaudiquet 4a73e6e1d6 deb: fix race condition for tests
CI / build (push) Failing after 20m7s
CI / snap (push) Has been skipped
2026-03-18 17:35:38 +01:00
vhaudiquet d06e091121 apt/keyring: download 3 keyrings for sid
CI / build (push) Failing after 21m24s
CI / snap (push) Has been skipped
2026-03-18 15:23:57 +01:00
vhaudiquet 5ec675c20b pull: fix edge cases
CI / build (push) Failing after 13m53s
CI / snap (push) Has been skipped
- Ubuntu does not have 'Launchpad/Code' repo edge case
- Vcs-Git field has a git command, not only an URL edge case
2026-03-17 17:22:25 +01:00
vhaudiquet dce39c9a84 deb: allow adding multiple ppas for deps
CI / build (push) Failing after 13m29s
CI / snap (push) Has been skipped
2026-02-19 15:36:08 +01:00
vhaudiquet 02dbb41219 deb: fix bugs on injecting packages/ppa
- ppa was not the right target_arch if binfmt was used
- apt-get would not downgrade for injected packages, but we want to
2026-02-19 15:19:02 +01:00
vhaudiquet 3e9ec95886 apt/keyring: always download in binary format
CI / build (push) Failing after 13m17s
CI / snap (push) Has been skipped
2026-02-19 14:33:59 +01:00
vhaudiquet b508dd3d82 deb: download keyring in cache directory for mmdebstrap
CI / build (push) Failing after 13m33s
CI / snap (push) Has been skipped
also avoid sudo if we are root
2026-02-19 11:30:33 +01:00
vhaudiquet 87b48bf9c8 deb: add --inject to inject a package
CI / build (push) Failing after 20m25s
CI / snap (push) Has been skipped
2026-02-18 23:19:57 +01:00
vhaudiquet eb3e71a938 package_info: fix check_launchpad_repo needing web requests (use git)
CI / build (push) Failing after 20m1s
CI / snap (push) Has been skipped
2026-02-16 18:44:46 +01:00
vhaudiquet 7c53b268dd deb: use qemu_binfmt on ephemeral/local builds of different arch
CI / build (push) Failing after 18m19s
CI / snap (push) Has been skipped
2026-02-11 11:58:59 +01:00
vhaudiquet 97725efb34 Multiple changes
CI / build (push) Failing after 18m0s
CI / snap (push) Has been skipped
- quirks: added quirks, that does nothing for now
- deb: install arch-independant dependencies (too much is better)
- deb: added linux-riscv crossbuild test
2026-02-10 11:07:05 +01:00
vhaudiquet 8345f51d2f Multiple changes:
CI / build (push) Successful in 16m23s
CI / snap (push) Successful in 4m1s
- deb: can use ppa as dependency
- deb: cross and regular are using parallel nocheck builds
- deb: ephemeral will not pull keyring if no root powers
2026-02-06 12:04:25 +01:00
vhaudiquet 225157be63 pull: allow pulling from ppa
CI / build (push) Successful in 15m54s
CI / snap (push) Successful in 3m19s
2026-01-29 17:11:01 +01:00
vhaudiquet af73c14674 deb: fix package directory detection by looking for 'debian' subfolder
CI / build (push) Successful in 16m35s
CI / snap (push) Successful in 3m35s
2026-01-28 15:59:31 +01:00
vhaudiquet b2d89ead7e snap: ensure action runs on host
CI / build (push) Successful in 17m7s
CI / snap (push) Successful in 3m57s
2026-01-26 17:48:05 +01:00
vhaudiquet 88ec82c0a0 snap: try running ci on host
CI / build (push) Successful in 15m46s
CI / snap (push) Has been cancelled
2026-01-26 17:21:26 +01:00
vhaudiquet 9ffedb4d1a snap: switch ci action used to build snap
CI / build (push) Successful in 17m3s
CI / snap (push) Failing after 10s
2026-01-26 16:49:55 +01:00
vhaudiquet 1db1048a2e apt/keyring: use original keyring file name
CI / build (push) Successful in 14m20s
CI / snap (push) Failing after 49s
2026-01-26 16:27:18 +01:00
vhaudiquet d832666858 distro_info: fully parse distro info
CI / build (push) Failing after 10m16s
CI / snap (push) Has been skipped
2026-01-26 16:07:39 +01:00
vhaudiquet 45960e5f17 distro_info: fix sid keyring url
CI / build (push) Failing after 10m27s
CI / snap (push) Has been skipped
2026-01-26 14:20:19 +01:00
vhaudiquet 97a78336fa snap: build a devmode test snap (in ci)
CI / build (push) Failing after 9m26s
CI / snap (push) Has been skipped
2026-01-26 14:02:38 +01:00
vhaudiquet c64c3146d7 deb: test building packages from sid
CI / build (push) Failing after 9m17s
2026-01-26 12:06:00 +01:00
vhaudiquet 13c44daf9a deb: allow use parallel building
CI / build (push) Successful in 10m29s
2026-01-26 10:31:58 +01:00
vhaudiquet dfd197415f unshare: fix device creation code 2026-01-26 10:26:16 +01:00
vhaudiquet 73a61042e8 deb: disable gcc-15 test for CI 2026-01-26 10:25:53 +01:00
vhaudiquet 2f5fb3b1e7 deb: fix runtime usage for chroot
CI / build (push) Failing after 11m13s
2026-01-26 10:14:04 +01:00
vhaudiquet c3a116203a pull: allow applying diff.gz from archive download
CI / build (push) Failing after 7m56s
2026-01-22 00:05:39 +01:00
vhaudiquet dd9cc07285 deb: make sure to have the right apt keyrings
CI / build (push) Failing after 14s
2026-01-20 19:31:07 +01:00
vhaudiquet ab35af5fb5 package_info: refactor into distro_info and package_info split, yaml data
CI / build (push) Failing after 9m3s
2026-01-14 21:18:25 +01:00
vhaudiquet a975c24e54 deb: ci test building gcc-15 from sid
CI / build (push) Failing after 9m17s
2026-01-14 11:12:12 +01:00
vhaudiquet 7e69131886 pull: only extract real archives
CI / build (push) Successful in 9m0s
2026-01-14 09:32:13 +01:00
vhaudiquet d7a99f77f5 pull: always extract tars when archive pulling, merging dirs
CI / build (push) Failing after 3m18s
2026-01-13 23:22:55 +01:00
vhaudiquet b4a60e2ae2 deb: cleanup ephemeral context only on success
CI / build (push) Successful in 11m39s
2026-01-13 14:54:56 +01:00
vhaudiquet 87ce0f648b deb: create special device nodes inside chroot
CI / build (push) Successful in 9m5s
2026-01-13 09:58:16 +01:00
vhaudiquet 29297d6f34 pkh: added pull --archive flag
CI / build (push) Successful in 9m20s
2026-01-12 22:42:09 +01:00
vhaudiquet 843f28e8af pull: move orig tarball content to the right place on archive download
CI / build (push) Successful in 9m13s
2026-01-12 21:58:57 +01:00
vhaudiquet 35f9517732 pull: extract orig tarball as well on archive download
CI / build (push) Failing after 7m50s
2026-01-12 18:54:07 +01:00
vhaudiquet 593793373a deb: consider all kinds of package dirs
CI / build (push) Failing after 12m32s
2026-01-12 11:29:18 +01:00
vhaudiquet 21bb76153e deb: consider package directories with version
CI / build (push) Failing after 1m6s
2026-01-12 10:37:09 +01:00
vhaudiquet bd10a37c2a pull: fmt
CI / build (push) Failing after 8m1s
2026-01-11 22:19:46 +01:00
vhaudiquet 91c812a530 pull: allow to force pull from archive
CI / build (push) Failing after 1m2s
2026-01-11 20:43:01 +01:00
vhaudiquet 70e6d8c051 pull: refactor to remove series argument
CI / build (push) Successful in 9m31s
2026-01-11 12:36:19 +01:00
vhaudiquet 2f43ed1597 ci: fix clippy
CI / build (push) Successful in 9m7s
2026-01-11 12:22:00 +01:00
vhaudiquet 182cc086c0 ci: install clippy
CI / build (push) Has been cancelled
2026-01-11 12:18:19 +01:00
vhaudiquet a2d4f885b5 doc: update README, documentation 2026-01-11 12:16:27 +01:00
vhaudiquet 650adc28a3 pull: split into package_info::lookup and pull
CI / build (push) Failing after 1m47s
2026-01-11 12:12:19 +01:00
vhaudiquetandvhaudiquet b724d46f2c deb: fix concurrent testing (by making them serial)
CI / build (push) Successful in 8m34s
Co-authored-by: Valentin Haudiquet <valentin.haudiquet@canonical.com>
Co-committed-by: Valentin Haudiquet <valentin.haudiquet@canonical.com>
2026-01-11 00:32:03 +00:00
vhaudiquet 216eee8f33 deb: add tests logs back
CI / build (push) Has been cancelled
2026-01-11 01:14:24 +01:00
vhaudiquet 64b51563e7 deb: cross uses new apt sources parser 2026-01-10 00:46:04 +01:00
vhaudiquet d2914c63c6 deb/ephemeral: use a lockfile for chroot tarballs
CI / build (push) Failing after 6m47s
2026-01-09 23:54:10 +01:00
vhaudiquet 42e6165f78 context/unshare: mount proc after forking
CI / build (push) Failing after 6m46s
2026-01-09 23:36:27 +01:00
vhaudiquet a444a5d8d2 deb: fix bug in find_dsc_file
CI / build (push) Failing after 5m35s
2026-01-09 23:15:13 +01:00
vhaudiquet dd62baa455 context/unshare: mount proc and dev/pts 2026-01-09 23:08:59 +01:00
vhaudiquet 464e25de24 apt: refactor into multiple modules
CI / build (push) Failing after 7m56s
2026-01-09 18:02:22 +01:00
vhaudiquet 1b659ce6f4 build, changelog: fix signing when building source package
CI / build (push) Failing after 7m8s
2026-01-09 17:21:07 +01:00
vhaudiquet e2838bf5aa deb: test refactoring
CI / build (push) Failing after 7m18s
2026-01-08 19:14:26 +01:00
vhaudiquet a6df6070d4 build: fix signature handling 2026-01-08 18:53:19 +01:00
vhaudiquet 6fb4ccfa88 deb: test end to end build of hello
CI / build (push) Failing after 7m40s
2026-01-08 18:16:14 +01:00
vhaudiquet 126a6e0d76 deb: ensure universe is enabled on Ubuntu by default
CI / build (push) Has been cancelled
Added apt source parser, module apt
2026-01-08 18:15:50 +01:00
vhaudiquet f3f78ef0e3 ci: update build-depends
CI / build (push) Successful in 8m27s
2026-01-06 18:17:01 +01:00
vhaudiquet f3417c7a16 deb: default to ephemeral context with local builds
CI / build (push) Failing after 1m28s
2026-01-06 18:15:05 +01:00
vhaudiquet 1c9f6cccd2 build: only sign if a gpg key able to sign is present
CI / build (push) Failing after 1m50s
2026-01-06 18:07:34 +01:00
vhaudiquet b3365afe5b docs: added documentation, enforced documentation
CI / build (push) Successful in 7m21s
2026-01-01 18:37:40 +01:00
vhaudiquet 5e1b0988fd package_info: refactor sources parsing even more
CI / build (push) Successful in 7m46s
2026-01-01 15:20:59 +01:00
vhaudiquet a567506831 package_info: refactor sources parsing with iterator
CI / build (push) Successful in 7m12s
2025-12-31 19:23:49 +01:00
vhaudiquetandvhaudiquet 1538e9ee19 deb: cross-compilation, ephemeral contexts, local builds
CI / build (push) Successful in 7m18s
Multiple changes:
- New contexts (schroot, unshare)
- Cross-building quirks, with ephemeral contexts and repositories management
- Contexts with parents, global context manager, better lifetime handling
- Local building of binary packages
- Pull: pulling dsc files by default
- Many small bugfixes and changes

Co-authored-by: Valentin Haudiquet <valentin.haudiquet@canonical.com>
Co-committed-by: Valentin Haudiquet <valentin.haudiquet@canonical.com>
2025-12-25 17:10:44 +00:00
vhaudiquet 88313b0c51 readme: added README.md
CI / build (push) Successful in 1m56s
2025-12-17 16:49:16 +01:00
vhaudiquet 106c61a096 context: refactor context command running
CI / build (push) Successful in 1m55s
2025-12-17 10:05:47 +01:00
vhaudiquet 35eaaaf93a ci: update runtime dependencies
CI / build (push) Successful in 2m5s
2025-12-16 20:19:18 +01:00
vhaudiquet b5ac76a293 deb: retrieve .deb artifacts
CI / build (push) Successful in 2m2s
sbuild options: unshare, build directory

context: retrieve files
2025-12-16 20:12:08 +01:00
vhaudiquet 06ab5eaf98 pull: don't fetch orig tarball for native packages
CI / build (push) Successful in 1m51s
2025-12-16 18:05:59 +01:00
vhaudiquet 1d65d1ce31 context: add context
CI / build (push) Successful in 1m50s
pkh context allows to manage contexts (local, ssh) and run contextualized commands (deb)

in other words, this allows building binary packages over ssh
2025-12-15 20:48:44 +01:00