From 35f22e15922dc1f4657fe770b57fed83c9eb52a9 Mon Sep 17 00:00:00 2001 From: Lucwousin Date: Sat, 27 Jun 2020 19:07:49 +0200 Subject: [PATCH 1/4] Add env var for build scan tos --- settings.gradle.kts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/settings.gradle.kts b/settings.gradle.kts index 9c120be343..979d32c3db 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -29,6 +29,13 @@ plugins { id("com.gradle.enterprise").version("3.0") } +gradleEnterprise { + buildScan { + termsOfServiceUrl = "https://gradle.com/terms-of-service" + termsOfServiceAgree = System.getenv("SCAN_TOS_ACCEPTED")?: "no" + } +} + include(":http-api") include(":cache") include(":runelite-api") From cdf597a1ef142a63a146bee8006802685d7878c0 Mon Sep 17 00:00:00 2001 From: Lucwousin Date: Sat, 27 Jun 2020 19:08:52 +0200 Subject: [PATCH 2/4] lazy resolve bootstrap deps --- buildSrc/src/main/kotlin/BootstrapPlugin.kt | 12 +++--------- buildSrc/src/main/kotlin/BootstrapTask.kt | 18 ++++++++---------- 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/buildSrc/src/main/kotlin/BootstrapPlugin.kt b/buildSrc/src/main/kotlin/BootstrapPlugin.kt index 51f54c8506..c704cddb30 100644 --- a/buildSrc/src/main/kotlin/BootstrapPlugin.kt +++ b/buildSrc/src/main/kotlin/BootstrapPlugin.kt @@ -4,20 +4,13 @@ import org.gradle.kotlin.dsl.* class BootstrapPlugin : Plugin { override fun apply(project: Project): Unit = with(project) { - val clientJar by configurations.creating { - isCanBeConsumed = false - isCanBeResolved = true - isTransitive = false - } val bootstrapDependencies by configurations.creating { - extendsFrom(clientJar) isCanBeConsumed = false isCanBeResolved = true isTransitive = false } dependencies { - clientJar(tasks["jar"].outputs.files) bootstrapDependencies(project(":runelite-api")) bootstrapDependencies(project(":runescape-api")) bootstrapDependencies(project(":http-api")) @@ -29,6 +22,9 @@ class BootstrapPlugin : Plugin { tasks.register("bootstrapStable", "stable") tasks.withType { + this.group = "openosrs" + this.clientJar.fileProvider(provider { tasks["jar"].outputs.files.singleFile }) + dependsOn(bootstrapDependencies) dependsOn("publish") dependsOn(project(":runelite-api").tasks["publish"]) @@ -36,8 +32,6 @@ class BootstrapPlugin : Plugin { dependsOn(project(":http-api").tasks["publish"]) dependsOn(project(":injected-client").tasks["publish"]) - this.clientJar = clientJar.singleFile - doLast { copy { from(bootstrapDependencies) diff --git a/buildSrc/src/main/kotlin/BootstrapTask.kt b/buildSrc/src/main/kotlin/BootstrapTask.kt index ce9576ed1a..b4769207c8 100644 --- a/buildSrc/src/main/kotlin/BootstrapTask.kt +++ b/buildSrc/src/main/kotlin/BootstrapTask.kt @@ -1,9 +1,6 @@ import org.gradle.api.DefaultTask -import org.gradle.api.tasks.Input -import org.gradle.api.tasks.InputFile -import org.gradle.api.tasks.PathSensitive -import org.gradle.api.tasks.PathSensitivity -import org.gradle.api.tasks.TaskAction +import org.gradle.api.file.RegularFileProperty +import org.gradle.api.tasks.* import org.gradle.kotlin.dsl.extra import org.gradle.kotlin.dsl.get import java.io.File @@ -14,7 +11,7 @@ open class BootstrapTask @Inject constructor(@Input val type: String) : DefaultT @InputFile @PathSensitive(PathSensitivity.ABSOLUTE) - var clientJar: File? = null + val clientJar: RegularFileProperty = project.objects.fileProperty() @Input val launcherJvm11Arguments = arrayOf("-XX:+DisableAttachMechanism", "-Drunelite.launcher.nojvm=true", "-Xmx1G", "-Xss2m", "-XX:CompileThreshold=1500", "-Djna.nosys=true") @@ -81,11 +78,12 @@ open class BootstrapTask @Inject constructor(@Input val type: String) : DefaultT } } + val cjar = clientJar.get().asFile artifacts.add(JsonBuilder( - "name" to clientJar!!.name, - "path" to "https://github.com/open-osrs/hosting/raw/master/${type}/${clientJar!!.name}", - "size" to clientJar!!.length(), - "hash" to hash(clientJar!!.readBytes()) + "name" to cjar.name, + "path" to "https://github.com/open-osrs/hosting/raw/master/${type}/${cjar.name}", + "size" to cjar.length(), + "hash" to hash(cjar.readBytes()) )) return artifacts.toTypedArray() From fe8a40a6a7d6b240947ea65f5c221075b93bf7be Mon Sep 17 00:00:00 2001 From: Lucwousin Date: Sun, 28 Jun 2020 00:18:25 +0200 Subject: [PATCH 3/4] cleanup injected-client.gradle.kts --- injected-client/injected-client.gradle.kts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/injected-client/injected-client.gradle.kts b/injected-client/injected-client.gradle.kts index 6442589f1b..ce8883caec 100644 --- a/injected-client/injected-client.gradle.kts +++ b/injected-client/injected-client.gradle.kts @@ -45,7 +45,6 @@ val combined by configurations.creating { configurations { all { isTransitive = false - outgoing.artifact(tasks.inject.get().output) } } @@ -63,10 +62,8 @@ injector { vanilla.set(vanillaDep.singleFile) } -sourceSets { - main { - output.dir(tasks.inject.get().output.get().asFile.parentFile, "builtBy" to tasks.inject) - } +artifacts { + runtimeElements(tasks.inject.get().output) } // keep the sourcesets etc but remove useless tasks @@ -83,7 +80,13 @@ tasks { jar { enabled = false } + sourcesJar { + enabled = false + } processResources { enabled = false } + assemble { + finalizedBy("inject") + } } From 64564ab1c068229b118b3cd1d6a600b3a0b7c1b3 Mon Sep 17 00:00:00 2001 From: Lucwousin Date: Sun, 28 Jun 2020 02:13:40 +0200 Subject: [PATCH 4/4] Implement IndexMojo in doLast block --- runelite-client/runelite-client.gradle.kts | 2 +- ...unelite-script-assembler-plugin.gradle.kts | 46 ++++---- .../java/net/runelite/script/IndexMojo.java | 105 ------------------ 3 files changed, 22 insertions(+), 131 deletions(-) delete mode 100644 runelite-script-assembler-plugin/src/main/java/net/runelite/script/IndexMojo.java diff --git a/runelite-client/runelite-client.gradle.kts b/runelite-client/runelite-client.gradle.kts index ac26a412fe..baf582c674 100644 --- a/runelite-client/runelite-client.gradle.kts +++ b/runelite-client/runelite-client.gradle.kts @@ -143,7 +143,7 @@ tasks { } processResources { - dependsOn(":runelite-script-assembler-plugin:indexMojo") + dependsOn(":runelite-script-assembler-plugin:assembleMojo") from("${buildDir}/scripts") } diff --git a/runelite-script-assembler-plugin/runelite-script-assembler-plugin.gradle.kts b/runelite-script-assembler-plugin/runelite-script-assembler-plugin.gradle.kts index 02c32ed9eb..9049853836 100644 --- a/runelite-script-assembler-plugin/runelite-script-assembler-plugin.gradle.kts +++ b/runelite-script-assembler-plugin/runelite-script-assembler-plugin.gradle.kts @@ -1,5 +1,6 @@ /* * Copyright (c) 2019 Owain van Brakel + * Copyright (c) 2020 Lucas * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -22,6 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import java.io.DataOutputStream as DOS description = "Script Assembler Plugin" @@ -39,34 +41,28 @@ dependencies { tasks { register("assembleMojo") { - inputs.files( - fileTree("${project.extra["rootPath"]}/runelite-client/src/main/scripts") - ) - - outputs.dir("${project.extra["rootPath"]}/runelite-client/build/scripts/runelite"); + outputs.cacheIf { true } + val inp = "${project.extra["rootPath"]}/runelite-client/src/main/scripts" + val out = "${project.extra["rootPath"]}/runelite-client/build/scripts/runelite" + inputs.dir(inp) + outputs.dir(out) classpath = project.sourceSets.main.get().runtimeClasspath main = "net.runelite.script.AssembleMojo" - args(listOf( - "${project.extra["rootPath"]}/runelite-client/src/main/scripts", - "${project.extra["rootPath"]}/runelite-client/build/scripts/runelite" - )) - } + args(listOf(inp, out)) - register("indexMojo") { - inputs.files( - fileTree("${project.extra["rootPath"]}/runelite-client/build/scripts/runelite") - ) - - outputs.file("${project.extra["rootPath"]}/runelite-client/build/scripts/runelite/index"); - - dependsOn("assembleMojo") - - classpath = project.sourceSets.main.get().runtimeClasspath - main = "net.runelite.script.IndexMojo" - args(listOf( - "${project.extra["rootPath"]}/runelite-client/build/scripts/runelite", - "${project.extra["rootPath"]}/runelite-client/build/scripts/runelite/index" - )) + doLast { + DOS(project.file("$out/index").outputStream().buffered(256)).use { + project.fileTree(out) { + exclude { it.path.endsWith(".hash") || it.name.equals("index") } + var lastDir = Int.MAX_VALUE + visit { + if (this.isDirectory) lastDir = this.name.toInt().shl(16) + else it.writeInt(lastDir.or(this.name.toInt())) + } + } + it.writeInt(-1) + } + } } } \ No newline at end of file diff --git a/runelite-script-assembler-plugin/src/main/java/net/runelite/script/IndexMojo.java b/runelite-script-assembler-plugin/src/main/java/net/runelite/script/IndexMojo.java deleted file mode 100644 index c634171532..0000000000 --- a/runelite-script-assembler-plugin/src/main/java/net/runelite/script/IndexMojo.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.script; - -import java.io.DataOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import static java.lang.Integer.parseInt; -import org.apache.maven.plugin.AbstractMojo; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.plugins.annotations.LifecyclePhase; -import org.apache.maven.plugins.annotations.Mojo; -import org.apache.maven.plugins.annotations.Parameter; - -@Mojo( - name = "build-index", - defaultPhase = LifecyclePhase.GENERATE_RESOURCES -) -public class IndexMojo extends AbstractMojo -{ - @Parameter(required = true) - private File archiveOverlayDirectory; - - @Parameter(required = true) - private File indexFile; - - private IndexMojo(File archiveOverlayDirectory, File indexFile) - { - this.archiveOverlayDirectory = archiveOverlayDirectory; - this.indexFile = indexFile; - } - - public static void main(String[] args) throws Exception - { - if (args.length < 2) - { - throw new IllegalArgumentException("Usage: overlaydir indexfile"); - } - - File archiveOverlayDirectory = new File(args[0]); - File indexFile = new File(args[1]); - - new IndexMojo(archiveOverlayDirectory, indexFile).execute(); - } - - @Override - public void execute() throws MojoExecutionException, MojoFailureException - { - try (DataOutputStream fout = new DataOutputStream(new FileOutputStream(indexFile))) - { - for (File indexFolder : archiveOverlayDirectory.listFiles()) - { - if (indexFolder.isDirectory()) - { - int indexId = parseInt(indexFolder.getName()); - for (File archiveFile : indexFolder.listFiles()) - { - int archiveId; - try - { - archiveId = parseInt(archiveFile.getName()); - } - catch (NumberFormatException ex) - { - continue; - } - - fout.writeInt(indexId << 16 | archiveId); - } - } - } - - fout.writeInt(-1); - } - catch (IOException ex) - { - throw new MojoExecutionException("error building index file", ex); - } - } - -}