hmcl: 3.9.2 -> 3.10.2 (#486845)
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
From ff7e9316ae220c002cc6d3cced0ae0786bcd0392 Mon Sep 17 00:00:00 2001
|
||||
From: Moraxyc <i@qaq.li>
|
||||
Date: Wed, 4 Feb 2026 15:36:17 +0800
|
||||
Subject: [PATCH 1/2] nix: use terracotta from nix
|
||||
|
||||
---
|
||||
.../hmcl/terracotta/TerracottaBundle.java | 21 +++----------------
|
||||
1 file changed, 3 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/TerracottaBundle.java b/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/TerracottaBundle.java
|
||||
index 727edde9b..5b6e8b02f 100644
|
||||
--- a/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/TerracottaBundle.java
|
||||
+++ b/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/TerracottaBundle.java
|
||||
@@ -139,26 +139,11 @@ public final class TerracottaBundle {
|
||||
}
|
||||
|
||||
public Path locate(String file) {
|
||||
- FileDownloadTask.IntegrityCheck check = files.get(file);
|
||||
- if (check == null) {
|
||||
- throw new AssertionError(String.format("Expecting %s file in terracotta bundle.", file));
|
||||
- }
|
||||
- return root.resolve(file).toAbsolutePath();
|
||||
+ return Path.of("@TERRACOTTA_BIN@");
|
||||
}
|
||||
|
||||
public AbstractTerracottaProvider.Status status() throws IOException {
|
||||
- if (Files.exists(root) && isLocalBundleValid()) {
|
||||
- return AbstractTerracottaProvider.Status.READY;
|
||||
- }
|
||||
-
|
||||
- try {
|
||||
- if (TerracottaMetadata.hasLegacyVersionFiles()) {
|
||||
- return AbstractTerracottaProvider.Status.LEGACY_VERSION;
|
||||
- }
|
||||
- } catch (IOException e) {
|
||||
- Logger.LOG.warning("Cannot determine whether legacy versions exist.", e);
|
||||
- }
|
||||
- return AbstractTerracottaProvider.Status.NOT_EXIST;
|
||||
+ return AbstractTerracottaProvider.Status.READY;
|
||||
}
|
||||
|
||||
private boolean isLocalBundleValid() throws IOException { // FIXME: Make control flow clearer.
|
||||
@@ -188,4 +173,4 @@ public final class TerracottaBundle {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
-}
|
||||
+}
|
||||
\ No newline at end of file
|
||||
--
|
||||
2.52.0
|
||||
|
||||
+9
-9
@@ -1,27 +1,27 @@
|
||||
From bcf95a23380424f2ca82649d93e9e0bdf8274b74 Mon Sep 17 00:00:00 2001
|
||||
From 110289f39d01713de5f8cd1e7146a36de8c35308 Mon Sep 17 00:00:00 2001
|
||||
From: Moraxyc <i@qaq.li>
|
||||
Date: Fri, 31 Oct 2025 14:23:54 +0800
|
||||
Subject: [PATCH 3/3] nix: skip terracotta existence check on darwin
|
||||
Date: Wed, 4 Feb 2026 15:40:50 +0800
|
||||
Subject: [PATCH 2/2] nix: skip terracotta existence check on darwin
|
||||
|
||||
---
|
||||
.../org/jackhuang/hmcl/terracotta/provider/MacOSProvider.java | 4 ----
|
||||
1 file changed, 4 deletions(-)
|
||||
|
||||
diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/provider/MacOSProvider.java b/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/provider/MacOSProvider.java
|
||||
index 00626f8b6..59125962d 100644
|
||||
index 83debfc0a..fd4f851a7 100644
|
||||
--- a/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/provider/MacOSProvider.java
|
||||
+++ b/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/provider/MacOSProvider.java
|
||||
@@ -45,10 +45,6 @@ public final class MacOSProvider implements ITerracottaProvider {
|
||||
public Status status() throws IOException {
|
||||
assert binary != null;
|
||||
@@ -44,10 +44,6 @@ public final class MacOSProvider extends AbstractTerracottaProvider {
|
||||
|
||||
@Override
|
||||
public Status status() throws IOException {
|
||||
- if (!Files.exists(Path.of("/Applications/terracotta.app"))) {
|
||||
- return Status.NOT_EXIST;
|
||||
- }
|
||||
-
|
||||
return binary.status();
|
||||
return bundle.status();
|
||||
}
|
||||
|
||||
--
|
||||
2.51.0
|
||||
2.52.0
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
From 541d055bf55703aa9e2c5a5e04a397f1d25efe28 Mon Sep 17 00:00:00 2001
|
||||
From: Moraxyc <i@qaq.li>
|
||||
Date: Wed, 29 Oct 2025 00:09:56 +0800
|
||||
Subject: [PATCH 2/3] nix: use terracotta from nix
|
||||
|
||||
---
|
||||
.../org/jackhuang/hmcl/terracotta/TerracottaNative.java | 8 +++-----
|
||||
1 file changed, 3 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/TerracottaNative.java b/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/TerracottaNative.java
|
||||
index 079537978..68954b09e 100644
|
||||
--- a/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/TerracottaNative.java
|
||||
+++ b/HMCL/src/main/java/org/jackhuang/hmcl/terracotta/TerracottaNative.java
|
||||
@@ -47,7 +47,7 @@ public final class TerracottaNative {
|
||||
|
||||
public TerracottaNative(List<URI> links, Path path, FileDownloadTask.IntegrityCheck checking) {
|
||||
this.links = links;
|
||||
- this.path = path;
|
||||
+ this.path = Path.of("@TERRACOTTA_BIN@");
|
||||
this.checking = checking;
|
||||
}
|
||||
|
||||
@@ -130,9 +130,7 @@ public final class TerracottaNative {
|
||||
|
||||
public ITerracottaProvider.Status status() throws IOException {
|
||||
if (Files.exists(path)) {
|
||||
- if (DigestUtils.digestToString(checking.getAlgorithm(), path).equalsIgnoreCase(checking.getChecksum())) {
|
||||
- return ITerracottaProvider.Status.READY;
|
||||
- }
|
||||
+ return ITerracottaProvider.Status.READY;
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -144,4 +142,4 @@ public final class TerracottaNative {
|
||||
}
|
||||
return ITerracottaProvider.Status.NOT_EXIST;
|
||||
}
|
||||
-}
|
||||
+}
|
||||
\ No newline at end of file
|
||||
--
|
||||
2.51.0
|
||||
|
||||
@@ -45,13 +45,13 @@
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "hmcl";
|
||||
version = "3.9.2";
|
||||
version = "3.10.2";
|
||||
|
||||
src = fetchurl {
|
||||
# HMCL has built-in keys, such as the Microsoft OAuth secret and the CurseForge API key.
|
||||
# See https://github.com/HMCL-dev/HMCL/blob/refs/tags/release-3.6.12/.github/workflows/gradle.yml#L26-L28
|
||||
url = "https://github.com/HMCL-dev/HMCL/releases/download/v${finalAttrs.version}/HMCL-${finalAttrs.version}.jar";
|
||||
hash = "sha256-/thuAsPadixV2vkez3w9yhkDdpJra54WkhFYaeKH0GU=";
|
||||
hash = "sha256-tmQN0kSjm8oU36ENHhgA649IohdG4ZDHyEaMPscd3nQ=";
|
||||
};
|
||||
|
||||
# - HMCL prompts users to download prebuilt Terracotta binary for
|
||||
@@ -63,38 +63,38 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
# Terracotta downloads, package them into a patch jar that overrides
|
||||
# the original classes, and have it load the original jar. This preserves
|
||||
# the original jar’s integrity check and avoids modifying the upstream jar.
|
||||
terracottaNativeJava = fetchurl {
|
||||
name = "hmcl-terracotta-native-java-${finalAttrs.version}";
|
||||
url = "https://raw.githubusercontent.com/HMCL-dev/HMCL/v${finalAttrs.version}/${finalAttrs.terracottaNativeJavaPath}";
|
||||
hash = "sha256-sg8gBOMNdITmHeYByYriYp05ja1vtWPF/wuqdGmkgiA=";
|
||||
terracottaBundleJava = fetchurl {
|
||||
name = "hmcl-terracotta-bundle-java-${finalAttrs.version}";
|
||||
url = "https://raw.githubusercontent.com/HMCL-dev/HMCL/v${finalAttrs.version}/${finalAttrs.terracottaBundleJavaPath}";
|
||||
hash = "sha256-QXjo/NiYQyJfan15hnvJlBir9s9R6H+jHsr+K9M1oTw=";
|
||||
};
|
||||
macOSProviderJava = fetchurl {
|
||||
name = "hmcl-macos-provider-java-${finalAttrs.version}";
|
||||
url = "https://raw.githubusercontent.com/HMCL-dev/HMCL/v${finalAttrs.version}/${finalAttrs.macOSProviderJavaPath}";
|
||||
hash = "sha256-V8FNPPkq6/P3/HKcqKkAy6Ya1kUI3oEMfjEc8XdExgo=";
|
||||
hash = "sha256-+Zji2B8ksT7P+IObyrM9q7vHPJVl5ZtH+v/J8Mfr0Q4=";
|
||||
};
|
||||
terracottaNativeJavaPath = "HMCL/src/main/java/org/jackhuang/hmcl/terracotta/TerracottaNative.java";
|
||||
terracottaBundleJavaPath = "HMCL/src/main/java/org/jackhuang/hmcl/terracotta/TerracottaBundle.java";
|
||||
macOSProviderJavaPath = "HMCL/src/main/java/org/jackhuang/hmcl/terracotta/provider/MacOSProvider.java";
|
||||
|
||||
dontUnpack = true;
|
||||
|
||||
prePatch = ''
|
||||
install -Dm644 $terracottaNativeJava $terracottaNativeJavaPath
|
||||
install -Dm644 $terracottaBundleJava $terracottaBundleJavaPath
|
||||
install -Dm644 $macOSProviderJava $macOSProviderJavaPath
|
||||
'';
|
||||
|
||||
patches = [
|
||||
(replaceVars ./0002-nix-use-terracotta-from-nix.patch {
|
||||
(replaceVars ./0001-nix-use-terracotta-from-nix.patch {
|
||||
TERRACOTTA_BIN = lib.getExe terracotta;
|
||||
})
|
||||
./0003-nix-skip-terracotta-existence-check-on-darwin.patch
|
||||
./0002-nix-skip-terracotta-existence-check-on-darwin.patch
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
# Build only classes we modified
|
||||
javac -cp $src -d out $terracottaNativeJavaPath $macOSProviderJavaPath
|
||||
javac -cp $src -d out $terracottaBundleJavaPath $macOSProviderJavaPath
|
||||
|
||||
# Extract MANIFEST.MF from original jar
|
||||
# We need Main-Class, Add-Opens, etc
|
||||
|
||||
@@ -35,7 +35,7 @@ writeShellApplication {
|
||||
fi
|
||||
|
||||
nix-update hmcl --version="$version"
|
||||
update-source-version hmcl --source-key=terracottaNativeJava --ignore-same-version
|
||||
update-source-version hmcl --source-key=terracottaBundleJava --ignore-same-version
|
||||
update-source-version hmcl --source-key=macOSProviderJava --ignore-same-version
|
||||
'';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user