Accepting request 1188402 from Java:packages
Reproducible mar mtimes and javadoc generation OBS-URL: https://build.opensuse.org/request/show/1188402 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/ant?expand=0&rev=97
This commit is contained in:
commit
1b69636c34
@ -1,5 +1,16 @@
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sat May 4 00:53:40 UTC 2024 - Anton Shvetz <shvetz.anton@gmail.com>
|
Thu Jul 18 12:09:04 UTC 2024 - Fridrich Strba <fstrba@suse.com>
|
||||||
|
|
||||||
|
- Added patches:
|
||||||
|
* reproducible-jar-mtime.patch
|
||||||
|
+ make the modification times of files in a jar file
|
||||||
|
reproducible
|
||||||
|
* reproducible-javadoc.patch
|
||||||
|
+ make javadoc generation reproducible: don't generate
|
||||||
|
timestamps, and normalize locale and encoding
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat May 4 00:54:38 UTC 2024 - Anton Shvetz <shvetz.anton@gmail.com>
|
||||||
|
|
||||||
- Add forgotten open-test-reporting/events to
|
- Add forgotten open-test-reporting/events to
|
||||||
%{_sysconfdir}/ant.d/junitlauncher
|
%{_sysconfdir}/ant.d/junitlauncher
|
||||||
|
@ -46,6 +46,8 @@ Patch5: reproducible-build-manifest.patch
|
|||||||
Patch6: apache-ant-xml-apis.patch
|
Patch6: apache-ant-xml-apis.patch
|
||||||
# PATCH-FEATURE-OPENSUSE debian patch to use SOURCE_DATE_EPOCH for timestamp in property files
|
# PATCH-FEATURE-OPENSUSE debian patch to use SOURCE_DATE_EPOCH for timestamp in property files
|
||||||
Patch7: reproducible-propertyfile-task.patch
|
Patch7: reproducible-propertyfile-task.patch
|
||||||
|
Patch8: reproducible-jar-mtime.patch
|
||||||
|
Patch9: reproducible-javadoc.patch
|
||||||
BuildRequires: antlr-bootstrap
|
BuildRequires: antlr-bootstrap
|
||||||
BuildRequires: java-devel >= 1.8
|
BuildRequires: java-devel >= 1.8
|
||||||
BuildRequires: javapackages-local >= 6
|
BuildRequires: javapackages-local >= 6
|
||||||
@ -395,6 +397,8 @@ find -name \*.jar -print -delete
|
|||||||
%patch -P 5 -p1
|
%patch -P 5 -p1
|
||||||
%patch -P 6 -p1
|
%patch -P 6 -p1
|
||||||
%patch -P 7 -p1
|
%patch -P 7 -p1
|
||||||
|
%patch -P 8 -p1
|
||||||
|
%patch -P 9 -p1
|
||||||
|
|
||||||
# clean jar files
|
# clean jar files
|
||||||
find . -name "*.jar" -print -delete
|
find . -name "*.jar" -print -delete
|
||||||
|
@ -1,5 +1,16 @@
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sat May 4 00:55:36 UTC 2024 - Anton Shvetz <shvetz.anton@gmail.com>
|
Thu Jul 18 12:09:04 UTC 2024 - Fridrich Strba <fstrba@suse.com>
|
||||||
|
|
||||||
|
- Added patches:
|
||||||
|
* reproducible-jar-mtime.patch
|
||||||
|
+ make the modification times of files in a jar file
|
||||||
|
reproducible
|
||||||
|
* reproducible-javadoc.patch
|
||||||
|
+ make javadoc generation reproducible: don't generate
|
||||||
|
timestamps, and normalize locale and encoding
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat May 4 00:54:38 UTC 2024 - Anton Shvetz <shvetz.anton@gmail.com>
|
||||||
|
|
||||||
- Add forgotten open-test-reporting/events to
|
- Add forgotten open-test-reporting/events to
|
||||||
%{_sysconfdir}/ant.d/junitlauncher
|
%{_sysconfdir}/ant.d/junitlauncher
|
||||||
|
@ -46,6 +46,8 @@ Patch5: reproducible-build-manifest.patch
|
|||||||
Patch6: apache-ant-xml-apis.patch
|
Patch6: apache-ant-xml-apis.patch
|
||||||
# PATCH-FEATURE-OPENSUSE debian patch to use SOURCE_DATE_EPOCH for timestamp in property files
|
# PATCH-FEATURE-OPENSUSE debian patch to use SOURCE_DATE_EPOCH for timestamp in property files
|
||||||
Patch7: reproducible-propertyfile-task.patch
|
Patch7: reproducible-propertyfile-task.patch
|
||||||
|
Patch8: reproducible-jar-mtime.patch
|
||||||
|
Patch9: reproducible-javadoc.patch
|
||||||
BuildRequires: antlr-bootstrap
|
BuildRequires: antlr-bootstrap
|
||||||
BuildRequires: java-devel >= 1.8
|
BuildRequires: java-devel >= 1.8
|
||||||
BuildRequires: javapackages-local >= 6
|
BuildRequires: javapackages-local >= 6
|
||||||
@ -395,6 +397,8 @@ find -name \*.jar -print -delete
|
|||||||
%patch -P 5 -p1
|
%patch -P 5 -p1
|
||||||
%patch -P 6 -p1
|
%patch -P 6 -p1
|
||||||
%patch -P 7 -p1
|
%patch -P 7 -p1
|
||||||
|
%patch -P 8 -p1
|
||||||
|
%patch -P 9 -p1
|
||||||
|
|
||||||
# clean jar files
|
# clean jar files
|
||||||
find . -name "*.jar" -print -delete
|
find . -name "*.jar" -print -delete
|
||||||
|
@ -1,5 +1,16 @@
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sat May 4 00:55:23 UTC 2024 - Anton Shvetz <shvetz.anton@gmail.com>
|
Thu Jul 18 12:09:04 UTC 2024 - Fridrich Strba <fstrba@suse.com>
|
||||||
|
|
||||||
|
- Added patches:
|
||||||
|
* reproducible-jar-mtime.patch
|
||||||
|
+ make the modification times of files in a jar file
|
||||||
|
reproducible
|
||||||
|
* reproducible-javadoc.patch
|
||||||
|
+ make javadoc generation reproducible: don't generate
|
||||||
|
timestamps, and normalize locale and encoding
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat May 4 00:54:38 UTC 2024 - Anton Shvetz <shvetz.anton@gmail.com>
|
||||||
|
|
||||||
- Add forgotten open-test-reporting/events to
|
- Add forgotten open-test-reporting/events to
|
||||||
%{_sysconfdir}/ant.d/junitlauncher
|
%{_sysconfdir}/ant.d/junitlauncher
|
||||||
|
@ -46,6 +46,8 @@ Patch5: reproducible-build-manifest.patch
|
|||||||
Patch6: apache-ant-xml-apis.patch
|
Patch6: apache-ant-xml-apis.patch
|
||||||
# PATCH-FEATURE-OPENSUSE debian patch to use SOURCE_DATE_EPOCH for timestamp in property files
|
# PATCH-FEATURE-OPENSUSE debian patch to use SOURCE_DATE_EPOCH for timestamp in property files
|
||||||
Patch7: reproducible-propertyfile-task.patch
|
Patch7: reproducible-propertyfile-task.patch
|
||||||
|
Patch8: reproducible-jar-mtime.patch
|
||||||
|
Patch9: reproducible-javadoc.patch
|
||||||
BuildRequires: antlr-bootstrap
|
BuildRequires: antlr-bootstrap
|
||||||
BuildRequires: java-devel >= 1.8
|
BuildRequires: java-devel >= 1.8
|
||||||
BuildRequires: javapackages-local >= 6
|
BuildRequires: javapackages-local >= 6
|
||||||
@ -395,6 +397,8 @@ find -name \*.jar -print -delete
|
|||||||
%patch -P 5 -p1
|
%patch -P 5 -p1
|
||||||
%patch -P 6 -p1
|
%patch -P 6 -p1
|
||||||
%patch -P 7 -p1
|
%patch -P 7 -p1
|
||||||
|
%patch -P 8 -p1
|
||||||
|
%patch -P 9 -p1
|
||||||
|
|
||||||
# clean jar files
|
# clean jar files
|
||||||
find . -name "*.jar" -print -delete
|
find . -name "*.jar" -print -delete
|
||||||
|
11
ant.changes
11
ant.changes
@ -1,3 +1,14 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jul 18 12:09:04 UTC 2024 - Fridrich Strba <fstrba@suse.com>
|
||||||
|
|
||||||
|
- Added patches:
|
||||||
|
* reproducible-jar-mtime.patch
|
||||||
|
+ make the modification times of files in a jar file
|
||||||
|
reproducible
|
||||||
|
* reproducible-javadoc.patch
|
||||||
|
+ make javadoc generation reproducible: don't generate
|
||||||
|
timestamps, and normalize locale and encoding
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sat May 4 00:54:38 UTC 2024 - Anton Shvetz <shvetz.anton@gmail.com>
|
Sat May 4 00:54:38 UTC 2024 - Anton Shvetz <shvetz.anton@gmail.com>
|
||||||
|
|
||||||
|
4
ant.spec
4
ant.spec
@ -45,6 +45,8 @@ Patch5: reproducible-build-manifest.patch
|
|||||||
Patch6: apache-ant-xml-apis.patch
|
Patch6: apache-ant-xml-apis.patch
|
||||||
# PATCH-FEATURE-OPENSUSE debian patch to use SOURCE_DATE_EPOCH for timestamp in property files
|
# PATCH-FEATURE-OPENSUSE debian patch to use SOURCE_DATE_EPOCH for timestamp in property files
|
||||||
Patch7: reproducible-propertyfile-task.patch
|
Patch7: reproducible-propertyfile-task.patch
|
||||||
|
Patch8: reproducible-jar-mtime.patch
|
||||||
|
Patch9: reproducible-javadoc.patch
|
||||||
BuildRequires: antlr-bootstrap
|
BuildRequires: antlr-bootstrap
|
||||||
BuildRequires: java-devel >= 1.8
|
BuildRequires: java-devel >= 1.8
|
||||||
BuildRequires: javapackages-local >= 6
|
BuildRequires: javapackages-local >= 6
|
||||||
@ -394,6 +396,8 @@ find -name \*.jar -print -delete
|
|||||||
%patch -P 5 -p1
|
%patch -P 5 -p1
|
||||||
%patch -P 6 -p1
|
%patch -P 6 -p1
|
||||||
%patch -P 7 -p1
|
%patch -P 7 -p1
|
||||||
|
%patch -P 8 -p1
|
||||||
|
%patch -P 9 -p1
|
||||||
|
|
||||||
# clean jar files
|
# clean jar files
|
||||||
find . -name "*.jar" -print -delete
|
find . -name "*.jar" -print -delete
|
||||||
|
89
reproducible-jar-mtime.patch
Normal file
89
reproducible-jar-mtime.patch
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
--- apache-ant-1.10.14/src/main/org/apache/tools/ant/taskdefs/Jar.java 2024-07-16 14:41:00.996055227 +0200
|
||||||
|
+++ apache-ant-1.10.14/src/main/org/apache/tools/ant/taskdefs/Jar.java 2024-07-16 14:52:07.583866195 +0200
|
||||||
|
@@ -450,6 +450,13 @@
|
||||||
|
serviceList.add(service);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ private long currentTimeMillisOrSourceDateEpoch() {
|
||||||
|
+ if ( System.getenv("SOURCE_DATE_EPOCH") != null ) {
|
||||||
|
+ return 1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"));
|
||||||
|
+ }
|
||||||
|
+ return System.currentTimeMillis();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Write SPI Information to JAR
|
||||||
|
*/
|
||||||
|
@@ -459,7 +466,7 @@
|
||||||
|
//stolen from writeManifest
|
||||||
|
super.zipFile(is, zOut,
|
||||||
|
"META-INF/services/" + service.getType(),
|
||||||
|
- System.currentTimeMillis(), null,
|
||||||
|
+ currentTimeMillisOrSourceDateEpoch(), null,
|
||||||
|
ZipFileSet.DEFAULT_FILE_MODE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -579,7 +586,7 @@
|
||||||
|
new ByteArrayInputStream(baos.toByteArray());
|
||||||
|
try {
|
||||||
|
super.zipFile(bais, zOut, MANIFEST_NAME,
|
||||||
|
- System.currentTimeMillis(), null,
|
||||||
|
+ currentTimeMillisOrSourceDateEpoch(), null,
|
||||||
|
ZipFileSet.DEFAULT_FILE_MODE);
|
||||||
|
} finally {
|
||||||
|
// not really required
|
||||||
|
@@ -656,7 +663,7 @@
|
||||||
|
writer.close();
|
||||||
|
try (ByteArrayInputStream bais =
|
||||||
|
new ByteArrayInputStream(baos.toByteArray())) {
|
||||||
|
- super.zipFile(bais, zOut, INDEX_NAME, System.currentTimeMillis(),
|
||||||
|
+ super.zipFile(bais, zOut, INDEX_NAME, currentTimeMillisOrSourceDateEpoch(),
|
||||||
|
null, ZipFileSet.DEFAULT_FILE_MODE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--- apache-ant-1.10.14/src/main/org/apache/tools/ant/taskdefs/Zip.java 2024-07-16 14:41:00.999388566 +0200
|
||||||
|
+++ apache-ant-1.10.14/src/main/org/apache/tools/ant/taskdefs/Zip.java 2024-07-17 14:27:00.917945219 +0200
|
||||||
|
@@ -682,6 +682,7 @@
|
||||||
|
"Failed to create missing parent directory for %s",
|
||||||
|
zipFile);
|
||||||
|
}
|
||||||
|
+ parent.setLastModified(currentTimeMillisOrSourceDateEpoch());
|
||||||
|
|
||||||
|
updatedFile = true;
|
||||||
|
if (!zipFile.exists() && state.isWithoutAnyResources()) {
|
||||||
|
@@ -1669,6 +1670,13 @@
|
||||||
|
extra);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ private long currentTimeMillisOrSourceDateEpoch() {
|
||||||
|
+ if ( System.getenv("SOURCE_DATE_EPOCH") != null ) {
|
||||||
|
+ return 1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"));
|
||||||
|
+ }
|
||||||
|
+ return System.currentTimeMillis();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Add a directory to the zip stream.
|
||||||
|
* @param dir the directory to add to the archive
|
||||||
|
@@ -1708,7 +1716,7 @@
|
||||||
|
} else if (dir != null && dir.isExists()) {
|
||||||
|
ze.setTime(dir.getLastModified() + millisToAdd);
|
||||||
|
} else {
|
||||||
|
- ze.setTime(System.currentTimeMillis() + millisToAdd);
|
||||||
|
+ ze.setTime(currentTimeMillisOrSourceDateEpoch() + millisToAdd);
|
||||||
|
}
|
||||||
|
ze.setSize(0);
|
||||||
|
ze.setMethod(ZipEntry.STORED);
|
||||||
|
@@ -1794,7 +1802,11 @@
|
||||||
|
|
||||||
|
if (!skipWriting) {
|
||||||
|
final ZipEntry ze = new ZipEntry(vPath);
|
||||||
|
- ze.setTime(fixedModTime != null ? modTimeMillis : lastModified);
|
||||||
|
+ long newLastModified = lastModified;
|
||||||
|
+ if ( System.getenv("SOURCE_DATE_EPOCH") != null ) {
|
||||||
|
+ newLastModified = 1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"));
|
||||||
|
+ }
|
||||||
|
+ ze.setTime(fixedModTime != null ? modTimeMillis : newLastModified);
|
||||||
|
ze.setMethod(doCompress ? ZipEntry.DEFLATED : ZipEntry.STORED);
|
||||||
|
// if the input stream doesn't support mark/reset ability, we wrap it in a
|
||||||
|
// stream that adds that support.
|
38
reproducible-javadoc.patch
Normal file
38
reproducible-javadoc.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
--- apache-ant-1.10.14/src/main/org/apache/tools/ant/taskdefs/Javadoc.java 2024-07-17 15:06:13.718343866 +0200
|
||||||
|
+++ apache-ant-1.10.14/src/main/org/apache/tools/ant/taskdefs/Javadoc.java 2024-07-18 14:51:50.362329096 +0200
|
||||||
|
@@ -1297,6 +1297,15 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
+ * Control generation of timestamps.
|
||||||
|
+ *
|
||||||
|
+ * @param b if true, don't generate timestamps.
|
||||||
|
+ */
|
||||||
|
+ public void setNoTimestamp(final boolean b) {
|
||||||
|
+ addArgIf(b, "-notimestamp");
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
* Create link to Javadoc output at the given URL.
|
||||||
|
*
|
||||||
|
* @return link argument to configure
|
||||||
|
@@ -1807,6 +1816,19 @@
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void execute() throws BuildException {
|
||||||
|
+ if (System.getenv("SOURCE_DATE_EPOCH") != null) {
|
||||||
|
+ java.util.List<String> arguments = java.util.Arrays.asList(cmd.getCommandline());
|
||||||
|
+ if (!arguments.contains("-locale")) {
|
||||||
|
+ setLocale("en");
|
||||||
|
+ }
|
||||||
|
+ if (!arguments.contains("-encoding")) {
|
||||||
|
+ setEncoding("UTF-8");
|
||||||
|
+ }
|
||||||
|
+ if (!arguments.contains("-notimestamp")) {
|
||||||
|
+ setNoTimestamp(true);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
checkTaskName();
|
||||||
|
|
||||||
|
final List<String> packagesToDoc = new Vector<>();
|
Loading…
x
Reference in New Issue
Block a user