From 878e907dbba81d46eb37a3121d438985441cbaf5 Mon Sep 17 00:00:00 2001 From: Saturn Date: Wed, 21 May 2025 05:31:49 +0000 Subject: [PATCH 1/8] Remove unused platforms --- .github/workflows/build-natives.yml | 135 ++-------------- .github/workflows/publish-natives.yml | 42 +++++ android/android-test/build.gradle | 81 ---------- .../party/iroiro/luajava/AndroidLuaTest.java | 65 -------- .../iroiro/luajava/AndroidScriptTest.java | 74 --------- .../iroiro/luajava/AndroidValueTest.java | 55 ------- .../android-test/src/main/AndroidManifest.xml | 3 - android/build.gradle | 149 ------------------ android/gradle.properties | 2 - android/proguard-rules.pro | 1 - android/src/main/AndroidManifest.xml | 3 - build.gradle | 2 + lua51/build.gradle | 36 +---- lua52/build.gradle | 36 +---- lua53/build.gradle | 36 +---- lua54/build.gradle | 36 +---- luajit/build.gradle | 119 +------------- publish.gradle | 24 +-- settings.gradle | 4 +- 19 files changed, 74 insertions(+), 829 deletions(-) create mode 100644 .github/workflows/publish-natives.yml delete mode 100644 android/android-test/build.gradle delete mode 100644 android/android-test/src/androidTest/java/party/iroiro/luajava/AndroidLuaTest.java delete mode 100644 android/android-test/src/androidTest/java/party/iroiro/luajava/AndroidScriptTest.java delete mode 100644 android/android-test/src/androidTest/java/party/iroiro/luajava/AndroidValueTest.java delete mode 100644 android/android-test/src/main/AndroidManifest.xml delete mode 100644 android/build.gradle delete mode 100644 android/gradle.properties delete mode 100644 android/proguard-rules.pro delete mode 100644 android/src/main/AndroidManifest.xml diff --git a/.github/workflows/build-natives.yml b/.github/workflows/build-natives.yml index 4670e499..f4afe8c4 100644 --- a/.github/workflows/build-natives.yml +++ b/.github/workflows/build-natives.yml @@ -16,36 +16,7 @@ on: branches: - main -env: - MACOSX_DEPLOYMENT_TARGET: "10.10" - jobs: - apple-natives: - runs-on: macos-13 - steps: - - uses: actions/checkout@v4 - with: - submodules: 'recursive' - - name: Set up JDK 17 - uses: actions/setup-java@v4 - with: - distribution: 'temurin' - java-version: '17' - - run: echo "JAVA_17=$JAVA_HOME" >> $GITHUB_ENV - - name: Set up Gradle - uses: gradle/actions/setup-gradle@v3 - - name: Build natives - run: | - ./gradlew jniGen jnigenBuildMacOsX64 jnigenBuildMacOsXARM64 jnigenBuildIOS - - name: Test - run: | - ./gradlew :example:test :jsr223:test :jpms-example:run - - name: Upload macOS natives - uses: actions/upload-artifact@v4 - with: - name: apple-natives - path: ./*/libs - retention-days: 5 most-natives: environment: Codecov runs-on: ubuntu-20.04 @@ -217,86 +188,12 @@ jobs: - name: Test run: | ./gradlew --info --stacktrace :example:test :jsr223:test :jpms-example:run - android-testing: - runs-on: ubuntu-latest - strategy: - matrix: - api-level: [ 21 ] - android-arch: [ 'x86_64', 'x86' ] - include: - - api-level: 24 - android-arch: 'x86' - - api-level: 33 - android-arch: 'x86_64' - needs: - - most-natives - steps: - - uses: actions/checkout@v4 - with: - submodules: 'recursive' - - name: Set up JDK 8 - uses: actions/setup-java@v4 - with: - distribution: 'temurin' - java-version: '8' - - run: echo "JAVA_8=$JAVA_HOME" >> $GITHUB_ENV - - name: Set up JDK 11 - uses: actions/setup-java@v4 - with: - distribution: 'temurin' - java-version: '11' - - run: echo "JAVA_11=$JAVA_HOME" >> $GITHUB_ENV - - name: Set up Gradle - uses: gradle/actions/setup-gradle@v3 - - name: Download most-natives artifact - uses: actions/download-artifact@v4 - with: - name: most-natives - - name: JniGen - run: | - ./gradlew jniGen - - name: Pack Android natives - run: | - ./gradlew :android:assemble - - name: AVD cache - uses: actions/cache@v4 - id: avd-cache - with: - path: | - ~/.android/avd/* - ~/.android/adb* - key: avd-${{ matrix.api-level }}-${{ matrix.android-arch }} - - name: Enable KVM for linux runners - run: | - echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules - sudo udevadm control --reload-rules - sudo udevadm trigger --name-match=kvm - - name: Create AVD and generate snapshot for caching - if: steps.avd-cache.outputs.cache-hit != 'true' - uses: reactivecircus/android-emulator-runner@v2 - with: - api-level: ${{ matrix.api-level }} - arch: ${{ matrix.android-arch }} - force-avd-creation: false - emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - disable-animations: false - script: echo "Generated AVD snapshot for caching." - - name: Test on Android AVD - uses: reactivecircus/android-emulator-runner@v2 - with: - api-level: ${{ matrix.api-level }} - arch: ${{ matrix.android-arch }} - force-avd-creation: false - emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - disable-animations: true - script: ./gradlew --info --stacktrace :android:android-test:connectedAndroidTest + pack-natives: environment: OSSRH needs: - - apple-natives - most-natives - windows-testing - - android-testing - linux-testing runs-on: ubuntu-20.04 steps: @@ -335,9 +232,9 @@ jobs: ant -f lua53/jni/build.xml pack-natives ant -f lua54/jni/build.xml pack-natives ant -f luajit/jni/build.xml pack-natives - - name: Pack Android AAR - run: | - ./gradlew :android:assemble + # - name: Pack Android AAR + # run: | + # ./gradlew :android:assemble - name: Upload artifacts uses: actions/upload-artifact@v4 with: @@ -374,18 +271,18 @@ jobs: with: draft: true files: example/build/libs/example-all.jar - mac-arm-test: - needs: - - pack-natives - runs-on: macos-14 - steps: - - name: Download example tests - uses: actions/download-artifact@v4 - with: - name: example - - name: Run example tests - run: | - java -jar example-all.jar --test + # mac-arm-test: + # needs: + # - pack-natives + # runs-on: macos-14 + # steps: + # - name: Download example tests + # uses: actions/download-artifact@v4 + # with: + # name: example + # - name: Run example tests + # run: | + # java -jar example-all.jar --test linux-arm-test: environment: Bitrise needs: diff --git a/.github/workflows/publish-natives.yml b/.github/workflows/publish-natives.yml new file mode 100644 index 00000000..7e50221a --- /dev/null +++ b/.github/workflows/publish-natives.yml @@ -0,0 +1,42 @@ +name: Build and Publish Natives to GHCR + +on: + workflow_dispatch: + push: + branches: [main] + tags: ["*"] + +jobs: + build-linux-windows: + runs-on: ubuntu-20.04 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_ACTOR: ${{ github.actor }} + GITHUB_REPOSITORY: ${{ github.repository }} + steps: + - uses: actions/checkout@v4 + with: + submodules: 'recursive' + - name: Set up JDK 8 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '8' + - name: Install cross-compilation toolchains + run: | + sudo apt update + sudo apt install -y --force-yes gcc g++ mingw-w64 + sudo apt install -y --force-yes gcc-aarch64-linux-gnu g++-aarch64-linux-gnu + - name: Set up Gradle + uses: gradle/actions/setup-gradle@v3 + - name: Build natives for Linux/Windows + run: | + ./gradlew :luajit:jnigen :luajit:jnigenBuildLinux64 :luajit:jnigenBuildWindows64 + ./gradlew :lua54:jnigen :lua54:jnigenBuildLinux64 :lua54:jnigenBuildWindows64 + - name: Publish to GitHub Packages (GHCR) + run: | + ./gradlew :luajit:publish :lua54:publish --info + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_ACTOR: ${{ github.actor }} + GITHUB_REPOSITORY: ${{ github.repository }} \ No newline at end of file diff --git a/android/android-test/build.gradle b/android/android-test/build.gradle deleted file mode 100644 index 1a88b48c..00000000 --- a/android/android-test/build.gradle +++ /dev/null @@ -1,81 +0,0 @@ -plugins { - id 'com.android.library' -} - -repositories { - mavenLocal() - google() - mavenCentral() - maven { - url 'https://jitpack.io' - } -} - -group = rootProject.group -version = rootProject.version - -ext { - luaVersions = ['lua51', 'lua52', 'lua53', 'lua54', 'luajit'] -} - -// Lint involves an outdated version of Kotlin, which cause weird errors. -lint.enabled = false - -android { - namespace = project(':').group - - defaultConfig { - minSdk 21 - targetSdk 34 - compileSdk 33 - versionCode 1 - versionName '3.1' - testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - - buildFeatures { - viewBinding true - } - - sourceSets { - androidTest { - } - } - - packagingOptions { - excludes += 'META-INF/LICENSE*' - } - - compileOptions { - coreLibraryDesugaringEnabled true - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } -} - -dependencies { - coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' - implementation project(':luajava') - implementation project(':lua51') - implementation project(':lua52') - implementation project(':lua53') - implementation project(':lua54') - implementation project(':luajit') - implementation project(':luaj') - implementation project(':example:suite') - androidTestImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test:core:1.5.0' - androidTestImplementation 'androidx.test:rules:1.5.0' - androidTestImplementation 'androidx.test.ext:junit:1.1.5' - androidTestImplementation 'androidx.test:runner:1.5.2' - luaVersions.forEach { ver -> - androidTestImplementation files("${project(':android').buildDir}/outputs/aar/android-${ver}-release.aar") - } -} diff --git a/android/android-test/src/androidTest/java/party/iroiro/luajava/AndroidLuaTest.java b/android/android-test/src/androidTest/java/party/iroiro/luajava/AndroidLuaTest.java deleted file mode 100644 index 7eddca35..00000000 --- a/android/android-test/src/androidTest/java/party/iroiro/luajava/AndroidLuaTest.java +++ /dev/null @@ -1,65 +0,0 @@ -package party.iroiro.luajava; - -import java.lang.reflect.Constructor; -import org.junit.Test; -import party.iroiro.luajava.lua51.Lua51; -import party.iroiro.luajava.lua52.Lua52; -import party.iroiro.luajava.lua53.Lua53; -import party.iroiro.luajava.lua54.Lua54; -import party.iroiro.luajava.luajit.LuaJit; - -public class AndroidLuaTest { - @Test - public void lua51Test() { - try (Lua51 L = new Lua51()) { - new LuaTestSuite<>(L, Lua51::new).test(); - } - } - - @Test - public void lua52Test() { - try (Lua52 L = new Lua52()) { - new LuaTestSuite<>(L, Lua52::new).test(); - } - } - - @Test - public void lua53Test() { - try (Lua53 L = new Lua53()) { - new LuaTestSuite<>(L, Lua53::new).test(); - } - } - - @Test - public void lua54Test() { - try (Lua54 L = new Lua54()) { - new LuaTestSuite<>(L, Lua54::new).test(); - } - } - - @Test - public void luaJitTest() { - try (LuaJit L = new LuaJit()) { - new LuaTestSuite<>(L, LuaJit::new).test(); - } - } - - @Test - public void luaJTest() { - org.junit.Assume.assumeTrue(android.os.Build.VERSION.SDK_INT >= 30); - try (AbstractLua L = getLuaJ()) { - new LuaTestSuite<>(L, AndroidLuaTest::getLuaJ).test(); - } - } - - public static AbstractLua getLuaJ() { - try { - Constructor constructor = Class.forName("party.iroiro.luajava.luaj.LuaJ") - .getConstructor(); - return (AbstractLua) constructor.newInstance(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - -} diff --git a/android/android-test/src/androidTest/java/party/iroiro/luajava/AndroidScriptTest.java b/android/android-test/src/androidTest/java/party/iroiro/luajava/AndroidScriptTest.java deleted file mode 100644 index ccf8822a..00000000 --- a/android/android-test/src/androidTest/java/party/iroiro/luajava/AndroidScriptTest.java +++ /dev/null @@ -1,74 +0,0 @@ -package party.iroiro.luajava; - -import org.junit.Test; -import party.iroiro.luajava.lua51.Lua51; -import party.iroiro.luajava.lua52.Lua52; -import party.iroiro.luajava.lua53.Lua53; -import party.iroiro.luajava.lua54.Lua54; -import party.iroiro.luajava.luajit.LuaJit; - -public class AndroidScriptTest { - @Test - public void lua51Test() { - try (Lua51 L = new Lua51()) { - new LuaScriptSuite<>(L).test(); - } - } - - @Test - public void lua52Test() { - try (Lua52 L = new Lua52()) { - new LuaScriptSuite<>(L).test(); - } - } - - @Test - public void lua53Test() { - try (Lua53 L = new Lua53()) { - new LuaScriptSuite<>(L).test(); - } - } - - @Test - public void lua54Test() { - try (Lua54 L = new Lua54()) { - new LuaScriptSuite<>(L).test(); - } - } - - @Test - public void luaJitTest() { - try (LuaJit L = new LuaJit()) { - new LuaScriptSuite<>(L).test(); - } - } - - @Test - public void luaJTest() { - org.junit.Assume.assumeTrue(android.os.Build.VERSION.SDK_INT >= 30); - try (AbstractLua L = AndroidLuaTest.getLuaJ()) { - new LuaScriptSuite<>(L).test(); - } - } - - @Test - public void memoryTest() { - //noinspection resource - Lua[] Ls = new Lua[]{ - new Lua51(), - new Lua52(), - new Lua53(), - new Lua54(), - new LuaJit(), - }; - for (Lua L : Ls) { - LuaScriptSuite.memoryTest(L); - L.close(); - } - if (android.os.Build.VERSION.SDK_INT >= 30) { - Lua L = AndroidLuaTest.getLuaJ(); - LuaScriptSuite.memoryTest(L); - L.close(); - } - } -} diff --git a/android/android-test/src/androidTest/java/party/iroiro/luajava/AndroidValueTest.java b/android/android-test/src/androidTest/java/party/iroiro/luajava/AndroidValueTest.java deleted file mode 100644 index 5d717fe6..00000000 --- a/android/android-test/src/androidTest/java/party/iroiro/luajava/AndroidValueTest.java +++ /dev/null @@ -1,55 +0,0 @@ -package party.iroiro.luajava; - -import org.junit.Test; -import party.iroiro.luajava.lua51.Lua51; -import party.iroiro.luajava.lua52.Lua52; -import party.iroiro.luajava.lua53.Lua53; -import party.iroiro.luajava.lua54.Lua54; -import party.iroiro.luajava.luajit.LuaJit; -import party.iroiro.luajava.value.LuaValueSuite; - -public class AndroidValueTest { - @Test - public void lua51Test() { - try (Lua51 L = new Lua51()) { - new LuaValueSuite<>(L).test(); - } - } - - @Test - public void lua52Test() { - try (Lua52 L = new Lua52()) { - new LuaValueSuite<>(L).test(); - } - } - - @Test - public void lua53Test() { - try (Lua53 L = new Lua53()) { - new LuaValueSuite<>(L).test(); - } - } - - @Test - public void lua54Test() { - try (Lua54 L = new Lua54()) { - new LuaValueSuite<>(L).test(); - } - } - - @Test - public void luaJitTest() { - try (LuaJit L = new LuaJit()) { - new LuaValueSuite<>(L).test(); - } - } - - @Test - public void luaJTest() { - org.junit.Assume.assumeTrue(android.os.Build.VERSION.SDK_INT >= 30); - try (Lua L = AndroidLuaTest.getLuaJ()) { - new LuaValueSuite<>(L).test(); - } - } - -} diff --git a/android/android-test/src/main/AndroidManifest.xml b/android/android-test/src/main/AndroidManifest.xml deleted file mode 100644 index 76073216..00000000 --- a/android/android-test/src/main/AndroidManifest.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/android/build.gradle b/android/build.gradle deleted file mode 100644 index 83974a11..00000000 --- a/android/build.gradle +++ /dev/null @@ -1,149 +0,0 @@ -plugins { - id 'com.android.library' -} - -repositories { - mavenLocal() - google() - mavenCentral() -} - -group = rootProject.group -version = rootProject.version - -ext { - luaVersions = ['lua51', 'lua52', 'lua53', 'lua54', 'luajit'] -} - -android { - namespace = project(':').group - - defaultConfig { - minSdk 21 - targetSdk 34 - compileSdk 33 - versionCode 1 - versionName '3.1' - } - - sourceSets { container -> - luaVersions.each { v -> - String ver = v - container.create(ver) { - namespace "${project(':').group}.${ver}" - manifest.srcFile 'AndroidManifest.xml' - jniLibs.srcDirs = ["${ver}-libs"] - } - } - } - - flavorDimensions += 'lua' - - productFlavors { container -> - luaVersions.each { ver -> - String v = ver - container.create(v) { - dimension 'lua' - } - } - } - - buildTypes { container -> - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - debug { - matchingFallbacks ['release'] - } - } - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } -} - -tasks.register('copyAndroidNatives') { - doFirst { - List platforms = ['armeabi-v7a', 'arm64-v8a', 'x86_64', 'x86'] - luaVersions.forEach { ver -> - platforms.forEach { platform -> - String outputDir = "${ver}-libs/${platform}" - file(outputDir).mkdirs() - - copy { - from fileTree(project(":${ver}").projectDir.toPath().toAbsolutePath() - .resolve("libs/${platform}")) - into outputDir - include "*.so" - } - } - } - } -} - -tasks.configureEach { packageTask -> - if (packageTask.name.contains("merge") && packageTask.name.contains("JniLibFolders")) { - packageTask.dependsOn 'copyAndroidNatives' - } -} - -apply plugin: 'maven-publish' -apply plugin: 'signing' - -apply from: project(':').file('pom.gradle') - -afterEvaluate { - generateLua51ReleaseBuildConfig.enabled = false - generateLua52ReleaseBuildConfig.enabled = false - generateLua53ReleaseBuildConfig.enabled = false - generateLua54ReleaseBuildConfig.enabled = false - generateLuajitReleaseBuildConfig.enabled = false - - publishing { - publications { - create('default', MavenPublication) { container -> - setPom(pom, '') - luaVersions.each { v -> - String ver = v - String path = "${buildDir}/outputs/aar/android-${ver}-release.aar" - file(path).getParentFile().mkdirs() - file(path).createNewFile() - container.artifact(path) { - classifier ver - extension 'aar' - } - } - } - } - - repositories { - maven { - name = 'OSSRH' - url = rootProject.version.toString().endsWith('-SNAPSHOT') - ? 'https://s01.oss.sonatype.org/content/repositories/snapshots/' - : 'https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/' - credentials { - username = System.getenv("MAVEN_USERNAME") - password = System.getenv("MAVEN_PASSWORD") - } - } - } - } - - signing { - useInMemoryPgpKeys( - System.getenv("GPG_KEY_ID"), - System.getenv("GPG_SECKEY"), - System.getenv("GPG_PASSPHRASE"), - ) - sign publishing.publications.default - } -} - -tasks.configureEach { packageTask -> - if (packageTask.name.toLowerCase().contains("maven")) { - packageTask.dependsOn 'assemble' - } -} diff --git a/android/gradle.properties b/android/gradle.properties deleted file mode 100644 index c0998c7b..00000000 --- a/android/gradle.properties +++ /dev/null @@ -1,2 +0,0 @@ -POM_NAME = Lua Android Binaries -POM_DESCRIPTION = Lua Native Binaries For Android diff --git a/android/proguard-rules.pro b/android/proguard-rules.pro deleted file mode 100644 index 16823d57..00000000 --- a/android/proguard-rules.pro +++ /dev/null @@ -1 +0,0 @@ --keep class party.iroiro.luajava.JuaAPI diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml deleted file mode 100644 index 76073216..00000000 --- a/android/src/main/AndroidManifest.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/build.gradle b/build.gradle index e2e95aa5..b61bb109 100644 --- a/build.gradle +++ b/build.gradle @@ -17,6 +17,8 @@ repositories { mavenCentral() } + +// Only keep desktop subprojects, remove android and android-test from build subprojects { it -> if (!['android', 'android-test', 'jpms-example'].contains(it.name)) { apply plugin: 'java' diff --git a/lua51/build.gradle b/lua51/build.gradle index 524dd9dc..34202e96 100644 --- a/lua51/build.gradle +++ b/lua51/build.gradle @@ -49,49 +49,15 @@ jnigen { libraries = ' -lm ' } - add(Windows, x32) add(Windows, x64) - add(Windows, x64, ARM) - - add(Linux, x32) add(Linux, x64) - add(Linux, x32, ARM) add(Linux, x64, ARM) - // TODO: Until we have a RISCV toolchain on Ubuntu. - // add(Linux, x64, RISCV) each({ it.os == Linux }) { String linuxFlags = ' -D_FORTIFY_SOURCE=0 -DLUA_USE_DLOPEN ' cFlags += linuxFlags cppFlags += linuxFlags } - - add(MacOsX, x64) - add(MacOsX, x64, ARM) - each({ it.os == MacOsX }) { - String macFlags = ' -DLUA_USE_DLOPEN ' - libraries = '' - cFlags += macFlags - cppFlags += macFlags - } - - add(Android) { - String androidFlags = ' -D_FORTIFY_SOURCE=1 -DLUA_USE_DLOPEN ' - cFlags += androidFlags - cppFlags += androidFlags - androidApplicationMk = [ - 'APP_PLATFORM := android-21', - "APP_CFLAG :=$androidFlags", - ] - } - - robovm { - forceLinkClasses "java.lang.Class", "java.lang.Throwable", "party.iroiro.luajava.JuaAPI" - } - add(IOS, x64) { - libraries = '' - xcframeworkBundleIdentifier = "party.iroiro.luajava.lua51" - minIOSVersion = "11.0" - } + // Removed Android, iOS, MacOS, robovm, and other extra targets for minimal desktop build } artifacts { diff --git a/lua52/build.gradle b/lua52/build.gradle index 6497cdc2..c21b2272 100644 --- a/lua52/build.gradle +++ b/lua52/build.gradle @@ -51,49 +51,15 @@ jnigen { libraries = ' -lm ' } - add(Windows, x32) add(Windows, x64) - add(Windows, x64, ARM) - - add(Linux, x32) add(Linux, x64) - add(Linux, x32, ARM) add(Linux, x64, ARM) - // TODO: Until we have a RISCV toolchain on Ubuntu. - // add(Linux, x64, RISCV) each({ it.os == Linux }) { String linuxFlags = ' -D_FORTIFY_SOURCE=0 -DLUA_USE_DLOPEN ' cFlags += linuxFlags cppFlags += linuxFlags } - - add(MacOsX, x64) - add(MacOsX, x64, ARM) - each({ it.os == MacOsX }) { - String macFlags = ' -DLUA_USE_DLOPEN ' - libraries = '' - cFlags += macFlags - cppFlags += macFlags - } - - add(Android) { - String androidFlags = ' -D_FORTIFY_SOURCE=1 -DLUA_USE_DLOPEN ' - cFlags += androidFlags - cppFlags += androidFlags - androidApplicationMk = [ - 'APP_PLATFORM := android-21', - "APP_CFLAG :=$androidFlags", - ] - } - - robovm { - forceLinkClasses "java.lang.Class", "java.lang.Throwable", "party.iroiro.luajava.JuaAPI" - } - add(IOS, x64) { - libraries = '' - xcframeworkBundleIdentifier = "party.iroiro.luajava.lua52" - minIOSVersion = "11.0" - } + // Removed Android, iOS, MacOS, robovm, and other extra targets for minimal desktop build } artifacts { diff --git a/lua53/build.gradle b/lua53/build.gradle index d1838889..1e8d2164 100644 --- a/lua53/build.gradle +++ b/lua53/build.gradle @@ -51,49 +51,15 @@ jnigen { libraries = ' -lm ' } - add(Windows, x32) add(Windows, x64) - add(Windows, x64, ARM) - - add(Linux, x32) add(Linux, x64) - add(Linux, x32, ARM) add(Linux, x64, ARM) - // TODO: Until we have a RISCV toolchain on Ubuntu. - // add(Linux, x64, RISCV) each({ it.os == Linux }) { String linuxFlags = ' -D_FORTIFY_SOURCE=0 -DLUA_USE_DLOPEN ' cFlags += linuxFlags cppFlags += linuxFlags } - - add(MacOsX, x64) - add(MacOsX, x64, ARM) - each({ it.os == MacOsX }) { - String macFlags = ' -DLUA_USE_DLOPEN ' - libraries = '' - cFlags += macFlags - cppFlags += macFlags - } - - add(Android) { - String androidFlags = ' -D_FORTIFY_SOURCE=1 -DLUA_USE_DLOPEN ' - cFlags += androidFlags - cppFlags += androidFlags - androidApplicationMk = [ - 'APP_PLATFORM := android-21', - "APP_CFLAG :=$androidFlags", - ] - } - - robovm { - forceLinkClasses "java.lang.Class", "java.lang.Throwable", "party.iroiro.luajava.JuaAPI" - } - add(IOS, x64) { - libraries = '' - xcframeworkBundleIdentifier = "party.iroiro.luajava.lua53" - minIOSVersion = "11.0" - } + // Removed Android, iOS, MacOS, robovm, and other extra targets for minimal desktop build } artifacts { diff --git a/lua54/build.gradle b/lua54/build.gradle index 662e1302..77204763 100644 --- a/lua54/build.gradle +++ b/lua54/build.gradle @@ -51,49 +51,15 @@ jnigen { libraries = ' -lm ' } - add(Windows, x32) add(Windows, x64) - add(Windows, x64, ARM) - - add(Linux, x32) add(Linux, x64) - add(Linux, x32, ARM) add(Linux, x64, ARM) - // TODO: Until we have a RISCV toolchain on Ubuntu. - // add(Linux, x64, RISCV) each({ it.os == Linux }) { String linuxFlags = ' -D_FORTIFY_SOURCE=0 -DLUA_USE_DLOPEN ' cFlags += linuxFlags cppFlags += linuxFlags } - - add(MacOsX, x64) - add(MacOsX, x64, ARM) - each({ it.os == MacOsX }) { - String macFlags = ' -DLUA_USE_DLOPEN ' - libraries = '' - cFlags += macFlags - cppFlags += macFlags - } - - add(Android) { - String androidFlags = ' -D_FORTIFY_SOURCE=1 -DLUA_USE_DLOPEN ' - cFlags += androidFlags - cppFlags += androidFlags - androidApplicationMk = [ - 'APP_PLATFORM := android-21', - "APP_CFLAG :=$androidFlags", - ] - } - - robovm { - forceLinkClasses "java.lang.Class", "java.lang.Throwable", "party.iroiro.luajava.JuaAPI" - } - add(IOS, x64) { - libraries = '' - xcframeworkBundleIdentifier = "party.iroiro.luajava.lua54" - minIOSVersion = "11.0" - } + // Removed Android, iOS, MacOS, robovm, and other extra targets for minimal desktop build } artifacts { diff --git a/luajit/build.gradle b/luajit/build.gradle index 5372c3bf..3cf3d596 100644 --- a/luajit/build.gradle +++ b/luajit/build.gradle @@ -41,21 +41,10 @@ dependencies { } enum Platform { - Android, - IOS, - // Linux + // Only keep Linux and Windows platforms needed Linux64, - Linux32, - ARM, AArch64, - // Windows - Win32, Win64, - WinAArch64, - // MacOsX - MacOsX, - MacOsXAArch64, - MacOsXMerged, // Merged libluajit.a } // Builds LuaJIT and copies the output libluajit.a to jni/luajit/lib/${platform} @@ -113,47 +102,19 @@ void buildLuaTargets(String... targets) { } buildLuaTargets( - addLuaJitTarget(Platform.Android, - ['bash', '../scripts/build-android.sh']), - addLuaJitTarget(Platform.IOS, - ['bash', '../scripts/build-ios.sh']), addLuaJitTarget(Platform.Linux64, ['make', 'amalg', 'CC=gcc -m64 -D_FORTIFY_SOURCE=0', 'CFLAGS=-fPIC ', 'TARGET_SYS=Linux']), - addLuaJitTarget(Platform.Linux32, - ['make', 'amalg', - 'CC=gcc -m32 -I/usr/i686-linux-gnu/include -D_FORTIFY_SOURCE=0', 'CFLAGS=-fPIC', - 'TARGET_SYS=Linux']), - addLuaJitTarget(Platform.ARM, - ['make', 'amalg', - 'HOST_CC=gcc -m32 -I/usr/i686-linux-gnu/include -D_FORTIFY_SOURCE=0', 'CFLAGS=-fPIC', - 'TARGET_SYS=Linux', 'CROSS=arm-linux-gnueabihf-']), addLuaJitTarget(Platform.AArch64, ['make', 'amalg', 'HOST_CC=gcc -m64 -D_FORTIFY_SOURCE=0', 'CFLAGS=-fPIC', 'TARGET_SYS=Linux', 'CROSS=aarch64-linux-gnu-']), - addLuaJitTarget(Platform.Win32, - ['make', 'amalg', - 'HOST_CC=gcc -m32 -I/usr/i686-linux-gnu/include', 'CFLAGS=-fPIC', - 'BUILDMODE=static', - 'CROSS=i686-w64-mingw32-', 'TARGET_SYS=Windows']), addLuaJitTarget(Platform.Win64, ['make', 'amalg', 'HOST_CC=gcc -m64', 'CFLAGS=-fPIC', 'BUILDMODE=static', - 'CROSS=x86_64-w64-mingw32-', 'TARGET_SYS=Windows']), - addLuaJitTarget(Platform.WinAArch64, - ['make', 'amalg', - 'HOST_CC=gcc -m64', 'CFLAGS=-fPIC', - 'BUILDMODE=static', - 'CROSS=aarch64-w64-mingw32-', 'TARGET_SYS=Windows']), - addLuaJitTarget(Platform.MacOsX, - ['make', 'amalg', 'TARGET_FLAGS=-arch x86_64', - 'CFLAGS=-fPIC', 'TARGET_SYS=Darwin']), - addLuaJitTarget(Platform.MacOsXAArch64, - ['make', 'amalg', 'TARGET_FLAGS=-arch arm64', - 'CFLAGS=-fPIC', 'TARGET_SYS=Darwin']), + 'CROSS=x86_64-w64-mingw32-', 'TARGET_SYS=Windows']) ) void linkerConfig(BuildTarget it, Platform platform) { @@ -180,83 +141,20 @@ jnigen { add(Linux, x64, x86, { linkerConfig(it, Platform.Linux64) }) - add(Linux, x32, x86, { - linkerConfig(it, Platform.Linux32) - }) - add(Linux, x32, ARM, { - linkerConfig(it, Platform.ARM) - }) add(Linux, x64, ARM, { linkerConfig(it, Platform.AArch64) }) - - add(Windows, x32, x86, { - linkerConfig(it, Platform.Win32) - }) add(Windows, x64, x86, { linkerConfig(it, Platform.Win64) }) - add(Windows, x64, ARM) { - linkerConfig(it, Platform.WinAArch64) - } - - add(MacOsX, x64, x86, { - linkerConfig(it, Platform.MacOsXMerged) - }) - add(MacOsX, x64, ARM, { - linkerConfig(it, Platform.MacOsXMerged) - }) - - robovm { - forceLinkClasses "java.lang.Class", "java.lang.Throwable", "party.iroiro.luajava.JuaAPI" - } - add(IOS, x64) { - xcframeworkBundleIdentifier = "party.iroiro.luajava.luajit" - minIOSVersion = "11.0" - } - - add(Android) { - cFlags += ' -D_FORTIFY_SOURCE=1 ' - cppFlags += ' -D_FORTIFY_SOURCE=1 ' - androidABIs = ['armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'] - androidApplicationMk = [ - 'APP_PLATFORM := android-21', - 'APP_CFLAGS := -D_FORTIFY_SOURCE=1 ', - ] - linkerFlags += " -L${projectDir}/jni/luajit/lib/android/\$(TARGET_ARCH_ABI) -lluajit " - } + // Removed Android, iOS, MacOS, robovm, and other extra targets for minimal desktop build } -tasks.register('buildLuaMacOsXMerge', { - dependsOn tasks.buildLuaMacOsX, tasks.buildLuaMacOsXAArch64 - String pathX86 = "lib/${Platform.MacOsX.toString().toLowerCase()}" - String pathAArch64 = "lib/${Platform.MacOsXAArch64.toString().toLowerCase()}" - String pathA = "lib/${Platform.MacOsXMerged.toString().toLowerCase()}" - doLast { - exec { - workingDir 'jni/luajit' - commandLine 'mkdir', '-p', pathA - } - exec { - workingDir 'jni/luajit' - commandLine 'lipo', '-create', - "${pathX86}/libluajit.a", "${pathAArch64}/libluajit.a", - '-output', "${pathA}/libluajit.a" - } - } -}) -tasks.jnigenBuildLinux.dependsOn(tasks.buildLuaLinux32) +// Removed MacOS, Android, iOS, and other extra build dependencies for minimal desktop build tasks.jnigenBuildLinux64.dependsOn(tasks.buildLuaLinux64) -tasks.jnigenBuildLinuxARM.dependsOn(tasks.buildLuaARM) tasks.jnigenBuildLinuxARM64.dependsOn(tasks.buildLuaAArch64) -tasks.jnigenBuildWindows.dependsOn(tasks.buildLuaWin32) tasks.jnigenBuildWindows64.dependsOn(tasks.buildLuaWin64) -tasks.jnigenBuildWindowsARM64.dependsOn(tasks.buildLuaWinAArch64) -tasks.jnigenBuildMacOsX64.dependsOn(tasks.buildLuaMacOsXMerge) -tasks.jnigenBuildAndroid.dependsOn(tasks.buildLuaAndroid) -tasks.jnigenBuildIOS64.dependsOn(tasks.buildLuaIOS) -tasks.buildLuaIOS.dependsOn(tasks.jnigen) void addPatchElfTask(String platform) { String target = "patchElf${platform}" @@ -297,15 +195,8 @@ void addPatchElfTask(String platform) { } } -addPatchElfTask('Linux32') -addPatchElfTask('Linux64') -addPatchElfTask('LinuxARM32') -addPatchElfTask('LinuxARM64') -tasks.jnigenBuildLinux.finalizedBy(tasks.patchElfLinux32) -tasks.jnigenBuildLinux64.finalizedBy(tasks.patchElfLinux64) -tasks.jnigenBuildLinuxARM.finalizedBy(tasks.patchElfLinuxARM32) -tasks.jnigenBuildLinuxARM64.finalizedBy(tasks.patchElfLinuxARM64) +// Removed patchElf tasks for non-desktop targets and only kept relevant finalizedBy for supported platforms apply plugin: 'com.badlogicgames.gdx.gdx-jnigen' diff --git a/publish.gradle b/publish.gradle index b28ed4c8..d2768cba 100644 --- a/publish.gradle +++ b/publish.gradle @@ -29,44 +29,28 @@ configure([ fromResolutionOf('runtimeClasspath') } usage('java-runtime') { - //noinspection GroovyImplicitNullArgumentCall fromResolutionResult() } } - setPom(pom, '') } - if (project.tasks.findByName('jnigen')) { mavenPlatform(MavenPublication) { artifactId = artifactId + '-platform' - if (project.tasks.findByName('jnigenJarNativesDesktop')) { artifact jnigenJarNativesDesktop {} } - if (project.tasks.findByName('jnigenJarNativesIOS')) { - artifact jnigenJarNativesIOS {} - } - // TODO: Add riscv64 to the list once Android NDK & jnigen supports RISC-V Android builds. - ['arm64-v8a', 'armeabi-v7a', 'x86_64', 'x86'].each { arch -> - if (project.tasks.findByName("jnigenJarNativesAndroid$arch")) { - artifact "jnigenJarNativesAndroid$arch" {} - } - } setPom(pom, ' Native Libraries') } } } - repositories { maven { - name = 'OSSRH' - url = rootProject.version.toString().endsWith('-SNAPSHOT') - ? 'https://s01.oss.sonatype.org/content/repositories/snapshots/' - : 'https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/' + name = 'GitHubPackages' + url = "https://maven.pkg.github.com/${System.getenv('GITHUB_REPOSITORY')}" credentials { - username = System.getenv("MAVEN_USERNAME") - password = System.getenv("MAVEN_PASSWORD") + username = System.getenv("GITHUB_ACTOR") + password = System.getenv("GITHUB_TOKEN") } } } diff --git a/settings.gradle b/settings.gradle index 75ed204d..0b0effc1 100644 --- a/settings.gradle +++ b/settings.gradle @@ -9,6 +9,4 @@ include ':luajava', ':jsr223', ':example', ':example:suite', - ':jpms-example', - ':android', - ':android:android-test' + ':jpms-example' From 7f7d48c78521cbfec69713847f4028adb8c510da Mon Sep 17 00:00:00 2001 From: Saturn Date: Wed, 21 May 2025 05:36:47 +0000 Subject: [PATCH 2/8] luajit: Enable Lua 5.2 Compat --- luajit/build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/luajit/build.gradle b/luajit/build.gradle index 3cf3d596..bc12b99a 100644 --- a/luajit/build.gradle +++ b/luajit/build.gradle @@ -136,6 +136,8 @@ jnigen { cExcludes = ['luajit/**/*'] libraries += ' -lm -lluajit ' headerDirs = ['../../jni/luajava', 'luajit/src', 'mod'] + cFlags += ' -DLUAJIT_ENABLE_LUA52COMPAT' + cppFlags += ' -DLUAJIT_ENABLE_LUA52COMPAT' } add(Linux, x64, x86, { From 54c6cf5ad9a24a61225f6b2cbdd2f49dd2fd6e6e Mon Sep 17 00:00:00 2001 From: Saturn Date: Wed, 21 May 2025 05:41:45 +0000 Subject: [PATCH 3/8] Update LuaJIT and Lua5.4 --- lua54/jni/lua54 | 2 +- luajit/jni/luajit | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lua54/jni/lua54 b/lua54/jni/lua54 index 1ab3208a..d1ee2a4d 160000 --- a/lua54/jni/lua54 +++ b/lua54/jni/lua54 @@ -1 +1 @@ -Subproject commit 1ab3208a1fceb12fca8f24ba57d6e13c5bff15e3 +Subproject commit d1ee2a4deb06a335b9ff99530917b828a7ebe3e5 diff --git a/luajit/jni/luajit b/luajit/jni/luajit index f5fd2220..eec7a801 160000 --- a/luajit/jni/luajit +++ b/luajit/jni/luajit @@ -1 +1 @@ -Subproject commit f5fd22203eadf57ccbaa4a298010d23974b22fc0 +Subproject commit eec7a8016c3381b949b5d84583800d05897fa960 From 8051f525b13c5126c5e16804d8bf910cbe445eaf Mon Sep 17 00:00:00 2001 From: Saturn Date: Wed, 21 May 2025 05:43:17 +0000 Subject: [PATCH 4/8] Test CI --- .github/workflows/publish-natives.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-natives.yml b/.github/workflows/publish-natives.yml index 7e50221a..f7a5ffc9 100644 --- a/.github/workflows/publish-natives.yml +++ b/.github/workflows/publish-natives.yml @@ -3,7 +3,7 @@ name: Build and Publish Natives to GHCR on: workflow_dispatch: push: - branches: [main] + branches: [drop-platforms] tags: ["*"] jobs: From 07405d484acbc20631eb458ab8609c355a0445a8 Mon Sep 17 00:00:00 2001 From: Saturn Date: Wed, 21 May 2025 05:44:45 +0000 Subject: [PATCH 5/8] ci: Update ubuntu --- .github/workflows/publish-natives.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-natives.yml b/.github/workflows/publish-natives.yml index f7a5ffc9..c1048c0f 100644 --- a/.github/workflows/publish-natives.yml +++ b/.github/workflows/publish-natives.yml @@ -8,7 +8,7 @@ on: jobs: build-linux-windows: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_ACTOR: ${{ github.actor }} From 37fd3377f6d1a9cf03a343f0d875a5a473781baf Mon Sep 17 00:00:00 2001 From: Saturn Date: Wed, 21 May 2025 05:48:09 +0000 Subject: [PATCH 6/8] Remove more Android stuff --- build.gradle | 9 --------- 1 file changed, 9 deletions(-) diff --git a/build.gradle b/build.gradle index b61bb109..8c24cd86 100644 --- a/build.gradle +++ b/build.gradle @@ -1,16 +1,7 @@ group 'party.iroiro.luajava' version(System.getenv('IS_RELEASE') == 'true' ? '4.0.2' : '4.0.3-SNAPSHOT') -buildscript { - repositories { - google() - mavenCentral() - } - dependencies { - classpath 'com.android.tools.build:gradle:7.4.2' - } -} repositories { mavenLocal() From 87c75a976a5d734864504f10f0b12a144b55912d Mon Sep 17 00:00:00 2001 From: Saturn Date: Wed, 21 May 2025 05:53:12 +0000 Subject: [PATCH 7/8] Fix --- .github/workflows/publish-luajava-api.yml | 2 +- .github/workflows/publish-natives.yml | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish-luajava-api.yml b/.github/workflows/publish-luajava-api.yml index 78024200..f8dc9809 100644 --- a/.github/workflows/publish-luajava-api.yml +++ b/.github/workflows/publish-luajava-api.yml @@ -1,4 +1,4 @@ -name: Build +name: Build and Publish LuaJava to Github Packages permissions: packages: write diff --git a/.github/workflows/publish-natives.yml b/.github/workflows/publish-natives.yml index c1048c0f..d987befd 100644 --- a/.github/workflows/publish-natives.yml +++ b/.github/workflows/publish-natives.yml @@ -1,5 +1,6 @@ -name: Build and Publish Natives to GHCR - +name: Build and Publish Natives to Github Packages +permissions: + packages: write on: workflow_dispatch: push: From a9e348b633b196827d4d6dd8729e4cd6d8cc62a0 Mon Sep 17 00:00:00 2001 From: Saturn Date: Wed, 21 May 2025 16:52:13 +0000 Subject: [PATCH 8/8] Bump version --- .github/workflows/publish-natives.yml | 2 +- build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-natives.yml b/.github/workflows/publish-natives.yml index d987befd..eaeabae0 100644 --- a/.github/workflows/publish-natives.yml +++ b/.github/workflows/publish-natives.yml @@ -4,7 +4,7 @@ permissions: on: workflow_dispatch: push: - branches: [drop-platforms] + branches: [main] tags: ["*"] jobs: diff --git a/build.gradle b/build.gradle index 8c24cd86..0cd89395 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ group 'party.iroiro.luajava' -version(System.getenv('IS_RELEASE') == 'true' ? '4.0.2' : '4.0.3-SNAPSHOT') +version(System.getenv('IS_RELEASE') == 'true' ? '4.0.2' : '4.0.4-SNAPSHOT')