openjdk team mailing list archive
-
openjdk team
-
Mailing list archive
-
Message #13824
Bug#933342: openjdk-11: Make the generated module-info.java files reproducible
Source: openjdk-11
Version: 11.0.4+11-1
Severity: normal
OpenJDK generates module-info.java files at build time which capture the build
path in the comments. Here is for example an extract of the module-info.java
file in the java.base module:
module java.base {
// source file: file:///home/johndoe/openjdk/src/java.base/share/classes/module-info.java
// file:///home/johndoe/openjdk/src/java.base/unix/classes/module-info.java.extra
exports java.io;
exports java.lang;
This affects the reproducibility of the src.zip installed by openjdk-11-source.
The patch attached fixes the GenModuleInfoSource build tool responsible for
this issue. The full build path is replaced by a path relative to the OpenJDK
source directory.
Emmanuel Bourg
Description: Makes the generated module-info.java files reproducible (removes a captured build path)
Author: Emmanuel Bourg <ebourg@xxxxxxxxxx>
Forwarded: no
--- a/make/jdk/src/classes/build/tools/module/GenModuleInfoSource.java
+++ b/make/jdk/src/classes/build/tools/module/GenModuleInfoSource.java
@@ -147,9 +147,10 @@
writer.println(l);
if (l.trim().startsWith("module ")) {
// print URI rather than file path to avoid escape
- writer.format(" // source file: %s%n", sourceFile.toUri());
+ String buildPath = System.getProperty("user.dir").replaceAll("make$", "");
+ writer.format(" // source file: %s%n", sourceFile.toUri().toString().replace(buildPath, ""));
for (Path file: extraFiles) {
- writer.format(" // %s%n", file.toUri());
+ writer.format(" // %s%n", file.toUri().toString().replace(buildPath, ""));
}
break;
}