`Libsystem`: fix broken `postFetch` step in `darling.src`

Fixes #297765

The `postFetch` step was broken in several ways:
1. It attempts to unpack the archive, but this has already been done before reaching this step.
2. It unpacks the file `$downloadedFile`, but this file no longer exists because it's been moved to `$renamed`.

Additionally, since (1) neither directory `src/opendirectory` nor `src/OpenDirectory` are used for anything, and (2) it's not clear whether Nix produces different hashes depending on file system case sensitivity, the chosen solution is to just remove both these two directories for now. If later a file from either directory is needed, an investigation needs to be done on how Nix hashes archives with clashing names on case insensitive file systems.
This commit is contained in:
Rune K. Svendsen 2024-03-31 17:17:25 +02:00
parent e5bc6d679f
commit 4f911a7247
1 changed files with 6 additions and 17 deletions

View File

@ -10,24 +10,13 @@
let
darling.src = fetchzip {
url = "https://github.com/darlinghq/darling/archive/d2cc5fa748003aaa70ad4180fff0a9a85dc65e9b.tar.gz";
sha256 = "11b51fw47nl505h63bgx5kqiyhf3glhp1q6jkpb6nqfislnzzkrf";
hash = "sha256-/YynrKJdi26Xj4lvp5wsN+TAhZjonOrNNHuk4L5tC7s=";
postFetch = ''
# The archive contains both `src/opendirectory` and `src/OpenDirectory`,
# pre-create the directory to choose the canonical case on
# case-insensitive filesystems.
mkdir -p $out/src/OpenDirectory
cd $out
tar -xzf $downloadedFile --strip-components=1
rm -r $out/src/libm
# If `src/opendirectory` and `src/OpenDirectory` refer to different
# things, then combine them into `src/OpenDirectory` to match the result
# on case-insensitive filesystems.
if [ "$(stat -c %i src/opendirectory)" != "$(stat -c %i src/OpenDirectory)" ]; then
mv src/opendirectory/* src/OpenDirectory/
rmdir src/opendirectory
fi
# The archive contains both `src/opendirectory` and `src/OpenDirectory`.
# Since neither directory is used for anything, we just remove them to avoid
# the potential issue where file systems with different case sensitivity produce
# different hashes.
rm -rf $out/src/{OpenDirectory,opendirectory}
'';
};