diff --git a/srcpkgs/mindustry-server b/srcpkgs/mindustry-server new file mode 120000 index 00000000000000..9eaea683d630ea --- /dev/null +++ b/srcpkgs/mindustry-server @@ -0,0 +1 @@ +mindustry \ No newline at end of file diff --git a/srcpkgs/mindustry/files/mindustry b/srcpkgs/mindustry/files/mindustry new file mode 100644 index 00000000000000..392ab236e52782 --- /dev/null +++ b/srcpkgs/mindustry/files/mindustry @@ -0,0 +1,2 @@ +#!/bin/sh +exec /usr/bin/java -jar /usr/share/mindustry/Mindustry.jar "$@" diff --git a/srcpkgs/mindustry/files/mindustry-server b/srcpkgs/mindustry/files/mindustry-server new file mode 100644 index 00000000000000..abbde29b1db716 --- /dev/null +++ b/srcpkgs/mindustry/files/mindustry-server @@ -0,0 +1,2 @@ +#!/bin/sh +exec /usr/bin/java -jar /usr/share/mindustry/server-release.jar "$@" diff --git a/srcpkgs/mindustry/patches/local-arc.patch b/srcpkgs/mindustry/patches/local-arc.patch new file mode 100644 index 00000000000000..fe0f3569d48d53 --- /dev/null +++ b/srcpkgs/mindustry/patches/local-arc.patch @@ -0,0 +1,114 @@ +diff '--color=auto' -Naur a/build.gradle b/build.gradle +--- a/build.gradle 2024-10-22 17:02:02.872062571 +0200 ++++ b/build.gradle 2024-10-21 16:04:59.582642809 +0200 +@@ -1,10 +1,14 @@ + buildscript{ + ext{ +- getArcHash = { +- return new Properties().with{ p -> p.load(file('gradle.properties').newReader()); return p }["archash"] +- } ++ arcHash = property("archash") ++ ++ localArc = !project.hasProperty("release") && new File(rootDir.parent, 'Arc').exists() && !project.hasProperty("noLocalArc") + +- arcHash = getArcHash() ++ arcModule = { String name -> ++ //skip to last submodule ++ name = name.substring(name.lastIndexOf(':') + 1) ++ return "com.github.Anuken${localArc ? "" : ".Arc"}:$name:$arcHash" ++ } + } + + repositories{ +@@ -16,8 +20,8 @@ + } + + dependencies{ +- classpath "com.github.Anuken.Arc:packer:$arcHash" +- classpath "com.github.Anuken.Arc:arc-core:$arcHash" ++ classpath arcModule(":extensions:packer") ++ classpath arcModule(":arc-core") + } + } + +@@ -48,20 +52,6 @@ + return new File(projectDir.parent, '../Mindustry-Debug').exists() && !project.hasProperty("release") && project.hasProperty("args") + } + +- localArc = { +- return !project.hasProperty("release") && !project.hasProperty("noLocalArc") && new File(projectDir.parent, '../Arc').exists() +- } +- +- arcModule = { String name -> +- if(localArc()){ +- return project(":Arc:$name") +- }else{ +- //skip to last submodule +- if(name.contains(':')) name = name.split(':').last() +- return "com.github.Anuken.Arc:$name:${getArcHash()}" +- } +- } +- + generateDeployName = { String platform -> + if(platform == "windows"){ + platform += "64" +@@ -331,8 +321,8 @@ + api arcModule("extensions:fx") + api arcModule("extensions:arcnet") + api "com.github.Anuken:rhino:$rhinoVersion" +- if(localArc() && debugged()) api arcModule("extensions:recorder") +- if(localArc()) api arcModule(":extensions:packer") ++ if(localArc && debugged()) api arcModule("extensions:recorder") ++ if(localArc) api arcModule(":extensions:packer") + + annotationProcessor 'com.github.Anuken:jabel:0.9.0' + compileOnly project(":annotations") +@@ -423,7 +413,7 @@ + + dependencies{ + implementation 'com.squareup:javapoet:1.12.1' +- implementation "com.github.Anuken.Arc:arc-core:$arcHash" ++ implementation arcModule("arc-core") + } + } + +diff '--color=auto' -Naur a/settings.gradle b/settings.gradle +--- a/settings.gradle 2024-10-22 17:02:31.778129695 +0200 ++++ b/settings.gradle 2024-10-22 17:04:44.499440184 +0200 +@@ -34,33 +34,9 @@ + } + + if(!hasProperty("release")){ +- if(new File(settingsDir, '../Arc').exists()){ +- use( +- ':Arc', +- ':Arc:arc-core', +- ':Arc:extensions', +- ':Arc:extensions:freetype', +- ':Arc:extensions:recorder', +- ':Arc:extensions:arcnet', +- ':Arc:extensions:packer', +- ':Arc:extensions:g3d', +- ':Arc:extensions:fx', +- ':Arc:extensions:flabel', +- ':Arc:extensions:discord', +- ':Arc:extensions:profiling', +- ':Arc:natives', +- ':Arc:natives:natives-desktop', +- ':Arc:natives:natives-android', +- ':Arc:natives:natives-ios', +- ':Arc:natives:natives-freetype-desktop', +- ':Arc:natives:natives-freetype-android', +- ':Arc:natives:natives-freetype-ios', +- ':Arc:backends', +- ':Arc:backends:backend-sdl', +- ':Arc:backends:backend-android', +- ':Arc:backends:backend-robovm', +- ':Arc:backends:backend-headless' +- ) ++ if(new File(rootDir.parent, 'Arc').exists()){ ++ println("Compiling with localArc") ++ includeBuild("../Arc") + } + + if(new File(settingsDir, '../Mindustry-Debug').exists()){ diff --git a/srcpkgs/mindustry/template b/srcpkgs/mindustry/template new file mode 100644 index 00000000000000..7da182cab64a45 --- /dev/null +++ b/srcpkgs/mindustry/template @@ -0,0 +1,60 @@ +# Template file for 'mindustry' +pkgname=mindustry +version=7.0.b146 +revision=1 +_build=${version##*.b} +hostmakedepends="openjdk17" +depends="virtual?java-runtime desktop-file-utils hicolor-icon-theme" +short_desc="Automation tower defense RTS" +maintainer="Mihail Ivanchev " +license="GPL-3.0-or-later" +homepage="https://mindustrygame.github.io/" +distfiles="https://github.com/Anuken/Arc/archive/refs/tags/v${_build}.tar.gz>Arc.tar.gz + https://github.com/Anuken/Mindustry/archive/refs/tags/v${_build}.tar.gz>Mindustry.tar.gz" +checksum="30cc1b00968aaec8dbb76a2dad6439c7d7418970fafe24c350b2be4e68c3e5d6 + aa1684d87d9f3e1d1a2da415b5e055ea6493fe31398748447927bd903019adbd" +skip_extraction="Arc.tar.gz Mindustry.tar.gz" +nocross="Build involves JNI steps which are incompatible with cross builds" +build_wrksrc=Mindustry-${_build} +patch_args="-Np1 --directory=${build_wrksrc}" + +# TODO: Make sure this template doesn't download anything. Currently not possible +# because Void's Gradle version is incompatible. + +# TODO: Mindustry will not run on JRE<17, but we have no way to check this because +# virtual?java-runtime>=17 doesn't seem to work. + +case "$XBPS_TARGET_MACHINE" in + i686*) broken="Couldn't load shared library 'libarc.so' for target: Linux, 32-bit" ;; + *-musl) broken="Couldn't load shared library" ;; +esac + +# JAVA_HOME needs to be set because otherwise gradle fails to find Java. + +export JAVA_HOME=/usr/lib/jvm/openjdk17 + +post_extract() { + vsrcextract -C Arc Arc.tar.gz + vsrcextract -C ${build_wrksrc} Mindustry.tar.gz +} + +do_build() { + ./gradlew --no-daemon dist -Pbuildversion="${_build}" desktop:dist server:dist +} + +do_install() { + vmkdir usr/share/mindustry + vinstall desktop/build/libs/Mindustry.jar 644 usr/share/mindustry + vbin ${FILESDIR}/mindustry + vinstall core/assets/icons/icon_64.png 644 usr/share/icons/hicolor/64x64/apps mindustry.png +} + +mindustry-server_package() { + short_desc+=" (server)" + pkg_install() { + vmkdir usr/share/mindustry + vinstall server/build/libs/server-release.jar 644 usr/share/mindustry + vbin ${FILESDIR}/mindustry-server + vinstall core/assets/icons/icon_64.png 644 usr/share/icons/hicolor/64x64/apps mindustry-server.png + } +}