diff options
| author | Crucible <crucible@localhost> | 2026-10-21 17:46:18 -0500 |
|---|---|---|
| committer | Crucible <crucible@localhost> | 2026-10-21 17:46:18 -0500 |
| commit | dd7c7f0914b2eb83ac283441de30766578426392 (patch) | |
| tree | 70f6a0ebb66404cccfe9f4dea292bf5482cda401 /dev-java/yajsw | |
| parent | 7f39132ab3dd3cb51fa99aabd48800725855dfbb (diff) | |
| download | srcux-dd7c7f0914b2eb83ac283441de30766578426392.tar.gz srcux-dd7c7f0914b2eb83ac283441de30766578426392.tar.xz srcux-dd7c7f0914b2eb83ac283441de30766578426392.zip | |
Publish srcux candidate 0000000776-20261021-173123
Diffstat (limited to 'dev-java/yajsw')
| -rw-r--r-- | dev-java/yajsw/Manifest | 1 | ||||
| -rw-r--r-- | dev-java/yajsw/files/yajsw-14.01-build-fixes.patch | 42 | ||||
| -rw-r--r-- | dev-java/yajsw/files/yajsw-14.01-javadoc.patch | 15 | ||||
| -rw-r--r-- | dev-java/yajsw/files/yajsw-14.01-keystore.patch | 13 | ||||
| -rw-r--r-- | dev-java/yajsw/files/yajsw-14.01-paths.patch | 37 | ||||
| -rw-r--r-- | dev-java/yajsw/files/yajsw-14.01-system-libs.patch | 112 | ||||
| -rw-r--r-- | dev-java/yajsw/files/yajsw-14.01-system-native.patch | 26 | ||||
| -rw-r--r-- | dev-java/yajsw/metadata.xml | 15 | ||||
| -rw-r--r-- | dev-java/yajsw/yajsw-14.01.ebuild | 151 |
9 files changed, 412 insertions, 0 deletions
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 +} |
