# Copyright 1999-2016 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 EAPI=5 JAVA_PKG_IUSE="doc source" inherit java-pkg-2 java-pkg-simple versionator # Switch to ^^ when we switch to EAPI=6. #MY_PN="${PN^^}" MY_PN="GROOVY" MY_PV="$(replace_all_version_separators _ ${PV})" MY_P="${MY_PN}_${MY_PV}" DESCRIPTION="A multi-faceted language for the Java platform" HOMEPAGE="http://www.groovy-lang.org/" SRC_URI="https://github.com/apache/incubator-${PN}/archive/${MY_P}.zip -> ${P}.zip" LICENSE="Apache-2.0" SLOT="0" KEYWORDS="amd64 ppc64 x86" IUSE="" CDEPEND=" dev-java/jansi:0 dev-java/xstream:0 dev-java/commons-cli:1 >=dev-java/asm-5.0.3:4 >=dev-java/antlr-2.7.7-r7:0" RDEPEND=" ${CDEPEND} >=virtual/jre-1.6" DEPEND=" ${CDEPEND} >=virtual/jdk-1.6 source? ( app-arch/zip )" JAVA_GENTOO_CLASSPATH=" asm-4 antlr jansi xstream commons-cli-1 " S="${WORKDIR}/incubator-${PN}-${MY_P}" # ExceptionUtil filename. EU="ExceptionUtils.java" # List of antlr grammar files. ANTLR_GRAMMAR_FILES=( org/codehaus/groovy/antlr/groovy.g org/codehaus/groovy/antlr/java/java.g ) # Patches utils.gradle. It basically rewrites ExceptionUtils. PATCHES=( "${FILESDIR}"/"${P}-utils.gradle.patch" ) # Add target/classes to the CP as we're generating an extra class there. JAVA_GENTOO_CLASSPATH_EXTRA="target/classes" # This function cleans up the source directory. # We're ONLY interested in the "src/main" directory content and nothing else. # (for the time being). groovy_cleanup_source_files() { ebegin "Cleaning up useless files" mv src/main "${T}" || die mv gradle/utils.gradle "${T}" || die rm -rf * || die mv "${T}"/main/* . || die rm -rf "${T}"/main || die eend $? } java_prepare() { epatch "${PATCHES[@]}" groovy_cleanup_source_files } # This function generates the ANTLR grammar files. generate_antlr_grammar() { for grammar_file in "${@}"; do local my_grammar_file=$(basename ${grammar_file}) einfo "Generating \"${my_grammar_file}\" grammar file" local my_grammar_dir=$(dirname ${grammar_file}) cd "${S}/${my_grammar_dir}" || die antlr ${my_grammar_file} || die cd "${S}" || die done } # This function generates ExceptionUtils.class. # ExceptionUtils is a helper class needed when compiling Groovy 2.x. # Normally, this class is generated via a Gradle task at compile time. Since we # don't use Gradle here.. we've translated it into a plain Java file and have # it generate the same data. generate_exceptionutils() { ebegin "Copying ${EU}" mv "${T}/utils.gradle" "${EU}" || die eend $? ejavac -classpath "$(java-pkg_getjar --build-only asm-4 asm.jar)" ${EU} ebegin "Running ${EU%.java}" $(java-config -J) -classpath "$(java-pkg_getjar --build-only asm-4 asm.jar):." ${EU%.java} || die eend $? } src_compile() { generate_antlr_grammar "${ANTLR_GRAMMAR_FILES[@]}" generate_exceptionutils java-pkg-simple_src_compile } src_install() { java-pkg_dolauncher "groovyc" --main org.codehaus.groovy.tools.FileSystemCompiler java-pkg_dolauncher "groovy" --main groovy.ui.GroovyMain java-pkg-simple_src_install # TODO: groovy console and groovy shell are parts of the "subprojects" # directory. figure out a way to compile them. :\ # java-pkg_dolauncher "groovysh" --main groovy.ui.InteractiveShell # java-pkg_dolauncher "groovyConsole" --main groovy.ui.Console # TODO: grape is written in groovy and to compile it, you need .. groovy. # java-pkg_dolauncher "grape" --main org.codehaus.groovy.tools.GrapeMain }