summaryrefslogtreecommitdiff
path: root/dev-java
diff options
context:
space:
mode:
authorCrucible <crucible@localhost>2026-10-21 17:46:18 -0500
committerCrucible <crucible@localhost>2026-10-21 17:46:18 -0500
commitdd7c7f0914b2eb83ac283441de30766578426392 (patch)
tree70f6a0ebb66404cccfe9f4dea292bf5482cda401 /dev-java
parent7f39132ab3dd3cb51fa99aabd48800725855dfbb (diff)
downloadsrcux-dd7c7f0914b2eb83ac283441de30766578426392.tar.gz
srcux-dd7c7f0914b2eb83ac283441de30766578426392.tar.xz
srcux-dd7c7f0914b2eb83ac283441de30766578426392.zip
Publish srcux candidate 0000000776-20261021-173123
Diffstat (limited to 'dev-java')
-rw-r--r--dev-java/automaton/Manifest1
-rw-r--r--dev-java/automaton/automaton-1.12.4.ebuild42
-rw-r--r--dev-java/automaton/metadata.xml9
-rw-r--r--dev-java/axmlprinter2/Manifest1
-rw-r--r--dev-java/axmlprinter2/axmlprinter2-1.0.ebuild24
-rw-r--r--dev-java/axmlprinter2/metadata.xml9
-rw-r--r--dev-java/permit-reflect/Manifest1
-rw-r--r--dev-java/permit-reflect/metadata.xml9
-rw-r--r--dev-java/permit-reflect/permit-reflect-0.4.ebuild23
-rw-r--r--dev-java/scala-cli-bin/Manifest6
-rw-r--r--dev-java/scala-cli-bin/scala-cli-bin-1.18.0.ebuild (renamed from dev-java/scala-cli-bin/scala-cli-bin-1.10.1.ebuild)2
-rw-r--r--dev-java/yajsw/Manifest1
-rw-r--r--dev-java/yajsw/files/yajsw-14.01-build-fixes.patch42
-rw-r--r--dev-java/yajsw/files/yajsw-14.01-javadoc.patch15
-rw-r--r--dev-java/yajsw/files/yajsw-14.01-keystore.patch13
-rw-r--r--dev-java/yajsw/files/yajsw-14.01-paths.patch37
-rw-r--r--dev-java/yajsw/files/yajsw-14.01-system-libs.patch112
-rw-r--r--dev-java/yajsw/files/yajsw-14.01-system-native.patch26
-rw-r--r--dev-java/yajsw/metadata.xml15
-rw-r--r--dev-java/yajsw/yajsw-14.01.ebuild151
20 files changed, 535 insertions, 4 deletions
diff --git a/dev-java/automaton/Manifest b/dev-java/automaton/Manifest
new file mode 100644
index 000000000000..6d2b1817c43d
--- /dev/null
+++ b/dev-java/automaton/Manifest
@@ -0,0 +1 @@
+DIST automaton-1.12-4.tar.gz 396799 BLAKE2B 9dfb80e5a0559778329d42645a4d14867f784ab6c34879bb2f09e2f9ac5e3c797c42ec62c1638285a1a16d3b36e71110b3c7c56b194ad8edbe1cebe34499cae0 SHA512 73a1d4036061df75a64ff887d4aa8c065b23d73daec6c5f492234ec9d3cfb6bd5a428a5743d0dd04be185b715245aeb0b4966c653c643c23ad8c5def56c3e481
diff --git a/dev-java/automaton/automaton-1.12.4.ebuild b/dev-java/automaton/automaton-1.12.4.ebuild
new file mode 100644
index 000000000000..c35955a28d24
--- /dev/null
+++ b/dev-java/automaton/automaton-1.12.4.ebuild
@@ -0,0 +1,42 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+JAVA_PKG_IUSE="doc source"
+
+inherit java-pkg-2 java-pkg-simple
+
+MY_P="${PN}-${PV%.*}-${PV##*.}"
+
+DESCRIPTION="Finite-state automata and regular expressions for Java"
+HOMEPAGE="https://www.brics.dk/automaton/"
+SRC_URI="https://www.brics.dk/automaton/${MY_P}.tar.gz"
+S="${WORKDIR}/${MY_P%-*}"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND=">=virtual/jdk-1.8:*"
+RDEPEND=">=virtual/jre-1.8:*"
+
+JAVA_SRC_DIR="src"
+
+src_compile() {
+ java-pkg-simple_src_compile
+
+ mkdir datatypes || die
+ java -cp "${JAVA_JAR_FILENAME}" -Ddk.brics.automaton.datatypes=datatypes \
+ dk.brics.automaton.Datatypes || die
+
+ jar tf dist/automaton.jar > "${T}/upstream-entries" || die
+ grep '\.aut$' "${T}/upstream-entries" > "${T}/expected-datatypes" || die
+
+ local datatype
+ while IFS= read -r datatype; do
+ [[ -s datatypes/${datatype} ]] || die "Missing or empty datatype: ${datatype}"
+ done < "${T}/expected-datatypes"
+
+ java-pkg_addres "${JAVA_JAR_FILENAME}" datatypes
+}
diff --git a/dev-java/automaton/metadata.xml b/dev-java/automaton/metadata.xml
new file mode 100644
index 000000000000..6bef585ad480
--- /dev/null
+++ b/dev-java/automaton/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://srcux.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>mit.mis@gmail.com</email>
+ <name>Michal Andrzejczak</name>
+ </maintainer>
+ <origin>srcux</origin>
+</pkgmetadata>
diff --git a/dev-java/axmlprinter2/Manifest b/dev-java/axmlprinter2/Manifest
new file mode 100644
index 000000000000..455f55a43eb9
--- /dev/null
+++ b/dev-java/axmlprinter2/Manifest
@@ -0,0 +1 @@
+DIST axmlprinter2-1.0.zip 39688 BLAKE2B 61d85c4f8c67bc18dedb101cdfe3db6d4fb2dc14d87a46875581a3570769276ca86e18033a4f5fa4d01c77b12cfed580693bf5efd3c8e3153e6781508a3a8ee4 SHA512 876fc13a3e033982673f0d8d6f7081bc3d4f81893e7dc069048f81aec41e2e35a388909b3ebe387792c0286986647e11b7341918beffec4b1d803cd88b34dfc1
diff --git a/dev-java/axmlprinter2/axmlprinter2-1.0.ebuild b/dev-java/axmlprinter2/axmlprinter2-1.0.ebuild
new file mode 100644
index 000000000000..e49f2880f085
--- /dev/null
+++ b/dev-java/axmlprinter2/axmlprinter2-1.0.ebuild
@@ -0,0 +1,24 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+JAVA_PKG_IUSE="doc source"
+
+inherit java-pkg-2 java-pkg-simple
+
+DESCRIPTION="Parser and printer for Android binary XML"
+HOMEPAGE="https://code.google.com/archive/p/android4me/"
+SRC_URI="https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android4me/AXMLPrinter2.zip
+ -> ${P}.zip"
+S="${WORKDIR}/AXMLPrinter"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND=">=virtual/jdk-11:*"
+RDEPEND=">=virtual/jre-1.8:*"
+BDEPEND="app-arch/unzip"
+
+JAVA_SRC_DIR="src"
diff --git a/dev-java/axmlprinter2/metadata.xml b/dev-java/axmlprinter2/metadata.xml
new file mode 100644
index 000000000000..6bef585ad480
--- /dev/null
+++ b/dev-java/axmlprinter2/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://srcux.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>mit.mis@gmail.com</email>
+ <name>Michal Andrzejczak</name>
+ </maintainer>
+ <origin>srcux</origin>
+</pkgmetadata>
diff --git a/dev-java/permit-reflect/Manifest b/dev-java/permit-reflect/Manifest
new file mode 100644
index 000000000000..7c3678cc7a4a
--- /dev/null
+++ b/dev-java/permit-reflect/Manifest
@@ -0,0 +1 @@
+DIST permit-reflect-0.4.tar.gz 9339 BLAKE2B fa03e5b7f83aa9ab69489f9885e154a80a7fbd9d81bfb1bb028a06d0a0c66e30d56b754d06fe5d41fc165d12018b2412fb4d0401e9c60a5108cf1b8861c3bd66 SHA512 1bc66108a8bb9332c710c465bc9b654fe855f5303293cf97e9eddcdf66531457e54b4bc74031d4da6f3b4c61dbb6a635d321c56a9fd2a7bf06791b8348cb720f
diff --git a/dev-java/permit-reflect/metadata.xml b/dev-java/permit-reflect/metadata.xml
new file mode 100644
index 000000000000..6bef585ad480
--- /dev/null
+++ b/dev-java/permit-reflect/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://srcux.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>mit.mis@gmail.com</email>
+ <name>Michal Andrzejczak</name>
+ </maintainer>
+ <origin>srcux</origin>
+</pkgmetadata>
diff --git a/dev-java/permit-reflect/permit-reflect-0.4.ebuild b/dev-java/permit-reflect/permit-reflect-0.4.ebuild
new file mode 100644
index 000000000000..4b3c1cb6efb6
--- /dev/null
+++ b/dev-java/permit-reflect/permit-reflect-0.4.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+JAVA_PKG_IUSE="doc source"
+
+inherit java-pkg-2 java-pkg-simple
+
+COMMIT="ae7fc51f0160f73cacd1b763a1edaca3d66afaff"
+DESCRIPTION="Reflection utilities for Java modules"
+HOMEPAGE="https://github.com/nqzero/permit-reflect"
+SRC_URI="https://github.com/nqzero/permit-reflect/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/${PN}-${COMMIT}"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND=">=virtual/jdk-11:*"
+RDEPEND=">=virtual/jre-1.8:*"
+
+JAVA_SRC_DIR="src"
diff --git a/dev-java/scala-cli-bin/Manifest b/dev-java/scala-cli-bin/Manifest
index 495c605e2e49..48254d53d194 100644
--- a/dev-java/scala-cli-bin/Manifest
+++ b/dev-java/scala-cli-bin/Manifest
@@ -1,9 +1,9 @@
-DIST scala-cli-amd64-1.10.1.gz 40279670 BLAKE2B 99294f1c11f5dd8195c92cd84382ff4371906c3b3cf0aff215c568fbdf2fbf50f72f36b73a81f757ca2c0b6de4e45e808a5e47133a4531eb823e35c93d29fb16 SHA512 bfd41df7117fe86a1103bcc4f74edad4469dc0f87be649ea361c8f4e056b80ecc6c3b316f62fbdf70068aa2be605aa26916fb4e1f4aad1b253508952ec61e197
DIST scala-cli-amd64-1.12.2.gz 43487074 BLAKE2B 421edc8da7aa78c349ec17c80961d732d47376772dfe38fedc61c63b32fdf11b3f60427b23a6cc337150693c908de3a73e62ac1677b232b2b4655d8b064198b3 SHA512 753c518b3e07b6d4b19ff9f17aa465d02771f5264773b9aaf0c096806d525370cf3919077d59ba2f5bc002f6cb3424f774d2d6030b31f922fb5a22ac72be9c6c
DIST scala-cli-amd64-1.13.0.gz 44511209 BLAKE2B eb8fdfeefae74280da6718ed01c60a3c3f5ea3c34d01fd58993cbdec4db61723a7a790df0265be1d5ecfc88c468a4b5eccdb82a3f0706df8614aca18d777d581 SHA512 cfb8c73ea67d46d096b76a75091d58d738e04273e6271bb894c65d4c9ab6739c2816eadd51bea6363eeff2c4e67cbfc2fc854255c86c875e51089f0275660e05
-DIST scala-cli-arm64-1.10.1.gz 40359451 BLAKE2B 4a308f920dee098cc61e69dc80215ccacd5f84523c01994a193cc1debb79fcc7bfced28b77d6722e56d809abf21fb1ac0729b3439cd2c9edda8073710c5995e0 SHA512 8977471c1e70d9a9be904b7e607d5d6600e9d8e6ab9ede96151f1290135d1c7b6153a9bc9656393f8395d6be6c7c7121414fbb86dcaa54a92fc671dfd8c586c6
+DIST scala-cli-amd64-1.18.0.gz 44596867 BLAKE2B 0da5f4707e77ab43975f53651403331cabdc15513c402639aec17fa919775c01aafaaacdd33ae8a6dfe282427317cc6c7c1bb591e809f2ff575f175a3a17456b SHA512 55d50265837a6bec97ecb45169ae2c4e7348a046e216502f1646e0ad80832ebf60f49dac00d822a67788ec8fbef84eefd3e43d356359e53edf72aabbf4056d1b
DIST scala-cli-arm64-1.12.2.gz 42325724 BLAKE2B 01bc0e06f4be92d16bc18588813ede4cdd9d850803363ff9da75168141c45bf73ef8858431d792917338ec099954562c8f424b91a4c02d30db90c2ae98757a45 SHA512 0def09042c078c230c6c8577768dcb8a3b0c4346ec1cb9b3b9b7fdb844fe12755c7fd005f09098957db4561931946951a1be18c8d975bfe4d15a2ead4fa50562
DIST scala-cli-arm64-1.13.0.gz 43365263 BLAKE2B 9c7340b6a5df7af76c1f3cb0cf003c237ced92c38288a2ce628fdce1a05c6ea54e7f43b635cebceeaadc5887f19a068e3eaa4ba6c31efa6e95b0e264edc25db7 SHA512 77af2f9b76ae8b53348d81e9f3386599a9c6b13dc1320b2545b287056c0275bc6f8b44dd848a6da3f3471445caebac0e151d68699f11b456be74884fe39cb0f2
-DIST scala-cli-non-native-1.10.1 8207066 BLAKE2B f53ae775e4f9f31958bf6de351e7b74b4fdda95f26a6c19772dcaf18148b5b358bd8c64980cbebf6386849d47b861c788bc8d62c222289638dd18c0836f4cc37 SHA512 e7a967df5c3d39f388a243ac630c2b7a8dc360d0c18c770f0ce6b10879ac77c5047890a06cd2460d00a851d57f2e1d6cb4bdccbb08319362699a379139801289
+DIST scala-cli-arm64-1.18.0.gz 43487404 BLAKE2B 5533d05314d35d33c13509ba10cf0d56d0d57a607e7a715f74197d5baa3aa580c28349984072c5d929d2bf6da038db5f70c2a68eaf2416e71e18383944436c57 SHA512 67feedf5bd2f8c47f872fff7a717b752a0562e05cba96d6ffb866550c531ff4555864bbd5883a09fb79502005d0a615165a9ad0c6e874b29ca940d402cafed6d
DIST scala-cli-non-native-1.12.2 8250773 BLAKE2B 9e37e38af1907a7a1b1e90e018530edd12986f59b4a333da704c4f219dcd243b3fdd8f4cb13de50732b0977d5de7b2359aa914be10837fb04e57d5b1eee088f5 SHA512 d134f3958a8a9d0c15918c51a7e0cebcaa963d1b7d85137bdd984a666db51d7083274bde05274f67bec4bc6287e87469b633eecf8b657b814686099adb4d4334
DIST scala-cli-non-native-1.13.0 8372435 BLAKE2B 09a40e45d2cc55881676cfea7812cfbd60bbceb4aa6f3ab8d6a4f57c11ae6bfbe9af6c0f86080429ecec41e5cd5d311040e1de429b922e5c33f2c5f9125ca115 SHA512 78bb708d27eed3e8037cfec96e9994f0286c54f75889854dedf762b9431ccdbea7ccf126f0a301c6e24d10a8e8512b885811b7692176193e4f53b3caba22d016
+DIST scala-cli-non-native-1.18.0 8411307 BLAKE2B d6aeedaa81f1bcaa68db8bf14c12c193e85a4f44fcb9e4067251625c9077002d0687003fd05eb0569d1b31e01d7a5786bd48faa525d2a079b62b9d2fdd44ad65 SHA512 3d858395ac39629808e5ca9812ad76f0def515146a7abdc80b9d61dbf970d930aa404ba5d67d18057c5a78edfd4dd0a57dad0bceff4ec04a720caa264f12e6ff
diff --git a/dev-java/scala-cli-bin/scala-cli-bin-1.10.1.ebuild b/dev-java/scala-cli-bin/scala-cli-bin-1.18.0.ebuild
index dddc219a8a44..68b747d43c99 100644
--- a/dev-java/scala-cli-bin/scala-cli-bin-1.10.1.ebuild
+++ b/dev-java/scala-cli-bin/scala-cli-bin-1.18.0.ebuild
@@ -29,7 +29,7 @@ S="${WORKDIR}"
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 arm64"
+KEYWORDS="~amd64 ~arm64"
# A JRE is not strictly required if native images of scala-cli are used
# (amd64, arm64). However we may want a system JRE anyway, and having JRE
diff --git a/dev-java/yajsw/Manifest b/dev-java/yajsw/Manifest
new file mode 100644
index 000000000000..d04e7122b24c
--- /dev/null
+++ b/dev-java/yajsw/Manifest
@@ -0,0 +1 @@
+DIST yajsw-stable-14.01.zip 26534755 BLAKE2B 42face7f9296e0f851f24246e570a758f94771d5720dff680d12b68a499dcffbb5426d4853e34854d67c07274f6484c34b5f3bb0456baf58651220e403b33662 SHA512 ddef4867e93cfc0ed40b175b92bed8b43f94aa1a243a21fd7b460f72e593c8a71dfdcf867e928a1900361ed76b3bc292f8c1c1d8dfc8295f82ea3125b792a2b0
diff --git a/dev-java/yajsw/files/yajsw-14.01-build-fixes.patch b/dev-java/yajsw/files/yajsw-14.01-build-fixes.patch
new file mode 100644
index 000000000000..31386c8a03f1
--- /dev/null
+++ b/dev-java/yajsw/files/yajsw-14.01-build-fixes.patch
@@ -0,0 +1,42 @@
+# Fix the build path and Java settings for Gradle 9
+
+--- a/build/gradle/build.gradle
++++ b/build/gradle/build.gradle
+@@ -4,10 +4,10 @@
+ }
+
+ ext {
+- projectHome = 'Z:/dev/yajsw2026' //'../..'
+- coreLibsDir = new File("$projectHome/lib/core").getAbsolutePath()
++ projectHome = rootProject.projectDir.parentFile.parentFile
++ coreLibsDir = new File(projectHome, "lib/core").getAbsolutePath()
+ println "$coreLibsDir"
+- extendedLibsDir = new File("$projectHome/lib/extended").getAbsolutePath()
++ extendedLibsDir = new File(projectHome, "lib/extended").getAbsolutePath()
+ // dependency versions
+
+ commons_cli_version = '1.11.0'
+@@ -66,8 +66,10 @@
+
+
+
+-sourceCompatibility = 11
+-targetCompatibility = 11
++java {
++ sourceCompatibility = JavaVersion.VERSION_11
++ targetCompatibility = JavaVersion.VERSION_11
++}
+ //options.bootClasspath = "${System.getProperty('java6.home')}/jre/lib/rt.jar"
+ version = ''
+
+--- a/build/gradle/settings.gradle
++++ b/build/gradle/settings.gradle
+@@ -1,7 +1,7 @@
+ // defines a list of subprojects
+
+ // build8. comment out for build9
+-include "wrapper", "wrapper-app", "ahessian", "hessian4", "srvmgr", "groovy-patch"
++include "wrapper", "wrapper-app", "ahessian", "hessian4", "groovy-patch"
+
+ // build9. comment out for build8
+ //include "wrapper", "wrapper-app", "wrapper-app9", "ahessian", "hessian4", "srvmgr", "groovy-patch", "groovy-patch9"
diff --git a/dev-java/yajsw/files/yajsw-14.01-javadoc.patch b/dev-java/yajsw/files/yajsw-14.01-javadoc.patch
new file mode 100644
index 000000000000..eea705c534fb
--- /dev/null
+++ b/dev-java/yajsw/files/yajsw-14.01-javadoc.patch
@@ -0,0 +1,15 @@
+# Turn off doc checks so the docs can build
+# this works around errors in the source comments
+
+--- a/build/gradle/wrapper/build.gradle
++++ b/build/gradle/wrapper/build.gradle
+@@ -1,5 +1,9 @@
+ def projectHome = '../../..'
+
++tasks.named('javadoc') {
++ options.addBooleanOption('Xdoclint:none', true)
++}
++
+ // set the sources for this build
+ sourceSets.main.java.srcDirs = ["$projectHome/src/yajsw/src/main/java", "$projectHome/src/app/src/main/java"]
+ sourceSets.main.java.exclude 'com/sun/jna/Native.java', 'com/sun/jna/Platform.java', 'org/apache/commons/vfs2/impl/StandardFileSystemManager.java'
diff --git a/dev-java/yajsw/files/yajsw-14.01-keystore.patch b/dev-java/yajsw/files/yajsw-14.01-keystore.patch
new file mode 100644
index 000000000000..4a4ac429090f
--- /dev/null
+++ b/dev-java/yajsw/files/yajsw-14.01-keystore.patch
@@ -0,0 +1,13 @@
+# Build the keystore code from the source in this release
+
+--- a/build/gradle/wrapper/build.gradle
++++ b/build/gradle/wrapper/build.gradle
+@@ -5,7 +5,7 @@ tasks.named('javadoc') {
+ }
+
+ // set the sources for this build
+-sourceSets.main.java.srcDirs = ["$projectHome/src/yajsw/src/main/java", "$projectHome/src/app/src/main/java"]
++sourceSets.main.java.srcDirs = ["$projectHome/src/yajsw/src/main/java", "$projectHome/src/app/src/main/java", "$projectHome/src/keystore/src/main/java"]
+ sourceSets.main.java.exclude 'com/sun/jna/Native.java', 'com/sun/jna/Platform.java', 'org/apache/commons/vfs2/impl/StandardFileSystemManager.java'
+ sourceSets.main.java.exclude 'io/netty/util/internal/CleanerJava9.java', 'io/netty/util/internal/ObjectUtil.java', 'io/netty/util/internal/PlatformDependent0.java'
+ sourceSets.main.java.exclude(['AbstractInternalLogger', 'InternalLogLevel', 'InternalLogger', 'InternalLoggerFactory', 'JdkLogger', 'JdkLoggerFactory'].collect { "io/netty/util/internal/logging/${it}.java" })
diff --git a/dev-java/yajsw/files/yajsw-14.01-paths.patch b/dev-java/yajsw/files/yajsw-14.01-paths.patch
new file mode 100644
index 000000000000..3b08ceb3381b
--- /dev/null
+++ b/dev-java/yajsw/files/yajsw-14.01-paths.patch
@@ -0,0 +1,37 @@
+# Keep config in /etc and runtime files outside /usr
+
+--- a/bin/setenv.sh
++++ b/bin/setenv.sh
+@@ -33,7 +33,7 @@
+ wrapper_app_jar="$wrapper_home"/wrapperApp.jar
+ export wrapper_app_jar
+
+-wrapper_java_sys_options=-Djna_tmpdir="$wrapper_home"/tmp
++wrapper_java_sys_options=-Djna_tmpdir="${TMPDIR:-/tmp}"
+ export wrapper_java_sys_options
+
+ wrapper_java_options=-Xmx30m
+@@ -45,10 +45,10 @@
+ # show java version
+ "$java_exe" -version
+
+-conf_file="$wrapper_home"/conf/wrapper.conf
++conf_file="@GENTOO_PORTAGE_EPREFIX@/etc/yajsw/wrapper.conf"
+ export conf_file
+
+-conf_default_file="$wrapper_home"/conf/wrapper.conf.default
++conf_default_file="@GENTOO_PORTAGE_EPREFIX@/etc/yajsw/wrapper.conf.default"
+ export conf_default_file
+
+ echo "wrapper home : $wrapper_home"
+--- a/conf/wrapper.conf.default
++++ b/conf/wrapper.conf.default
+@@ -128,7 +128,7 @@
+ wrapper.console.loglevel=INFO
+
+ # Log file to use for wrapper output logging.
+-wrapper.logfile=${wrapper_home}/log/wrapper.log
++wrapper.logfile=wrapper.log
+
+ # Format of output for the log file. (See docs for formats)
+ #wrapper.logfile.format=LPTM
diff --git a/dev-java/yajsw/files/yajsw-14.01-system-libs.patch b/dev-java/yajsw/files/yajsw-14.01-system-libs.patch
new file mode 100644
index 000000000000..f71767efe7e7
--- /dev/null
+++ b/dev-java/yajsw/files/yajsw-14.01-system-libs.patch
@@ -0,0 +1,112 @@
+# Use system jars in the build and the launchers
+
+--- a/build/gradle/build.gradle
++++ b/build/gradle/build.gradle
+@@ -32,7 +32,10 @@
+ joda_time_version = '2.7'
+ permit_version = '0.4'
+ }
+-defaultTasks 'clean', 'build'
++ext.systemClasspath = System.getenv('GENTOO_CLASSPATH').split(File.pathSeparator)
++ .findAll { !it.endsWith('/slf4j-nop.jar') }
++
++defaultTasks 'clean', 'build'
+
+ // common settings for all sub-projects
+ allprojects {
+@@ -45,26 +48,16 @@
+
+
+
+-// for simplicity and to avoid dependency issues which arise due to the usage of SNAPSHOT libs
+-// we use libs from local disk instead of public repository
+-repositories {
+- flatDir {
+- dirs "$coreLibsDir/commons", "$coreLibsDir/jna", "$coreLibsDir/netty", "$coreLibsDir/permit",
+- "$coreLibsDir/yajsw",
+- "$extendedLibsDir/groovy",
+- "$extendedLibsDir/regex",
+- "$extendedLibsDir/cron",
+- "$extendedLibsDir/commons",
+- "$extendedLibsDir/abeille",
+- "$extendedLibsDir/jgoodies",
+- "$extendedLibsDir/slf4j",
+- "$extendedLibsDir/velocity"
+-
++configurations.configureEach {
++ withDependencies {
++ removeAll { it instanceof ExternalModuleDependency }
+ }
+- }
+-
+-
+-
++}
++dependencies {
++ implementation files(rootProject.systemClasspath)
++ implementation fileTree(dir: new File(rootProject.projectHome, 'lib'),
++ includes: ['**/*.jar'], excludes: ['**/yajsw/*.jar', '**/groovy-patch.jar'])
++}
+
+ java {
+ sourceCompatibility = JavaVersion.VERSION_11
+--- a/build/gradle/wrapper/build.gradle
++++ b/build/gradle/wrapper/build.gradle
+@@ -2,6 +2,9 @@
+
+ // set the sources for this build
+ sourceSets.main.java.srcDirs = ["$projectHome/src/yajsw/src/main/java", "$projectHome/src/app/src/main/java"]
++sourceSets.main.java.exclude 'com/sun/jna/Native.java', 'com/sun/jna/Platform.java', 'org/apache/commons/vfs2/impl/StandardFileSystemManager.java'
++sourceSets.main.java.exclude 'io/netty/util/internal/CleanerJava9.java', 'io/netty/util/internal/ObjectUtil.java', 'io/netty/util/internal/PlatformDependent0.java'
++sourceSets.main.java.exclude(['AbstractInternalLogger', 'InternalLogLevel', 'InternalLogger', 'InternalLoggerFactory', 'JdkLogger', 'JdkLoggerFactory'].collect { "io/netty/util/internal/logging/${it}.java" })
+ sourceSets.main.resources.srcDirs = ["$projectHome/src/yajsw/src/main/java"]
+ sourceSets.main.resources.includes = ['resources/*']
+
+@@ -50,7 +53,16 @@
+ // TODO generate manifest instead of editing
+ jar {
+ manifest {
+- from '../../MANIFEST.MF'
++ def systemJars = rootProject.systemClasspath.collect { new File(it).toURI().toString() }
++ from('../../MANIFEST.MF') {
++ eachEntry { entry ->
++ if (entry.key.startsWith('Class-Path-')) {
++ entry.value = (entry.value.split().findAll { file("$projectHome/$it").exists() }
++ + systemJars).unique().join(' ')
++ }
++ }
++ }
++ attributes 'Class-Path': systemJars.join(' ')
+ }
+ exclude 'org/rzo/yajsw/app/AbstractWrapperJVMMain*'
+ exclude 'org/rzo/yajsw/app/WrapperGroovyMain*'
+--- a/build/gradle/wrapper-app/build.gradle
++++ b/build/gradle/wrapper-app/build.gradle
+@@ -42,6 +42,15 @@
+ // TODO generate manifest
+ jar {
+ manifest {
+- from '../../MANIFEST.MF'
++ def systemJars = rootProject.systemClasspath.collect { new File(it).toURI().toString() }
++ from('../../MANIFEST.MF') {
++ eachEntry { entry ->
++ if (entry.key.startsWith('Class-Path-')) {
++ entry.value = (entry.value.split().findAll { file("$projectHome/$it").exists() }
++ + systemJars).unique().join(' ')
++ }
++ }
++ }
++ attributes 'Class-Path': systemJars.join(' ')
+ }
+ }
+--- a/src/app/src/main/java/org/rzo/yajsw/boot/WrapperLoader.java
++++ b/src/app/src/main/java/org/rzo/yajsw/boot/WrapperLoader.java
+@@ -215,7 +215,7 @@
+ File myFile;
+ try
+ {
+- myFile = new File(parent, file);
++ myFile = new File(parent.toURI().resolve(file));
+ if (!myFile.exists())
+ {
+ if (logErrors)
diff --git a/dev-java/yajsw/files/yajsw-14.01-system-native.patch b/dev-java/yajsw/files/yajsw-14.01-system-native.patch
new file mode 100644
index 000000000000..b5b8d7ea6d1d
--- /dev/null
+++ b/dev-java/yajsw/files/yajsw-14.01-system-native.patch
@@ -0,0 +1,26 @@
+# Use Gentoo's JNA native library
+
+--- a/src/app/src/main/java/org/rzo/yajsw/boot/WrapperLoader.java
++++ b/src/app/src/main/java/org/rzo/yajsw/boot/WrapperLoader.java
+@@ -34,6 +34,11 @@ import com.nqzero.permit.Permit;
+
+ public class WrapperLoader
+ {
++ static
++ {
++ System.setProperty("jna.boot.library.path", "@GENTOO_LIBDIR@/jna");
++ }
++
+
+ private static boolean checkPath(String path)
+ {
+--- a/src/yajsw/src/main/java/org/rzo/yajsw/os/posix/PosixProcess.java
++++ b/src/yajsw/src/main/java/org/rzo/yajsw/os/posix/PosixProcess.java
+@@ -1252,6 +1252,7 @@ public class PosixProcess extends AbstractProcess {
+ private String[] getSpawnCmdLine() {
+ ArrayList<String> cmdList = new ArrayList();
+ cmdList.add(getCurrentJava());
++ cmdList.add("-Djna.boot.library.path=" + System.getProperty("jna.boot.library.path"));
+ String tmpDir = _tmpPath;
+ if (tmpDir == null)
+ tmpDir = System.getProperty("jna_tmpdir", null);
diff --git a/dev-java/yajsw/metadata.xml b/dev-java/yajsw/metadata.xml
new file mode 100644
index 000000000000..739a9b771a67
--- /dev/null
+++ b/dev-java/yajsw/metadata.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://srcux.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>mit.mis@gmail.com</email>
+ <name>Michal Andrzejczak</name>
+ </maintainer>
+ <longdescription lang="en">
+ YAJSW runs an arbitrary Java or native application as a system daemon:
+ it starts the process, restarts it when it exits or stops responding,
+ captures its output, and installs it into the init system. It is a
+ clean-room reimplementation of the Tanuki Java Service Wrapper.
+ </longdescription>
+ <origin>srcux</origin>
+</pkgmetadata>
diff --git a/dev-java/yajsw/yajsw-14.01.ebuild b/dev-java/yajsw/yajsw-14.01.ebuild
new file mode 100644
index 000000000000..4e1b0c58f8c6
--- /dev/null
+++ b/dev-java/yajsw/yajsw-14.01.ebuild
@@ -0,0 +1,151 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+JAVA_PKG_IUSE="doc source"
+
+JAVA_PKG_WANT_BUILD_VM="openjdk-21 openjdk-bin-21"
+JAVA_PKG_WANT_SOURCE="21"
+JAVA_PKG_WANT_TARGET="21"
+
+inherit edo edos2unix java-pkg-2 multiprocessing prefix
+
+MY_P="${PN}-stable-${PV}"
+
+DESCRIPTION="Yet Another Java Service Wrapper, runs any application as a daemon"
+HOMEPAGE="https://yajsw.sourceforge.io/"
+SRC_URI="
+ https://sourceforge.net/projects/yajsw/files/yajsw/${MY_P}/${MY_P}.zip/download
+ -> ${MY_P}.zip
+"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="Apache-1.1 Apache-2.0 BSD BSD-2 CC-BY-2.5 GPL-2+ LGPL-2.1+ MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+CP_DEPEND="
+ >=dev-java/automaton-1.11.8:0
+ dev-java/commons-beanutils:0
+ >=dev-java/commons-cli-1.11.0:0
+ >=dev-java/commons-collections-4.5.0:4
+ >=dev-java/commons-io-2.21.0:0
+ >=dev-java/commons-lang-3.20.0:0
+ >=dev-java/commons-logging-1.3.6:0
+ >=dev-java/commons-text-1.15.0:0
+ >=dev-java/commons-vfs-2.0:2
+ >=dev-java/jna-5.18.1:0
+ >=dev-java/joda-time-2.13.0:0
+ >=dev-java/permit-reflect-0.4:0
+ >=dev-java/slf4j-api-2.0.3:0
+ >=dev-java/slf4j-simple-2.0.3:0
+ >=dev-java/velocity-2.4.1:0
+"
+
+RDEPEND="${CP_DEPEND}
+ app-admin/sudo
+ >=virtual/jre-21:*"
+
+DEPEND="${CP_DEPEND}
+ virtual/jdk:21"
+
+BDEPEND="
+ app-arch/unzip
+ >=dev-java/gradle-bin-8.5
+"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-build-fixes.patch
+ "${FILESDIR}"/${P}-system-libs.patch
+ "${FILESDIR}"/${P}-system-native.patch
+ "${FILESDIR}"/${P}-javadoc.patch
+ "${FILESDIR}"/${P}-paths.patch
+ "${FILESDIR}"/${P}-keystore.patch
+)
+
+DOCS=( readme.txt yajsw.policy.txt )
+
+src_prepare() {
+ edos2unix build/gradle/{build,settings,wrapper/build,wrapper-app/build}.gradle
+ edos2unix src/app/src/main/java/org/rzo/yajsw/boot/WrapperLoader.java
+ edos2unix src/yajsw/src/main/java/org/rzo/yajsw/os/posix/PosixProcess.java
+ edos2unix conf/wrapper.conf.default
+
+ default
+ java-pkg-2_src_prepare
+ sed -i "s|@GENTOO_LIBDIR@|${EPREFIX}/usr/$(get_libdir)|g" \
+ src/app/src/main/java/org/rzo/yajsw/boot/WrapperLoader.java || die
+ eprefixify bin/setenv.sh
+
+ rm -r lib/core/{jna,permit} \
+ lib/extended/{commons,keystore,regex,sigar,slf4j,velocity} \
+ lib/groovy/{mail,joda,jasypt,snmp} || die
+ find lib/core/commons -type f ! -name 'commons-configuration2-*.jar' -delete || die
+ rm lib/extended/cron/{joda-time-2.7,prevayler-core-2.6,prevayler-factory-2.6}.jar || die
+}
+
+src_compile() {
+ local gradle
+ gradle=$(best_version -b '>=dev-java/gradle-bin-8.5') || die
+ [[ -n ${gradle} ]] || die "No supported Gradle installed"
+ gradle=${gradle##*/}
+ gradle=${gradle%-r*}
+
+ local packages=(
+ automaton commons-beanutils commons-cli commons-collections-4
+ commons-io commons-lang commons-logging commons-text commons-vfs-2 jna
+ joda-time permit-reflect slf4j-api slf4j-simple velocity
+ )
+ local -x GENTOO_CLASSPATH
+ GENTOO_CLASSPATH=$(java-pkg_getjars --with-dependencies "$(IFS=,; echo "${packages[*]}")") || die
+
+ local -x JAVA_TOOL_OPTIONS="-Duser.home=${T}"
+ local targets=( build )
+ use doc && targets+=( :wrapper:javadoc )
+
+ cd build/gradle || die
+ edo "${EPREFIX}/usr/bin/${gradle}" \
+ --console=plain \
+ --offline \
+ --no-daemon \
+ --no-build-cache \
+ --gradle-user-home "${T}/gradle_user_home" \
+ --project-cache-dir "${T}/gradle_project_cache" \
+ --parallel --max-workers="$(get_makeopts_jobs)" \
+ "${targets[@]}"
+}
+
+src_install() {
+ local dest="/usr/share/${PN}" b=build/gradle
+
+ cp "${b}"/ahessian/build/libs/*.jar lib/core/yajsw/ || die
+ cp "${b}"/hessian4/build/libs/*.jar lib/extended/yajsw/ || die
+ cp "${b}"/groovy-patch/build/libs/*.jar lib/extended/groovy/ || die
+
+ java-pkg_jarinto "${dest}"
+ java-pkg_dojar "${b}/wrapper/build/libs/wrapper.jar"
+ insinto "${dest}"
+ doins "${b}/wrapper-app/build/libs/wrapperApp.jar"
+ doins -r lib
+
+ insinto /etc/yajsw
+ doins conf/wrapper.conf.default
+
+ insinto "${dest}/templates"
+ doins templates/daemon.vm templates/systemd.vm
+
+ exeinto "${dest}"/bin
+ doexe bin/{wrapper,setenv,genConfig,runConsole}.sh
+ doexe bin/{install,start,stop,query,uninstall}Daemon{,NoPriv}.sh
+
+ einstalldocs
+
+ if use doc; then
+ java-pkg_dojavadoc "${b}/wrapper/build/docs/javadoc"
+ fi
+
+ if use source; then
+ java-pkg_dosrc src/{yajsw,app,ahessian,hessian,groovy-patch,keystore}
+ fi
+}