Allow for reproducible builds

REPRODUCIBLE_BUILD=1 ./gradlew clean :build
This commit is contained in:
Jonas Herzig
2017-08-08 20:30:42 +02:00
parent 41d2547f3c
commit ebbe363954
34 changed files with 1553 additions and 13 deletions

BIN
.gitignore vendored

Binary file not shown.

View File

@@ -109,7 +109,7 @@ jar {
exclude { new File(file('jGui/src/main/resources'), it.relativePath.pathString).exists() }
eachFile {
if (getName() == 'LICENSE.txt') {
setName(getFile().getParentFile().getName().split('-')[0] + '-LICENSE.txt')
setName(getFile().getParentFile().getName().split('.jar_')[0] + '-LICENSE.txt')
}
}
}
@@ -165,7 +165,7 @@ sourceSets {
resources {
srcDir 'jGui/src/main/resources'
}
refMap = "mixins.replaymod.refmap.json"
ext.refMap = "mixins.replaymod.refmap.json"
}
integrationTest {
compileClasspath += main.runtimeClasspath + main.output

View File

@@ -0,0 +1,42 @@
From a1b7d25752424f267f5e9d299babc0403dbf7752 Mon Sep 17 00:00:00 2001
From: Jonas Herzig <me@johni0702.de>
Date: Tue, 8 Aug 2017 19:44:44 +0200
Subject: [PATCH] Add build.gradle
---
build.gradle | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
create mode 100644 build.gradle
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..22fa679
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,23 @@
+apply plugin: 'java'
+
+sourceCompatibility = 1.8
+
+sourceSets {
+ main {
+ java {
+ srcDirs = ['src']
+ }
+ }
+}
+
+jar {
+ manifest {
+ attributes 'Main-Class': 'org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler'
+ }
+}
+
+tasks.withType(AbstractArchiveTask) {
+ preserveFileTimestamps = false
+ reproducibleFileOrder = true
+}
+
--
2.5.5

View File

@@ -0,0 +1,28 @@
From 21caf62b4f60cce47a5d3b8c939cc7b177904e00 Mon Sep 17 00:00:00 2001
From: Jonas Herzig <me@johni0702.de>
Date: Mon, 7 Aug 2017 19:52:13 +0200
Subject: [PATCH 1/5] Configure gradle to build reproducible archives
---
build.gradle | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/build.gradle b/build.gradle
index 78a2be1..468733e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -138,6 +138,11 @@ jar {
}
}
+tasks.withType(AbstractArchiveTask) {
+ preserveFileTimestamps = false
+ reproducibleFileOrder = true
+}
+
javadoc {
classpath += configurations.compileOnly
--
2.5.5

View File

@@ -0,0 +1,53 @@
From 2f3f4c59239b66e4ce09d2bbef39d7ce4eda44e9 Mon Sep 17 00:00:00 2001
From: Jonas Herzig <me@johni0702.de>
Date: Mon, 7 Aug 2017 19:53:46 +0200
Subject: [PATCH 2/5] Manually force reproducible archives
For some reason shading one of the libs isn't done in an
reproducible way (produces different jar whenever jar task is run).
---
build.gradle | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/build.gradle b/build.gradle
index 468733e..91ea99a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -122,6 +122,10 @@ processResources {
}
}
+import java.util.jar.JarEntry
+import java.util.jar.JarFile
+import java.util.jar.JarOutputStream
+
jar {
configurations.shade.each { dep ->
@@ -136,6 +140,23 @@ jar {
attributes 'group':project.group
attributes 'Implementation-Version': project.version + getGitHash()
}
+
+ // For some reason using gradle's reproducibleFileOrder and preserveFileTimestamps just isn't enough
+ doLast {
+ File newFile = new File(archivePath.parent, 'tmp-' + archiveName)
+ newFile.withOutputStream { fout ->
+ JarOutputStream out = new JarOutputStream(fout)
+ JarFile jf = new JarFile(archivePath)
+ jf.entries().unique {it.name}.sort {it.name}.each {
+ def copy = new JarEntry(it.name)
+ copy.time = 0
+ out.putNextEntry(copy)
+ out << jf.getInputStream(it)
+ }
+ out.finish()
+ }
+ newFile.renameTo archivePath
+ }
}
tasks.withType(AbstractArchiveTask) {
--
2.5.5

View File

@@ -0,0 +1,161 @@
From a4a52f38bd660caa61531ebecd2d11f764eb3691 Mon Sep 17 00:00:00 2001
From: Jonas Herzig <me@johni0702.de>
Date: Mon, 7 Aug 2017 19:52:46 +0200
Subject: [PATCH 3/5] Remove all buildscript dependencies
---
build.gradle | 130 -----------------------------------------------------------
1 file changed, 130 deletions(-)
diff --git a/build.gradle b/build.gradle
index 91ea99a..8959f8f 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,21 +1,7 @@
-buildscript {
- repositories {
- maven {
- url "https://plugins.gradle.org/m2/"
- }
- }
- dependencies {
- classpath "com.gradle.publish:plugin-publish-plugin:0.9.1"
- classpath 'nl.javadude.gradle.plugins:license-gradle-plugin:0.11.0'
- }
-}
-
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'eclipse'
apply plugin: 'maven'
-apply plugin: "com.gradle.plugin-publish"
-apply plugin: 'license'
group = 'net.minecraftforge.gradle'
version = '2.3-SNAPSHOT'
@@ -188,122 +174,6 @@ test {
exclude "**/ExtensionMcpMappingTest*"
}
-license {
- ext {
- description = 'A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins.'
- year = '2013'
- fullname = 'Minecraft Forge'
- }
- header rootProject.file('HEADER')
- include '**net/minecraftforge/gradle/**/*.java'
- excludes ([
- '**net/minecraftforge/gradle/util/ZipFileTree.java',
- '**net/minecraftforge/gradle/util/json/version/*',
- '**net/minecraftforge/gradle/util/patching/Base64.java',
- '**net/minecraftforge/gradle/util/patching/ContextualPatch.java'
- ])
- ignoreFailures false
- strictCheck true
- mapping {
- java = 'SLASHSTAR_STYLE'
- }
-}
-
-pluginBundle {
- website = 'http://www.gradle.org/'
- vcsUrl = 'https://github.com/MinecraftForge/ForgeGradle'
- description = 'Gradle plugin for all Minecraft mod development needs'
- tags = ['forge', 'minecraft', 'minecraftforge', 'sponge', 'mcp']
-
- plugins {
- patcher {
- id = 'net.minecraftforge.gradle.patcher'
- displayName = 'Minicraft Patcher Plugin'
- }
- tweakerClient {
- id = 'net.minecraftforge.gradle.tweaker-client'
- displayName = 'Mincraft Client Tweaker Plugin'
- }
- tweakerServer {
- id = 'net.minecraftforge.gradle.tweaker-server'
- displayName = 'Mincraft Server Tweaker Plugin'
- }
- forge {
- id = 'net.minecraftforge.gradle.forge'
- displayName = 'MincraftForge Mod Development Plugin'
- }
-
- launch4j {
- id = 'net.minecraftforge.gradle.launch4j'
- displayName = 'Specialized Launch4J Gradle Plugin'
- }
- }
-}
-
-uploadArchives {
- repositories.mavenDeployer {
-
- dependsOn 'build'
-
- if (project.hasProperty('forgeMavenPass'))
- {
- repository(url: "http://files.minecraftforge.net/maven/manage/upload") {
- authentication(userName: "forge", password: project.getProperty('forgeMavenPass'))
- }
- }
- else
- {
- // local repo folder. Might wanna juset use gradle install if you wanans end it to maven-local
- repository(url: 'file://localhost/' + project.file('repo').getAbsolutePath())
- }
-
-
- pom {
- groupId = project.group
- version = project.version
- artifactId = project.archivesBaseName
- project {
- name project.archivesBaseName
- packaging 'jar'
- description 'Gradle plugin for Forge'
- url 'https://github.com/MinecraftForge/ForgeGradle'
-
- scm {
- url 'https://github.com/MinecraftForge/ForgeGradle'
- connection 'scm:git:git://github.com/MinecraftForge/ForgeGradle.git'
- developerConnection 'scm:git:git@github.com:MinecraftForge/ForgeGradle.git'
- }
-
- issueManagement {
- system 'github'
- url 'https://github.com/MinecraftForge/ForgeGradle/issues'
- }
-
- licenses {
- license {
- name 'Lesser GNU Public License, Version 2.1'
- url 'https://www.gnu.org/licenses/lgpl-2.1.html'
- distribution 'repo'
- }
- }
-
- developers {
- developer {
- id 'AbrarSyed'
- name 'Abrar Syed'
- roles { role 'developer' }
- }
- developer {
- id 'LexManos'
- name 'Lex Manos'
- roles { role 'developer' }
- }
- }
- }
- }
- }
-}
-
// write out version so its convenient for doc deployment
file('build').mkdirs()
file('build/version.txt').text = version;
--
2.5.5

View File

@@ -0,0 +1,57 @@
From 130d406cbe105303f9b14c342f02fc9a20782e32 Mon Sep 17 00:00:00 2001
From: Jonas Herzig <me@johni0702.de>
Date: Mon, 7 Aug 2017 19:54:54 +0200
Subject: [PATCH 4/5] Shade all the things (because we don't include deps as
maven deps)
---
build.gradle | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/build.gradle b/build.gradle
index 8959f8f..0bf7941 100644
--- a/build.gradle
+++ b/build.gradle
@@ -48,26 +48,26 @@ dependencies {
compile gradleApi()
// moved to the beginning to be the overrider
- compile 'org.ow2.asm:asm-debug-all:5.1'
- compile 'com.google.guava:guava:18.0'
+ shade 'org.ow2.asm:asm-debug-all:5.1'
+ shade 'com.google.guava:guava:18.0'
- compile 'net.sf.opencsv:opencsv:2.3' // reading CSVs.. also used by SpecialSource
- compile 'com.cloudbees:diff4j:1.1' // for difing and patching
- compile 'com.github.abrarsyed.jastyle:jAstyle:1.3' // formatting
- compile 'net.sf.trove4j:trove4j:2.1.0' // because its awesome.
+ shade 'net.sf.opencsv:opencsv:2.3' // reading CSVs.. also used by SpecialSource
+ shade 'com.cloudbees:diff4j:1.1' // for difing and patching
+ shade 'com.github.abrarsyed.jastyle:jAstyle:1.3' // formatting
+ shade 'net.sf.trove4j:trove4j:2.1.0' // because its awesome.
- compile 'com.github.jponge:lzma-java:1.3' // replaces the LZMA binary
- compile 'com.nothome:javaxdelta:2.0.1' // GDIFF implementation for BinPatches
- compile 'com.google.code.gson:gson:2.2.4' // Used instead of Argo for buuilding changelog.
- compile 'com.github.tony19:named-regexp:0.2.3' // 1.7 Named regexp features
- compile 'net.minecraftforge:forgeflower:1.0.342-SNAPSHOT' // Fernflower Forge edition
+ shade 'com.github.jponge:lzma-java:1.3' // replaces the LZMA binary
+ shade 'com.nothome:javaxdelta:2.0.1' // GDIFF implementation for BinPatches
+ shade 'com.google.code.gson:gson:2.2.4' // Used instead of Argo for buuilding changelog.
+ shade 'com.github.tony19:named-regexp:0.2.3' // 1.7 Named regexp features
+ shade 'net.minecraftforge:forgeflower:1.0.342-SNAPSHOT' // Fernflower Forge edition
shade 'net.md-5:SpecialSource:1.7.4' // deobf and reobs
// compile 'net.md-5:SpecialSource:1.7.4' // when md5 publishes
// because curse
- compile 'org.apache.httpcomponents:httpclient:4.3.3'
- compile 'org.apache.httpcomponents:httpmime:4.3.3'
+ shade 'org.apache.httpcomponents:httpclient:4.3.3'
+ shade 'org.apache.httpcomponents:httpmime:4.3.3'
// mcp stuff
shade 'de.oceanlabs.mcp:RetroGuard:3.6.6'
--
2.5.5

View File

@@ -0,0 +1,90 @@
From ffd1f38113d2ec550ae23be13df35c678bea5543 Mon Sep 17 00:00:00 2001
From: Jonas Herzig <me@johni0702.de>
Date: Mon, 7 Aug 2017 19:53:15 +0200
Subject: [PATCH 5/5] Add witness plugin
---
build.gradle | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 59 insertions(+)
diff --git a/build.gradle b/build.gradle
index 0bf7941..d1530fd 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,7 +1,14 @@
+buildscript {
+ dependencies {
+ classpath files('../gradle-witness.jar')
+ }
+}
+
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'eclipse'
apply plugin: 'maven'
+apply plugin: 'witness'
group = 'net.minecraftforge.gradle'
version = '2.3-SNAPSHOT'
@@ -81,6 +88,58 @@ dependencies {
testCompile 'junit:junit:4.12'
}
+dependencyVerification {
+ includedConfigurations += [configurations.shade, configurations.testCompile]
+ verify = [
+ 'org.ow2.asm:asm-debug-all:5.1:f7ac3f642c36c406543bb56ae3db3a53f263f71bd857b04709986e2d5798c8c4',
+ 'net.sf.opencsv:opencsv:2.3:dc0ba5bff6140dc92339973026a0ecbddc2a3b01bdd46ed9d16becc2f6d78de6',
+ 'com.cloudbees:diff4j:1.1:e6509db2167c983d254d3530c66a060443e91a6ca38df9fdc4ef2a88ad813fa5',
+ 'com.github.abrarsyed.jastyle:jAstyle:1.3:4cad4ee2f1c379fa1f6496912fe026d8a4f2febf0a140ff867206b00a22f988f',
+ 'net.sf.trove4j:trove4j:2.1.0:294fb88c272598b9a5dcae15f13d228e64134256de941fbc28917a994beeb075',
+ 'com.github.jponge:lzma-java:1.3:75ccc0e24d37ed5b8916e1bcffad1e067c2b1cfa21b635287f968db5c3c1963a',
+ 'com.nothome:javaxdelta:2.0.1:a661dfcb749053fc26eada2a0a8e619a8ead1ca9eda29e1698687aa2cdd80152',
+ 'com.google.code.gson:gson:2.2.4:c0328cd07ca9e363a5acd00c1cf4afe8cf554bd6d373834981ba05cebec687fb',
+ 'com.github.tony19:named-regexp:0.2.3:c6ebd74cd6108b8c372c95b842725ee5bd6d3303ba26cb00f18bc92f80b47956',
+ 'net.minecraftforge:forgeflower:1.0.342-SNAPSHOT:ad7e63b8732da2c10d5923cc567386b8f172848259c3c2627298e6cd702df938',
+ 'net.md-5:SpecialSource:1.7.4:b47c5d5810643426a3147ddb2195ef2ab67c80b167e7c2ac64a5d0dee8c030dd',
+ 'org.apache.httpcomponents:httpclient:4.3.3:9844cc9b5440d65a88d28bcba9d771374d2dfdab898848cda164611091633013',
+ 'org.apache.httpcomponents:httpmime:4.3.3:61434dbb2314cbb8d28025feb6ae53bbc45d1042daa34371d8911e1e7f570b36',
+ 'de.oceanlabs.mcp:RetroGuard:3.6.6:22c45060f350fcaa94e503f4a420cf8237c26c0fcdb4ada4aa98389b75c7b231',
+ 'de.oceanlabs.mcp:mcinjector:3.4-SNAPSHOT:4ad11e0943fb343225dace0000215113c8cbdede6949fa8ba653bdcf770cb028',
+ 'net.minecraftforge.srg2source:Srg2Source:4.0-SNAPSHOT:99893440fe20bafc8193a790889239d4cc60dbe8b8be1e7698a31eaa3853e2fd',
+ 'org.jvnet.localizer:localizer:1.12:212f6eaa0491dd7359dc33c3a72e82a23b096e1890d984b4d92395abc9a6bf7f',
+ 'commons-io:commons-io:1.4:a7f713593007813bf07d19bd1df9f81c86c0719e9a0bb2ef1b98b78313fc940d',
+ 'trove:trove:1.0.2:ad68a86cfd0255a2bc0525ce11ec49640caea7e34ff91eb89c3193dcccd77f05',
+ 'net.sf.jopt-simple:jopt-simple:5.0.1:9f0c8d50fa4b79b6ff1502dbec8502179d6b9497cacbe17a13074001aed537ec',
+ 'org.apache.httpcomponents:httpcore:4.3.2:abd02320e2356f89d054dae4cf02306bef20a9cf7865b3ac94ec7552b4f1528b',
+ 'commons-logging:commons-logging:1.1.3:70903f6fc82e9908c8da9f20443f61d90f0870a312642991fe8462a0b9391784',
+ 'commons-codec:commons-codec:1.6:54b34e941b8e1414bd3e40d736efd3481772dc26db3296f6aa45cec9f6203d86',
+ 'org.eclipse.equinox:common:3.6.200-v20130402-1505:843414d0e457898b1615e4c9118f86ae0cf30dd5166b8b0a1d206fbdab5fbbae',
+ 'org.eclipse.text:org.eclipse.text:3.5.101:1bacf311ac3d39cc53b03f8de7a4ccffc89c208938f0004a90c652383e927f18',
+ 'org.eclipse.core:resources:3.2.1-R32x_v20060914:73f9a1a2403f7f9c44d11431c40be4641295f3620570bfef2168a66c5de68fee',
+ 'org.eclipse.jdt:org.eclipse.jdt.core:3.12.0.v20160315-2126:2082ffb0bb8f276ca164a6363e394f902163a81b7df44ede13aed33d84fdf27e',
+ 'fr.inria.gforge.spoon:spoon-core:5.1.0:08e0b3db3d116301f16142c88932daf954ac447427d609710c2a5ee8dfcfa1f7',
+ 'org.eclipse.equinox:registry:3.5.400-v20140428-1507:a6833a81795978d4ad8d2e54597171e2a3447fd6983b8e902710aa1dc946fa24',
+ 'org.eclipse.equinox:app:1.3.200-v20130910-1609:7b2ad6c43d922f3ba0d18d99879d1d56d6a994ba7b639d5d6276f1a167b6a7ac',
+ 'org.eclipse.core:org.eclipse.core.commands:3.6.0:e46a6444a6d7c0fe70f196ce42d9700c4514b68bf55bae296b2e3c287883ffdc',
+ 'org.eclipse.equinox:org.eclipse.equinox.common:3.6.0:32b046de57df2f4887fc5a2c343740d9d12c7fe17541e2cede73cfa4ccbc2436',
+ 'org.eclipse.core.runtime:compatibility:3.1.200-v20070502:ddf19054374a2617ba9c10d7a5ec8eeaeb8f62c2c6e430144e81da15718bb585',
+ 'org.eclipse.core:expressions:3.3.0-v20070606-0010:4a73a4a0ebf5ca5f7e9d5e8978b24cd72ebacd5b561de961517f4c976aa7e30f',
+ 'org.eclipse.core:filesystem:1.1.0-v20070606:b418d15acf94545248f4bd55b4a9b62fc49246488758729d6b3ff52ae149df24',
+ 'com.martiansoftware:jsap:2.1:331746fa62cfbc3368260c5a2e660936ad11be612308c120a044e120361d474e',
+ 'log4j:log4j:1.2.17:1d31696445697720527091754369082a6651bd49781b6005deb94e56753406f9',
+ 'org.eclipse.update:configurator:3.2.100-v20070615:88b506fa09a810b19517a2d45cb8f5eaa76c22b18abfbdcf36cd07aebfd56cb0',
+ 'com.google.guava:guava:19.0:58d4cc2e05ebb012bbac568b032f75623be1cb6fb096f3c60c72a86f7f057de4',
+ 'org.eclipse:osgi:3.10.0-v20140606-1445:fa1d59411d4d2667d8f15638af7c0ac44539234c0982c27a2b65ba06c32a0b3e',
+ 'org.eclipse.core:jobs:3.6.0-v20140424-0053:ef971ecb154fba0cc06d913448640fb2e5ab3f9079c1c7854385d1c30d81a94f',
+ 'org.eclipse.equinox:preferences:3.5.200-v20140224-1527:6498d32ab6503b49a44e0a0bfe1c2ac28ffb7e8f88acbdb4dda89d73092d8ca7',
+ 'org.eclipse.core:contenttype:3.4.200-v20140207-1251:4dd6ec1376693bd8ac4e2ceacc7be70880920978f3fef31db4968e6ade001c87',
+ 'org.eclipse.core:runtime:3.10.0-v20140318-2214:363ad8af4d8fc7f208b6fa640e490c7ba84b2aa78c26809e569bb1b0737ce9cb',
+ 'junit:junit:4.12:59721f0805e223d84b90677887d9ff567dc534d7c502ca903c0c2b17f05c116a',
+ 'org.hamcrest:hamcrest-core:1.3:66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9',
+ ]
+}
+
task wrapper(type: Wrapper) {
gradleVersion = '2.14'
}
--
2.5.5

View File

@@ -0,0 +1,25 @@
From e6caf7be3f8b7fbe6be79449b30a93c8a362997f Mon Sep 17 00:00:00 2001
From: Jonas Herzig <me@johni0702.de>
Date: Mon, 7 Aug 2017 20:00:16 +0200
Subject: [PATCH] Configure gradle to build reproducible archives
---
build.gradle | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/build.gradle b/build.gradle
index 988a3bf..b75571c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -8,3 +8,8 @@ dependencies {
sourceCompatibility = '1.7'
targetCompatibility = '1.7'
+tasks.withType(AbstractArchiveTask) {
+ preserveFileTimestamps = false
+ reproducibleFileOrder = true
+}
+
--
2.5.5

View File

@@ -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

View File

@@ -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

View 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

View 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

View File

@@ -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

View File

@@ -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

View 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

View File

@@ -0,0 +1,28 @@
From 34446d49be65c3a17e962c2e4053ed3e41aa2ab4 Mon Sep 17 00:00:00 2001
From: Jonas Herzig <me@johni0702.de>
Date: Mon, 7 Aug 2017 20:04:25 +0200
Subject: [PATCH 1/3] Configure gradle to build reproducible archives
---
build.gradle | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/build.gradle b/build.gradle
index 3127c7f..c34a8a2 100644
--- a/build.gradle
+++ b/build.gradle
@@ -71,6 +71,11 @@ task groovydocJar(type: Jar, dependsOn: groovydoc) {
classifier = 'groovydoc'
}
+tasks.withType(AbstractArchiveTask) {
+ preserveFileTimestamps = false
+ reproducibleFileOrder = true
+}
+
artifacts {
archives jar
archives groovydocJar
--
2.5.5

View File

@@ -0,0 +1,125 @@
From f1130f071e67235b27e2bca95584dec25a8dec37 Mon Sep 17 00:00:00 2001
From: Jonas Herzig <me@johni0702.de>
Date: Mon, 7 Aug 2017 20:04:56 +0200
Subject: [PATCH 2/3] Remove all buildscript dependencies
---
build.gradle | 91 ------------------------------------------------------------
1 file changed, 91 deletions(-)
diff --git a/build.gradle b/build.gradle
index c34a8a2..40169df 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,22 +1,6 @@
-buildscript {
- repositories {
- maven {
- url "https://plugins.gradle.org/m2/"
- }
- }
- dependencies {
- classpath 'nl.javadude.gradle.plugins:license-gradle-plugin:0.11.0'
- classpath "com.gradle.publish:plugin-publish-plugin:0.9.1"
- }
-}
-
apply plugin: 'groovy'
-apply plugin: 'license'
apply plugin: 'maven'
apply plugin: 'eclipse'
-apply plugin: "com.gradle.plugin-publish"
-
-defaultTasks 'licenseFormat', 'build'
group = 'org.spongepowered'
version = '0.4-SNAPSHOT'
@@ -43,22 +27,6 @@ processResources {
from 'LICENSE.txt'
}
-license {
- ext {
- name = project.name
- organization = project.organization
- url = project.url
- }
- include '**/*.groovy'
- header file("HEADER.txt")
- sourceSets = project.sourceSets
- ignoreFailures false
- strictCheck true
- mapping {
- java = 'SLASHSTAR_STYLE'
- }
-}
-
jar.manifest.mainAttributes (
"Built-By": System.properties['user.name'],
"Created-By": System.properties['java.vm.version'] + " (" + System.properties['java.vm.vendor'] + ")",
@@ -81,62 +49,3 @@ artifacts {
archives groovydocJar
}
-pluginBundle {
- website = 'http://www.gradle.org/'
- vcsUrl = 'https://github.com/SpongePowered/MixinGradle'
- description = 'Gradle plugin for SpongePowered Mixin'
- tags = ['spongepowered', 'sponge', 'mixin']
- plugins {
- patcher {
- id = 'org.spongepowered.mixin'
- displayName = 'SpongePowered Mixin Gradle Plugin'
- }
- }
-}
-
-uploadArchives {
- repositories {
-
- mavenDeployer {
- configuration = configurations.deployerJars
-
- if (project.hasProperty("chRepo"))
- {
- repository(url: project.chRepo) {
- authentication(userName: project.chUsername, password: project.chPassword)
- }
- }
-
- pom {
- groupId = project.group
- version = project.version
- artifactId = project.archivesBaseName
- project {
- name project.archivesBaseName
- packaging 'jar'
- description 'MixinGradle'
- url 'http://www.spongepowered.org/'
-
- scm {
- url 'https://github.com/SpongePowered/Mixin'
- connection 'scm:git:git://github.com/SpongePowered/Mixin.git'
- developerConnection 'scm:git:git@github.com:SpongePowered/Mixin.git'
- }
-
- issueManagement {
- system 'GitHub Issues'
- url 'https://github.com/SpongePowered/MixinGradle/issues'
- }
-
- licenses {
- license {
- name 'MIT license'
- url 'http://opensource.org/licenses/MIT'
- distribution 'repo'
- }
- }
- }
- }
- }
- }
-}
--
2.5.5

View File

@@ -0,0 +1,44 @@
From 7c2f6c0d86940142671615402ba758185448e3cf Mon Sep 17 00:00:00 2001
From: Jonas Herzig <me@johni0702.de>
Date: Mon, 7 Aug 2017 20:05:30 +0200
Subject: [PATCH 3/3] Add witness plugin
---
build.gradle | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/build.gradle b/build.gradle
index 40169df..93f9764 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,6 +1,13 @@
+buildscript {
+ dependencies {
+ classpath files('../gradle-witness.jar')
+ }
+}
+
apply plugin: 'groovy'
apply plugin: 'maven'
apply plugin: 'eclipse'
+apply plugin: 'witness'
group = 'org.spongepowered'
version = '0.4-SNAPSHOT'
@@ -23,6 +30,13 @@ dependencies {
deployerJars 'org.apache.maven.wagon:wagon-ftp:2.7'
}
+dependencyVerification {
+ verify = [
+ 'com.google.guava:guava:17.0:8c36a80ea613d0b6b8040a17cf837c5bbe3677bc1b06a058a6c174fdb787ebbc',
+ 'org.ow2.asm:asm-debug-all:5.0.3:2969356ac1e40fe4141948c563690238f5d79d76aec7fd873536867a331ede81',
+ ]
+}
+
processResources {
from 'LICENSE.txt'
}
--
2.5.5

View File

@@ -0,0 +1,43 @@
From 493dbd8ed387d661eef3e33ee614c79d7487f1bd Mon Sep 17 00:00:00 2001
From: Jonas Herzig <me@johni0702.de>
Date: Mon, 7 Aug 2017 20:41:05 +0200
Subject: [PATCH 1/5] Replace buildscript dependencies with manually built ones
---
build.gradle | 19 ++-----------------
1 file changed, 2 insertions(+), 17 deletions(-)
diff --git a/build.gradle b/build.gradle
index ee24828..42d0607 100755
--- a/build.gradle
+++ b/build.gradle
@@ -1,24 +1,9 @@
import groovy.json.JsonOutput
buildscript {
- repositories {
- mavenCentral()
- maven {
- name = "forge"
- url = "http://files.minecraftforge.net/maven"
- }
- maven {
- name = "sponge"
- url = "https://repo.spongepowered.org/maven"
- }
- maven {
- name = "sonatype"
- url = "https://oss.sonatype.org/content/repositories/snapshots/"
- }
- }
dependencies {
- classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
- classpath 'org.spongepowered:mixingradle:0.4-SNAPSHOT'
+ classpath files('gradle/reprod/deps/forgegradle.jar')
+ classpath files('gradle/reprod/deps/mixingradle.jar')
}
}
--
2.5.5

View File

@@ -0,0 +1,27 @@
From 9e4e7ac3f8ee5508939cf71e731189e4c0e1c7b5 Mon Sep 17 00:00:00 2001
From: Jonas Herzig <me@johni0702.de>
Date: Tue, 8 Aug 2017 20:06:39 +0200
Subject: [PATCH 2/5] Replace mixin dep with manually built one
---
build.gradle | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/build.gradle b/build.gradle
index 42d0607..bfa3914 100755
--- a/build.gradle
+++ b/build.gradle
@@ -41,9 +41,7 @@ configurations {
dependencies {
compile 'org.projectlombok:lombok:1.16.4'
- compile('org.spongepowered:mixin:0.6.11-SNAPSHOT') {
- exclude group: 'org.apache.logging.log4j'
- }
+ shade files('gradle/reprod/deps/mixin.jar')
shade 'com.googlecode.mp4parser:isoparser:1.1.7'
shade 'org.apache.commons:commons-exec:1.3'
shade 'com.google.apis:google-api-services-youtube:v3-rev178-1.22.0'
--
2.5.5

View File

@@ -0,0 +1,41 @@
From 9baa28ace59f2036e93fff379438c2553f02b6a8 Mon Sep 17 00:00:00 2001
From: Jonas Herzig <me@johni0702.de>
Date: Mon, 7 Aug 2017 20:41:46 +0200
Subject: [PATCH 3/5] Add witness plugin
---
build.gradle | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/build.gradle b/build.gradle
index bfa3914..bee78ee 100755
--- a/build.gradle
+++ b/build.gradle
@@ -4,11 +4,13 @@ buildscript {
dependencies {
classpath files('gradle/reprod/deps/forgegradle.jar')
classpath files('gradle/reprod/deps/mixingradle.jar')
+ classpath files('gradle/reprod/deps/gradle-witness.jar')
}
}
apply plugin: 'net.minecraftforge.gradle.forge'
apply plugin: 'org.spongepowered.mixin'
+apply plugin: 'witness'
sourceCompatibility = 1.8
targetCompatibility = 1.8
@@ -56,6 +58,10 @@ dependencies {
testCompile 'junit:junit:4.11'
}
+dependencyVerification {
+ includedConfigurations += [configurations.shade, configurations.testCompile]
+}
+
tasks['idea'].dependsOn ':ReplayStudio:preshadowJar'
jar {
--
2.5.5

View File

@@ -0,0 +1,109 @@
From cbba1bbb1010408adb5227b5a928ca00cc19699a Mon Sep 17 00:00:00 2001
From: Jonas Herzig <me@johni0702.de>
Date: Mon, 7 Aug 2017 20:42:06 +0200
Subject: [PATCH 4/5] Add checksums for witness plugin
---
build.gradle | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 86 insertions(+)
diff --git a/build.gradle b/build.gradle
index bee78ee..bda297b 100755
--- a/build.gradle
+++ b/build.gradle
@@ -60,6 +60,92 @@ dependencies {
dependencyVerification {
includedConfigurations += [configurations.shade, configurations.testCompile]
+ verify = [
+ 'com.googlecode.mp4parser:isoparser:1.1.7:ddbbf392f8e61f770a509a49aed5f32ead19768283b4b512c626e09e1ba5cc46',
+ 'org.apache.commons:commons-exec:1.3:cb49812dc1bfb0ea4f20f398bcae1a88c6406e213e67f7524fb10d4f8ad9347b',
+ 'com.google.apis:google-api-services-youtube:v3-rev178-1.22.0:88debb16c533600c3b0290a088f2de3b3a8318ff86ebe0bdbcefeab0a0eafb9e',
+ 'com.google.api-client:google-api-client-gson:1.20.0:d68647ba10cfa33e0b6e538c704723229932795d5ee495288cec46a6156c5891',
+ 'com.google.api-client:google-api-client-java6:1.20.0:df4f423f33f467d248e51deb555404771f7bc41430b2d4d1e49966c79c0b207b',
+ 'com.google.oauth-client:google-oauth-client-jetty:1.20.0:daabf9d4e35d4015c2c917982463572856a5c8d7fa718e94edb2b6b114a2a8a2',
+ 'org.aspectj:aspectjrt:1.8.2:c7964f00c3d3889c5223e8fcb7476610c59453c86bccc68ef493a56d171bf655',
+ 'org.apache.commons:commons-lang3:3.3.2:6b81d10754dadf184d386011486e6509c2cc0c3d33565ced4fb4402b9413d47d',
+ 'org.apache.commons:commons-collections4:4.0:93f8dfcd20831a28d092427723f696bceb70b28e7fb89d7914f14d5ea492ce5a',
+ 'commons-cli:commons-cli:1.2:e7cd8951956d349b568b7ccfd4f5b2529a8c113e67c32b028f52ffda371259d9',
+ 'com.google.guava:guava:21.0:972139718abc8a4893fa78cba8cf7b2c903f35c97aaf44fa3031b0669948b480',
+ 'com.google.api-client:google-api-client:1.22.0:47c625c83a8cf97b8bbdff2acde923ff8fd3174e62aabcfc5d1b86692594ffba',
+ 'com.google.http-client:google-http-client-gson:1.20.0:cc144c70d40acf7c6e6f773ac19a2ac6e3ed9830d8e33e32421ff21a91450994',
+ 'com.google.oauth-client:google-oauth-client-java6:1.20.0:3149ae4fa222c7e804c5b7bc0d044702bc6bb8309b5ed94f6d350a5d4d657fc9',
+ 'org.mortbay.jetty:jetty:6.1.26:21091d3a9c1349f640fdc421504a604c040ed89087ecc12afbe32353326ed4e5',
+ 'com.google.code.gson:gson:2.1:35c94198255e95f6f11501eb4b3d43a5276bfdd142ab7c904722e69bff51f69e',
+ 'org.mortbay.jetty:jetty-util:6.1.26:9b974ce2b99f48254b76126337dc45b21226f383aaed616f59780adaf167c047',
+ 'org.mortbay.jetty:servlet-api:2.5-20081211:068756096996fe00f604ac3b6672d6f663dc777ea4a83056e240d0456e77e472',
+ 'com.google.code.findbugs:jsr305:1.3.9:905721a0eea90a81534abb7ee6ef4ea2e5e645fa1def0a5cd88402df1b46c9ed',
+ 'org.apache.httpcomponents:httpclient:4.0.1:752596ebdc7c9ae5d9a655de3bb06d078734679a9de23321dbf284ee44563c03',
+ 'org.apache.httpcomponents:httpcore:4.0.1:3b6bf92affa85d4169a91547ce3c7093ed993b41ad2df80469fc768ad01e6b6b',
+ 'commons-logging:commons-logging:1.1.1:ce6f913cad1f0db3aad70186d65c5bc7ffcc9a99e3fe8e0b137312819f7c362f',
+ 'commons-codec:commons-codec:1.3:1bafd2ece2e88db4cdf835a7f8f0de65fab5b1147977a5dcc59b7c1b8c6f5080',
+ 'org.projectlombok:lombok:1.16.6:e0a471be03e1e6b02bf019480cec7a3ac9801702bf7bf62f15d077ad4df8dd5d',
+ 'com.google.http-client:google-http-client-jackson2:1.22.0:45b1e34b2dcef5cb496ef25a1223d19cf102b8c2ea4abf96491631b2faf4611c',
+ 'com.google.guava:guava-jdk5:17.0:59bf456547b6dda3ced968cb56f7f2d3e14474e2de2960a32c47e31c1e456c61',
+ 'com.fasterxml.jackson.core:jackson-core:2.1.3:754184022345800c2d066eceeaf2f7a88a7c2aaeae23eb1c76ef598854aa9157',
+ 'com.google.oauth-client:google-oauth-client:1.22.0:a4c56168b3e042105d68cf136e40e74f6e27f63ed0a948df966b332678e19022',
+ 'com.google.http-client:google-http-client:1.22.0:f88ffa329ac52fb4f2ff0eb877ef7318423ac9b791a107f886ed5c7a00e77e11',
+ 'com.googlecode.mp4parser:isoparser:1.1.7:ddbbf392f8e61f770a509a49aed5f32ead19768283b4b512c626e09e1ba5cc46',
+ 'org.apache.commons:commons-exec:1.3:cb49812dc1bfb0ea4f20f398bcae1a88c6406e213e67f7524fb10d4f8ad9347b',
+ 'com.google.apis:google-api-services-youtube:v3-rev178-1.22.0:88debb16c533600c3b0290a088f2de3b3a8318ff86ebe0bdbcefeab0a0eafb9e',
+ 'com.google.api-client:google-api-client-gson:1.20.0:d68647ba10cfa33e0b6e538c704723229932795d5ee495288cec46a6156c5891',
+ 'com.google.api-client:google-api-client-java6:1.20.0:df4f423f33f467d248e51deb555404771f7bc41430b2d4d1e49966c79c0b207b',
+ 'com.google.oauth-client:google-oauth-client-jetty:1.20.0:daabf9d4e35d4015c2c917982463572856a5c8d7fa718e94edb2b6b114a2a8a2',
+ 'org.aspectj:aspectjrt:1.8.2:c7964f00c3d3889c5223e8fcb7476610c59453c86bccc68ef493a56d171bf655',
+ 'com.google.api-client:google-api-client:1.22.0:47c625c83a8cf97b8bbdff2acde923ff8fd3174e62aabcfc5d1b86692594ffba',
+ 'com.google.http-client:google-http-client-gson:1.20.0:cc144c70d40acf7c6e6f773ac19a2ac6e3ed9830d8e33e32421ff21a91450994',
+ 'com.google.oauth-client:google-oauth-client-java6:1.20.0:3149ae4fa222c7e804c5b7bc0d044702bc6bb8309b5ed94f6d350a5d4d657fc9',
+ 'org.mortbay.jetty:jetty:6.1.26:21091d3a9c1349f640fdc421504a604c040ed89087ecc12afbe32353326ed4e5',
+ 'com.google.code.gson:gson:2.1:35c94198255e95f6f11501eb4b3d43a5276bfdd142ab7c904722e69bff51f69e',
+ 'org.mortbay.jetty:jetty-util:6.1.26:9b974ce2b99f48254b76126337dc45b21226f383aaed616f59780adaf167c047',
+ 'org.mortbay.jetty:servlet-api:2.5-20081211:068756096996fe00f604ac3b6672d6f663dc777ea4a83056e240d0456e77e472',
+ 'com.google.code.findbugs:jsr305:1.3.9:905721a0eea90a81534abb7ee6ef4ea2e5e645fa1def0a5cd88402df1b46c9ed',
+ 'org.apache.httpcomponents:httpclient:4.0.1:752596ebdc7c9ae5d9a655de3bb06d078734679a9de23321dbf284ee44563c03',
+ 'org.apache.httpcomponents:httpcore:4.0.1:3b6bf92affa85d4169a91547ce3c7093ed993b41ad2df80469fc768ad01e6b6b',
+ 'commons-logging:commons-logging:1.1.1:ce6f913cad1f0db3aad70186d65c5bc7ffcc9a99e3fe8e0b137312819f7c362f',
+ 'commons-codec:commons-codec:1.3:1bafd2ece2e88db4cdf835a7f8f0de65fab5b1147977a5dcc59b7c1b8c6f5080',
+ 'com.google.http-client:google-http-client-jackson2:1.22.0:45b1e34b2dcef5cb496ef25a1223d19cf102b8c2ea4abf96491631b2faf4611c',
+ 'com.google.guava:guava-jdk5:17.0:59bf456547b6dda3ced968cb56f7f2d3e14474e2de2960a32c47e31c1e456c61',
+ 'com.fasterxml.jackson.core:jackson-core:2.1.3:754184022345800c2d066eceeaf2f7a88a7c2aaeae23eb1c76ef598854aa9157',
+ 'com.google.oauth-client:google-oauth-client:1.22.0:a4c56168b3e042105d68cf136e40e74f6e27f63ed0a948df966b332678e19022',
+ 'com.google.http-client:google-http-client:1.22.0:f88ffa329ac52fb4f2ff0eb877ef7318423ac9b791a107f886ed5c7a00e77e11',
+ 'com.googlecode.mp4parser:isoparser:1.1.7:ddbbf392f8e61f770a509a49aed5f32ead19768283b4b512c626e09e1ba5cc46',
+ 'org.apache.commons:commons-exec:1.3:cb49812dc1bfb0ea4f20f398bcae1a88c6406e213e67f7524fb10d4f8ad9347b',
+ 'com.google.apis:google-api-services-youtube:v3-rev178-1.22.0:88debb16c533600c3b0290a088f2de3b3a8318ff86ebe0bdbcefeab0a0eafb9e',
+ 'com.google.api-client:google-api-client-gson:1.20.0:d68647ba10cfa33e0b6e538c704723229932795d5ee495288cec46a6156c5891',
+ 'com.google.api-client:google-api-client-java6:1.20.0:df4f423f33f467d248e51deb555404771f7bc41430b2d4d1e49966c79c0b207b',
+ 'com.google.oauth-client:google-oauth-client-jetty:1.20.0:daabf9d4e35d4015c2c917982463572856a5c8d7fa718e94edb2b6b114a2a8a2',
+ 'org.aspectj:aspectjrt:1.8.2:c7964f00c3d3889c5223e8fcb7476610c59453c86bccc68ef493a56d171bf655',
+ 'junit:junit:4.11:90a8e1603eeca48e7e879f3afbc9560715322985f39a274f6f6070b43f9d06fe',
+ 'org.apache.commons:commons-lang3:3.3.2:6b81d10754dadf184d386011486e6509c2cc0c3d33565ced4fb4402b9413d47d',
+ 'org.apache.commons:commons-collections4:4.0:93f8dfcd20831a28d092427723f696bceb70b28e7fb89d7914f14d5ea492ce5a',
+ 'commons-cli:commons-cli:1.2:e7cd8951956d349b568b7ccfd4f5b2529a8c113e67c32b028f52ffda371259d9',
+ 'com.google.guava:guava:21.0:972139718abc8a4893fa78cba8cf7b2c903f35c97aaf44fa3031b0669948b480',
+ 'com.google.api-client:google-api-client:1.22.0:47c625c83a8cf97b8bbdff2acde923ff8fd3174e62aabcfc5d1b86692594ffba',
+ 'com.google.http-client:google-http-client-gson:1.20.0:cc144c70d40acf7c6e6f773ac19a2ac6e3ed9830d8e33e32421ff21a91450994',
+ 'com.google.oauth-client:google-oauth-client-java6:1.20.0:3149ae4fa222c7e804c5b7bc0d044702bc6bb8309b5ed94f6d350a5d4d657fc9',
+ 'org.mortbay.jetty:jetty:6.1.26:21091d3a9c1349f640fdc421504a604c040ed89087ecc12afbe32353326ed4e5',
+ 'org.hamcrest:hamcrest-core:1.3:66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9',
+ 'com.google.code.gson:gson:2.1:35c94198255e95f6f11501eb4b3d43a5276bfdd142ab7c904722e69bff51f69e',
+ 'org.mortbay.jetty:jetty-util:6.1.26:9b974ce2b99f48254b76126337dc45b21226f383aaed616f59780adaf167c047',
+ 'org.mortbay.jetty:servlet-api:2.5-20081211:068756096996fe00f604ac3b6672d6f663dc777ea4a83056e240d0456e77e472',
+ 'com.google.code.findbugs:jsr305:1.3.9:905721a0eea90a81534abb7ee6ef4ea2e5e645fa1def0a5cd88402df1b46c9ed',
+ 'org.apache.httpcomponents:httpclient:4.0.1:752596ebdc7c9ae5d9a655de3bb06d078734679a9de23321dbf284ee44563c03',
+ 'org.apache.httpcomponents:httpcore:4.0.1:3b6bf92affa85d4169a91547ce3c7093ed993b41ad2df80469fc768ad01e6b6b',
+ 'commons-logging:commons-logging:1.1.1:ce6f913cad1f0db3aad70186d65c5bc7ffcc9a99e3fe8e0b137312819f7c362f',
+ 'commons-codec:commons-codec:1.3:1bafd2ece2e88db4cdf835a7f8f0de65fab5b1147977a5dcc59b7c1b8c6f5080',
+ 'org.projectlombok:lombok:1.16.6:e0a471be03e1e6b02bf019480cec7a3ac9801702bf7bf62f15d077ad4df8dd5d',
+ 'com.google.http-client:google-http-client-jackson2:1.22.0:45b1e34b2dcef5cb496ef25a1223d19cf102b8c2ea4abf96491631b2faf4611c',
+ 'com.google.guava:guava-jdk5:17.0:59bf456547b6dda3ced968cb56f7f2d3e14474e2de2960a32c47e31c1e456c61',
+ 'com.fasterxml.jackson.core:jackson-core:2.1.3:754184022345800c2d066eceeaf2f7a88a7c2aaeae23eb1c76ef598854aa9157',
+ 'com.google.oauth-client:google-oauth-client:1.22.0:a4c56168b3e042105d68cf136e40e74f6e27f63ed0a948df966b332678e19022',
+ 'com.google.http-client:google-http-client:1.22.0:f88ffa329ac52fb4f2ff0eb877ef7318423ac9b791a107f886ed5c7a00e77e11',
+ ]
}
tasks['idea'].dependsOn ':ReplayStudio:preshadowJar'
--
2.5.5

View File

@@ -0,0 +1,28 @@
From 07de60f9e430063f398bcc86e15397afb8a00413 Mon Sep 17 00:00:00 2001
From: Jonas Herzig <me@johni0702.de>
Date: Tue, 8 Aug 2017 21:29:01 +0200
Subject: [PATCH 5/5] Configure gradle to build reproducible archives
---
build.gradle | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/build.gradle b/build.gradle
index bda297b..7ed5cfe 100755
--- a/build.gradle
+++ b/build.gradle
@@ -194,6 +194,11 @@ jar {
}
}
+tasks.withType(AbstractArchiveTask) {
+ preserveFileTimestamps = false
+ reproducibleFileOrder = true
+}
+
def gitDescribe() {
try {
def stdout = new ByteArrayOutputStream()
--
2.5.5

View File

@@ -0,0 +1,28 @@
From 66c234d97042d31771df1c3633e1c7cb662e4882 Mon Sep 17 00:00:00 2001
From: Jonas Herzig <me@johni0702.de>
Date: Tue, 8 Aug 2017 19:00:22 +0200
Subject: [PATCH 1/4] Configure gradle to build reproducible archives
---
build.gradle | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/build.gradle b/build.gradle
index 3d2095e..2292a4d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -91,6 +91,11 @@ idea {
}
}
+tasks.withType(AbstractArchiveTask) {
+ preserveFileTimestamps = false
+ reproducibleFileOrder = true
+}
+
sourceCompatibility = '1.6'
targetCompatibility = '1.6'
--
2.5.5

View File

@@ -0,0 +1,117 @@
From 8105c498cb064c102197cf13d7efe4ebb1da65a7 Mon Sep 17 00:00:00 2001
From: Jonas Herzig <me@johni0702.de>
Date: Tue, 8 Aug 2017 18:51:27 +0200
Subject: [PATCH 2/4] Remove non-essential parts of build.gradle
---
build.gradle | 78 ------------------------------------------------------------
1 file changed, 78 deletions(-)
diff --git a/build.gradle b/build.gradle
index 2292a4d..1b06411 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,48 +1,4 @@
-import org.gradle.wrapper.Download
-import org.gradle.wrapper.GradleUserHomeLookup
-import org.gradle.wrapper.Install
-import org.gradle.wrapper.PathAssembler
-import org.gradle.wrapper.WrapperConfiguration
-import org.gradle.wrapper.WrapperExecutor
-import org.gradle.wrapper.Logger
-
-buildscript {
- repositories {
- jcenter()
- maven {
- url "https://plugins.gradle.org/m2/"
- }
- }
- dependencies {
- classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.5'
- classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.0.0"
- classpath "com.gradle.publish:plugin-publish-plugin:0.9.1"
- classpath 'org.asciidoctor:asciidoctor-gradle-plugin:1.5.3'
- classpath 'org.asciidoctor:asciidoctorj-pdf:1.5.0-alpha.11'
- classpath 'org.asciidoctor:asciidoctorj-groovy-dsl:1.0.0.preview2'
- classpath "com.bluepapa32:gradle-watch-plugin:0.1.5"
- classpath "org.kordamp.gradle:livereload-gradle-plugin:0.2.1"
- classpath 'org.ajoberstar:gradle-git:1.5.0'
- }
-}
-
-plugins {
- id 'com.gradle.build-scan' version '1.0'
-}
-
-buildScan {
- licenseAgreementUrl = 'https://gradle.com/terms-of-service'
- licenseAgree = 'yes'
-}
-
apply plugin: 'groovy'
-apply plugin: 'idea'
-apply plugin: 'project-report'
-
-apply from: file('gradle/docs.gradle')
-apply from: file('gradle/publish.gradle')
-apply from: file('gradle/asciidoc.gradle')
-apply from: file('gradle/ghPages.gradle')
repositories {
mavenLocal()
@@ -60,24 +16,6 @@ dependencies {
compile 'org.apache.ant:ant:1.9.4'
compile 'org.codehaus.plexus:plexus-utils:2.0.6'
compile 'org.codehaus.groovy:groovy-backports-compat23:2.4.4'
-
-
- testCompile gradleTestKit()
- testCompile("org.spockframework:spock-core:1.0-groovy-2.4") {
- exclude module: 'groovy-all'
- }
- testCompile 'xmlunit:xmlunit:1.3'
- testCompile 'commons-lang:commons-lang:2.6'
- testCompile 'com.google.guava:guava:17.0'
-}
-
-test {
- dependsOn publishToMavenLocal
- if (System.env.CI == 'true') {
- testLogging.showStandardStreams = true
- minHeapSize "1g"
- maxHeapSize "1g"
- }
}
jar {
@@ -85,12 +23,6 @@ jar {
from rootProject.file('NOTICE')
}
-idea {
- project {
- languageLevel = '1.6'
- }
-}
-
tasks.withType(AbstractArchiveTask) {
preserveFileTimestamps = false
reproducibleFileOrder = true
@@ -99,13 +31,3 @@ tasks.withType(AbstractArchiveTask) {
sourceCompatibility = '1.6'
targetCompatibility = '1.6'
-task installWrappers << {
- WrapperExecutor wrapperExecutor = WrapperExecutor.forWrapperPropertiesFile(file('gradle/wrapper/gradle-wrapper.properties'), System.out)
- ['1.12', '2.0', '2.5', '2.11', '2.12', '2.13', '2.14', '3.0'].each {
- WrapperConfiguration config = wrapperExecutor.config
- config.setDistribution(new URI("https://services.gradle.org/distributions/gradle-$it-bin.zip"))
- Install install = new Install(new Logger(true), new Download(new Logger(true), "gradlew", it),
- new PathAssembler(GradleUserHomeLookup.gradleUserHome()))
- install.createDist(config)
- }
-}
--
2.5.5

View File

@@ -0,0 +1,49 @@
From d06cec4bfa5981965faf2dad510d14e000d61ade Mon Sep 17 00:00:00 2001
From: Jonas Herzig <me@johni0702.de>
Date: Tue, 8 Aug 2017 18:53:57 +0200
Subject: [PATCH 3/4] Add witness plugin
---
build.gradle | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/build.gradle b/build.gradle
index 1b06411..a0d350b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,4 +1,11 @@
+buildscript {
+ dependencies {
+ classpath files('../gradle-witness.jar')
+ }
+}
+
apply plugin: 'groovy'
+apply plugin: 'witness'
repositories {
mavenLocal()
@@ -18,6 +25,20 @@ dependencies {
compile 'org.codehaus.groovy:groovy-backports-compat23:2.4.4'
}
+dependencyVerification {
+ verify = [
+ 'org.jdom:jdom2:2.0.5:32ed093f39c46a8d99f801240069478eac93b35f07351c001f2cef4330e97b4a',
+ 'org.ow2.asm:asm:5.0.3:71c4f78e437b8fdcd9cc0dfd2abea8c089eb677005a6a5cff320206cc52b46cc',
+ 'org.ow2.asm:asm-commons:5.0.3:18c1e092230233c9d29e46f21943d769bdb48130cc279e4b0e663f423948c2da',
+ 'commons-io:commons-io:2.4:cc6a41dc3eaacc9e440a6bd0d2890b20d36b4ee408fe2d67122f328bb6e01581',
+ 'org.apache.ant:ant:1.9.4:649ae0730251de07b8913f49286d46bba7b92d47c5f332610aa426c4f02161d8',
+ 'org.codehaus.plexus:plexus-utils:2.0.6:8b909f4ca9788647942f883d4e559bcc642123f7c6bcd3846983a2e465469c33',
+ 'org.codehaus.groovy:groovy-backports-compat23:2.4.4:f07694998acb204782c72cc8067b237a04097a2170f07d440614883f14a67630',
+ 'org.ow2.asm:asm-tree:5.0.3:347a7a9400f9964e87c91d3980e48eebdc8d024bc3b36f7f22189c662853a51c',
+ 'org.apache.ant:ant-launcher:1.9.4:7bccea20b41801ca17bcbc909a78c835d0f443f12d639c77bd6ae3d05861608d',
+ ]
+}
+
jar {
from rootProject.file('LICENSE')
from rootProject.file('NOTICE')
--
2.5.5

View File

@@ -0,0 +1,54 @@
From cfca21accce1fb3fbd32b81fb79f0363dd7b61f4 Mon Sep 17 00:00:00 2001
From: Jonas Herzig <me@johni0702.de>
Date: Tue, 8 Aug 2017 19:59:34 +0200
Subject: [PATCH 4/4] Manually shade deps
---
build.gradle | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/build.gradle b/build.gradle
index a0d350b..b12a46d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -12,17 +12,22 @@ repositories {
jcenter()
}
+configurations {
+ shade
+ compile.extendsFrom shade
+}
+
dependencies {
compile localGroovy()
compile gradleApi()
- compile 'org.jdom:jdom2:2.0.5'
- compile 'org.ow2.asm:asm:5.0.3'
- compile 'org.ow2.asm:asm-commons:5.0.3'
- compile 'commons-io:commons-io:2.4'
- compile 'org.apache.ant:ant:1.9.4'
- compile 'org.codehaus.plexus:plexus-utils:2.0.6'
- compile 'org.codehaus.groovy:groovy-backports-compat23:2.4.4'
+ shade 'org.jdom:jdom2:2.0.5'
+ shade 'org.ow2.asm:asm:5.0.3'
+ shade 'org.ow2.asm:asm-commons:5.0.3'
+ shade 'commons-io:commons-io:2.4'
+ shade 'org.apache.ant:ant:1.9.4'
+ shade 'org.codehaus.plexus:plexus-utils:2.0.6'
+ shade 'org.codehaus.groovy:groovy-backports-compat23:2.4.4'
}
dependencyVerification {
@@ -42,6 +47,7 @@ dependencyVerification {
jar {
from rootProject.file('LICENSE')
from rootProject.file('NOTICE')
+ from (files(configurations.shade).collect {it.isDirectory() ? filesTree(it) : zipTree(it)})
}
tasks.withType(AbstractArchiveTask) {
--
2.5.5

77
gradle/reprod/setup.sh Executable file
View File

@@ -0,0 +1,77 @@
#!/usr/bin/env bash
set -e
set -x
cd gradle/reprod
sha256val () {
sha256sum $1 | cut -d' ' -f1
}
setup_dep () {
dep=$1
url=$2
commit=$3
jar=$4
jarhash=$5
[ -f "deps/$dep.jar" ] && [ "$(sha256val "deps/$dep.jar")" == "$jarhash" ] && return
rm -rf "deps/$dep.jar"
if [ ! -d "deps/$dep" ] || [ "$(git -C "deps/$dep" rev-parse $commit^{commit})" != "$commit" ]; then
rm -rf "deps/$dep"
mkdir -p "deps/$dep"
pushd "deps/$dep"
git clone "$url" .
git fetch origin $commit
git checkout "$commit"
popd
fi
pushd "deps/$dep"
git reset --hard "$commit"
find ../../patches/$dep/ -name *.patch | sort | xargs -r git am
git reset --soft "$commit" # Because forgegradle includes the commit hash in the jar
rm -rf gradle/wrapper gradlew
[ ! -d gradle ] && mkdir gradle
cp -r ../../../wrapper gradle/
cp ../../../wrapper/gradle-wrapper.properties gradle/wrapper/
cp ../../../../gradlew .
chmod +x gradlew
./gradlew build -x test
actual_hash=$(sha256val "build/libs/$jar")
if [ "$actual_hash" != "$jarhash" ]; then
echo "Failed to verify checksum of build artifact of dependency: $dep"
echo "Expected: $jarhash"
echo "But was: $actual_hash"
exit 1
fi
cp "build/libs/$jar" "../$dep.jar"
popd
}
# Required for all
setup_dep "gradle-witness" "https://github.com/ReplayMod/gradle-witness.git" "c162a15841c2eba54b182fa81733c0aa9227f023" "gradle-witness.jar" "5e9ce687248029bf6364010168a65a4ad66fcb712dbd5ba69c59697ef564964b"
# Required for mixin
setup_dep "shadow" "https://github.com/johnrengelman/shadow.git" "60d0f28103be076dc991a624bf79ca7a13835973" "shadow.jar" "0a7a280d5f7c58ff513f448537ceb77eda788df6cbdeacd60f63f70142ff39b3"
setup_dep "fernflower" "https://github.com/fesh0r/fernflower.git" "85f61bee8194ab69afa746b965973a18eda67608" "fernflower.jar" "577c2c4e04f0026675cacb25ec525f2ccba5de2eecac525b28bed18f9ccfd790"
# Required for RM
setup_dep "mixingradle" "https://github.com/SpongePowered/MixinGradle.git" "3d81c8e202ec435056fb2068fdc34cfefa99be2d" "mixingradle-0.4-SNAPSHOT.jar" "a2b23727ed920ef2b9098f55634ede8d2ae5d04d910c0d572e45c33cff1cd281"
setup_dep "forgegradle" "https://github.com/MinecraftForge/ForgeGradle.git" "a228a836a2dc5ce546d2d53c48760f52f082d7ad" "ForgeGradle-2.3-SNAPSHOT.jar" "c885787f66811bf8edf0ced326d20c56428b447e8f0d29f37679f381d3e1f7ff"
setup_dep "mixin" "https://github.com/SpongePowered/Mixin.git" "b558323da3bd6ce94aeb442bfd7357f6c40d2fd4" "mixin-0.6.11-SNAPSHOT.jar" "0563b206db37f2f22b024b1736084afa2f30b0193b1a14e89cf9d99a3db26e1d"
rm -rf tmp
mkdir tmp
pushd tmp
cp ../../../build.gradle build.gradle
git init
git add build.gradle
git commit -m "Add build.gradle"
git am ../patches/replaymod/*.patch
popd

Binary file not shown.

View File

@@ -1,6 +1,6 @@
#Sun May 10 21:57:58 CEST 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=http\://services.gradle.org/distributions/gradle-2.11-all.zip
distributionUrl=http\://services.gradle.org/distributions/gradle-3.5.1-all.zip
distributionSha256Sum=69d99ade952de3727b65a88f3188ee72231ff4e28c2d00aacfc96a42c6d6f303

16
gradlew vendored
View File

@@ -6,6 +6,12 @@
##
##############################################################################
if [ "$REPRODUCIBLE_BUILD" == "1" ] && [ -f ./gradle/reprod/setup.sh ] && [ "$1" != "-Preprod" ]; then
./gradle/reprod/setup.sh || exit
./gradlew -Preprod "$@"
exit
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
@@ -42,11 +48,6 @@ case "`uname`" in
;;
esac
# For Cygwin, ensure paths are in UNIX format before anything is touched.
if $cygwin ; then
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
fi
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
@@ -61,9 +62,9 @@ while [ -h "$PRG" ] ; do
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >&-
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >&-
cd "$SAVED" >/dev/null
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
@@ -114,6 +115,7 @@ fi
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`

2
gradlew.bat vendored
View File

@@ -46,7 +46,7 @@ echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windowz variants
@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args

View File

@@ -1 +1,5 @@
include 'ReplayStudio'
include 'ReplayStudio'
if (System.getenv('REPRODUCIBLE_BUILD') == '1') {
rootProject.buildFileName = 'gradle/reprod/tmp/build.gradle'
}