← Back to team overview

openjdk team mailing list archive

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;
                 }