diff options
Diffstat (limited to 'pkgs/build-support/setup-hooks/canonicalize-jars.sh')
-rw-r--r-- | pkgs/build-support/setup-hooks/canonicalize-jars.sh | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/pkgs/build-support/setup-hooks/canonicalize-jars.sh b/pkgs/build-support/setup-hooks/canonicalize-jars.sh new file mode 100644 index 0000000000000..8c55810748ea0 --- /dev/null +++ b/pkgs/build-support/setup-hooks/canonicalize-jars.sh @@ -0,0 +1,17 @@ +# This setup hook causes the fixup phase to repack all JAR files in a +# canonical & deterministic fashion, e.g. resetting mtimes (like with normal +# store files) and avoiding impure metadata. + +fixupOutputHooks+=('if [ -z "$dontCanonicalizeJars" -a -e "$prefix" ]; then canonicalizeJarsIn "$prefix"; fi') + +canonicalizeJarsIn() { + local dir="$1" + header "canonicalizing jars in $dir" + dir="$(realpath -sm -- "$dir")" + while IFS= read -rd '' f; do + canonicalizeJar "$f" + done < <(find -- "$dir" -type f -name '*.jar' -print0) + stopNest +} + +source @canonicalize_jar@ |