# 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 }