diff --git a/app_pojavlauncher/src/main/assets/components/arc_dns_injector/arc_dns_injector.jar b/app_pojavlauncher/src/main/assets/components/arc_dns_injector/arc_dns_injector.jar index 1886d0f79..b0611357e 100644 Binary files a/app_pojavlauncher/src/main/assets/components/arc_dns_injector/arc_dns_injector.jar and b/app_pojavlauncher/src/main/assets/components/arc_dns_injector/arc_dns_injector.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/forge_installer/forge_installer.jar b/app_pojavlauncher/src/main/assets/components/forge_installer/forge_installer.jar index 863a6df0e..2cbe40ef7 100644 Binary files a/app_pojavlauncher/src/main/assets/components/forge_installer/forge_installer.jar and b/app_pojavlauncher/src/main/assets/components/forge_installer/forge_installer.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/lwjgl-glfw-classes.jar b/app_pojavlauncher/src/main/assets/components/lwjgl3/lwjgl-glfw-classes.jar index 5ac149831..19277017b 100644 Binary files a/app_pojavlauncher/src/main/assets/components/lwjgl3/lwjgl-glfw-classes.jar and b/app_pojavlauncher/src/main/assets/components/lwjgl3/lwjgl-glfw-classes.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/version b/app_pojavlauncher/src/main/assets/components/lwjgl3/version index 052402241..f8349b9a4 100644 --- a/app_pojavlauncher/src/main/assets/components/lwjgl3/version +++ b/app_pojavlauncher/src/main/assets/components/lwjgl3/version @@ -1 +1 @@ -276e966873587ef19ddad2f320052b8c10ff7a77 \ No newline at end of file +5aeae791eead9c6c47670c0886d77b1b185947fd \ No newline at end of file diff --git a/app_pojavlauncher/src/main/assets/components/methods_injector_agent/methods_injector_agent.jar b/app_pojavlauncher/src/main/assets/components/methods_injector_agent/methods_injector_agent.jar new file mode 100644 index 000000000..1ba5b3513 Binary files /dev/null and b/app_pojavlauncher/src/main/assets/components/methods_injector_agent/methods_injector_agent.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/methods_injector_agent/version b/app_pojavlauncher/src/main/assets/components/methods_injector_agent/version index e69de29bb..4a63b308b 100644 --- a/app_pojavlauncher/src/main/assets/components/methods_injector_agent/version +++ b/app_pojavlauncher/src/main/assets/components/methods_injector_agent/version @@ -0,0 +1 @@ +f090d130b1b02def937f26cc62c38ef429ed7b52 \ No newline at end of file diff --git a/arc_dns_injector/build.gradle b/arc_dns_injector/build.gradle index bf97f0dfd..79ab4f913 100644 --- a/arc_dns_injector/build.gradle +++ b/arc_dns_injector/build.gradle @@ -8,13 +8,19 @@ java { } jar { + destinationDirectory.set(file("../app_pojavlauncher/src/main/assets/components/arc_dns_injector/")) manifest { attributes("Manifest-Version": "1.0", "PreMain-Class": "git.artdeell.arcdns.ArcDNSInjectorAgent") } - if (gitUsed()){ - File versionFile = file("../app_pojavlauncher/src/main/assets/components/arc_dns_injector/version") - versionFile.write(getGitHash(project.projectDir)) + // Makes the jar reproducible so the version file actually is a version file + preserveFileTimestamps = false + reproducibleFileOrder = true + // Write version file + def versionFile = new File(project(":app_pojavlauncher").projectDir, "src/main/assets/components/arc_dns_injector/version") + def jarFile = archiveFile.get().asFile + doLast { + writeVersionFile(jarFile, versionFile) } - destinationDirectory.set(file("../app_pojavlauncher/src/main/assets/components/arc_dns_injector/")) + outputs.file(versionFile) // Adds the versionFile to outputs } \ No newline at end of file diff --git a/build.gradle b/build.gradle index dcb3ca49a..2cb566e48 100644 --- a/build.gradle +++ b/build.gradle @@ -1,33 +1,19 @@ -import java.io.IOException +import java.security.MessageDigest + plugins{ id 'com.android.application' version '8.7.2' apply false id 'com.android.library' version '8.7.2' apply false } -String getGitHash(File project) { - def command = Runtime.getRuntime().exec("git rev-list -1 HEAD " + project + "/src") - def returnCode = command.waitFor() - if (returnCode != 0) { - throw new IOException("Command 'getGitHash()' exited with " + returnCode) +static void writeVersionFile(File jarFile, File versionFile){ + def sha256 = MessageDigest.getInstance("SHA-1") + jarFile.withInputStream { is -> + byte[] buffer = new byte[8192] + int read + while ((read = is.read(buffer)) != -1) { + sha256.update(buffer, 0, read) + } } - String gitCommitHash = command.inputStream.text.trim() - return gitCommitHash -} - -Boolean gitUsed() { - def returnCode = Runtime.getRuntime().exec("git rev-parse --is-inside-work-tree").waitFor() - switch(returnCode){ - case 127: - println("git not found"); - return false; - break; - case 128: - println("not inside a git repository"); - return false; - break; - case 0: - return true; - default: - throw new IOException("Command 'gitUsed()' exited with " + returnCode) - } + def hash = sha256.digest().collect { String.format("%02x", it) }.join() + versionFile.write(hash) } diff --git a/forge_installer/build.gradle b/forge_installer/build.gradle index ecddea1bd..9836db383 100644 --- a/forge_installer/build.gradle +++ b/forge_installer/build.gradle @@ -12,16 +12,22 @@ dependencies { } jar { - from { - configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } - } - if (gitUsed()){ - File versionFile = file("../app_pojavlauncher/src/main/assets/components/forge_installer/version") - versionFile.write(getGitHash(project.projectDir)) - } + destinationDirectory.set(file("../app_pojavlauncher/src/main/assets/components/forge_installer/")) manifest { attributes("Manifest-Version": "1.0", "PreMain-Class": "git.artdeell.installer_agent.Agent") } - destinationDirectory.set(file("../app_pojavlauncher/src/main/assets/components/forge_installer/")) + from { + configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } + } + // Makes the jar reproducible so the version file actually is a version file + preserveFileTimestamps = false + reproducibleFileOrder = true + // Write version file + def versionFile = new File(project(":app_pojavlauncher").projectDir, "src/main/assets/components/forge_installer/version") + def jarFile = archiveFile.get().asFile + doLast { + writeVersionFile(jarFile, versionFile) + } + outputs.file(versionFile) // Adds the versionFile to outputs } diff --git a/jre_lwjgl3glfw/build.gradle b/jre_lwjgl3glfw/build.gradle index 98952277e..7137c30c6 100644 --- a/jre_lwjgl3glfw/build.gradle +++ b/jre_lwjgl3glfw/build.gradle @@ -1,3 +1,5 @@ +import java.security.MessageDigest + plugins { id 'java' } @@ -8,25 +10,31 @@ configurations.default.setCanBeResolved(true) jar { duplicatesStrategy = DuplicatesStrategy.EXCLUDE - archiveBaseName = "lwjgl-glfw-classes" + archiveBaseName.set("lwjgl-glfw-classes") destinationDirectory.set(file("../app_pojavlauncher/src/main/assets/components/lwjgl3/")) - if (gitUsed()){ - File versionFile = file("../app_pojavlauncher/src/main/assets/components/lwjgl3/version") - versionFile.write(getGitHash(project.projectDir)) - } from { configurations.default.collect { println(it.getName()) it.isDirectory() ? it : zipTree(it) } } + // Makes the jar reproducible so the version file actually is a version file + preserveFileTimestamps = false + reproducibleFileOrder = true + // Write version file + def versionFile = new File(project(":app_pojavlauncher").projectDir, "src/main/assets/components/lwjgl3/version") + def jarFile = archiveFile.get().asFile + doLast { + writeVersionFile(jarFile, versionFile) + } + outputs.file(versionFile) // Adds the versionFile to outputs + exclude 'net/java/openjdk/cacio/ctc/**' } java { - toolchain { - languageVersion = JavaLanguageVersion.of(8) - } + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 } dependencies { diff --git a/methods_injector_agent/build.gradle b/methods_injector_agent/build.gradle index 659f44720..e63633192 100644 --- a/methods_injector_agent/build.gradle +++ b/methods_injector_agent/build.gradle @@ -9,17 +9,23 @@ java { } jar { + destinationDirectory.set(file("../app_pojavlauncher/src/main/assets/components/methods_injector_agent/")) archiveBaseName.set("methods_injector_agent") manifest { attributes("Manifest-Version": "1.0", "PreMain-Class": "org.angelauramc.methodsInjectorAgent.startInjectors", "Can-Redefine-Classes": "true") } - if (gitUsed()){ - File versionFile = file("../app_pojavlauncher/src/main/assets/components/methods_injector_agent/version") - versionFile.write(getGitHash(project.projectDir)) + // Makes the jar reproducible so the version file actually is a version file + preserveFileTimestamps = false + reproducibleFileOrder = true + // Write version file + def versionFile = new File(project(":app_pojavlauncher").projectDir, "src/main/assets/components/methods_injector_agent/version") + def jarFile = archiveFile.get().asFile + doLast { + writeVersionFile(jarFile, versionFile) } - destinationDirectory.set(file("../app_pojavlauncher/src/main/assets/components/methods_injector_agent/")) + outputs.file(versionFile) // Adds the versionFile to outputs } dependencies {