From ba4aaa36544da7eaaa24e600e0692d38f3574108 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Tue, 3 Oct 2017 18:00:24 +0200 Subject: [PATCH] Produce pom.xml instead of shading deps of deps --- gradle/reprod/init.gradle | 19 +++++++ ...ings-because-we-don-t-include-deps-a.patch | 57 ------------------- ...APSHOT-deps-with-manually-built-ones.patch | 14 ++--- ...n-essential-parts-and-shade-manually.patch | 3 +- ...place-fernflower-SNAPSHOT-depencency.patch | 4 +- ...ipt-dependencies-with-manually-built.patch | 21 +++---- ...ce-mixin-dep-with-manually-built-one.patch | 2 +- .../srg2source/0003-Manually-shade-deps.patch | 25 -------- gradle/reprod/setup.sh | 50 ++++++++++------ 9 files changed, 74 insertions(+), 121 deletions(-) delete mode 100644 gradle/reprod/patches/forgegradle/0004-Shade-all-the-things-because-we-don-t-include-deps-a.patch delete mode 100644 gradle/reprod/patches/srg2source/0003-Manually-shade-deps.patch diff --git a/gradle/reprod/init.gradle b/gradle/reprod/init.gradle index 527f8f9f..37fc624a 100644 --- a/gradle/reprod/init.gradle +++ b/gradle/reprod/init.gradle @@ -27,8 +27,27 @@ allprojects { repositories.all convertRepoToHttp apply plugin: de.johni0702.gradle.ReproducibleBuildsPlugin, to: project apply plugin: xink.gradle.ecj.EcjPlugin, to: project + apply plugin: 'maven', to: project ecj { warn = ['none'] } + + repositories { + maven { + url(project.file('gradle/reprod').exists() ? 'gradle/reprod/deps/repo' : '../repo') + } + } + task createPom { + doLast { + pom { + project { + groupId 'reprod' + artifactId project.file('.').name + version '0' + } + }.writeTo("pom.xml") + } + } + build.dependsOn createPom } diff --git a/gradle/reprod/patches/forgegradle/0004-Shade-all-the-things-because-we-don-t-include-deps-a.patch b/gradle/reprod/patches/forgegradle/0004-Shade-all-the-things-because-we-don-t-include-deps-a.patch deleted file mode 100644 index 577b2408..00000000 --- a/gradle/reprod/patches/forgegradle/0004-Shade-all-the-things-because-we-don-t-include-deps-a.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 130d406cbe105303f9b14c342f02fc9a20782e32 Mon Sep 17 00:00:00 2001 -From: Jonas Herzig -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 -@@ -62,26 +62,26 @@ dependencies { - compile gradleApi() - - // moved to the beginning to be the overrider -- compile 'org.ow2.asm:asm-debug-all:5.0.3' -- compile 'com.google.guava:guava:18.0' -+ shade 'org.ow2.asm:asm-debug-all:5.0.3' -+ 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:fernflower:2.0-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:fernflower:2.0-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 - diff --git a/gradle/reprod/patches/forgegradle/0006-Replace-SNAPSHOT-deps-with-manually-built-ones.patch b/gradle/reprod/patches/forgegradle/0006-Replace-SNAPSHOT-deps-with-manually-built-ones.patch index a138c5a4..70ec92f9 100644 --- a/gradle/reprod/patches/forgegradle/0006-Replace-SNAPSHOT-deps-with-manually-built-ones.patch +++ b/gradle/reprod/patches/forgegradle/0006-Replace-SNAPSHOT-deps-with-manually-built-ones.patch @@ -12,11 +12,11 @@ index bfadecd..774a015 100644 --- a/build.gradle +++ b/build.gradle @@ -67,7 +67,7 @@ dependencies { - 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:fernflower:2.0-SNAPSHOT' // Fernflower Forge edition -+ shade files('../forgeflower.jar') // Fernflower Forge edition + 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:fernflower:2.0-SNAPSHOT' // Fernflower Forge edition ++ compile 'reprod:forgeflower:0' // 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 @@ -26,8 +26,8 @@ index bfadecd..774a015 100644 shade 'de.oceanlabs.mcp:RetroGuard:3.6.6' - shade 'de.oceanlabs.mcp:mcinjector:3.4-SNAPSHOT' - shade 'net.minecraftforge.srg2source:Srg2Source:3.3-SNAPSHOT' -+ shade files('../mcinjector.jar') -+ shade files('../srg2source.jar') ++ shade 'reprod:mcinjector:0' ++ shade 'reprod:srg2source:0' //Stuff used in the GradleStart classes compileOnly 'com.mojang:authlib:1.5.16' diff --git a/gradle/reprod/patches/mcinjector/0001-Remove-non-essential-parts-and-shade-manually.patch b/gradle/reprod/patches/mcinjector/0001-Remove-non-essential-parts-and-shade-manually.patch index b84754e6..a24af1a7 100644 --- a/gradle/reprod/patches/mcinjector/0001-Remove-non-essential-parts-and-shade-manually.patch +++ b/gradle/reprod/patches/mcinjector/0001-Remove-non-essential-parts-and-shade-manually.patch @@ -27,11 +27,10 @@ index 2e5f949..b6c63bb 100644 apply plugin: 'maven' group = 'de.oceanlabs.mcp' -@@ -22,93 +12,13 @@ repositories { +@@ -22,93 +12,12 @@ repositories { } jar { -+ from ({files(configurations.compile).collect {it.isDirectory() ? filesTree(it) : zipTree(it)}}) manifest.attributes('Main-Class': 'de.oceanlabs.mcp.mcinjector.MCInjector') } -fatJar { diff --git a/gradle/reprod/patches/mixin/0005-Replace-fernflower-SNAPSHOT-depencency.patch b/gradle/reprod/patches/mixin/0005-Replace-fernflower-SNAPSHOT-depencency.patch index c78662d2..5393e88a 100644 --- a/gradle/reprod/patches/mixin/0005-Replace-fernflower-SNAPSHOT-depencency.patch +++ b/gradle/reprod/patches/mixin/0005-Replace-fernflower-SNAPSHOT-depencency.patch @@ -17,8 +17,8 @@ index f8598a3..e9a965b 100644 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') ++ fernflowerCompile 'reprod:fernflower:0' ++ compile 'reprod:fernflower:0' compile('net.minecraft:launchwrapper:1.11') { exclude module: 'lwjgl' diff --git a/gradle/reprod/patches/replaymod/0001-Replace-buildscript-dependencies-with-manually-built.patch b/gradle/reprod/patches/replaymod/0001-Replace-buildscript-dependencies-with-manually-built.patch index 492f2a66..09a0dc0c 100644 --- a/gradle/reprod/patches/replaymod/0001-Replace-buildscript-dependencies-with-manually-built.patch +++ b/gradle/reprod/patches/replaymod/0001-Replace-buildscript-dependencies-with-manually-built.patch @@ -11,12 +11,12 @@ diff --git a/build.gradle b/build.gradle index ee24828..42d0607 100755 --- a/build.gradle +++ b/build.gradle -@@ -1,24 +1,9 @@ +@@ -1,24 +1,17 @@ import groovy.json.JsonOutput buildscript { -- repositories { -- mavenCentral() + repositories { + mavenCentral() - maven { - name = "forge" - url = "http://files.minecraftforge.net/maven" @@ -25,16 +25,17 @@ index ee24828..42d0607 100755 - name = "sponge" - url = "https://repo.spongepowered.org/maven" - } -- maven { -- name = "sonatype" -- url = "https://oss.sonatype.org/content/repositories/snapshots/" -- } -- } + maven { + name = "sonatype" + url = "https://oss.sonatype.org/content/repositories/snapshots/" + } ++ maven { url 'gradle/reprod/deps/repo' } + } dependencies { - classpath 'net.minecraftforge.gradle:ForgeGradle:2.0-SNAPSHOT' - classpath 'org.spongepowered:mixingradle:0.3-SNAPSHOT' -+ classpath files('gradle/reprod/deps/forgegradle.jar') -+ classpath files('gradle/reprod/deps/mixingradle.jar') ++ classpath 'reprod:forgegradle:0' ++ classpath 'reprod:mixingradle:0' } } diff --git a/gradle/reprod/patches/replaymod/0002-Replace-mixin-dep-with-manually-built-one.patch b/gradle/reprod/patches/replaymod/0002-Replace-mixin-dep-with-manually-built-one.patch index 3ecc40c5..7cb7fcd8 100644 --- a/gradle/reprod/patches/replaymod/0002-Replace-mixin-dep-with-manually-built-one.patch +++ b/gradle/reprod/patches/replaymod/0002-Replace-mixin-dep-with-manually-built-one.patch @@ -16,7 +16,7 @@ index 42d0607..bfa3914 100755 compile 'org.projectlombok:lombok:1.16.4' - compile 'org.spongepowered:mixin:0.6.8-SNAPSHOT' -+ shade files('gradle/reprod/deps/mixin.jar') ++ compile 'reprod:mixin:0' 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' diff --git a/gradle/reprod/patches/srg2source/0003-Manually-shade-deps.patch b/gradle/reprod/patches/srg2source/0003-Manually-shade-deps.patch deleted file mode 100644 index dda26a73..00000000 --- a/gradle/reprod/patches/srg2source/0003-Manually-shade-deps.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 7266eb65165cfe18ea21a3c183da4efc37ff54cf Mon Sep 17 00:00:00 2001 -From: Jonas Herzig -Date: Sat, 26 Aug 2017 17:46:46 +0200 -Subject: [PATCH] Manually shade deps - ---- - build.gradle | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/build.gradle b/build.gradle -index eefeafe..368f6be 100644 ---- a/build.gradle -+++ b/build.gradle -@@ -61,6 +61,8 @@ jar { - } - - jar { -+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE -+ from (files(configurations.compile).collect {it.isDirectory() ? filesTree(it) : zipTree(it)}) - exclude 'data/**' - } - --- -2.5.5 - diff --git a/gradle/reprod/setup.sh b/gradle/reprod/setup.sh index 5c8a1d64..ed2636bf 100755 --- a/gradle/reprod/setup.sh +++ b/gradle/reprod/setup.sh @@ -19,18 +19,25 @@ setup_dep () { commit=$3 jar=$4 jarhash=$5 + pomhash=$6 - [ -f "deps/$dep.jar" ] && [ "$(sha256val "deps/$dep.jar")" == "$jarhash" ] && return - [ -f "deps/$dep.jar" ] && [ "*" == "$jarhash" ] && return - rm -rf "deps/$dep.jar" + depjar="deps/repo/reprod/$dep/0/$dep-0.jar" + deppom="deps/repo/reprod/$dep/0/$dep-0.pom" + + [ -f "$depjar" ] && [ "$(sha256val "$depjar")" == "$jarhash" ] && [ -f "$deppom" ] && [ "$(sha256val "$deppom")" == "$pomhash" ] && return + [ -f "$depjar" ] && [ "*" == "$jarhash" ] && return + rm -rf "$depjar" "$deppom" + + mkdir -p "deps/repo/reprod/$dep/0" if [ "*" != "$jarhash" ] && [ "$OFFLINE" != "1" ]; then # Try to fetch the pre-built artifact - if wget -O "deps/dl.tmp" "https://www.johni0702.de/replaymod/artifact/$jarhash"; then - # Verify downloaded jar file - if [ "$(sha256val "deps/dl.tmp")" == "$jarhash" ]; then + if wget -O "deps/dl.jar" "https://www.johni0702.de/replaymod/artifact/$jarhash" && wget -O "deps/dl.pom" "https://www.johni0702.de/replaymod/artifact/$pomhash"; then + # Verify downloaded jar/pom files + if [ "$(sha256val "deps/dl.jar")" == "$jarhash" ] && [ "$(sha256val "deps/dl.pom")" == "$pomhash" ]; then # Got valid pre-built artifact, use it - mv "deps/dl.tmp" "deps/$dep.jar" + mv "deps/dl.jar" "$depjar" + mv "deps/dl.pom" "$deppom" return fi fi @@ -75,29 +82,38 @@ setup_dep () { exit 1 fi + actual_hash=$(sha256val "pom.xml") + if [ "*" != "$jarhash" ] && [ "$actual_hash" != "$pomhash" ]; then + echo "Failed to verify checksum of build artifact pom of dependency: $dep" + echo "Expected: $pomhash" + echo "But was: $actual_hash" + exit 1 + fi + # Subshell to allow for expansion of * - cp "$(echo $jar)" "../$dep.jar" + cp "$(echo $jar)" "../../$depjar" + [ "$dep" == "proxy-witness" ] || cp "pom.xml" "../../$deppom" popd } # Setup http(s) proxy -setup_dep "proxy-witness" "https://github.com/johni0702/proxy-witness" "17ebb2e22f812faed9a28bae6bf1d8b28f798d56" "build/libs/proxy-witness.jar" "*" -java -Dproxywitness.httpUris=http://export.mcpbot.bspk.rs/versions.json -jar deps/proxy-witness.jar "$PROXY_PORT" checksums.txt > proxy.log 2>&1 & +setup_dep "proxy-witness" "https://github.com/johni0702/proxy-witness" "17ebb2e22f812faed9a28bae6bf1d8b28f798d56" "build/libs/proxy-witness.jar" "*" "*" +java -Dproxywitness.httpUris=http://export.mcpbot.bspk.rs/versions.json -jar deps/repo/reprod/proxy-witness/0/proxy-witness-0.jar "$PROXY_PORT" checksums.txt > proxy.log 2>&1 & proxy_pid=$! trap "kill $proxy_pid" EXIT # Required for mixin -setup_dep "fernflower" "https://github.com/fesh0r/fernflower.git" "85f61bee8194ab69afa746b965973a18eda67608" "build/libs/fernflower.jar" "b69597c93e248073330da4532a857aad73b767d46f87a0aa66446fbea289ff93" +setup_dep "fernflower" "https://github.com/fesh0r/fernflower.git" "85f61bee8194ab69afa746b965973a18eda67608" "build/libs/fernflower.jar" "b69597c93e248073330da4532a857aad73b767d46f87a0aa66446fbea289ff93" "901b8a76ceb15db97d4dd19c5e8fcb0fc226ae602ef38ea906eb5258be9b929a" # Required for forgegradle -setup_dep "forgeflower" "https://github.com/MinecraftForge/FernFlowerLegacy.git" "114aebe82cf40075c5c4f916c409b8aebf8096d5" "build/libs/fernflower-2.0-SNAPSHOT.jar" "c8b4a4a13a1158008aed46da2c805184078324718697f14a67f1778168579956" -setup_dep "mcinjector" "https://github.com/ModCoderPack/MCInjector.git" "7258466461baf7dc4f313b06b0d589407e4e1fba" "build/libs/mcinjector-3.4-SNAPSHOT.jar" "f88dbfb66f2bfe0fa9f18dfc8691573d0f462040e7907beb6d9d6b1175d98a92" -setup_dep "srg2source" "https://github.com/MinecraftForge/Srg2Source.git" "5f11e2933f722000dbf742ffdd0d9c5ee8044bbb" "build/libs/Srg2Source-3.3-SNAPSHOT.jar" "82b380a3f8cb0184b75bc474ed4d0cae1586f70e6d2a2c16f025f4452374dcc2" +setup_dep "forgeflower" "https://github.com/MinecraftForge/FernFlowerLegacy.git" "114aebe82cf40075c5c4f916c409b8aebf8096d5" "build/libs/fernflower-2.0-SNAPSHOT.jar" "c8b4a4a13a1158008aed46da2c805184078324718697f14a67f1778168579956" "fbda3f30d54624fe4c59a69e145b644d8642afc0dd4eb0d732ccdaa0ebd5d8a3" +setup_dep "mcinjector" "https://github.com/ModCoderPack/MCInjector.git" "7258466461baf7dc4f313b06b0d589407e4e1fba" "build/libs/mcinjector-3.4-SNAPSHOT.jar" "98b685ea0d3ae9fad8b8a7e7b885512f7fe0b61becf27d9c74b91a626d107efc" "3c08655c11e6509bfc62ff87d0770cefa0ecbd8dccece9e083c9b7b89779a8c5" +setup_dep "srg2source" "https://github.com/MinecraftForge/Srg2Source.git" "5f11e2933f722000dbf742ffdd0d9c5ee8044bbb" "build/libs/Srg2Source-3.3-SNAPSHOT.jar" "9aa601ade2c33ce52fe09894efd4c1bb69c68a238c2dd260605881863083362e" "cbfdd113cd054b80ce3a1e5636d254fea4f59a82af9874ae9f3786cb1901920d" # Required for RM -setup_dep "mixingradle" "https://github.com/SpongePowered/MixinGradle.git" "52217aa8ca221dcd0b9fb657b037e663db808f38" "build/libs/mixingradle-0.4-SNAPSHOT.jar" "8b3508867128a5d564631635dff898a36f9aca8db54b7bb3af6f4924e3f4bead" -setup_dep "forgegradle" "https://github.com/MinecraftForge/ForgeGradle.git" "17806f45d20d0b55bff70a616eaeb939bd6a543c" "build/libs/ForgeGradle-2.1-SNAPSHOT.jar" "400f0ca3adf6a129926ec5d3af5495258ad6ec0f7951ba3b25c10ced211bc1b2" -setup_dep "mixin" "https://github.com/SpongePowered/Mixin.git" "b558323da3bd6ce94aeb442bfd7357f6c40d2fd4" "build/libs/mixin-0.6.11-SNAPSHOT.jar" "cb446b614ce34372fc2084de9bb16adc3182a6e96120fdb4bcae561e41303694" +setup_dep "mixingradle" "https://github.com/SpongePowered/MixinGradle.git" "52217aa8ca221dcd0b9fb657b037e663db808f38" "build/libs/mixingradle-0.4-SNAPSHOT.jar" "8b3508867128a5d564631635dff898a36f9aca8db54b7bb3af6f4924e3f4bead" "42cbf81136d4e26c06d3234427665b50d18768cc1f210512204ca1d5e3a42b5c" +setup_dep "forgegradle" "https://github.com/MinecraftForge/ForgeGradle.git" "17806f45d20d0b55bff70a616eaeb939bd6a543c" "build/libs/ForgeGradle-2.1-SNAPSHOT.jar" "8e60c5da202cdc7843cff956a23093fbd3f9e6061d925daefcf9cdaa6116ebd4" "4c670a05fbd9aeaa581ae8ba7597df1d1def7b04160e1c6b076ed6778dd45e58" +setup_dep "mixin" "https://github.com/SpongePowered/Mixin.git" "b558323da3bd6ce94aeb442bfd7357f6c40d2fd4" "build/libs/mixin-0.6.11-SNAPSHOT.jar" "cb446b614ce34372fc2084de9bb16adc3182a6e96120fdb4bcae561e41303694" "a2f59b03529fed676b64ed4f57fff16bfe27f7131c216f69308ca4d2b6e8e754" rm -rf tmp mkdir tmp