From e8ffd1f844fffb5270e8e0c229fc493b0e396c66 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Fri, 23 Jun 2023 18:44:05 +0900 Subject: [PATCH] proper bootstrap codes --- assets/locales/en/terrarum.json | 3 +- assets/locales/koKR/terrarum.json | 3 +- buildapp/build_app_linux_arm.sh | 4 +- buildapp/build_app_linux_x86.sh | 4 +- buildapp/build_app_mac_arm.sh | 4 +- buildapp/build_app_mac_x86.sh | 4 +- buildapp/build_app_windows_x86.sh | 4 +- buildapp/terrarumlinux_arm/AppRun | 2 +- buildapp/terrarumlinux_x86/AppRun | 2 +- buildapp/terrarummac_arm/Terrarum.sh | 2 +- buildapp/terrarummac_x86/Terrarum.sh | 2 +- buildapp/terrarumwindows_x86/Terrarum.c | 2 +- src/net/torvald/terrarum/CreditSingleton.kt | 17 ++++++ src/net/torvald/terrarum/Principii.java | 54 ++++++++----------- .../modulebasegame/ui/UITitleRemoConYaml.kt | 1 + .../modulebasegame/ui/UITitleWallOfText.kt | 3 +- 16 files changed, 61 insertions(+), 50 deletions(-) diff --git a/assets/locales/en/terrarum.json b/assets/locales/en/terrarum.json index 75818fd27..c13df6318 100644 --- a/assets/locales/en/terrarum.json +++ b/assets/locales/en/terrarum.json @@ -30,5 +30,6 @@ "MENU_LABEL_DELETE": "Delete", "MENU_OPTIONS_JVM_HEAP_MAX": "Max JVM Heap Memory", "MENU_OPTIONS_AUTOSAVE": "Autosave", - "CONTEXT_TIME_MINUTE_PLURAL": "Minutes" + "CONTEXT_TIME_MINUTE_PLURAL": "Minutes", + "MENU_LABEL_SYSTEM_INFO": "System Info" } \ No newline at end of file diff --git a/assets/locales/koKR/terrarum.json b/assets/locales/koKR/terrarum.json index 3a8e42cbe..5fe85748c 100644 --- a/assets/locales/koKR/terrarum.json +++ b/assets/locales/koKR/terrarum.json @@ -29,5 +29,6 @@ "MENU_LABEL_DELETE": "삭제", "MENU_OPTIONS_JVM_HEAP_MAX": "최대 JVM 힙 메모리", "MENU_OPTIONS_AUTOSAVE": "자동 저장", - "CONTEXT_TIME_MINUTE_PLURAL": "분" + "CONTEXT_TIME_MINUTE_PLURAL": "분", + "MENU_LABEL_SYSTEM_INFO": "시스템 정보" } diff --git a/buildapp/build_app_linux_arm.sh b/buildapp/build_app_linux_arm.sh index 55c4aee96..170194218 100755 --- a/buildapp/build_app_linux_arm.sh +++ b/buildapp/build_app_linux_arm.sh @@ -23,12 +23,12 @@ cp $SRCFILES/AppRun $DESTDIR/AppRun chmod +x $DESTDIR/AppRun # Copy over a Java runtime -cp -r "../out/$RUNTIME" $DESTDIR/ +mkdir $DESTDIR/out +cp -r "../out/$RUNTIME" $DESTDIR/out/ # Copy over all the assets and a jarfile cp -r "../assets_release" $DESTDIR/ mv $DESTDIR/assets_release $DESTDIR/assets -mkdir $DESTDIR/out cp "../out/TerrarumBuild.jar" $DESTDIR/out/ # Pack everything to AppImage diff --git a/buildapp/build_app_linux_x86.sh b/buildapp/build_app_linux_x86.sh index d824d4d7a..75fbb41b2 100755 --- a/buildapp/build_app_linux_x86.sh +++ b/buildapp/build_app_linux_x86.sh @@ -23,12 +23,12 @@ cp $SRCFILES/AppRun $DESTDIR/AppRun chmod +x $DESTDIR/AppRun # Copy over a Java runtime -cp -r "../out/$RUNTIME" $DESTDIR/ +mkdir $DESTDIR/out +cp -r "../out/$RUNTIME" $DESTDIR/out/ # Copy over all the assets and a jarfile cp -r "../assets_release" $DESTDIR/ mv $DESTDIR/assets_release $DESTDIR/assets -mkdir $DESTDIR/out cp "../out/TerrarumBuild.jar" $DESTDIR/out/ # Pack everything to AppImage diff --git a/buildapp/build_app_mac_arm.sh b/buildapp/build_app_mac_arm.sh index 08167f837..37db5aac0 100755 --- a/buildapp/build_app_mac_arm.sh +++ b/buildapp/build_app_mac_arm.sh @@ -25,12 +25,12 @@ cp $SRCFILES/Terrarum.sh $DESTDIR/Contents/MacOS/ chmod +x $DESTDIR/Contents/MacOS/Terrarum.sh # Copy over a Java runtime -cp -r "../out/$RUNTIME" $DESTDIR/Contents/MacOS/ +mkdir $DESTDIR/Contents/MacOS/out +cp -r "../out/$RUNTIME" $DESTDIR/Contents/MacOS/out/ # Copy over all the assets and a jarfile cp -r "../assets_release" $DESTDIR/Contents/MacOS/ mv $DESTDIR/Contents/MacOS/assets_release $DESTDIR/Contents/MacOS/assets -mkdir $DESTDIR/Contents/MacOS/out cp "../out/TerrarumBuild.jar" $DESTDIR/Contents/MacOS/out/ echo "Build successful: $DESTDIR" diff --git a/buildapp/build_app_mac_x86.sh b/buildapp/build_app_mac_x86.sh index 33c2e60c5..0daff72b6 100755 --- a/buildapp/build_app_mac_x86.sh +++ b/buildapp/build_app_mac_x86.sh @@ -25,12 +25,12 @@ cp $SRCFILES/Terrarum.sh $DESTDIR/Contents/MacOS/ chmod +x $DESTDIR/Contents/MacOS/Terrarum.sh # Copy over a Java runtime -cp -r "../out/$RUNTIME" $DESTDIR/Contents/MacOS/ +mkdir $DESTDIR/Contents/MacOS/out +cp -r "../out/$RUNTIME" $DESTDIR/Contents/MacOS/out/ # Copy over all the assets and a jarfile cp -r "../assets_release" $DESTDIR/Contents/MacOS/ mv $DESTDIR/Contents/MacOS/assets_release $DESTDIR/Contents/MacOS/assets -mkdir $DESTDIR/Contents/MacOS/out cp "../out/TerrarumBuild.jar" $DESTDIR/Contents/MacOS/out/ echo "Build successful: $DESTDIR" diff --git a/buildapp/build_app_windows_x86.sh b/buildapp/build_app_windows_x86.sh index 4e149501b..c7954f2fa 100755 --- a/buildapp/build_app_windows_x86.sh +++ b/buildapp/build_app_windows_x86.sh @@ -24,12 +24,12 @@ fi x86_64-w64-mingw32-gcc -o $DESTDIR/Terrarum.exe $SRCFILES/Terrarum.c || { echo 'Building EXE failed' >&2; exit 1; } # Copy over a Java runtime -cp -r "../out/$RUNTIME" $DESTDIR/ +mkdir $DESTDIR/out +cp -r "../out/$RUNTIME" $DESTDIR/out/ # Copy over all the assets and a jarfile cp -r "../assets_release" $DESTDIR/ mv $DESTDIR/assets_release $DESTDIR/assets -mkdir $DESTDIR/out cp "../out/TerrarumBuild.jar" $DESTDIR/out/ # Temporary solution: zip everything diff --git a/buildapp/terrarumlinux_arm/AppRun b/buildapp/terrarumlinux_arm/AppRun index c0f260628..fe33bed94 100755 --- a/buildapp/terrarumlinux_arm/AppRun +++ b/buildapp/terrarumlinux_arm/AppRun @@ -1,3 +1,3 @@ #!/bin/bash cd "${0%/*}" -./runtime-linux-arm/bin/java -Dswing.aatext=true -Dawt.useSystemAAFontSettings=lcd -jar ./out/TerrarumBuild.jar +./out/runtime-linux-arm/bin/java -Dswing.aatext=true -Dawt.useSystemAAFontSettings=lcd -jar ./out/TerrarumBuild.jar diff --git a/buildapp/terrarumlinux_x86/AppRun b/buildapp/terrarumlinux_x86/AppRun index 78ce88112..6d59e7769 100755 --- a/buildapp/terrarumlinux_x86/AppRun +++ b/buildapp/terrarumlinux_x86/AppRun @@ -1,3 +1,3 @@ #!/bin/bash cd "${0%/*}" -./runtime-linux-x86/bin/java -Dswing.aatext=true -Dawt.useSystemAAFontSettings=lcd -jar ./out/TerrarumBuild.jar +./out/runtime-linux-x86/bin/java -Dswing.aatext=true -Dawt.useSystemAAFontSettings=lcd -jar ./out/TerrarumBuild.jar diff --git a/buildapp/terrarummac_arm/Terrarum.sh b/buildapp/terrarummac_arm/Terrarum.sh index 2d7fb6d20..1a34ab184 100755 --- a/buildapp/terrarummac_arm/Terrarum.sh +++ b/buildapp/terrarummac_arm/Terrarum.sh @@ -1,3 +1,3 @@ #!/bin/bash cd "${0%/*}" -./runtime-osx-arm/bin/java -jar ./out/TerrarumBuild.jar +./out/runtime-osx-arm/bin/java -jar ./out/TerrarumBuild.jar diff --git a/buildapp/terrarummac_x86/Terrarum.sh b/buildapp/terrarummac_x86/Terrarum.sh index 3c85fbc36..83770a025 100755 --- a/buildapp/terrarummac_x86/Terrarum.sh +++ b/buildapp/terrarummac_x86/Terrarum.sh @@ -1,3 +1,3 @@ #!/bin/bash cd "${0%/*}" -./runtime-osx-x86/bin/java -jar ./out/TerrarumBuild.jar +./out/runtime-osx-x86/bin/java -jar ./out/TerrarumBuild.jar diff --git a/buildapp/terrarumwindows_x86/Terrarum.c b/buildapp/terrarumwindows_x86/Terrarum.c index 61171ddff..41bc168e8 100644 --- a/buildapp/terrarumwindows_x86/Terrarum.c +++ b/buildapp/terrarumwindows_x86/Terrarum.c @@ -2,5 +2,5 @@ #include int main() { - return system(".\\runtime-windows-x86\\bin\\java -jar .\\out\\TerrarumBuild.jar"); + return system(".\\out\\runtime-windows-x86\\bin\\java -jar .\\out\\TerrarumBuild.jar"); } \ No newline at end of file diff --git a/src/net/torvald/terrarum/CreditSingleton.kt b/src/net/torvald/terrarum/CreditSingleton.kt index 7a52dfb57..15f0f0cc0 100644 --- a/src/net/torvald/terrarum/CreditSingleton.kt +++ b/src/net/torvald/terrarum/CreditSingleton.kt @@ -1,5 +1,6 @@ package net.torvald.terrarum +import com.badlogic.gdx.Gdx import net.torvald.unicode.BULLET import net.torvald.unicode.ENDASH @@ -223,6 +224,22 @@ Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. """).split('\n') + private val javaVersion = System.getProperty("java.version") + private val osName = App.OSName + private val osVersion = App.OSVersion + private val sysArch = App.systemArch + private val processor = App.processor + private val processorVendor = App.processorVendor + private val glinfo = Gdx.graphics.glVersion.debugVersionString + + val systeminfo: List; get() = """ +JRE Version: $javaVersion +Operation System: $osName $osVersion +Architecture: $sysArch +Processor: $processor ($processorVendor) +GL Info: $glinfo +""".split('\n') + val gpl3: List; get() = """ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 diff --git a/src/net/torvald/terrarum/Principii.java b/src/net/torvald/terrarum/Principii.java index b7c4c6a7b..1bd500d27 100644 --- a/src/net/torvald/terrarum/Principii.java +++ b/src/net/torvald/terrarum/Principii.java @@ -64,16 +64,33 @@ public class Principii { String extracmd = devMode ? " -ea" : ""; String OS = OSName.toUpperCase(); String CPUARCH = System.getProperty("os.arch").toUpperCase(); + String runtimeRoot; + String runtimeArch; + if (!CPUARCH.equals("AMD64") && !CPUARCH.equals("AARCH64")) { + System.err.println("Unsupported CPU architecture: " + CPUARCH); + System.exit(1); + return; + } + else { + runtimeArch = CPUARCH.equals("AMD64") ? "x86" : "arm"; + } + if (OS.contains("WIN")) { - // reserved for future use + runtimeRoot = "runtime-windows-" + runtimeArch; } else if (OS.contains("OS X") || OS.contains("MACOS")) { // OpenJDK for mac will still report "Mac OS X" with version number "10.16", even on Big Sur and beyond + runtimeRoot = "runtime-osx-" + runtimeArch; extracmd += " -XstartOnFirstThread"; } else { + runtimeRoot = "runtime-linux-" + runtimeArch; extracmd += " -Dswing.aatext=true -Dawt.useSystemAAFontSettings=lcd"; } + String runtime = new File("out/"+runtimeRoot+"/bin/java").getAbsolutePath(); + System.out.println("Runtime path: "+runtime); + + getDefaultDirRoot(); configDir = defaultDir + "/config.json"; @@ -84,40 +101,13 @@ public class Principii { int xmx = getConfigInt("jvm_xmx"); - String runtime = new File("./out/runtime-osx-x86/bin/java").getAbsolutePath(); - System.out.println("Runtime path: "+runtime); try { - Process proc = Runtime.getRuntime().exec(runtime+extracmd+" -Xms1G -Xmx"+xmx+"G -cp ./out/TerrarumBuild.jar net.torvald.terrarum.App"); - - Thread tp = new Thread(() -> { - String p = null; - while (proc.isAlive()) { - try { - p = proc.inputReader().readLine(); - } - catch (IOException ignored) { - } - if (p != null) System.out.println(p); - } - }); - Thread te = new Thread(() -> { - String e = null; - while (proc.isAlive()) { - try { - e = proc.errorReader().readLine(); - } - catch (IOException ignored) { - } - if (e != null) System.err.println(e); - } - }); - - tp.start(); - te.start(); - - System.exit(proc.waitFor()); + String[] cmd = (runtime+extracmd+" -Xms1G -Xmx"+xmx+"G -cp ./out/TerrarumBuild.jar net.torvald.terrarum.App").split(" "); + ProcessBuilder pb = new ProcessBuilder(cmd); + pb.inheritIO(); + System.exit(pb.start().waitFor()); } catch (IOException e) { e.printStackTrace(); diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt index 25be8b232..e5b3791d9 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt @@ -26,6 +26,7 @@ object UITitleRemoConYaml { - MENU_LABEL_CREDITS - MENU_LABEL_COPYRIGHT : net.torvald.terrarum.modulebasegame.ui.UITitleCredits - MENU_CREDIT_GPL_DNT : net.torvald.terrarum.modulebasegame.ui.UITitleGPL3 + - MENU_LABEL_SYSTEM_INFO : net.torvald.terrarum.modulebasegame.ui.UISystemInfo - MENU_LABEL_RETURN - MENU_LABEL_QUIT """ diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UITitleWallOfText.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITitleWallOfText.kt index 6e1afb379..56b4018a1 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UITitleWallOfText.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITitleWallOfText.kt @@ -43,4 +43,5 @@ open class UITitleWallOfText(private val text: List) : UICanvas() { } class UITitleCredits(val remoCon: UIRemoCon) : UITitleWallOfText(CreditSingleton.credit) -class UITitleGPL3(val remoCon: UIRemoCon) : UITitleWallOfText(CreditSingleton.gpl3) \ No newline at end of file +class UITitleGPL3(val remoCon: UIRemoCon) : UITitleWallOfText(CreditSingleton.gpl3) +class UISystemInfo(val remoCon: UIRemoCon) : UITitleWallOfText(CreditSingleton.systeminfo) \ No newline at end of file