# Copyright 1999-2005 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/dev-util/netbeans/netbeans-4.0-r1.ebuild,v 1.2 2005/07/09 18:16:10 swegener Exp $ inherit eutils java-pkg # Server Tarball layout structure # 4.0 200412081800/d5a0f13566068cb86e33a46ea130b207 # 4.1 200505031930/66083d474e5fdfc80a1443fb851bd9d5 # ant-mis is stuff we never use put instead of pactching we let the build process use this file # so adding the license just to be sure # The list of files in here is not complete but just some I listed. # Apache-1.1: webserver.jar # Apache-2.0: ant-misc-1.6.2.zip # as-is: docbook-xsl-1.65.1.zip, pmd-netbeans35-bin-0.91.zip # There are many other scrambled files in Netbeans but the # default module configuration doesn't use all of them. # # If you want to find out useless java-pkg_jar-from calls and all scrambled files, which don't have # symlinks to the installed files, you can use a ruby script I wrote. It is in the experimental tree: # https://gentooexperimental.org/svn/java/gentoo-java-experimental/dev-util/netbeans/files # # This command should be run after ebuild unpack in the source root # 'ebuild netbeans-4.0.ebuild compile | grep Unscrambling | grep "\.jar"' # Check which jars are actually being used to compile Netbeans # # This command should be run after ebuild install in the image root # 'find . -name "*.jar" -type f | less' # Check the list to see that no packed jars get copied to the image # # Remove the unset DISPLAY line from src_compile to get graphical license dialogs and pause before # unscramble MY_PV=${PV/./_} BASELOCATION="http://www.netbeans.org/download/${MY_PV}/fcs/200412081800/d5a0f13566068cb86e33a46ea130b207" MAINTARBALL="netbeans-${MY_PV}-src-ide_sources.tar.bz2" JAVADOCTARBALL="netbeans-${MY_PV}-docs-javadoc.tar.bz2" DESCRIPTION="NetBeans IDE for Java" HOMEPAGE="http://www.netbeans.org" SRC_URI="${BASELOCATION}/${MAINTARBALL} doc? ( ${BASELOCATION}/${JAVADOCTARBALL} )" LICENSE="Apache-1.1 Apache-2.0 SPL W3C sun-bcla-j2eeeditor sun-bcla-javac sun-javac as-is docbook sun-resolver" SLOT="4.0" KEYWORDS="~x86 ~amd64" IUSE="debug doc" # dev-java/xml-commons-resolver for future versions RDEPEND=">=virtual/jre-1.4.2 =dev-java/commons-logging-1.0* dev-java/commons-el =dev-java/junit-3.8* =dev-java/servletapi-2.2* =dev-java/servletapi-2.3* =dev-java/servletapi-2.4* =dev-java/xerces-2.6.2* dev-java/sac dev-java/flute dev-java/jmi-interface >=dev-java/javahelp-bin-2.0.02-r1 ~www-servers/tomcat-5.0.28 dev-java/sun-j2ee-deployment-bin dev-java/xml-commons dev-java/jakarta-jstl" DEPEND="${RDEPEND} >=virtual/jdk-1.4.2 >=dev-java/ant-1.6.1 =dev-java/jakarta-regexp-1.3* =dev-java/xalan-2* dev-java/jtidy =dev-java/jaxen-1.1* dev-java/saxpath dev-java/javamake-bin dev-util/pmd" TOMCATSLOT="5" # Replacement JARs for Netbeans COMMONS_LOGGING="commons-logging commons-logging.jar commons-logging-1.0.4.jar" JASPERCOMPILER="tomcat-${TOMCATSLOT} jasper-compiler.jar jasper-compiler-5.0.28.jar" JASPERRUNTIME="tomcat-${TOMCATSLOT} jasper-runtime.jar jasper-runtime-5.0.28.jar" JH="javahelp-bin jh.jar jh-2.0_01.jar" JMI="jmi-interface jmi.jar jmi.jar" JSPAPI="servletapi-2.4 jsp-api.jar jsp-api-2.0.jar" JSR="sun-j2ee-deployment-bin sun-j2ee-deployment-bin.jar jsr88javax.jar" JSTL="jakarta-jstl jstl.jar jstl-1.1.2.jar" JUNIT="junit junit.jar junit-3.8.1.jar" MOF="jmi-interface mof.jar mof.jar" PMD="pmd pmd.jar pmd-1.3.jar" REGEXP="jakarta-regexp-1.3 jakarta-regexp.jar regexp-1.2.jar" SERVLET22="servletapi-2.2 servletapi-2.2.jar servlet-2.2.jar" SERVLET23="servletapi-2.3 servlet.jar servlet-2.3.jar" SERVLET24="servletapi-2.4 servlet-api.jar servlet-api-2.4.jar" STANDARD="jakarta-jstl standard.jar standard-1.1.2.jar" XERCES="xerces-2 xercesImpl.jar xerces-2.6.2.jar" XMLCOMMONS="xml-commons xml-apis.jar xml-commons-dom-ranges-1.0.b2.jar" S=${WORKDIR}/netbeans-src BUILDDESTINATION="${S}/nbbuild/netbeans" src_unpack () { unpack ${MAINTARBALL} if use doc; then mkdir javadoc && cd javadoc unpack ${JAVADOCTARBALL} || die "Unable to extract javadoc" rm -f *.zip fi cd ${S}/nbbuild # Disable the bundled Tomcat in favor of Portage installed version sed -i -e "s%tomcatint/tomcat5/bundled,%%g" *.properties cd ${S}/ant/external/ touch ant-api-1.6.2.zip touch ant-docs-1.6.2.zip # We have ant libs here so using the system libs epatch ${FILESDIR}/antbuild.xml.patch mkdir lib && cd lib java-pkg_jar-from ant-tasks java-pkg_jar-from ant-core cd ${S}/core/external java-pkg_jar-from ${JH} cd ${S}/mdr/external/ java-pkg_jar-from ${JMI} java-pkg_jar-from ${MOF} cd ${S}/nbbuild/external java-pkg_jar-from javahelp-bin jhall.jar jhall-2.0_01.jar cd ${S}/libs/external/ java-pkg_jar-from ${XERCES} java-pkg_jar-from ${COMMONS_LOGGING} java-pkg_jar-from xalan xalan.jar xalan-2.5.2.jar java-pkg_jar-from ${XMLCOMMONS} java-pkg_jar-from ${PMD} java-pkg_jar-from ${REGEXP} # j2eeeditor-1.0.jar is only used in Netbeans but licensed under # Sun's bcla + supplemental terms cd ${S}/xml/external/ java-pkg_jar-from sac java-pkg_jar-from xerces-2 xercesImpl.jar xerces2.jar java-pkg_jar-from flute # There's also resolver-1_1_nb.jar in this directory. # The implementation is from Sun and I haven't found it. # In later Netbeans versions xml-commons is used so we will use it # then. cd ${S}/httpserver/external/ java-pkg_jar-from ${SERVLET22} # The webserver.jar in here is a stripped down version of Tomcat 3.3. # We will use the included jar because we don't want to have Tomcat 3.X # in the tree and because maintaining it would probably be a pain. cd ${S}/j2eeserver/external java-pkg_jar-from ${JSR} cd ${S}/java/external/ java-pkg_jar-from javamake-bin javamake.jar javamake-1.2.12.jar # gjast.jar is a mix of Netbeans stuff with sun javac stuff # It is not available elsewhere. cd ${S}/junit/external/ java-pkg_jar-from ${JUNIT} touch junit-3.8.1-api.zip cd ${S}/tasklist/external/ java-pkg_jar-from jtidy Tidy.jar Tidy-r7.jar cd ${S}/web/external java-pkg_jar-from ${SERVLET23} java-pkg_jar-from ${SERVLET24} java-pkg_jar-from commons-el java-pkg_jar-from jaxen-1.1 jaxen-1.1_beta2.jar jaxen-full.jar java-pkg_jar-from saxpath java-pkg_jar-from ${JASPERCOMPILER} java-pkg_jar-from ${JASPERRUNTIME} java-pkg_jar-from ${JSPAPI} java-pkg_jar-from ${JSTL} java-pkg_jar-from ${STANDARD} touch jsp20-docs.zip touch jstl-1.1.2-javadoc.zip touch servlet24-docs.zip } src_compile() { local antflags="" if use debug; then antflags="${antflags} -Dbuild.compiler.debug=true" antflags="${antflags} -Dbuild.compiler.deprecation=true" else antflags="${antflags} -Dbuild.compiler.deprecation=false" fi antflags="${antflags} -Dnetbeans.no.pre.unscramble=true" antflags="${antflags} -Dstop.when.broken.modules=true" # The build will attempt to display graphical # dialogs for the licence agreements if this is set. unset DISPLAY # Sun JDK doesnt like that very much, so lets pleasure them too ;-) export ANT_OPTS="${ANT_OPTS} -Djava.awt.headless=true" # The location of the main build.xml file cd ${S}/nbbuild # Specify the build-nozip target otherwise it will build # a zip file of the netbeans folder, which will copy directly. yes yes 2>/dev/null | ant ${antflags} build-nozip || die "Compiling failed!" # Remove non-x86 Linux binaries find ${BUILDDESTINATION} -type f \ -name "*.exe" -o \ -name "*.cmd" -o \ -name "*.bat" -o \ -name "*.dll" \ | xargs rm -f # Removing external stuff. They are api docs from external libs. cd ${BUILDDESTINATION}/ide4/docs rm -f *.zip # The next directory seems to be empty if ! rmdir doc 2> /dev/null; then use doc || rm -fr ./doc fi # Use the system ant cd ${BUILDDESTINATION}/ide4/ant rm -fr ./lib rm -fr ./bin } src_install() { local DESTINATION="${ROOT}/usr/share/netbeans-${SLOT}" insinto $DESTINATION einfo "Installing the program..." cd ${BUILDDESTINATION} doins -r * symlink_extjars ${D}/${DESTINATION} fperms 755 \ ${DESTINATION}/bin/netbeans \ ${DESTINATION}/platform4/lib/nbexec # The wrapper wrapper :) newbin ${FILESDIR}/startscript.sh netbeans-${SLOT} # Ant installation local ANTDIR="${DESTINATION}/ide4/ant" cd ${D}/${ANTDIR} dodir /usr/share/ant-core/lib dosym /usr/share/ant-core/lib ${ANTDIR}/lib dodir /usr/share/ant-core/bin dosym /usr/share/ant-core/bin ${ANTDIR}/bin # Documentation einfo "Installing Documentation..." cd ${D}/${DESTINATION} use doc && java-pkg_dohtml -r ${WORKDIR}/javadoc/* dodoc build_info dohtml CREDITS.html README.html netbeans.css rm -f build_info CREDITS.html README.html netbeans.css # Icons and shortcuts einfo "Installing icons..." dodir ${DESTINATION}/icons insinto ${DESTINATION}/icons doins ${S}/core/ide/release/bin/icons/*png for res in "16x16" "24x24" "32x32" "48x48" "128x128" ; do dodir /usr/share/icons/hicolor/${res}/apps dosym ${DESTINATION}/icons/nb${res}.png /usr/share/icons/hicolor/${res}/apps/netbeans.png done make_desktop_entry netbeans-${SLOT} Netbeans netbeans Development } pkg_postinst () { einfo "Your tomcat directory might not have the right permissions." einfo "Please make sure that normal users can read the directory:" einfo "${ROOT}/usr/share/tomcat-${TOMCATSLOT}" einfo einfo "The integrated Tomcat is not installed, but you can easily" einfo "use the system Tomcat. See Netbeans documentation if you" einfo "don't know how to do that. The relevant settings are in the" einfo "runtime window." } # Supporting functions for this ebuild function fix_manifest() { sed -i "s%ext/${1}%$(java-pkg_getjar ${2} ${3})%" ${4} } function symlink_extjars() { cd ${1}/ide4/modules/ext java-pkg_jar-from ${COMMONS_LOGGING} java-pkg_jar-from flute java-pkg_jar-from ${JMI} java-pkg_jar-from ${JUNIT} java-pkg_jar-from ${MOF} java-pkg_jar-from sac cd ${1}/ide4/modules/autoload/ext java-pkg_jar-from commons-el java-pkg_jar-from ${SERVLET22} java-pkg_jar-from ${SERVLET23} java-pkg_jar-from ${SERVLET24} java-pkg_jar-from ${XERCES} java-pkg_jar-from ${JSR} java-pkg_jar-from ${JASPERCOMPILER} java-pkg_jar-from ${JASPERRUNTIME} java-pkg_jar-from ${XMLCOMMONS} java-pkg_jar-from ${JSPAPI} cd ${1}/ide4/config/TagLibraries/JSTL11 java-pkg_jar-from jakarta-jstl jstl.jar java-pkg_jar-from jakarta-jstl standard.jar cd ${1}/platform4/modules/ext java-pkg_jar-from ${JH} }