bsdconfig packages gains f_package_parallel_install(), which installs a
job set concurrently while honoring inter-package dependencies. The
run-dependency data already collected from pkg-rquery(8) seeds a
topological schedule (Kahn's algorithm): packages with no pending
dependencies dispatch immediately to a worker pool sized by
PACKAGE_INSTALL_JOBS (default hw.ncpu), and each completion, reported
over a FIFO, releases any dependents it was blocking. Workers run
pkg-fetch(8) then pkg-install(8) with LOCK_WAIT/LOCK_RETRIES raised so
siblings tolerate the package database lock, and log per-package output
under a scratch directory for post-mortem. A failure marks all
transitive dependents skipped rather than aborting the whole set, and
the summary names every package that failed or was skipped. Overall
progress renders through bsdpv(1) in line mode, fed one line per
completed package.
Details
Details
- Reviewers
adrian emaste des bapt asiciliano
Prerequisites:
https://reviews.freebsd.org/D58118
https://reviews.freebsd.org/D58133
The scheduler's ordering, failure propagation, and progress plumbing
were exercised with a mock pkg(8): independent packages start together,
dependents start only after their prerequisites complete, and a failed
package skips exactly its transitive dependents while unrelated
installs proceed.
Diff Detail
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Skipped - Unit
Tests Skipped - Build Status
Buildable 74732 Build 71615: arc lint + arc unit