summaryrefslogtreecommitdiff
path: root/dev-java
diff options
context:
space:
mode:
authorCrucible <crucible@localhost>2026-10-15 03:05:03 -0500
committerCrucible <crucible@localhost>2026-10-15 03:05:03 -0500
commit12d66102ecbcb4a4eef51d1b7f06abe9080be243 (patch)
tree3fbf63175ea094d55f2853b4b70bcef5e48a6f57 /dev-java
parentf2908082da3eb11b2ab459032e0b91aaf4433ff2 (diff)
downloadsrcux-12d66102ecbcb4a4eef51d1b7f06abe9080be243.tar.gz
srcux-12d66102ecbcb4a4eef51d1b7f06abe9080be243.tar.xz
srcux-12d66102ecbcb4a4eef51d1b7f06abe9080be243.zip
Publish srcux candidate 0000000656-20261015-030307
Diffstat (limited to 'dev-java')
-rw-r--r--dev-java/ant/Manifest2
-rw-r--r--dev-java/ant/ant-1.10.15-r2.ebuild (renamed from dev-java/ant/ant-1.10.15-r1.ebuild)2
-rw-r--r--dev-java/ant/ant-1.10.18.ebuild386
-rw-r--r--dev-java/bsh-bsf-engine/Manifest1
-rw-r--r--dev-java/bsh-bsf-engine/bsh-bsf-engine-3.0.0_rc1.ebuild42
-rw-r--r--dev-java/bsh-bsf-engine/metadata.xml12
-rw-r--r--dev-java/bsh/Manifest1
-rw-r--r--dev-java/bsh/bsh-3.0.0_rc1.ebuild96
8 files changed, 541 insertions, 1 deletions
diff --git a/dev-java/ant/Manifest b/dev-java/ant/Manifest
index 8202ae31468b..ea868e411f84 100644
--- a/dev-java/ant/Manifest
+++ b/dev-java/ant/Manifest
@@ -1,2 +1,4 @@
DIST apache-ant-1.10.15-src.tar.xz 3780456 BLAKE2B c157b488ac5f207daf5afcec3368395cacd44d82e0b8e19cbdf637e8ea43bafd340fcb13aede1292f7a0b31ae82a968831c51dabebfccf2fafb6479aa79f7dc4 SHA512 7513c0909abcc2ebcbb552ec97eaa35f476e57fec54022755d2e83d9d6df5295e0d75274e687208a4689a30592c19a0df041dff511dd3690627b1734ee2171c5
DIST apache-ant-1.10.15-src.tar.xz.asc 833 BLAKE2B e8741004b141955c729778cb987034f133af174dfc07c75976c8eda13272703b9b6158c68594f54dfef47c0f546c43cc97176b2a9193263076251a75b2f12129 SHA512 3585f32ef230e502db6a376d6343c74eae390931ae6a5c842b668eda6fbce1557e5d400001bbb244544c186e9e51cae4c2c05ccd6ff38cdbb16899aff5d48659
+DIST apache-ant-1.10.18-src.tar.xz 3842048 BLAKE2B e26567ec836f6c9c964d980cb084b7fba506e5ac757ce87fe9ee8f1e6913a027b41c693f4c253a9bad89b445b7f4c769e5e0bc7c3176aa3132a68ab92cf382d8 SHA512 6749e9926996462f4c8934188f4d93a8f7accc38b6401567aef04d77ff6c253d501817c359b6e00bd89335ece0d1c992e92ba68937f2f2b4293049c0253fa57a
+DIST apache-ant-1.10.18-src.tar.xz.asc 256 BLAKE2B 8495f1ce42aeef5dddcd71c218175603c4aa14fc1eae73c8ec48cd86a36cc582c832c989072729b91ec8fa03855f8c238e156960c6c8f4767d9a276c391cbb37 SHA512 60ba3e9b39e987160d2e2f1da99f962d6f0a19cf26c9ac172bac3fe9d5da4cbe2d78fa28d946e8dc4ef17abc072f73d065b690a093e30ad20c3c089cb591289e
diff --git a/dev-java/ant/ant-1.10.15-r1.ebuild b/dev-java/ant/ant-1.10.15-r2.ebuild
index d1dce6837d65..93e1eeff4140 100644
--- a/dev-java/ant/ant-1.10.15-r1.ebuild
+++ b/dev-java/ant/ant-1.10.15-r2.ebuild
@@ -61,7 +61,7 @@ DEPEND="
test? (
dev-java/antunit:0
dev-java/bsf:2.3[javascript]
- dev-java/bsh:0
+ <=dev-java/bsh-2.1.1-r9999:0
dev-java/hamcrest-library:1.3
dev-java/xerces:2
)
diff --git a/dev-java/ant/ant-1.10.18.ebuild b/dev-java/ant/ant-1.10.18.ebuild
new file mode 100644
index 000000000000..d61611a484ff
--- /dev/null
+++ b/dev-java/ant/ant-1.10.18.ebuild
@@ -0,0 +1,386 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=9
+
+JAVA_PKG_IUSE="doc source test"
+JAVA_TESTING_FRAMEWORKS="junit-4"
+
+inherit java-pkg-2 java-pkg-simple verify-sig prefix
+
+DESCRIPTION="Java-based build tool similar to 'make' that uses XML configuration files"
+HOMEPAGE="https://ant.apache.org/"
+SRC_URI="mirror://apache/ant/source/apache-${P}-src.tar.xz
+ verify-sig? ( https://downloads.apache.org/ant/source/apache-${P}-src.tar.xz.asc )"
+S="${WORKDIR}/apache-${P}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~x64-macos ~x64-solaris"
+IUSE="antlr bcel bsf commonslogging commonsnet imageio jai jakartamail javamail jdepend
+ jmf jsch junit junit4 junitlauncher log4j oro regexp resolver swing testutil xalan xz"
+
+REQUIRED_USE="
+ junit4? ( junit )
+ test? ( bsf )
+ testutil? ( junit )
+"
+
+VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/ant.apache.org.asc"
+BDEPEND="verify-sig? ( >=sec-keys/openpgp-keys-apache-ant-20260402 )"
+# jdk-11:* because it needs java/util/spi/ToolProvider, available since Java 9.
+DEPEND="
+ >=virtual/jdk-11:*
+ bcel? ( dev-java/bcel:0 )
+ bsf? ( dev-java/bsf:2.3 )
+ commonslogging? ( >=dev-java/commons-logging-1.3.5-r1:0 )
+ commonsnet? ( dev-java/commons-net:0 )
+ jai? ( dev-java/sun-jai-bin:0 )
+ jakartamail? ( dev-java/jakarta-mail:0 )
+ javamail? (
+ dev-java/jakarta-activation-api:1
+ dev-java/javax-mail:0
+ )
+ jdepend? ( >=dev-java/jdepend-2.10-r1:0 )
+ jsch? ( dev-java/jsch:0 )
+ junit4? ( dev-java/junit:4 )
+ junit? ( dev-java/junit:4 )
+ junitlauncher? ( dev-java/junit:5[vintage] )
+ log4j? ( >=dev-java/log4j-12-api-2.25.2:0 )
+ oro? ( dev-java/jakarta-oro:2.0 )
+ regexp? ( dev-java/jakarta-regexp:1.4 )
+ resolver? ( dev-java/xml-commons-resolver:0 )
+ test? (
+ dev-java/antunit:0
+ dev-java/bsf:2.3[javascript]
+ >=dev-java/bsh-bsf-engine-3.0.0_beta1:0
+ dev-java/hamcrest-library:1.3
+ dev-java/xerces:2
+ )
+ xalan? (
+ dev-java/xalan:0
+ dev-java/xalan-serializer:0
+ )
+ xz? ( dev-java/xz-java:0 )
+"
+RDEPEND="
+ !dev-java/ant-apache-regexp
+ !dev-java/ant-apache-log4j
+ !dev-java/ant-apache-xalan2
+ !dev-java/ant-commons-logging
+ !<dev-java/ant-core-1.10.14
+ !dev-java/ant-swing
+ !dev-java/ant-junit4
+ !dev-java/ant-testutil
+ !dev-java/ant-junitlauncher
+ !dev-java/ant-jai
+ !dev-java/ant-commons-net
+ !dev-java/ant-apache-bsf
+ !dev-java/ant-jmf
+ !dev-java/ant-apache-oro
+ !dev-java/ant-javamail
+ !dev-java/ant-junit
+ !dev-java/ant-jdepend
+ !dev-java/ant-antlr
+ !dev-java/ant-apache-bcel
+ !dev-java/ant-apache-resolver
+ !dev-java/ant-jsch
+ !dev-java/ant-xz
+ >=virtual/jre-1.8:*
+"
+
+DOCS=( CONTRIBUTORS INSTALL NOTICE README WHATSNEW )
+PATCHES=(
+ "${FILESDIR}/1.10.9-launch.patch" # reusing this patch since the script has not changed
+ "${FILESDIR}/ant-1.10.14-AntlibTest.patch" # skips 1 of 6 tests
+ "${FILESDIR}/ant-1.10.14-AntTest.patch" # skips 1 of 32 tests
+ "${FILESDIR}/ant-1.10.14-JavaTest.patch" # skips 12 of 38 tests
+ "${FILESDIR}/ant-1.10.14-LinkTest.patch" # skips 4 of 67 tests
+ "${FILESDIR}/ant-1.10.14-PathTest.patch" # skips 1 of 33 tests
+)
+
+JAVADOC_SRC_DIRS=(
+ ant
+ ant-launcher/src/main
+)
+JAVA_TEST_GENTOO_CLASSPATH="
+ bsh-bsf-engine
+ hamcrest-library-1.3
+ junit-4
+ xerces-2
+"
+JAVA_TEST_RESOURCE_DIRS=(
+ "src/etc/testcases"
+ "src/main"
+)
+JAVA_TEST_SRC_DIR="src/tests/junit"
+
+# $1 ant-apache-bsf (source directory)
+# $2 bsf-2.3 (classpath of external dependency)
+taskdeps() {
+ if [[ ${task} == $1 ]]; then
+ JAVA_CLASSPATH_EXTRA="${2}"
+ JAVADOC_CLASSPATH+=" ${2}"
+ JAVADOC_SRC_DIRS+=( "${task}/src/main" )
+ JAVA_RESOURCE_DIRS="${3}"
+ fi
+}
+
+src_prepare() {
+ java-pkg-2_src_prepare
+ java-pkg_clean ! -path "./src/etc/*" # keep test resources
+
+ eprefixify "src/script/ant"
+
+ ANT_TASKS=(
+ $(use antlr && echo ant-antlr) # no dependencies
+ $(use bcel && echo ant-apache-bcel)
+ $(use bsf && echo ant-apache-bsf) # REQUIRED_USE for tests
+ $(use log4j && echo ant-apache-log4j)
+ $(use oro && echo ant-apache-oro) # ORO is retired - replace with java.util.regex?
+ $(use regexp && echo ant-apache-regexp)
+ $(use resolver && echo ant-apache-resolver)
+ $(use xalan && echo ant-apache-xalan2)
+ $(use commonslogging && echo ant-commons-logging)
+ $(use commonsnet && echo ant-commons-net)
+ $(use imageio && echo ant-imageio) # no dependencies
+ $(use jai && echo ant-jai)
+ $(use jakartamail && echo ant-jakartamail)
+ $(use javamail && echo ant-javamail)
+ $(use jdepend && echo ant-jdepend)
+ $(use jmf && echo ant-jmf) # no dependencies
+ $(use jsch && echo ant-jsch)
+ $(use junit && echo ant-junit) # REQUIRED_USE for junit4 and for testutil
+ $(use junit4 && echo ant-junit4)
+ $(use junitlauncher && echo ant-junitlauncher)
+ # depends on "com.ibm.netrexx:netrexx:2.0.5" which is
+ # available on https://www.netrexx.org/downloads.nsp and states:
+ # "IBM's last NetRexx release, suitable for JVM versions 1.5 and below [...]"
+ # $(use netrexx && echo ant-netrexx) # src/etc/poms/ant-netrexx/pom.xml
+ $(use swing && echo ant-swing) # no dependencies
+ $(use testutil && echo ant-testutil)
+ $(use xz && echo ant-xz)
+ )
+
+ # defaultManifest.mf
+ sed -e "s:\${project.version}:${PV}:" \
+ -i src/main/org/apache/tools/ant/defaultManifest.mf || die
+
+ # version.txt
+ local mydate="$(date '+%B %d %Y')"
+ echo "VERSION=${PV}" > src/main/org/apache/tools/ant/version.txt || die
+ echo "DATE=${mydate}" >> src/main/org/apache/tools/ant/version.txt || die
+
+ # src directory for ant.jar
+ mkdir ant || die "cannot create src directory for ant"
+ cp -r {src/main/,ant}/org || die "cannot copy ant sources"
+
+ # resources directory for ant.jar according to lines 317-325 src/etc/poms/ant/pom.xml
+ local INCLUDES=( $(
+ sed -n '/<resources>/,/<\/resources>/p' \
+ src/etc/poms/ant/pom.xml \
+ | grep org \
+ | sed -e 's:.*<include>\(.*\)</include>:\1:' || die
+ ))
+ cp -r {src/,ant}/resources || die "cannot copy ant resources"
+ pushd src/main > /dev/null || die "pushd src/main"
+ cp --parents -v "${INCLUDES[@]}" ../../ant/resources || die "CANNOT"
+ popd > /dev/null || die "popd"
+
+ # Remove sources according to lines 158-187 src/etc/poms/ant/pom.xml
+ # We don't remove anything from src/main/org
+ local EXCLUDES=$(
+ sed -n '/<excludes>/,/<\/excludes/p' \
+ src/etc/poms/ant/pom.xml \
+ | grep org \
+ | sed -e 's:<exclude>\(.*\)</exclude>:ant/\1:' || die
+ )
+ rm -r ${EXCLUDES} || die
+ # Remove one more file directly, could not get it with sed.
+ rm ant/org/apache/tools/ant/taskdefs/optional/ANTLR.java || die
+
+ # Same handling for everything between <testExcludes> </testExcludes>
+ # Removing non-existing files is not possible: We ignore them ( grep -v ).
+ local TEST_EXCLUDES=$(
+ sed -n '/<testExcludes>/,/<\/testExcludes/p' \
+ src/etc/poms/ant/pom.xml \
+ | grep org \
+ | grep -v CommonsLoggingListener \
+ | grep -v Log4jListener \
+ | sed -e 's:<exclude>\(.*\)</exclude>:src/tests/junit/\1:' || die
+ )
+ rm -r ${TEST_EXCLUDES} || die
+
+ # Prepare a separate JAVA_SRC_DIR directory for each jar file to be created.
+ einfo "Copy source files of ant-tasks"
+ local task
+ for task in ant-launcher "${ANT_TASKS[@]}"; do
+ # "${task}/src/main" will be JAVA_SRC_DIR
+ mkdir -p "${task}/src/main" || die "mkdir ${task}"
+ # Read from pom.xml the file names which can still contain wildcards
+ local INCLUDES=( $(
+ sed -n '/<includes>/,/<\/includes>/p' "src/etc/poms/${task}/pom.xml" \
+ | grep org \
+ | sed -e 's:.*<include>\(.*\)</include>:\1:' || die
+ ))
+ local sourcefile
+ # Resolve wildcards in file names using find and copy the files to the corresponding
+ # "${task}"/src/main directory
+ # echo "${INCLUDES[@]}"
+ for sourcefile in "${INCLUDES[@]}"; do
+ # einfo "${task}: ${sourcefile}"
+ # Parameter substitution % to remove trailing slash from ${sourcefile}.
+ # Applies to ant-jdepend and ant-junitlauncher where find would otherwise fail.
+ find \
+ -path "./src/*/${sourcefile%/}" \
+ -exec cp -r --parents "{}" \
+ "${task}/src/main" \;
+ done
+ # tree "${task}"
+ done
+
+ # JAVA_RESOURCE_DIRS for ant-junit
+ mkdir -p ant-junit/src/resources/org/apache/tools/ant/taskdefs/optional/junit/xsl \
+ || die "junit resource dir"
+ cp src/etc/{junit-frames,junit-noframes,junit-frames-saxon,junit-noframes-saxon}.xsl \
+ ant-junit/src/resources/org/apache/tools/ant/taskdefs/optional/junit/xsl \
+ || die "junit resources"
+}
+
+src_compile() {
+ einfo "Compiling ant-launcher.jar"
+ JAVA_JAR_FILENAME="ant-launcher.jar"
+ JAVA_MAIN_CLASS="org.apache.tools.ant.launch.Launcher"
+ JAVA_SRC_DIR="ant-launcher/src/main"
+ java-pkg-simple_src_compile
+ JAVA_GENTOO_CLASSPATH_EXTRA+=":ant-launcher.jar"
+ rm -r target || die
+
+ einfo "Compiling ant.jar"
+ JAVA_JAR_FILENAME="ant.jar"
+ JAVA_LAUNCHER_FILENAME="ant"
+ JAVA_MAIN_CLASS="org.apache.tools.ant.Main"
+ JAVA_RESOURCE_DIRS="ant/resources"
+ JAVA_SRC_DIR="ant"
+ java-pkg-simple_src_compile
+ JAVA_GENTOO_CLASSPATH_EXTRA+=":ant.jar"
+ rm -r target || die
+
+ local task
+ for task in "${ANT_TASKS[@]}"; do
+ einfo "Compiling ${task}"
+ JAVA_JAR_FILENAME="${task}.jar"
+ JAVA_MAIN_CLASS=""
+ JAVA_RESOURCE_DIRS=""
+ JAVA_SRC_DIR=""
+
+ JAVA_SRC_DIR="${task}/src/main"
+ taskdeps ant-apache-bcel bcel
+ taskdeps ant-apache-bsf bsf-2.3
+ taskdeps ant-apache-log4j log4j-12-api
+ taskdeps ant-apache-oro jakarta-oro-2.0
+ taskdeps ant-apache-regexp jakarta-regexp-1.4
+ taskdeps ant-apache-resolver xml-commons-resolver
+ taskdeps ant-apache-xalan2 xalan
+ taskdeps ant-commons-logging commons-logging
+ taskdeps ant-commons-net commons-net
+ taskdeps ant-jai sun-jai-bin
+ taskdeps ant-jakartamail jakarta-mail
+ taskdeps ant-javamail 'javax-mail jakarta-activation-api-1'
+ taskdeps ant-jdepend jdepend
+ taskdeps ant-jsch jsch
+ taskdeps ant-junit junit-4 ant-junit/src/resources
+ taskdeps ant-junit4 junit-4
+ taskdeps ant-junitlauncher junit-5
+ # $(use netrexx && echo ant-netrexx)
+ taskdeps ant-xz xz-java
+
+ java-pkg-simple_src_compile
+ JAVA_GENTOO_CLASSPATH_EXTRA+=":${task}.jar"
+ rm -fr target || die
+ done
+ use doc && ejavadoc
+}
+
+src_test() {
+ # Avoid "--with-dependencies" as used by JAVA_TEST_GENTOO_CLASSPATH.
+ # dev-java/antunit has a circular dependency with dev-java/ant[test]
+ JAVA_GENTOO_CLASSPATH_EXTRA+=":$(java-pkg_getjars --build-only antunit)"
+ # according to line 115 src/etc/poms/ant/pom.xml
+ jar -cvf src/etc/testcases/org/apache/tools/ant/taskdefs/test2-antlib.jar \
+ -C src/etc/testcases taskdefs/test.antlib.xml || die "cannot test2-antlib.jar"
+
+ JAVA_TEST_EXCLUDES=(
+ # according to lines 1956-1964 build.xml (abstract classes, not testcases)
+ org.apache.tools.ant.taskdefs.TaskdefsTest
+ org.apache.tools.ant.BuildFileTest
+ org.apache.tools.ant.util.regexp.RegexpMatcherTest
+ org.apache.tools.ant.util.regexp.RegexpTest
+ org.apache.tools.ant.types.selectors.BaseSelectorTest
+ # according to line 1970 build.xml (helper classes, not testcases)
+ org.apache.tools.ant.TestHelper
+ # lines 2097-2102 build.xml (interactive tests)
+ org.apache.tools.ant.taskdefs.TestProcess # 1. No runnable methods
+ # 1) testAll(org.apache.tools.ant.taskdefs.InitializeClassTest)
+ # /var/tmp/portage/dev-java/ant-1.10.14/work/apache-ant-1.10.14/
+ # src/etc/testcases/taskdefs/initializeclass.xml:24: Java returned: 1
+ # <pathelement path="${build.tests.value}"/>
+ # <pathelement location="${java.home}/lib/classes.zip"/>
+ org.apache.tools.ant.taskdefs.InitializeClassTest # Tests run: 1, Failures: 1
+ org.apache.tools.mail.MailMessageTest # all tests in this test-class fail
+ org.apache.tools.ant.taskdefs.condition.HttpTest # needs network access
+ org.apache.tools.ant.taskdefs.GetTest # needs network access
+ )
+
+# tests with patches to be revisited
+# JAVA_TEST_RUN_ONLY=(
+# org.apache.tools.ant.taskdefs.AntlibTest # Tests run: 6, Failures: 1 test2-antlib.jar?
+# org.apache.tools.ant.taskdefs.AntTest # Tests run: 32, Failures: 1
+# org.apache.tools.ant.taskdefs.JavaTest # Tests run: 38, Failures: 12
+# org.apache.tools.ant.taskdefs.modules.LinkTest # Tests run: 67, Failures: 4
+# org.apache.tools.ant.types.PathTest # Tests run: 33, Failures: 1
+# )
+
+ # according to lines 276-297 src/etc/poms/ant/pom.xml
+ JAVA_TEST_EXTRA_ARGS=(
+ -Dant.home="${ANT_HOME}"
+ -Dbuild.classes.value=../../../target/test-classes # needed for org.apache.tools.ant.taskdefs.SignJarTest
+ -Dbuild.tests.value=target/test-classes
+ -Doffline=true
+ -Dant.test.basedir.ignore=true
+ )
+ java-pkg-simple_src_test
+}
+
+src_install() {
+ java-pkg_dojar ant.jar ant-launcher.jar
+
+ for task in "${ANT_TASKS[@]}"; do
+ java-pkg_dojar "${task}.jar"
+ java-pkg_register-ant-task --version "${PV}" "${task}"
+ done
+
+ dobin src/script/ant
+
+ dodir /usr/share/ant/bin
+ for each in antRun antRun.pl runant.pl runant.py ; do
+ dobin "${S}/src/script/${each}"
+ done
+
+ insinto /usr/share/ant/etc
+ doins -r src/etc/*.xsl
+ insinto /usr/share/ant/etc/checkstyle
+ doins -r src/etc/checkstyle/*.xsl
+
+ echo "ANT_HOME=\"${EPREFIX}/usr/share/ant\"" > "${T}/20ant"
+ doenvd "${T}/20ant"
+
+ einstalldocs
+ if use doc; then
+ java-pkg_dojavadoc target/api
+ docinto html
+ dodoc -r manual
+ fi
+
+ use source && java-pkg_dosrc src/main/*
+}
diff --git a/dev-java/bsh-bsf-engine/Manifest b/dev-java/bsh-bsf-engine/Manifest
new file mode 100644
index 000000000000..f3e4e2170f32
--- /dev/null
+++ b/dev-java/bsh-bsf-engine/Manifest
@@ -0,0 +1 @@
+DIST bsh-3.0.0_rc1.tar.gz 798599 BLAKE2B 7c397697419a5032a18ec93ca192289dae413930cb9f708b38fb223de2e7ce1309e800b17b3c8fdaab88b41a098d3945d454fb12010cd7385f9c95f7d0de6fb4 SHA512 905b093cdeb2226202cc9bfcb8ad87129f415531d6532db4f5d9e111dc3b22474ce8704a2129e0d41448f8f147a45a409b457d78bc3e480e1555e74c75b7135d
diff --git a/dev-java/bsh-bsf-engine/bsh-bsf-engine-3.0.0_rc1.ebuild b/dev-java/bsh-bsf-engine/bsh-bsf-engine-3.0.0_rc1.ebuild
new file mode 100644
index 000000000000..bbd9d88275fd
--- /dev/null
+++ b/dev-java/bsh-bsf-engine/bsh-bsf-engine-3.0.0_rc1.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=9
+
+JAVA_PKG_IUSE="doc source test"
+JAVA_TESTING_FRAMEWORKS="junit-4"
+
+inherit java-pkg-2 java-pkg-simple
+
+DESCRIPTION="Beanshell BSF engine"
+HOMEPAGE="https://github.com/beanshell/beanshell"
+SRC_URI="https://github.com/beanshell/beanshell/archive/${PV/_rc/RC}.tar.gz -> bsh-${PV}.tar.gz"
+S="${WORKDIR}/beanshell-${PV/_rc/RC}"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~amd64"
+
+CP_DEPEND="
+ ~dev-java/bsh-${PV}:0
+ dev-java/bsf:2.3
+"
+
+DEPEND="
+ ${CP_DEPEND}
+ >=virtual/jdk-1.8:*
+"
+
+RDEPEND="
+ ${CP_DEPEND}
+ >=virtual/jre-1.8:*
+"
+
+DOCS=( {CHANGES,HISTORY,MIGRATION,README}.md NOTICE )
+
+# JAVA_LAUNCHER_FILENAME="bsh-console"
+# JAVA_MAIN_CLASS="bsh.Console"
+# JAVA_RESOURCE_DIRS="src/main/resources"
+JAVA_SRC_DIR="bsh-bsf-engine/src/main/java"
+JAVA_TEST_GENTOO_CLASSPATH="junit-4"
+JAVA_TEST_SRC_DIR="bsh-bsf-engine/src/test/java"
diff --git a/dev-java/bsh-bsf-engine/metadata.xml b/dev-java/bsh-bsf-engine/metadata.xml
new file mode 100644
index 000000000000..5e0507412430
--- /dev/null
+++ b/dev-java/bsh-bsf-engine/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://srcux.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>java@gentoo.org</email>
+ <name>Java</name>
+ </maintainer>
+ <upstream>
+ <doc>https://beanshell.org/manual/bsf.html</doc>
+ </upstream>
+ <origin>srcux</origin>
+</pkgmetadata>
diff --git a/dev-java/bsh/Manifest b/dev-java/bsh/Manifest
index f4efff50c5dc..6c830a929dc9 100644
--- a/dev-java/bsh/Manifest
+++ b/dev-java/bsh/Manifest
@@ -1 +1,2 @@
DIST bsh-2.1.1.tar.gz 1922883 BLAKE2B d60ebfab96f81a17120733887468571dd991dce663d725d9bee2dc44146e320d36600be70a3b7f76516645030d40fcda17db70989d54e98ffdc69c91738bcaf1 SHA512 585fcb9fdc8c36063a7d4dfe9a909e68b61d611f023731c955b7ced3f894cb6c48b0d463735e6825cb6f0181ba97902279212d285e325267aa533490e0bbfe00
+DIST bsh-3.0.0_rc1.tar.gz 798599 BLAKE2B 7c397697419a5032a18ec93ca192289dae413930cb9f708b38fb223de2e7ce1309e800b17b3c8fdaab88b41a098d3945d454fb12010cd7385f9c95f7d0de6fb4 SHA512 905b093cdeb2226202cc9bfcb8ad87129f415531d6532db4f5d9e111dc3b22474ce8704a2129e0d41448f8f147a45a409b457d78bc3e480e1555e74c75b7135d
diff --git a/dev-java/bsh/bsh-3.0.0_rc1.ebuild b/dev-java/bsh/bsh-3.0.0_rc1.ebuild
new file mode 100644
index 000000000000..e1a20049d9c7
--- /dev/null
+++ b/dev-java/bsh/bsh-3.0.0_rc1.ebuild
@@ -0,0 +1,96 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=9
+
+JAVA_PKG_IUSE="doc source test"
+JAVA_TESTING_FRAMEWORKS="junit-4"
+
+inherit java-pkg-2 java-pkg-simple
+
+JAVACC_SLOT="8"
+
+DESCRIPTION="A small embeddable Java source interpreter"
+HOMEPAGE="https://github.com/beanshell/beanshell"
+SRC_URI="https://github.com/beanshell/beanshell/archive/${PV/_rc/RC}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/beanshell-${PV/_rc/RC}"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+DEPEND="
+ dev-java/javacc:${JAVACC_SLOT}
+ dev-java/javacc-java:${JAVACC_SLOT}
+ >=virtual/jdk-1.8:*
+ test? (
+ dev-java/hamcrest-core:1.3
+ dev-java/hamcrest-library:1.3
+ >=dev-java/jmh-core-1.37:0
+ )
+"
+
+RDEPEND=">=virtual/jre-1.8:*"
+
+DOCS=( {CHANGES,HISTORY,MIGRATION,README}.md NOTICE )
+
+# src/main/java/bsh/Interpreter.java:1100: error: invalid use of a restricted identifier 'yield'
+JAVADOC_ARGS="-source 8"
+# JAVA_GENTOO_CLASSPATH="asm"
+JAVA_LAUNCHER_FILENAME="bsh-console"
+JAVA_MAIN_CLASS="bsh.Console"
+JAVA_RESOURCE_DIRS="src/main/resources"
+
+# Attempts to unbundle asm would cause some test failures.
+# JAVA_SRC_DIR=( src/main/java -type f ! -path '*/objectweb/*' ) # unbundle asm
+JAVA_SRC_DIR="src/main/java"
+JAVA_TEST_EXCLUDES=(
+ mypackage.ReflectTest # Invalid
+ bsh.TestFilter # Invalid
+ bsh.TestUtil # Invalid
+ # All 3 tests of of following test-class fail
+ bsh.SharedInterpreterEvalConcurrencyTest
+)
+JAVA_TEST_GENTOO_CLASSPATH="hamcrest-core-1.3 hamcrest-library-1.3 jmh-core junit-4"
+JAVA_TEST_RESOURCE_DIRS="src/test/resources"
+JAVA_TEST_SRC_DIR="src/test/java"
+
+src_prepare() {
+ java-pkg-2_src_prepare
+ cat <<- VERSION > src/main/resources/bsh/version.properties || die "version.properties"
+ build=1234
+ release=${PV/_rc/RC}
+ VERSION
+
+# sed \
+# -i -e 's:bsh.org.objectweb.asm:org.objectweb.asm:' \
+# src/main/java/bsh/BshLambda.java \
+# src/main/java/bsh/ClassGeneratorUtil.java \
+# src/test/java/bsh/BshLambdaClassLoadingTest.java \
+# src/test/java/bsh/ClassLifecycleConcurrencyTest.java \
+# src/test/java/bsh/ReflectTest.java
+
+ local CP="$(java-pkg_getjars --build-only javacc-${JAVACC_SLOT},javacc-java-${JAVACC_SLOT})"
+ "$(java-config -J)" -cp "${CP}" org.javacc.jjtree.Main \
+ -JJTREE_OUTPUT_DIRECTORY="jjtree-out" \
+ "src/main/jjtree/bsh.jjt" || die "jjtree"
+
+ "$(java-config -J)" -cp "${CP}" org.javacc.parser.Main \
+ -OUTPUT_DIRECTORY="javacc-out" \
+ jjtree-out/bsh.jj || die "javacc"
+
+ cp --update=none -v jjtree-out/*.java src/main/java/bsh || die
+ cp --update=none -v javacc-out/*.java src/main/java/bsh || die
+
+ # This test ramdomly fails or passes.
+ # Settings accoding to pom.xml, line 292, don't help.
+ # JAVA_TEST_EXTRA_ARGS="-Xmx1000M -Xms500M" # pom.xml, line 292
+ rm -v src/test/resources/test-scripts/trycatch_ome.bsh || die
+}
+
+src_install() {
+# use source && JAVA_SRC_DIR=( src/main/java )
+ java-pkg-simple_src_install
+ # The eclass installs only the main launcher.
+ java-pkg_dolauncher "${PN}-interpreter" --main bsh.Interpreter
+}