| # Copyright 1999-2024 Gentoo Authors |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| # Skeleton command: |
| # java-ebuilder --generate-ebuild --workdir . --pom pom.xml --download-uri https://github.com/apache/velocity-engine/archive/refs/tags/2.3.tar.gz --slot 0 --keywords "~amd64 ~x86" --ebuild velocity-2.3.ebuild |
| |
| EAPI=7 |
| |
| JAVA_PKG_IUSE="doc source test" |
| MAVEN_ID="org.apache.velocity:velocity-engine-core:2.3" |
| JAVA_TESTING_FRAMEWORKS="junit-4" |
| |
| inherit java-pkg-2 java-pkg-simple |
| |
| DESCRIPTION="Apache Velocity is a general purpose template engine" |
| HOMEPAGE="https://velocity.apache.org" |
| SRC_URI="https://github.com/apache/${PN}-engine/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz" |
| |
| LICENSE="Apache-2.0" |
| SLOT="0" |
| KEYWORDS="amd64 ~arm arm64 ppc64 x86" |
| |
| # Common dependencies |
| # POM: pom.xml |
| # commons-io:commons-io:2.8.0 -> >=dev-java/commons-io-2.8.0:1 |
| # org.apache.commons:commons-lang3:3.11 -> >=dev-java/commons-lang-3.11:3.6 |
| # org.slf4j:slf4j-api:1.7.30 -> >=dev-java/slf4j-api-1.7.30:0 |
| |
| CDEPEND=" |
| >=dev-java/commons-io-2.8.0:1 |
| >=dev-java/commons-lang-3.11:3.6 |
| >=dev-java/slf4j-api-1.7.30:0 |
| " |
| |
| # Compile dependencies |
| # POM: pom.xml |
| # test? junit:junit:4.13.2 -> >=dev-java/junit-4.13.2:4 |
| # test? org.hsqldb:hsqldb:2.5.1 -> !!!groupId-not-found!!! |
| # test? org.slf4j:slf4j-simple:1.7.30 -> >=dev-java/slf4j-simple-1.7.30:0 |
| |
| DEPEND=" |
| >=virtual/jdk-1.8:* |
| ${CDEPEND} |
| test? ( |
| dev-db/hsqldb:0 |
| >=dev-java/slf4j-simple-1.7.30:0 |
| ) |
| " |
| |
| RDEPEND=" |
| >=virtual/jre-1.8:* |
| ${CDEPEND} |
| " |
| |
| BDEPEND=" |
| dev-java/javacc:0 |
| " |
| |
| S="${WORKDIR}/${PN}-engine-${PV}/${PN}-engine-core" |
| PATCHES=( "${FILESDIR}/velocity-2.3-skipSecurityManager.patch" ) |
| |
| JAVA_GENTOO_CLASSPATH="commons-io-1,commons-lang-3.6,slf4j-api" |
| JAVA_SRC_DIR="src/main/java" |
| JAVA_RESOURCE_DIRS="src/main/resources" |
| |
| JAVA_TEST_GENTOO_CLASSPATH="junit-4,hsqldb,slf4j-simple" |
| JAVA_TEST_SRC_DIR="src/test/java" |
| JAVA_TEST_RESOURCE_DIRS="src/test/resources" |
| |
| JAVA_TEST_EXCLUDES=( |
| # org.junit.runners.model.InvalidTestClassError: Invalid test class, No runnable methods |
| "org.apache.velocity.test.RenderVelocityTemplateTest" |
| "org.apache.velocity.test.provider.TestNumber" |
| "org.apache.velocity.test.provider.TestProvider" |
| "org.apache.velocity.test.sql.TestDataSource" |
| "org.apache.velocity.test.misc.TestContext" |
| |
| # java.lang.IllegalArgumentException: Test class can only have one constructor |
| "org.apache.velocity.test.misc.TestLogger" |
| |
| # junit.framework.AssertionFailedError: Class org.apache.velocity.test.sql.BaseSQLTest has no public constructor TestCase(String name) or TestCase() |
| "org.apache.velocity.test.sql.BaseSQLTest" |
| |
| # requires configured jdbc |
| # junit.framework.AssertionFailedError: Exception in constructor: testSimpleTemplate (java.lang.NullPointerException |
| # junit.framework.AssertionFailedError: Exception in constructor: testNullTimestamp (java.lang.NullPointerException |
| # junit.framework.AssertionFailedError: Exception in constructor: testMacroInvocation (java.lang.NullPointerException |
| # junit.framework.AssertionFailedError: Exception in constructor: testRenderTool (java.lang.NullPointerException |
| "org.apache.velocity.test.sql.DataSourceResourceLoaderTestCase" |
| ) |
| |
| src_prepare() { |
| default #780585 |
| java-pkg-2_src_prepare |
| |
| cp -v "${JAVA_SRC_DIR}-templates/org/apache/velocity/runtime/VelocityEngineVersion.java" \ |
| "${JAVA_SRC_DIR}/org/apache/velocity/runtime/VelocityEngineVersion.java" || die |
| |
| sed -i "s/\${project.version}/${PV}/g" \ |
| "${JAVA_SRC_DIR}/org/apache/velocity/runtime/VelocityEngineVersion.java" || die |
| |
| # fix paths for tests |
| sed -i \ |
| -e "s%System.getProperty(\"test.compare.dir\")%\"${S}/target/test-classes\"%g" \ |
| -e "s%System.getProperty(\"test.result.dir\")%\"${S}/results\"%g" \ |
| "${JAVA_TEST_SRC_DIR}/org/apache/velocity/test/TemplateTestBase.java" || die |
| |
| sed -i \ |
| -e 's/\${parser.basename}/Standard/g' \ |
| -e 's/\${parser.package}/org.apache.velocity.runtime.parser/g' \ |
| -e 's/\${parser.char.asterisk}/\*/g' \ |
| -e 's/\${parser.char.at}/\@/g' \ |
| -e 's/\${parser.char.dollar}/\$/g' \ |
| -e 's/\${parser.char.hash}/\#/g' \ |
| "${S}/src/main/parser/Parser.jjt" || die |
| |
| # File "StandardParserTreeConstants.java" does not exist. Will create one. |
| # File "StandardParserVisitor.java" does not exist. Will create one. |
| # File "JJTStandardParserState.java" does not exist. Will create one. |
| jjtree -GRAMMAR_ENCODING=UTF-8 \ |
| -JDK_VERSION=1.8 \ |
| -BUILD_NODE_FILES=false \ |
| -MULTI=true \ |
| -NODE_PACKAGE=org.apache.velocity.runtime.parser.node \ |
| -NODE_USES_PARSER=true \ |
| -STATIC=false \ |
| -OUTPUT_DIRECTORY="${JAVA_SRC_DIR}/org/apache/velocity/runtime/parser/node" \ |
| "${S}/src/main/parser/Parser.jjt" \ |
| || die "Code generation via jjtree failed" |
| |
| javacc -GRAMMAR_ENCODING=UTF-8 \ |
| -JDK_VERSION=1.8 \ |
| -STATIC=false \ |
| -DEBUG_PARSER=false \ |
| -DEBUG_LOOKAHEAD=false \ |
| -DEBUG_TOKEN_MANAGER=false \ |
| -BUILD_PARSER=true \ |
| -TOKEN_MANAGER_USES_PARSER=true \ |
| -OUTPUT_DIRECTORY="${JAVA_SRC_DIR}" \ |
| "${JAVA_SRC_DIR}/org/apache/velocity/runtime/parser/node/Parser.jj" \ |
| || die "Parser.java code generation via javacc failed" |
| |
| # Avoid "error: duplicate class: org.apache.velocity.runtime.parser...." |
| rm -v "${JAVA_SRC_DIR}/CharStream.java" || die "cannot remove 'CharStream.java'" |
| rm -v "${JAVA_SRC_DIR}/ParseException.java" || die "cannot remove 'ParseException.java'" |
| } |