Skip to content

Commit b63baee

Browse files
committed
fix: make gapic-generator-java output zip timestamps deterministic
Set a fixed timestamp on all output Jar entries. This follows the approach of [Bazel's Jar creation logic](https://github.com/bazelbuild/bazel/blob/0327100c98a126b9fc83223ba41303fe8b37d331/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/jarhelper/JarHelper.java#L43-L55). Fixes https://github.com/googleapis/sdk-platform-java/issues/4096
1 parent d250637 commit b63baee

File tree

1 file changed

+11
-5
lines changed
  • gapic-generator-java/src/main/java/com/google/api/generator/gapic/protowriter

1 file changed

+11
-5
lines changed

gapic-generator-java/src/main/java/com/google/api/generator/gapic/protowriter/Writer.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ static void writeReflectConfigFile(
124124
String jarEntryLocation =
125125
String.format("src/main/resources/META-INF/native-image/%s/reflect-config.json", pakkage);
126126
try {
127-
jos.putNextEntry(new JarEntry(jarEntryLocation));
127+
jos.putNextEntry(jarEntry(jarEntryLocation));
128128
jos.write(prettyGson.toJson(reflectConfigInfo).getBytes(StandardCharsets.UTF_8));
129129
} catch (IOException e) {
130130
throw new GapicWriterException("Could not write reflect-config.json", e);
@@ -141,7 +141,7 @@ private static String writeClazz(
141141

142142
String path = getPath(clazz.packageString(), clazz.classIdentifier().name());
143143
String className = clazz.classIdentifier().name();
144-
JarEntry jarEntry = new JarEntry(String.format("%s/%s.java", path, className));
144+
JarEntry jarEntry = jarEntry(String.format("%s/%s.java", path, className));
145145
try {
146146
jos.putNextEntry(jarEntry);
147147
jos.write(code.getBytes(StandardCharsets.UTF_8));
@@ -159,7 +159,7 @@ private static void writeSamples(
159159
GapicClass gapicClazz, String pakkage, String clazzPath, JarOutputStream jos) {
160160
for (Sample sample : gapicClazz.samples()) {
161161
JarEntry jarEntry =
162-
new JarEntry(
162+
jarEntry(
163163
String.format(
164164
"samples/snippets/generated/%s/%s/%s/%s.java",
165165
clazzPath,
@@ -189,7 +189,7 @@ static String writePackageInfo(
189189
codeWriter.clear();
190190

191191
String packagePath = "src/main/java/" + packageInfo.pakkage().replaceAll("\\.", "/");
192-
JarEntry jarEntry = new JarEntry(String.format("%s/package-info.java", packagePath));
192+
JarEntry jarEntry = jarEntry(String.format("%s/package-info.java", packagePath));
193193
try {
194194
jos.putNextEntry(jarEntry);
195195
jos.write(code.getBytes(StandardCharsets.UTF_8));
@@ -201,7 +201,7 @@ static String writePackageInfo(
201201

202202
private static void writeMetadataFile(GapicContext context, String path, JarOutputStream jos) {
203203
if (context.gapicMetadataEnabled()) {
204-
JarEntry jarEntry = new JarEntry(String.format("%s/gapic_metadata.json", path));
204+
JarEntry jarEntry = jarEntry(String.format("%s/gapic_metadata.json", path));
205205
try {
206206
jos.putNextEntry(jarEntry);
207207
jos.write(
@@ -230,4 +230,10 @@ private static String getPath(String pakkage, String className) {
230230
private static String getSamplePackage(GapicClass gapicClazz) {
231231
return gapicClazz.classDefinition().packageString().concat(".samples");
232232
}
233+
234+
private static JarEntry jarEntry(String name) {
235+
JarEntry entry = new JarEntry(name);
236+
entry.setTime(1262304000000L);
237+
return entry;
238+
}
233239
}

0 commit comments

Comments
 (0)