Skip to content

jpacker v1.16.0

Choose a tag to compare

@seekerkrt seekerkrt released this 29 Jul 03:29
· 281 commits to main since this release
5fab99e

概要

jpacker v1.16.0をリリースします。

このreleaseでは、installed AUR packageを更新するupgrade-aurと、system package・registered source package・remaining installed AUR packageを順に扱うupgrade-allを追加します。

あわせて、separated source-build lifecycleをPackageBase単位のmultiple artifactへ拡張し、split packageのrequired childをmetadata identityで選択してtyped pacman -U transactionへ渡します。v1.xで安全にownershipを証明できない--rmdepsは、source routeのexternal mutation前にfail closedとする正式なunsupported contractへ統一しました。

Included PRs

Installed AUR update workflow

  • #273#274#275: installed AUR inventory、AUR RPC query、update planning
  • #276#277#278: typed preflight、provider origin、strict source preference
  • #279#280#282#283: preparation、runner、result propagation、upgrade-aur CLI

Unified upgrade workflow

  • #284#285#286#287#288: mutation-free planning、system/source phase、filtered AUR phase、typed aggregate result、upgrade-all CLI

Split package artifact lifecycle

  • #291#292#293: required-child selection、multiple artifact workspace、artifact identity correlation
  • #294#295#296: PackageBase install preparation、BuildPlan coverage、production split package support

Release safety and audit

  • #298: v1.xの--rmdeps unsupported policyを正式化
  • #299: v1.16.0 final release audit修正

主な変更

Installed AUR package update / upgrade-aur

jpacker upgrade-aurは、local package databaseのinstalled foreign inventoryから、現在もAURのexact packageとして解決できるpackageだけを更新します。official repository packageとnon-AUR foreign packageは対象にせず、pacman -Syuも実行しません。

  • AUR RPC queryとupdate planningで更新対象とversionをtyped dataとして保持
  • update plan全体をsource mutation前に検証するtyped preflight
  • prepared PackageBase work itemを順に扱うpreparation / runner境界
  • child単位のselected artifact、install reason、outcomeを保持するresult propagation
  • 最初のfailureで停止し、完了済みtargetとnot attempted targetを区別
  • no-update時は成功し、git、makepkg、pacman、sudoを起動しない
  • partial completion、build / install failure、transaction成功後のcleanup failureはnon-zero

Unified upgrade workflow / upgrade-all

jpacker upgrade-allは、次のphaseをtargetなしのaggregate operationとして扱います。

system package upgrade
  → registered source package processing
  → fresh foreign package inventory
  → remaining AUR package update

explicit source preferenceはautomatically detected AUR targetより優先され、同じpackageまたはPackageBaseを二重にbuild / installしません。このoperationはsingle atomic transactionではありません。各phaseは最初のfailureまたはcleanup failureで停止し、完了済みpackageを自動rollbackせず、後続phaseとwork itemをnot attemptedとして報告します。partial completionとcleanup failureはいずれもnon-zeroです。

Separated source-build lifecycle

AUR BuildPlan-backed source buildは、次のownershipと順序を使用します。

PackageBase plan
  → invocation-owned fresh PKGDEST
  → makepkg --packagelist
  → build-only makepkg
  → aggregate artifact validation
  → metadata identityによるrequired-child selection
  → typed sudo pacman -U transaction
  • repository checkout、build、workspace、install transactionをPackageBase単位で処理
  • 1 PackageBaseを1回buildし、selected childrenを1回のpacman -U transactionへ渡す
  • makepkgはsource artifactのbuild、pacmanは検証済みartifactのinstallを所有
  • jpackerはfresh workspace、artifact validation / selection、install policyを所有
  • retained workspaceやartifactを後続invocationで自動再利用しない

--rmdeps

v1.xのseparated AUR / source-build lifecycleでは、--rmdepsを正式にunsupportedとします。jpackerは、現在のinvocationだけが新規導入したmake / check dependencyのexact setをauthoritativeに証明できません。

  • source routeでは既存のroute-specific boundaryに従い、external mutation前にfail closed
  • --rmdepsmakepkg -rへ変換しない
  • pacman -Rnspacman -Qdt、独自orphan cleanupを実行しない
  • automatic rollbackや削除対象を推測しない
  • --noconfirmでguardを迂回できない
  • configのRMDEPS=true / 1 / yesも同じguardへ接続

pacman-only routeでは、このoptionはjpacker global optionとして消費されますが、作用せずpacmanへも転送されません。

Split package / artifact install

  • 1つのsplit PackageBaseが生成する複数artifactをordered aggregateとして検証
  • package filenameの推測ではなくpackage metadata identityでrequired childを選択
  • BuildPlanが必要とする複数childをrequired-target orderで1 transactionへ渡す
  • expectedだがrequiredでないsibling / debug artifactをunselected resultとして保持
  • stale、ambiguous、missing、duplicate、mismatched artifactはinstall前にfail closed
  • transaction failure時にchildごとのpartial successを推測しない

Final release audit fixes

  • cache rootをprivate modeで作成し、Git mutation前のvalidationを強化
  • pacman-managed configのbackup=('etc/jpacker/jpacker.conf') metadataを追加
  • help、man page、Bash / Zsh / Fish completionのparityを修正
  • config RMDEPSからunsupported guardまでのregression coverageを追加
  • libcurl callback境界でC++ exceptionをcontain
  • AUR RPCのencode failureがsilent skipされないように修正
  • release version、package metadata / payload、license、Markdown local linkのrelease checksを強化

jpacker v1 / pactune v2 positioning

v1.16.0 is expected to be the final feature release under the jpacker name and the v1 series.

Future development is planned to continue in the v2 series under the new pactune name.

A further v1 maintenance release may still be published if a critical bug, safety issue, or compatibility problem is discovered.

Migration guidance for jpacker v1 users is planned to be provided when pactune v2.0.0 is released.

Version

  • VERSION: 1.15.01.16.0
  • generated man page: jpacker 1.16.0

Validation

  • make clean && make -j2: PASS
  • compiler warning: 0
  • make test: PASS
  • make release-check: PASS
  • ./jpacker --version: jpacker v1.16.0
  • help header: jpacker v1.16.0
  • generated man pageとtemplate / VERSIONの一致: PASS
  • groff -ww -man -Tutf8 man/jpacker.8: PASS
  • Bash / Zsh / Fish completion syntax: PASS
  • bash -n PKGBUILD: PASS
  • makepkg --printsrcinfo: pkgver = 1.16.0、source tag v1.16.0、config backup metadataを確認
  • package metadata / payload check: PASS
  • GPL / legacy MIT / third-party license compliance: PASS
  • tracked Markdown local link check: PASS
  • git diff --check: PASS

実行していないもの:

  • real sudo pacman
  • package install / remove
  • system upgrade、sync database refresh / mutation
  • tag、GitHub Release、GitLab Release mirrorの作成または更新

Compatibility / safety boundaries

  • current project nameとこのreleaseのidentityはjpackerのまま維持
  • pactune v2のrename、implementation、release時期をこのreleaseでは確定しない
  • existing CLI、config format、/etc/jpacker layoutを自動移行または削除しない
  • system package transactionはpacman、source artifact buildはmakepkgが所有
  • validated source artifact installはtyped pacman -Uへ委譲
  • upgrade-aurupgrade-allはfailure後のautomatic rollbackを行わない
  • separated source routeの--rmdepsはdependency removalへ変換しない
  • v1.14.0以前のreleaseはMIT Licenseを維持し、v1.15.0以降はGPL-3.0-or-later