Allow for reproducible builds
REPRODUCIBLE_BUILD=1 ./gradlew clean :build
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
From e60dd702c247692529a7cece94a475650623482e Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Herzig <me@johni0702.de>
|
||||
Date: Tue, 8 Aug 2017 19:05:14 +0200
|
||||
Subject: [PATCH 1/7] Configure gradle to build reproducible archives
|
||||
|
||||
---
|
||||
build.gradle | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/build.gradle b/build.gradle
|
||||
index 4f0aa28..e0c46ea 100644
|
||||
--- a/build.gradle
|
||||
+++ b/build.gradle
|
||||
@@ -170,6 +170,11 @@ processResources {
|
||||
from 'LICENSE.txt'
|
||||
}
|
||||
|
||||
+tasks.withType(AbstractArchiveTask) {
|
||||
+ preserveFileTimestamps = false
|
||||
+ reproducibleFileOrder = true
|
||||
+}
|
||||
+
|
||||
// License header formatting
|
||||
license {
|
||||
ext {
|
||||
--
|
||||
2.5.5
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
From c245b961e83176a1731a7eaf1f1f3ffbefa1afb7 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Herzig <me@johni0702.de>
|
||||
Date: Tue, 8 Aug 2017 19:08:56 +0200
|
||||
Subject: [PATCH 2/7] Remove/replace all buildscript dependencies
|
||||
|
||||
---
|
||||
build.gradle | 24 +-----------------------
|
||||
1 file changed, 1 insertion(+), 23 deletions(-)
|
||||
|
||||
diff --git a/build.gradle b/build.gradle
|
||||
index e0c46ea..165dbe4 100644
|
||||
--- a/build.gradle
|
||||
+++ b/build.gradle
|
||||
@@ -1,17 +1,12 @@
|
||||
// Gradle repositories and dependencies
|
||||
buildscript {
|
||||
- repositories {
|
||||
- jcenter()
|
||||
- }
|
||||
dependencies {
|
||||
- classpath 'nl.javadude.gradle.plugins:license-gradle-plugin:0.11.0'
|
||||
- classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.3'
|
||||
+ classpath files('../shadow.jar')
|
||||
}
|
||||
}
|
||||
|
||||
// Apply plugin
|
||||
apply plugin: 'java'
|
||||
-apply plugin: 'license'
|
||||
apply plugin: 'checkstyle'
|
||||
apply plugin: 'maven'
|
||||
apply plugin: 'eclipse'
|
||||
@@ -175,23 +170,6 @@ tasks.withType(AbstractArchiveTask) {
|
||||
reproducibleFileOrder = true
|
||||
}
|
||||
|
||||
-// License header formatting
|
||||
-license {
|
||||
- ext {
|
||||
- name = project.name
|
||||
- organization = project.organization
|
||||
- url = project.url
|
||||
- }
|
||||
- include '**/*.java'
|
||||
- header file("HEADER.txt")
|
||||
- sourceSets = project.sourceSets
|
||||
- ignoreFailures false
|
||||
- strictCheck true
|
||||
- mapping {
|
||||
- java = 'SLASHSTAR_STYLE'
|
||||
- }
|
||||
-}
|
||||
-
|
||||
checkstyle {
|
||||
configProperties = [
|
||||
"name" : project.name,
|
||||
--
|
||||
2.5.5
|
||||
|
||||
25
gradle/reprod/patches/mixin/0003-Fix-for-Gradle-3.patch
Normal file
25
gradle/reprod/patches/mixin/0003-Fix-for-Gradle-3.patch
Normal file
@@ -0,0 +1,25 @@
|
||||
From 0f250141ba6515dbeffeb0722bf29976850bb323 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Herzig <me@johni0702.de>
|
||||
Date: Tue, 8 Aug 2017 19:13:17 +0200
|
||||
Subject: [PATCH 3/7] Fix for Gradle 3
|
||||
|
||||
---
|
||||
build.gradle | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/build.gradle b/build.gradle
|
||||
index 165dbe4..0f189ec 100644
|
||||
--- a/build.gradle
|
||||
+++ b/build.gradle
|
||||
@@ -92,7 +92,7 @@ dependencies {
|
||||
|
||||
// Task to read ASM library and rename packages
|
||||
task renamedASM {
|
||||
- outputs.file files(configurations.asm.files.findAll{!it.name.contains("sources")}.collect { file ->
|
||||
+ outputs.files files(configurations.asm.files.findAll{!it.name.contains("sources")}.collect { file ->
|
||||
new File(project.repositories['renamed-packages'].dirs[0], "mixin-" + file.name).path
|
||||
})
|
||||
doLast {
|
||||
--
|
||||
2.5.5
|
||||
|
||||
42
gradle/reprod/patches/mixin/0004-Disable-checkstyle.patch
Normal file
42
gradle/reprod/patches/mixin/0004-Disable-checkstyle.patch
Normal file
@@ -0,0 +1,42 @@
|
||||
From eb4fa04cf82067b20caa7222c154f8b6f7ab95ac Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Herzig <me@johni0702.de>
|
||||
Date: Tue, 8 Aug 2017 19:13:45 +0200
|
||||
Subject: [PATCH 4/7] Disable checkstyle
|
||||
|
||||
---
|
||||
build.gradle | 12 ------------
|
||||
1 file changed, 12 deletions(-)
|
||||
|
||||
diff --git a/build.gradle b/build.gradle
|
||||
index 0f189ec..f8598a3 100644
|
||||
--- a/build.gradle
|
||||
+++ b/build.gradle
|
||||
@@ -7,7 +7,6 @@ buildscript {
|
||||
|
||||
// Apply plugin
|
||||
apply plugin: 'java'
|
||||
-apply plugin: 'checkstyle'
|
||||
apply plugin: 'maven'
|
||||
apply plugin: 'eclipse'
|
||||
apply plugin: 'idea'
|
||||
@@ -170,17 +169,6 @@ tasks.withType(AbstractArchiveTask) {
|
||||
reproducibleFileOrder = true
|
||||
}
|
||||
|
||||
-checkstyle {
|
||||
- configProperties = [
|
||||
- "name" : project.name,
|
||||
- "organization": project.organization,
|
||||
- "url" : project.url,
|
||||
- "year" : project.inceptionYear
|
||||
- ]
|
||||
- configFile = file("checkstyle.xml")
|
||||
- toolVersion = '6.19'
|
||||
-}
|
||||
-
|
||||
// Source compiler configuration
|
||||
tasks.withType(JavaCompile) {
|
||||
options.compilerArgs += ['-Xlint:all', '-Xlint:-path']
|
||||
--
|
||||
2.5.5
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
From c66ba83e4b27f6f094c2dcdaaac095d3ca69b41c Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Herzig <me@johni0702.de>
|
||||
Date: Tue, 8 Aug 2017 19:35:08 +0200
|
||||
Subject: [PATCH 5/7] Replace fernflower SNAPSHOT depencency
|
||||
|
||||
---
|
||||
build.gradle | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/build.gradle b/build.gradle
|
||||
index f8598a3..e9a965b 100644
|
||||
--- a/build.gradle
|
||||
+++ b/build.gradle
|
||||
@@ -143,8 +143,8 @@ dependencies {
|
||||
fernflowerCompile 'commons-io:commons-io:2.4'
|
||||
fernflowerCompile 'org.apache.logging.log4j:log4j-core:2.0-beta9'
|
||||
fernflowerCompile 'com.google.guava:guava:17.0'
|
||||
- fernflowerCompile 'org.jetbrains.java.decompiler:fernflower:sponge-SNAPSHOT'
|
||||
- compile 'org.jetbrains.java.decompiler:fernflower:sponge-SNAPSHOT'
|
||||
+ fernflowerCompile files('../fernflower.jar')
|
||||
+ compile files('../fernflower.jar')
|
||||
|
||||
compile('net.minecraft:launchwrapper:1.11') {
|
||||
exclude module: 'lwjgl'
|
||||
--
|
||||
2.5.5
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
From 6422d5985faeff394237a499e5529b765dd46b7e Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Herzig <me@johni0702.de>
|
||||
Date: Tue, 8 Aug 2017 21:40:59 +0200
|
||||
Subject: [PATCH 6/7] Use TreeMap in ReferenceMapper for reproducibility
|
||||
|
||||
---
|
||||
.../java/org/spongepowered/asm/mixin/refmap/ReferenceMapper.java | 9 ++++-----
|
||||
1 file changed, 4 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/main/java/org/spongepowered/asm/mixin/refmap/ReferenceMapper.java b/src/main/java/org/spongepowered/asm/mixin/refmap/ReferenceMapper.java
|
||||
index 2a368e7..082b5dd 100644
|
||||
--- a/src/main/java/org/spongepowered/asm/mixin/refmap/ReferenceMapper.java
|
||||
+++ b/src/main/java/org/spongepowered/asm/mixin/refmap/ReferenceMapper.java
|
||||
@@ -29,7 +29,6 @@ import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
import java.io.Serializable;
|
||||
-import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
@@ -71,13 +70,13 @@ public final class ReferenceMapper implements Serializable {
|
||||
* by the AP. Each entry is keyed by the owning mixin, with the value map
|
||||
* containing the actual remappings for each owner
|
||||
*/
|
||||
- private final Map<String, Map<String, String>> mappings = Maps.newHashMap();
|
||||
+ private final Map<String, Map<String, String>> mappings = Maps.newTreeMap();
|
||||
|
||||
/**
|
||||
* All mapping sets, keyed by environment type, eg. "notch", "searge". The
|
||||
* format of each map within this map is the same as for {@link #mappings}
|
||||
*/
|
||||
- private final Map<String, Map<String, Map<String, String>>> data = Maps.newHashMap();
|
||||
+ private final Map<String, Map<String, Map<String, String>>> data = Maps.newTreeMap();
|
||||
|
||||
/**
|
||||
* True if this refmap cannot be written. Only true for the
|
||||
@@ -191,13 +190,13 @@ public final class ReferenceMapper implements Serializable {
|
||||
if (context != null) {
|
||||
mappings = this.data.get(context);
|
||||
if (mappings == null) {
|
||||
- mappings = Maps.newHashMap();
|
||||
+ mappings = Maps.newTreeMap();
|
||||
this.data.put(context, mappings);
|
||||
}
|
||||
}
|
||||
Map<String, String> classMappings = mappings.get(className);
|
||||
if (classMappings == null) {
|
||||
- classMappings = new HashMap<String, String>();
|
||||
+ classMappings = Maps.newTreeMap();
|
||||
mappings.put(className, classMappings);
|
||||
}
|
||||
return classMappings.put(reference, newReference);
|
||||
--
|
||||
2.5.5
|
||||
|
||||
71
gradle/reprod/patches/mixin/0007-Add-witness-plugin.patch
Normal file
71
gradle/reprod/patches/mixin/0007-Add-witness-plugin.patch
Normal file
@@ -0,0 +1,71 @@
|
||||
From 6a90175bbe1a7cbb9d0eb6bb0bbb27ad451f4587 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Herzig <me@johni0702.de>
|
||||
Date: Tue, 8 Aug 2017 19:20:46 +0200
|
||||
Subject: [PATCH 7/7] Add witness plugin
|
||||
|
||||
---
|
||||
build.gradle | 34 ++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 34 insertions(+)
|
||||
|
||||
diff --git a/build.gradle b/build.gradle
|
||||
index e9a965b..737be9e 100644
|
||||
--- a/build.gradle
|
||||
+++ b/build.gradle
|
||||
@@ -2,6 +2,7 @@
|
||||
buildscript {
|
||||
dependencies {
|
||||
classpath files('../shadow.jar')
|
||||
+ classpath files('../gradle-witness.jar')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +12,7 @@ apply plugin: 'maven'
|
||||
apply plugin: 'eclipse'
|
||||
apply plugin: 'idea'
|
||||
apply plugin: 'com.github.johnrengelman.shadow'
|
||||
+apply plugin: 'witness'
|
||||
|
||||
// Default tasks
|
||||
defaultTasks 'licenseFormat', 'check', 'build'
|
||||
@@ -158,6 +160,38 @@ dependencies {
|
||||
bridgeCompile 'org.apache.logging.log4j:log4j-core:2.0-beta9'
|
||||
}
|
||||
|
||||
+dependencyVerification {
|
||||
+ includedConfigurations += [configurations.asm, configurations.jarjar, configurations.apCompile, configurations.agentCompile, configurations.fernflowerCompile, configurations.bridgeCompile]
|
||||
+ verify = [
|
||||
+ 'com.googlecode.jarjar:jarjar:1.1:4838f4f29a027522363cef1bcda1b48808880b0de4953fab6db4121ee27b649b',
|
||||
+ 'com.google.guava:guava:17.0:8c36a80ea613d0b6b8040a17cf837c5bbe3677bc1b06a058a6c174fdb787ebbc',
|
||||
+ 'com.google.code.gson:gson:2.2.4:c0328cd07ca9e363a5acd00c1cf4afe8cf554bd6d373834981ba05cebec687fb',
|
||||
+ 'commons-io:commons-io:2.4:cc6a41dc3eaacc9e440a6bd0d2890b20d36b4ee408fe2d67122f328bb6e01581',
|
||||
+ 'net.minecraft:launchwrapper:1.11:e74b65b8948446982a506a96176dd8baf4688237ba4903f56ca6f667b6c7ee42',
|
||||
+ 'org.apache.logging.log4j:log4j-core:2.0-beta9:dcde6033b205433d6e9855c93740f798951fa3a3f252035a768d9f356fde806d',
|
||||
+ 'org.apache.logging.log4j:log4j-api:2.0-beta9:eb0ca9bdd938f80711152a758d6bc331a8b0d769199d457294dc67ed03f73498',
|
||||
+ 'net.sf.jopt-simple:jopt-simple:4.5:64335a48be6b142a7d0c13ec5c82a707857aa58c0234e6eda3eaca0e96eea51b',
|
||||
+ 'org.ow2.asm:asm-debug-all:5.0.3:2969356ac1e40fe4141948c563690238f5d79d76aec7fd873536867a331ede81',
|
||||
+ 'org.ow2.asm:asm-debug-all:5.0.3-sources:1e9ee309d909b3dbf33291fcfd36c76adba4ed1215b8156c3ac61a774cc86bf1',
|
||||
+ 'com.googlecode.jarjar:jarjar:1.1:4838f4f29a027522363cef1bcda1b48808880b0de4953fab6db4121ee27b649b',
|
||||
+ 'com.google.guava:guava:17.0:8c36a80ea613d0b6b8040a17cf837c5bbe3677bc1b06a058a6c174fdb787ebbc',
|
||||
+ 'net.minecraft:launchwrapper:1.11:e74b65b8948446982a506a96176dd8baf4688237ba4903f56ca6f667b6c7ee42',
|
||||
+ 'org.apache.logging.log4j:log4j-core:2.0-beta9:dcde6033b205433d6e9855c93740f798951fa3a3f252035a768d9f356fde806d',
|
||||
+ 'org.ow2.asm:asm-debug-all:5.0.3:2969356ac1e40fe4141948c563690238f5d79d76aec7fd873536867a331ede81',
|
||||
+ 'org.apache.logging.log4j:log4j-api:2.0-beta9:eb0ca9bdd938f80711152a758d6bc331a8b0d769199d457294dc67ed03f73498',
|
||||
+ 'net.sf.jopt-simple:jopt-simple:4.5:64335a48be6b142a7d0c13ec5c82a707857aa58c0234e6eda3eaca0e96eea51b',
|
||||
+ 'commons-io:commons-io:2.4:cc6a41dc3eaacc9e440a6bd0d2890b20d36b4ee408fe2d67122f328bb6e01581',
|
||||
+ 'org.apache.logging.log4j:log4j-core:2.0-beta9:dcde6033b205433d6e9855c93740f798951fa3a3f252035a768d9f356fde806d',
|
||||
+ 'com.google.guava:guava:17.0:8c36a80ea613d0b6b8040a17cf837c5bbe3677bc1b06a058a6c174fdb787ebbc',
|
||||
+ 'org.apache.logging.log4j:log4j-api:2.0-beta9:eb0ca9bdd938f80711152a758d6bc331a8b0d769199d457294dc67ed03f73498',
|
||||
+ 'org.ow2.asm:asm-commons:5.0.3:18c1e092230233c9d29e46f21943d769bdb48130cc279e4b0e663f423948c2da',
|
||||
+ 'org.apache.logging.log4j:log4j-core:2.0-beta9:dcde6033b205433d6e9855c93740f798951fa3a3f252035a768d9f356fde806d',
|
||||
+ 'org.ow2.asm:asm-tree:5.0.3:347a7a9400f9964e87c91d3980e48eebdc8d024bc3b36f7f22189c662853a51c',
|
||||
+ 'org.apache.logging.log4j:log4j-api:2.0-beta9:eb0ca9bdd938f80711152a758d6bc331a8b0d769199d457294dc67ed03f73498',
|
||||
+ 'org.ow2.asm:asm:5.0.3:71c4f78e437b8fdcd9cc0dfd2abea8c089eb677005a6a5cff320206cc52b46cc',
|
||||
+ ]
|
||||
+}
|
||||
+
|
||||
// Filter, process, and include resources
|
||||
processResources {
|
||||
// Include in final JAR
|
||||
--
|
||||
2.5.5
|
||||
|
||||
Reference in New Issue
Block a user