nar: fix executable permissions logic #282
Merged
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.
This PR replaces
Directories.getPermissions
, which usesaccess
to test whether the file is executable, with a mix of functions from theunix
package to replicate the logic that Nix uses.Nix doesn't use
access
to check whether a file is executable. It instead checks whether the owner executable bit is set.When unpacking a NAR, Nix sets the executable bits for the owner, group, and other.
Fixes cachix/cachix#664.
Example in the wild
In the linked issue, the build of IINA contains multiple files with the extension
.strings
and permissions.r-xr-xr-x
. Take for example,result/Applications/IINA.app/Contents/Resources/de.lproj/AboutWindowController.strings
.access
returns false forX_OK
when run on this file.hnix fails to mark these files as executable when generating the NAR.