diff options
author | William Thomson <wltjr@gentoo.org> | 2006-10-10 01:59:50 +0000 |
---|---|---|
committer | William Thomson <wltjr@gentoo.org> | 2006-10-10 01:59:50 +0000 |
commit | ce5afdf3ed9a861a5f3642df8736f8ed4d0ebcb2 (patch) | |
tree | 9524d5e470d266efbd408fbd98994ff57af4dc5b /www-servers/tomcat | |
parent | Corrected Tomcat's build.xml patch to no longer comment out build-webapps-pre... (diff) | |
download | gentoo-2-ce5afdf3ed9a861a5f3642df8736f8ed4d0ebcb2.tar.gz gentoo-2-ce5afdf3ed9a861a5f3642df8736f8ed4d0ebcb2.tar.bz2 gentoo-2-ce5afdf3ed9a861a5f3642df8736f8ed4d0ebcb2.zip |
Corrected Tomcat's build.xml patch to no longer comment out build-webapps-precompile and fix-webapps target. Which due to upstream changes of those targets were preventing all aspects of the admin webapp from being built. Users reporting issues like bug # 150562. I suspect aspects from other webapps were missing as well but not reported or confirmed. This should resolve any, short of anyones objects to the precompile target and it's functions
(Portage version: 2.1.2_pre2-r6)
Diffstat (limited to 'www-servers/tomcat')
-rw-r--r-- | www-servers/tomcat/tomcat-5.5.20-r1.ebuild | 331 |
1 files changed, 331 insertions, 0 deletions
diff --git a/www-servers/tomcat/tomcat-5.5.20-r1.ebuild b/www-servers/tomcat/tomcat-5.5.20-r1.ebuild new file mode 100644 index 000000000000..181f01c2f422 --- /dev/null +++ b/www-servers/tomcat/tomcat-5.5.20-r1.ebuild @@ -0,0 +1,331 @@ +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/www-servers/tomcat/tomcat-5.5.20-r1.ebuild,v 1.1 2006/10/10 01:59:50 wltjr Exp $ + +inherit eutils java-pkg-2 java-ant-2 + +DESCRIPTION="Apache Servlet-2.4/JSP-2.0 Container" + +MY_P="apache-${P}-src" +SLOT="5.5" +SRC_URI="mirror://apache/${PN}/${PN}-5/v${PV}/src/${MY_P}.tar.gz" +HOMEPAGE="http://jakarta.apache.org/tomcat" +KEYWORDS="~amd64 ~x86" +LICENSE="Apache-2.0" + +IUSE="admin java5 doc examples source test" + +RDEPEND="=dev-java/eclipse-ecj-3.1* + =dev-java/commons-beanutils-1.7* + >=dev-java/commons-collections-3.1 + >=dev-java/commons-daemon-1.0.1 + >=dev-java/commons-dbcp-1.2.1 + >=dev-java/commons-digester-1.7 + >=dev-java/commons-fileupload-1.0 + >=dev-java/commons-el-1.0 + >=dev-java/commons-launcher-0.9 + >=dev-java/commons-logging-1.0.4 + >=dev-java/commons-modeler-1.1 + >=dev-java/commons-pool-1.2 + >=dev-java/log4j-1.2.9 + ~dev-java/servletapi-2.4 + admin? ( =dev-java/struts-1.2* ) + dev-java/sun-javamail + java5? ( >=virtual/jre-1.5 ) + !java5? ( + =virtual/jre-1.4* + >=dev-java/commons-httpclient-2.0 + dev-java/sun-jaf + ~dev-java/jaxen-1.0 + >=dev-java/junit-3.8.1 + =dev-java/mx4j-3* + >=dev-java/saxpath-1.0 + >=dev-java/xerces-2.7.1 + =dev-java/xml-commons-external-1.3* + )" +DEPEND="java5? ( >=virtual/jdk-1.5 ) + !java5? ( =virtual/jdk-1.4* ) + ${RDEPEND} + sys-apps/sed + dev-java/ant" + +if ! use java5; then + JAVA_PKG_NV_DEPEND="=virtual/jdk-1.4*" +else + JAVA_PKG_NV_DEPEND="=virtual/jdk-1.5*" +fi + +S=${WORKDIR}/${MY_P} + +TOMCAT_HOME="/usr/share/${PN}-${SLOT}" +TOMCAT_NAME="${PN}-${SLOT}" +WEBAPPS_DIR="/var/lib/${TOMCAT_NAME}/webapps" + +pkg_setup() { + # new user for tomcat + enewgroup tomcat + enewuser tomcat -1 -1 /dev/null tomcat + + if use java5; then + JAVA_PKG_WANT_SOURCE="1.5" + JAVA_PKG_WANT_TARGET="1.5" + fi +} + +src_unpack() { + unpack ${A} + cd ${S} + + local PATCHES=" + mainbuild-xml.patch + tomcatbuild-xml.patch + catalinabuild-xml.patch + jasperbuild-xml.patch + " + for patch in ${PATCHES}; do + epatch "${FILESDIR}/${PV}/${patch}" + done + if ! use doc; then + epatch "${FILESDIR}/${PV}/tomcatbuild-xml-docs.patch" + fi + if ! use examples; then + epatch "${FILESDIR}/${PV}/tomcatbuild-xml-examples.patch" + epatch "${FILESDIR}/${PV}/jsr152build-xml-examples.patch" + epatch "${FILESDIR}/${PV}/jsr154build-xml-examples.patch" + fi + + # avoid packed jars :-) + mkdir -p ${S}/build/build/common + cd ${S}/build/build + + mkdir ./bin && cd ./bin + java-pkg_jar-from commons-logging commons-logging-api.jar + java-pkg_jar-from commons-daemon + if ! use java5; then + java-pkg_jar-from mx4j-3.0 mx4j.jar jmx.jar + java-pkg_jar-from mx4j-3.0 mx4j-rjmx.jar jmx-remote.jar + fi + + if ! use java5; then + mkdir ${S}/build/build/common/endorsed && cd ${S}/build/build/common/endorsed + java-pkg_jar-from xml-commons-external-1.3 xml-apis.jar + java-pkg_jar-from xerces-2 xercesImpl.jar + fi + + mkdir ${S}/build/build/common/lib && cd ${S}/build/build/common/lib + java-pkg_jar-from ant-core + java-pkg_jar-from commons-collections + java-pkg_jar-from commons-dbcp + java-pkg_jar-from commons-el + java-pkg_jar-from commons-pool + java-pkg_jar-from servletapi-2.4 + + mkdir -p ${S}/build/build/server/lib && cd ${S}/build/build/server/lib + java-pkg_jar-from commons-beanutils-1.7 commons-beanutils.jar + java-pkg_jar-from commons-digester + java-pkg_jar-from commons-fileupload + java-pkg_jar-from commons-modeler +} + +src_compile(){ + local antflags="-Dbase.path=${T}" + + antflags="${antflags} -Dcommons-collections.jar=$(java-config -p commons-collections)" + antflags="${antflags} -Dcommons-daemon.jar=$(java-config -p commons-daemon)" + antflags="${antflags} -Dcommons-digester.jar=$(java-config -p commons-digester)" + antflags="${antflags} -Dcommons-dbcp.jar=$(java-config -p commons-dbcp)" + antflags="${antflags} -Dcommons-el.jar=$(java-config -p commons-el)" + antflags="${antflags} -Dcommons-pool.jar=$(java-config -p commons-pool)" + antflags="${antflags} -Dcommons-fileupload.jar=$(java-config -p commons-fileupload)" + antflags="${antflags} -Dcommons-launcher.jar=$(java-config -p commons-launcher)" + antflags="${antflags} -Dcommons-modeler.jar=$(java-config -p commons-modeler)" + antflags="${antflags} -Djunit.jar=$(java-config -p junit)" + antflags="${antflags} -Djdt.jar=$(java-pkg_getjar eclipse-ecj-3.1 ecj.jar)" + antflags="${antflags} -Dlog4j.jar=$(java-config -p log4j)" + antflags="${antflags} -Dcommons-beanutils.jar=$(java-pkg_getjar commons-beanutils-1.7 commons-beanutils.jar)" + antflags="${antflags} -Dcommons-logging.jar=$(java-pkg_getjar commons-logging commons-logging.jar)" + antflags="${antflags} -Dcommons-logging-api.jar=$(java-pkg_getjar commons-logging commons-logging-api.jar)" + antflags="${antflags} -Dmail.jar=$(java-pkg_getjar sun-javamail mail.jar)" + if use admin; then + antflags="${antflags} -Dstruts.jar=$(java-pkg_getjar struts-1.2 struts.jar)" + antflags="${antflags} -Dstruts.home=/usr/share/struts" + fi + antflags="${antflags} -Djasper.home=${S}/jasper" + if ! use java5; then + antflags="${antflags} -Dcommons-httpclient.jar=$(java-config -p commons-httpclient)" + antflags="${antflags} -Dactivation.jar=$(java-config -p sun-jaf)" + antflags="${antflags} -Djaxen.jar=$(java-pkg_getjar jaxen jaxen-full.jar)" + antflags="${antflags} -Djmx.jar=$(java-pkg_getjar mx4j-3.0 mx4j.jar)" + antflags="${antflags} -Djmx-remote.jar=$(java-pkg_getjar mx4j-3.0 mx4j-rjmx.jar)" + antflags="${antflags} -Dsaxpath.jar=$(java-pkg_getjar saxpath saxpath.jar)" + antflags="${antflags} -DxercesImpl.jar=$(java-pkg_getjar xerces-2 xercesImpl.jar)" + antflags="${antflags} -Dxml-apis.jar=$(java-pkg_getjar xml-commons-external-1.3 xml-apis.jar)" + fi + + eant ${antflags} + +} + +src_install() { + cd ${S}/build/build + + # init.d, conf.d + newinitd ${FILESDIR}/${PV}/tomcat.init ${TOMCAT_NAME} + newconfd ${FILESDIR}/${PV}/tomcat.conf ${TOMCAT_NAME} + + # create dir structure + diropts -m755 -o tomcat -g tomcat + dodir /usr/share/${TOMCAT_NAME} + keepdir /var/log/${TOMCAT_NAME}/ + keepdir /var/tmp/${TOMCAT_NAME}/ + keepdir /var/run/${TOMCAT_NAME}/ + + local CATALINA_BASE=/var/lib/${TOMCAT_NAME}/ + dodir ${CATALINA_BASE} + keepdir ${CATALINA_BASE}/shared/lib + keepdir ${CATALINA_BASE}/shared/classes + + keepdir /usr/share/${TOMCAT_NAME}/${CATALIA_HOME}/common/lib + + dodir /etc/${TOMCAT_NAME} + fperms 750 /etc/${TOMCAT_NAME} + + diropts -m0755 + + # we don't need dos scripts + rm -f bin/*.bat + + # copy the manager and admin context's to the right position + mkdir -p conf/Catalina/localhost + if use admin; then + cp ${S}/container/webapps/admin/admin.xml \ + conf/Catalina/localhost + fi + cp ${S}/container/webapps/manager/manager.xml \ + conf/Catalina/localhost + + # make the jars available via java-config -p and jar-from, etc + base=$(pwd) + libdirs="common/lib server/lib" + for dir in ${libdirs} + do + cd ${dir} + + for jar in *.jar; + do + # replace the file with a symlink + if [ ! -L ${jar} ]; then + java-pkg_dojar ${jar} + rm -f ${jar} + ln -s ${DESTTREE}/share/${TOMCAT_NAME}/lib/${jar} ${jar} + fi + done + + cd ${base} + done + + # replace a packed struts.jar + if use admin; then + cd server/webapps/admin/WEB-INF/lib + rm -f struts.jar + java-pkg_jar-from struts-1.2 struts.jar + cd ${base} + else + rm -fR server/webapps/admin + fi + + # replace the default pw with a random one, see #92281 + local randpw=$(echo ${RANDOM}|md5sum|cut -c 1-15) + sed -e s:SHUTDOWN:${randpw}: -i conf/{server,server-minimal}.xml + + # copy over the directories + chown -R tomcat:tomcat webapps/* conf/* + cp -pR conf/* ${D}/etc/${TOMCAT_NAME} || die "failed to copy conf" + cp -R bin common server ${D}/usr/share/${TOMCAT_NAME} || die "failed to copy" + + keepdir ${WEBAPPS_DIR} + set_webapps_perms ${D}/${WEBAPPS_DIR} + + # Copy over webapps, some controlled by use flags + cp -p ../RELEASE-NOTES webapps/ROOT/RELEASE-NOTES.txt + cp -pr webapps/ROOT ${D}${CATALINA_BASE}/webapps + if use doc; then + cp -pr webapps/tomcat-docs ${D}${CATALINA_BASE}/webapps + fi + if use examples; then + cp -pr webapps/{jsp-examples,servlets-examples,webdav} \ + ${D}${CATALINA_BASE}/webapps + fi + + # symlink the directories to make CATALINA_BASE possible + dosym /etc/${TOMCAT_NAME} ${CATALINA_BASE}/conf + dosym /var/log/${TOMCAT_NAME} ${CATALINA_BASE}/logs + dosym /var/tmp/${TOMCAT_NAME} ${CATALINA_BASE}/temp + dosym /var/run/${TOMCAT_NAME} ${CATALINA_BASE}/work + + dodoc ${S}/build/{RELEASE-NOTES,RUNNING.txt} + fperms 640 /etc/${TOMCAT_NAME}/tomcat-users.xml +} + +pkg_postinst() { + #due to previous ebuild bloopers, make sure everything is correct + chown root:root /etc/init.d/${TOMCAT_NAME} + chown root:root /etc/conf.d/${TOMCAT_NAME} + + einfo + ewarn " This ebuild implements a new filesystem layout for tomcat" + ewarn " please read http://www.gentoo.org/proj/en/java/tomcat-guide.xml" + ewarn " for more information!." + einfo + einfo " Please file any bugs at http://bugs.gentoo.org/ or else it" + einfo " may not get seen. Thank you." + einfo + +# einfo "Run emerge --config =${PF}" +# einfo "to configure Tomcat if you need to for example" +# einfo "change the home directory of the Tomcat user." +} + +#helpers +set_webapps_perms() { + chown tomcat:tomcat ${1} || die "Failed to change owner off ${1}." + chmod 750 ${1} || die "Failed to change permissions off ${1}." +} + +pkg_config() { + # Better suggestions are welcome + local currentdir="$(getent passwd tomcat | gawk -F':' '{ print $6 }')" + + einfo "The default home directory for Tomcat is /dev/null." + einfo "You need to change it if your applications needs it to" + einfo "be an actual directory. Current home directory:" + einfo "${currentdir}" + einfo "" + einfo "Do you want to change it [yes/no]?" + + local answer + read answer + + if [[ "${answer}" == "yes" ]]; then + einfo "" + einfo "Suggestions:" + einfo "${WEBAPPS_DIR}" + einfo "" + einfo "If you want to suggest a directory, file a bug to" + einfo "http://bugs.gentoo.org" + einfo "" + einfo "Enter home directory:" + + local homedir + read homedir + + einfo "" + einfo "Setting home directory to: ${homedir}" + + /usr/sbin/usermod -d"${homedir}" tomcat + + einfo "You can run emerge --config =${PF}" + einfo "again to change to homedir" + einfo "at any time." + fi +} |