feat!: publish one file list per package - #16
Merged
Merged
Conversation
This was referenced Aug 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Needs pkgforge/soar#186 before merging the last commit; see the note at the end.
A package used to describe itself three ways.
providessaid what names appear onPATH,binariessaid where an executable lives when the name alone would not find it, and[source.install]said where files come from but was filtered down to executables on the way into the index. The three overlapped, andbinariessilently overrodeprovidesat install time.They collapse into one field.
filescarries everything the package takes out of its artifact:tois a path inside the package directory, so where a file lands says what it is:bin/is a command,share/man/a manual page. An emptysourcemeans the artifact is itself the file, which is how a bare binary or an AppImage says so.aliasholds package-relative paths resolving to the same file, which is howdunstexposesdunstctlanddunstify.Recipes may write the list either way. Most read better short:
The long form exists for what that cannot express, an artifact with no interior path and extra names:
validatenow rejects an install target that is absolute or escapes the package, and warns when a target starts with a prefix soar links nowhere, soshare/mann1/is caught rather than installing somewhere nothing reads.The generated index was compared against the previous one at every step: every link name
binariesproduced is still produced, and none was added.Merge order. The last commit drops
binariesandprovidesfrom the index. Current soar reads those and does not readfiles, so publishing without them makes any client lacking soar#186 fall back to finding an executable by package name. That is right for simple packages and wrong for 7zip, gdu, nnn, usql, the multi-binary ones such asage,clipcatandyazi, and the six that relied onprovides. It is deliberately last on the branch so it can be held back.