Allow for reproducible builds
REPRODUCIBLE_BUILD=1 ./gradlew clean :build
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
49
gradle/reprod/patches/shadow/0003-Add-witness-plugin.patch
Normal file
49
gradle/reprod/patches/shadow/0003-Add-witness-plugin.patch
Normal 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
|
||||
|
||||
54
gradle/reprod/patches/shadow/0004-Manually-shade-deps.patch
Normal file
54
gradle/reprod/patches/shadow/0004-Manually-shade-deps.patch
Normal 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
|
||||
|
||||
Reference in New Issue
Block a user