Skip to content

feat!: install by FHS path, keeping man pages and completions - #964

Merged
QaidVoid merged 1 commit into
mainfrom
install-map
Aug 1, 2026
Merged

feat!: install by FHS path, keeping man pages and completions#964
QaidVoid merged 1 commit into
mainfrom
install-map

Conversation

@QaidVoid

@QaidVoid QaidVoid commented Aug 1, 2026

Copy link
Copy Markdown
Member

Needs pkgforge/sbuilder#16 and pkgforge/soar#186.

Packages installed everything an archive happened to contain, and [source.install] only ever located the binary. A recipe could ask for a file to be renamed and nothing happened: fd's licence mapping was filtered out of the index and the file landed under its original name. Fifteen recipes carried such instructions that did nothing.

Licences keep the names upstream gave them rather than being renamed to LICENSE, so a package offering a choice keeps both: fd installs LICENSE-APACHE and LICENSE-MIT.

Install targets are now FHS paths inside the package directory, and the list is what the package installs:

[source.install]
"fd-v${version}-${arch}-unknown-linux-musl/fd"                   = "bin/fd"
"fd-v${version}-${arch}-unknown-linux-musl/fd.1"                 = "share/man/man1/fd.1"
"fd-v${version}-${arch}-unknown-linux-musl/autocomplete/fd.bash" = "share/bash-completion/completions/fd"
"fd-v${version}-${arch}-unknown-linux-musl/autocomplete/_fd"     = "share/zsh/site-functions/_fd"
"fd-v${version}-${arch}-unknown-linux-musl/LICENSE-APACHE"       = "LICENSE-APACHE"
"fd-v${version}-${arch}-unknown-linux-musl/LICENSE-MIT"          = "LICENSE-MIT"

Where a file lands says what it is, so soar links bin/ onto PATH, manual pages beside it, and completions into the per-shell directories.

Every artifact was downloaded and listed to decide what each recipe should keep, 121 archives in all. 77 packages were dropping files: 277 manual pages, 91 completions and 21 licences are now kept, while READMEs and changelogs are not.

provides is removed from all 532 recipes. Nothing reads it anymore: link names come from the install entry, and the six packages that relied on it for extra commands (dunst, android-tools, pueue, tealdeer, gpu-screen-recorder, zenity-gtk3) now say so directly.

Two recipes were wrong and are fixed. 7zip pointed at 7zzs, which is not in the artifact at all; upstream ships a single 7zz, now installed with 7z, 7za and 7zr as aliases. dunst and gpu-screen-recorder declared only X=>Y pairs, so their main command was never linked.

Checked with sbuild validate: 0 errors, 0 warnings, and the generated index has no duplicate targets and no completion that would be linked onto PATH in place of a binary.

@QaidVoid
QaidVoid added this pull request to the merge queue Aug 1, 2026
Merged via the queue into main with commit d645b12 Aug 1, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant