# Copyright 1999-2006 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ WANT_ANT_TASKS="ant-nodeps" inherit subversion eutils java-pkg-2 java-ant-2 nsplugins DESCRIPTION="Adobe's open source rich internet application framework." HOMEPAGE="http://opensource.adobe.com/wiki/display/flexsdk/flex+sdk" # binary package #SRC_URI="http://flexorg.wip3.adobe.com/${PN//-/}/${PV}/${P//-/_}_mpl.zip" ESVN_REPO_URI="http://opensource.adobe.com/svn/opensource/flex/sdk/tags/${PV}" #ESVN_REPO_URI="http://opensource.adobe.com/svn/opensource/flex/sdk/branches/3.0.x@${PV##*.}" BLAZEDS_VERSION="3.0.0" BLAZEDS_REPO_URI="http://opensource.adobe.com/svn/opensource/blazeds/tags/${BLAZEDS_VERSION}" LICENSE="Mozilla" SLOT="3" KEYWORDS="~x86" IUSE="doc samples nosource player nsplugin adobe_xerces adobe_fontengine" RESTRICT="strip mirror" CDEPEND=" dev-java/ant-core dev-java/bcel dev-java/commons-collections dev-java/commons-discovery dev-java/commons-logging dev-java/javacc dev-java/jflex dev-java/xalan !adobe_xerces? ( >=dev-java/xerces-2 ) " DEPEND=">=virtual/jdk-1.5 ${CDEPEND}" RDEPEND=">=virtual/jre-1.4 nsplugin? ( !net-www/netscape-flash ) ${CDEPEND}" src_unpack() { subversion_src_unpack ( # this module is required from blazeds BLAZEDS_SUBPATH="modules/common" export ESVN_PROJECT="blazeds/${BLAZEDS_REPO_URI##*/}/${BLAZEDS_SUBPATH%/*}" export S="${S}/${BLAZEDS_SUBPATH}" export ESVN_REPO_URI="${BLAZEDS_REPO_URI}/${BLAZEDS_SUBPATH}" subversion_src_unpack ) cd "${S}/lib" ADOBE_JARS="license.jar" # adobe hasn't open sourced their changes to batik # see http://www.adobeforums.com/webx/.59b4ec04 ADOBE_JARS="$(echo batik*.jar) ${ADOBE_JARS}" # or to velocity # see http://www.adobeforums.com/webx/.59b4ebf6 ADOBE_JARS="mm-velocity-1.4.jar ${ADOBE_JARS}" # or to xerces if use adobe_xerces; then ADOBE_JARS="xercesImpl.jar xercesImpl_ja.jar xercesPatch.jar xmlParserAPIs.jar ${ADOBE_JARS}" else ewarn Line number support for XML tag attributes is not available without ewarn USE=adobe_xerces. It is possible that compile-time MXML error ewarn reporting and component debugging may not give correct line numbers. fi # AFEFontManager is not open source but optional if use adobe_fontengine; then ADOBE_JARS=" flex-fontkit.jar afe.jar aglj32.jar rideau.jar ${ADOBE_JARS}" fi for jar in ${ADOBE_JARS}; do mv "$jar" .. || die "failed to backup adobe's $jar" done rm * || die java-pkg_jarfrom commons-collections java-pkg_jarfrom commons-discovery java-pkg_jarfrom commons-logging java-pkg_jarfrom javacc java-pkg_jarfrom xalan if ! use adobe_xerces; then java-pkg_jarfrom xerces-2 fi for jar in ${ADOBE_JARS}; do mv "../$jar" . || die "failed to restore adobe's $jar" done # antTasks has no classpath set java-ant_rewrite-classpath "${S}/modules/antTasks/build.xml" # trimmed down ASC source is bundled from tamarin cd "${S}/modules/asc/build/java/lib" rm * || die java-pkg_jarfrom bcel # linux wrapper scripts for abcdump, ash, swfdump are not provided for unprovided in ash abcdump swfdump; do sed s.lib/asc.lib/${unprovided}. "${S}/bin/asc" > "${S}/bin/${unprovided}" chmod 755 "${S}/bin/${unprovided}" done # release bug: avmplus is not set executable cp "${S}/modules/compiler/asdoc/avmplus.linux" "${S}/bin/avmplus" chmod 755 "${S}/bin/avmplus" chmod 755 "${S}/asdoc/templates/asDocHelper.linux" cd "${S}/in/player/lnx" if use player; then DISTDIR=`pwd` unpack flashplayer.tar.gz || die failed to unpack player fi if use nsplugin; then DISTDIR=`pwd` unpack libflashplayer.so.tar.gz || die failed to unpack plugin fi } src_compile() { EANT_DOC_TARGET= einfo Building slimmed-down ASC EANT_BUILD_XML="${S}/modules/asc/build/java/build.xml" java-pkg-2_src_compile || die "failed to build actionscript compiler" cp "${S}/modules/asc/lib/"*.jar "${S}/lib/" || die "failed to move asc jars" einfo Building common messaging components from BlazeDS EANT_BUILD_XML="${S}/modules/common/build.xml" java-pkg-2_src_compile || die "failed to build blazeds components" einfo Building antTasks EANT_GENTOO_CLASSPATH="ant-core" EANT_BUILD_XML="{S}/modules/antTasks/build.xml" java-pkg-2_src_compile || die "failed to build ant tasks" einfo Building Flex SDK EANT_BUILD_XML="${S}/build.xml" EANT_BUILD_TARGET="main" java-pkg-2_src_compile || die "failed to build flex sdk" if use doc; then einfo Building documentation # case mismatch mv ${S}/frameworks/projects/framework/asdoc/en_US/mx/controls/examples/Local.mxml \ ${S}/frameworks/projects/framework/asdoc/en_US/mx/controls/examples/local.mxml mkdir ${S}/doc # this doesn't really work right for project in airframework framework haloclassic rpc utilities; do local ASDOC=asdoc if [[ "${project}" == "airframework" ]]; then ASDOC=aasdoc; fi local path="${S}/frameworks/projects/${project}/" local classes=$(ls "${path}/src/"*.as | sed 's,.*/\([^/]*\)\.as,\1,') local extraargs='' ADOBE_NS=http://www.adobe.com/2006/mxml if [[ -e "${path}/manifest.xml" ]]; then extraargs="${extraargs} -namespace $ADOBE_NS ${path}/manifest.xml -doc-namespaces $ADOBE_NS" fi if [[ -e "${path}/asdoc/en_US" ]]; then extraargs="${extraargs} -examples-path ${path}/asdoc/en_US/" fi "${S}/bin/${ASDOC}" ${extraargs} -doc-classes $classes -source-path "${path}/src" -output "${S}/doc/${project}" done fi } src_install() { dodoc README.txt dohtml collateral/en_US/* dodoc modules/compiler/flex_compiler_api_guide.pdf rm bin/*.exe bin/*.bat bin/adl if use nosource; then rm -rf frameworks/projects fi rm -rf frameworks/projects/*/asdoc rm -rf frameworks/tests INSTALL="flex-sdk-description.xml bin lib frameworks asdoc" if use samples; then INSTALL="${INSTALL} samples" fi FLEX_HOME=/usr/lib/${PN}-${SLOT} dodir ${FLEX_HOME} cp -pPr ${INSTALL} "${D}/${FLEX_HOME}/" || die "failed to install sdk" envfile=50${PN} echo "FLEX_HOME=\"${FLEX_HOME}\"" >> ${envfile} echo "PATH=\"${FLEX_HOME}/bin\"" >> ${envfile} doenvd ${envfile} if use doc; then dohtml -r doc/* fi if use player; then dobin in/player/lnx/flashplayer || die "failed to install player" fi if use nsplugin; then exeinto /opt/netscape/plugins doexe in/player/lnx/libflashplayer.so inst_plugin /opt/netscape/plugins/libflashplayer.so || die "failed to install plugin" fi } pkg_postinst() { einfo "Please source /etc/profile in open shells before using flex." }