--- portage-migration/eclass/java-pkg-2.eclass.orig 2006-02-28 09:14:57.000000000 +0100 +++ portage-migration/eclass/java-pkg-2.eclass 2006-02-28 11:17:56.000000000 +0100 @@ -34,6 +34,8 @@ EXPORT_FUNCTIONS pkg_setup +IUSE="${IUSE} native" + # ------------------------------------------------------------------------------ # @eclass-pkg_setup # @@ -79,6 +81,7 @@ pre_pkg_postinst() { java-pkg-2_pkg_setup + java-pkg_postinst } # ------------------------------------------------------------------------------ --- portage-migration/eclass/java-utils-2.eclass.orig 2006-02-28 09:15:04.000000000 +0100 +++ portage-migration/eclass/java-utils-2.eclass 2006-02-28 11:43:04.000000000 +0100 @@ -183,6 +183,7 @@ done java-pkg_do_write_ + use native && java-pkg_cachejar } @@ -1552,6 +1553,91 @@ } # ------------------------------------------------------------------------------ +# @internal-function java-pkg_cachejar +# +# Create native library from jar +# Stolen from OpenOffice.org +# ------------------------------------------------------------------------------ +java-pkg_cachejar() { + if [[ ! "$(java-pkg_get-current-vm)" =~ "gcj" ]] ; then + ewarn "Your current Java VM is not gcj." + ewarn "You still try to build native code." + ewarn "Either set your Java VM to gcj" + ewarn "... or unset 'native' useflag." + return + fi + + java-pkg_init_paths_ + + local linker="gcj -shared -fPIC -Wl,-Bsymbolic -O2 -findirect-dispatch -fjni -o" + + einfo "Create native from jar ..." + + local jar to + for jar in ${D}${JAVA_PKG_JARDEST}/*.jar + do + # .../lib`basename ${jar}`.so + # Linker use '-L... -l.jar' for gcj native binary + to="$(dirname ${jar})/lib$(basename ${jar}).so" + + if [[ ! -e ${to} ]] ; then + einfo "${jar} -> ${to}" + ${linker} ${to} ${jar} + fi + done +} + +# ------------------------------------------------------------------------------ +# @internal-function java-pkg_regcachejar +# +# Create native library from jar +# Stolen from OpenOffice.org +# ------------------------------------------------------------------------------ +java-pkg_reg-cachejar() { + if [[ ! "$(java-pkg_get-current-vm)" =~ "gcj" ]] ; then + ewarn "Your current Java VM is not gcj." + ewarn "You still try to build native code." + ewarn "Either set your Java VM to gcj" + ewarn "... or unset 'native' useflag." + return + fi + + java-pkg_init_paths_ + + local db_tool="gcj-dbtool" + local gcj_db="/usr/share/java/classmap.gcjdb" + + # Create new database? + if [[ ! -e ${gcj_db} ]] ; then + [[ ! -d /usr/share/java/ ]] && mkdir -p /usr/share/java/ + ${db_tool} -n ${gcj_db} + fi + + einfo "Register jar to native (gcj) link in database (${gcj_db}) ..." + + local jar to + # Where do I get the jar files installed now from? + for jar in ${JAVA_PKG_JARDEST}/*.jar + do + # .../lib`basename ${jar}`.so + # Linker use '-L... -l.jar' for gcj native binary + to="$(dirname ${jar})/lib$(basename ${jar}).so" + + einfo "${jar} -> ${to}" + ${db_tool} -a ${gcj_db} ${jar} ${to} + done +} + +# ------------------------------------------------------------------------------ +# @internal-function java-pkg_postinst +# +# Do post-install stuff +# ------------------------------------------------------------------------------ +java-pkg_postinst() { + use native && java-pkg_reg-cachejar +} + +# ------------------------------------------------------------------------------ # @internal-function java-pkg_die # # Enhanced die for Java packages, which displays some information that may be