Fix optimise-store.cc to skip more paths on macOS

I hate to make this such a large check but the lack of documentation means we really have no idea what's allowed. All of them reported so far have been within ".app/Contents" directories. That appears to be a safe starting point. However, I would not be surprised to also find more paths that are disallowed for instance in .framework or .bundle directories.

Fixes #2031
Fixes #2229
This commit is contained in:
Matthew Justin Bauer 2018-06-14 12:34:55 -04:00 committed by GitHub
parent 85530bcc0b
commit 6d09e4400c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -104,8 +104,7 @@ void LocalStore::optimisePath_(Activity * act, OptimiseStats & stats,
*.app/Contents/Resources/\*.lproj seem to be the only paths affected. See *.app/Contents/Resources/\*.lproj seem to be the only paths affected. See
https://github.com/NixOS/nix/issues/1443 for more discussion. */ https://github.com/NixOS/nix/issues/1443 for more discussion. */
if (std::regex_search(path, std::regex("\\.app/Contents/PkgInfo$")) || if (std::regex_search(path, std::regex("\\.app/Contents/.+$")))
std::regex_search(path, std::regex("\\.app/Contents/Resources/.+\\.lproj$")))
{ {
debug(format("'%1%' is not allowed to be linked in macOS") % path); debug(format("'%1%' is not allowed to be linked in macOS") % path);
return; return;