# Copyright 1999-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ EAPI="1" JAVA_PKG_IUSE="doc source" inherit eutils java-pkg-2 java-ant-2 DESCRIPTION="Java framework" HOMEPAGE="http://www.springsource.com/" SRC_URI="http://s3.amazonaws.com/dist.springframework.org/release/SPR/${P}-with-dependencies.zip" LICENSE="Apache-2.0" SLOT="2.5" KEYWORDS="~amd64" IUSE="aop beans context jdbc jms orm test tx web webmvc depend rdepend" COMMON_DEP=" dev-java/asm:2 dev-java/bsh:0 dev-java/backport-util-concurrent:0 dev-java/c3p0:0 dev-java/cglib:2.1 dev-java/dom4j:1 dev-java/itext:0 dev-java/jexcelapi:2.5 dev-java/log4j:0 dev-java/poi:0 dev-java/portletapi:1 dev-java/struts:1.2 www-servers/tomcat:5.5" RDEPEND=">=virtual/jre-1.5 ${COMMON_DEP}" # not sure about ant requirements DEPEND=">=virtual/jdk-1.5 app-arch/unzip >=dev-java/ant-1.7 dev-java/aopalliance:1 ${COMMON_DEP}" # to record dependencies build_deps="" run_deps="" src_unpack(){ unpack ${A} remove_lib ant || die remove_lib antlr || die replace_lib aopalliance-1 || die # build.xml contains hardcoded versions -> patch replace_lib asm-2 || die # 1.2 not new enough - needs :1.6? # replace_lib aspectj-1.6 record_lib aspectj || die # fetch restricted dependecies # replace_lib axis || die record_lib axis || die replace_lib bsh || die replace_lib c3p0 || die # hard masked # newreplace_lib caucho hessian-3.1 || die record_lib caucho || die replace_lib cglib-2.1 || die # not in portage record_lib commonj || die newreplace_lib concurrent backport-util-concurrent || die replace_lib dom4j-1 || die # java-overlay - tested: works with dev-java/easymock-1.2 # replace_lib easymock-1 || die record_lib easymock || die # not in portage # replace_lib eclipselink || die record_lib eclipselink || die # masked - tested: needs :1.5? # replace_lib ehcache-1.5 || die record_lib ehcache || die # masked, masked dependencies -tested: works with dev-java/freemarker-2.3.13 # replace_lib freemarker-2.3 || die record_lib freemarker || die # some glassfish stuff in portage # replace_lib glassfish || die record_lib glassfish || die # masked - tested: works with dev-java/groovy-1.5.4-r1 # replace_lib groovy-1 || die record_lib groovy || die # masked - masked and fetch restricted dependencies # replace_lib hibernate || die record_lib hibernate || die remove_lib hsqldb || die # not in portage # replace_lib ibatis || die record_lib ibatis || die replace_lib itext || die # masked # replace_lib j2ee record_lib j2ee || die # there is some jakarta stuff in portage # replace_lib jakarta-commons record_lib jakarta-commons || die # replace_lib jakarta-taglibs || die record_lib jakarta-taglibs || die # masked - tested: works with dev-java/jamon-1.01-r2 # replace_lib jamon-1 || die record_lib jamon || die # 0.9 not new enough # replace_lib jarjar-1 || die record_lib jarjar || die # not in portage # replace_lib jasperreports || die record_lib jasperreports || die remove_lib javassist || die remove_lib jaxws || die # not in portage # replace_lib jdo || die record_lib jdo || die replace_lib jexcelapi-2.5 || die remove_lib jmx || die # java-overlay - tested : dependencie not downloadable # replace_lib jotm || die record_lib jotm || die # masked, masked dependencie - tested: works with jruby-1.0.3 # replace_lib jruby || die record_lib jruby || die # needs 3.8.2 and 4.4 or just a fix in build.xml? # replace_lib junit || die record_lib junit || die replace_lib log4j || die remove_lib maven || die # not in portage # replace_lib oc4j || die record_lib oc4j || die # not in portage # replace_lib openjpa || die record_lib openjpa || die replace_lib poi || die newreplace_lib portlet portletapi-1 || die # needs :1.5? # replace_lib qdox-1.5 || die record_lib qdox || die # not in portage # replace_lib quartz || die record_lib quartz || die remove_lib serp || die remove_lib slf4j || die replace_lib struts-1.2 || die # java-overlay - tested : not downloadable # replace_lib testng || die record_lib testng || die # not in portage # replace_lib tiles || die record_lib tiles || die replace_lib tomcat-5.5 || die # not in portage # replace_lib toplink || die record_lib toplink || die # fetch restricted dependencies # replace_lib velocity || die record_lib velocity || die # not in portage # replace_lib websphere || die record_lib websphere || die cd "${S}" epatch "${FILESDIR}/${P}-build.xml.patch" } EANT_BUILD_TARGET="modulejars" EANT_DOC_TARGET="javadoc" src_install() { local mod="dist/modules/spring" # the spring modules java-pkg_dojar "${mod}-core.jar" use aop && java-pkg_dojar "${mod}-aop.jar" use beans && java-pkg_dojar "${mod}-beans.jar" use context && java-pkg_dojar "${mod}-context.jar" \ && java-pkg_dojar "${mod}-context-support.jar" use jdbc && java-pkg_dojar "${mod}-jdbc.jar" use jms && java-pkg_dojar "${mod}-jms.jar" use orm && java-pkg_dojar "${mod}-orm.jar" use test && java-pkg_dojar "${mod}-test.jar" use tx && java-pkg_dojar "${mod}-tx.jar" use web && java-pkg_dojar "${mod}-web.jar" use webmvc && java-pkg_dojar "${mod}-webmvc.jar" \ && java-pkg_dojar "${mod}-webmvc-portlet.jar" \ && java-pkg_dojar "${mod}-webmvc-struts.jar" # binary dependencies # using dojar to prevent version conflicts use depend && java-pkg_dojar $build_deps use rdepend && java-pkg_dojar $run_deps # java package specific use doc && java-pkg_dohtml -r docs use source && java-pkg_dosrc src } pkg_postinst () { einfo einfo "There are two sets of possible runtime dependencies witch you can" einfo "pull in by setting the depend and/or rdepend useflag" einfo einfo "Note: some modules pack their dependencies into the archive" einfo einfo "\"depend\" contains the binary libraries witch were used during" einfo "compiling whereas \"rdepend\" contains the rest of the delivered" einfo "precompiled libraries" einfo einfo "Note: aspectjtools.jar is not bundeled with ${PN}." einfo } ################################################################################ # 1: library name remove_lib() { cd "${S}/" local deps="`find "lib/$1/" -type f -name \*.jar -print0 | xargs --null` " use rdepend && run_deps=$run_deps$deps use rdepend || einfo "removing unneded libraries:" \ && rm -Rv "lib/$1" } # 1: libary name in /usr/share # 2: additional arguments for java-pkg_jar-from replace_lib() { einfo "replacing binaries in lib/${1%%-[\.0-9]*}/ by Gentooos." cd "${S}/lib/${1%%-[\.0-9]*}/" rm -R * java-pkg_jar-from $1 $2 } # 1: libary name # 2: libary name in /usr/share # 3: additional arguments for java-pkg_jar-from newreplace_lib() { einfo "replacing binaries in: lib/$1/ with Gentoos: ${2%%-[\.0-9]*}." cd "${S}/lib/$1/" rm -R * java-pkg_jar-from $2 $3 } # 1: library name record_lib() { cd "${S}/" local deps="`find "lib/$1/" -type f -name \*.jar -print0 | xargs --null` " build_deps=$build_deps$deps use depend && einfo "recording binaries in: lib/$1/ for installation" use depend || einfo "building ${PN} with binaries in: lib/$1/ ...sigh" }