diff options
author | Danny Milosavljevic <dannym@scratchpost.org> | 2023-07-31 20:09:19 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2024-08-31 10:44:40 +0200 |
commit | 3c8ca6b26bee110c4bcfbc6aaa7d4805b1915fc8 (patch) | |
tree | 4bd367b82bd90260e085c414ec3e559142cb4e36 | |
parent | dbce2fc28728721c0ac81929799d55deae6b0ab5 (diff) | |
download | guix-3c8ca6b26bee110c4bcfbc6aaa7d4805b1915fc8.tar.gz guix-3c8ca6b26bee110c4bcfbc6aaa7d4805b1915fc8.zip |
gnu: openjdk15: Make reproducible.
* gnu/packages/java.scm (openjdk15)[source]: Add patch.
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
-rw-r--r-- | gnu/packages/java.scm | 3 | ||||
-rw-r--r-- | gnu/packages/patches/openjdk-15-jtask-reproducibility.patch | 40 |
2 files changed, 42 insertions, 1 deletions
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 74981b95af..b3b037ea43 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -1710,7 +1710,8 @@ blacklisted.certs.pem" (modules '()) (snippet #f) (patches - (search-patches "openjdk-15-xcursor-no-dynamic.patch")))) + (search-patches "openjdk-15-jtask-reproducibility.patch" + "openjdk-15-xcursor-no-dynamic.patch")))) (inputs (modify-inputs (package-inputs base) (append libxcursor))) ;for our patch to work diff --git a/gnu/packages/patches/openjdk-15-jtask-reproducibility.patch b/gnu/packages/patches/openjdk-15-jtask-reproducibility.patch new file mode 100644 index 0000000000..2052983ade --- /dev/null +++ b/gnu/packages/patches/openjdk-15-jtask-reproducibility.patch @@ -0,0 +1,40 @@ +--- 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/jdk.jlink/share/classes/jdk/tools/jmod/JmodTask.java.orig 2022-04-04 10:57:40.346312924 +0200 ++++ 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/jdk.jlink/share/classes/jdk/tools/jmod/JmodTask.java 2022-04-04 11:01:38.480751902 +0200 +@@ -82,6 +82,7 @@ + import jdk.internal.module.ModuleTarget; + import jdk.internal.module.Resources; + import jdk.tools.jlink.internal.Utils; ++import java.util.TreeSet; + + import static java.util.stream.Collectors.joining; + +@@ -750,6 +751,7 @@ + void processSection(JmodOutputStream out, Section section, Path path) + throws IOException + { ++ TreeSet<Path> paths = new TreeSet<>(); + Files.walkFileTree(path, Set.of(FileVisitOption.FOLLOW_LINKS), + Integer.MAX_VALUE, new SimpleFileVisitor<Path>() { + @Override +@@ -765,14 +767,18 @@ + if (out.contains(section, name)) { + warning("warn.ignore.duplicate.entry", name, section); + } else { +- try (InputStream in = Files.newInputStream(file)) { +- out.writeEntry(in, section, name); +- } ++ paths.add(file); + } + } + return FileVisitResult.CONTINUE; + } + }); ++ ++ for (Path file : paths) { ++ try (InputStream in = Files.newInputStream(file)) { ++ out.writeEntry(in, section, path.relativize(file).toString()); ++ } ++ } + } + + boolean matches(Path path, List<PathMatcher> matchers) { |