I would like to commit a new java eclass within the next week.

This eclass is designed to support the functionality that Betelgeuse
outlined within a previous post.[1]

As you will be able to see, this eclass is very simple and only uses
functionality that will be provided by the java-utils-2.eclass (see the
attached patch )

Basically all the happens is that a file is created under
/usr/share/java-config-2/virtuals/
that contains (at present) 3 variables.  This file is then read by our
java-config-2 application.


The eclass is currently implemented within the java-virtuals overlay for
those who are interested

https://overlays.gentoo.org/svn/proj/java/java-virtuals/


Any suggestions, improvements and of course approvals will be gladly
accepted

Go the All Blacks!!

Alistair


[1] http://thread.gmane.org/gmane.linux.gentoo.devel/48932/focus=48933

On Sun, 29 Apr 2007 17:00:09 +0200, Petteri Räty wrote:

> We want to implement virtuals for Java at some point and for that we
> need to know the package that provides the virtual because some virtuals
> can be provided by the JDK or normal packages and this affects the JDK
> selection at build time. One option is to call into Portage to find this
> out, but of course Paludis and Pkgcore people most likely don't like
> this approach. One thing that comes to mind is to allow for virtuals to
> install files so we can install the provider information in a format
> easy for us. We need the information in format ${PN}-${SLOT} because
> that's the way we install in /usr/share. So do you think it's ok for
> virtuals to install files (we can of course call the category
> java-virtual/ too), should we call Portage code, or do you have an
> another idea?
--- gentoo/cvs/gentoo-x86/eclass/java-utils-2.eclass    2007-08-05 
20:17:05.000000000 +1200
+++ gentoo/overlays/java-virtuals/eclass/java-utils-2.eclass    2007-09-12 
22:23:53.000000000 +1200
@@ -2196,6 +2286,8 @@
        JAVA_PKG_SHAREPATH="${DESTTREE}/share/${JAVA_PKG_NAME}"
        JAVA_PKG_SOURCESPATH="${JAVA_PKG_SHAREPATH}/sources/"
        JAVA_PKG_ENV="${D}${JAVA_PKG_SHAREPATH}/package.env"
+       JAVA_PKG_VIRTUALS_PATH="${DESTTREE}/share/java-config-2/virtuals"
+       
JAVA_PKG_VIRTUAL_PROVIDER="${D}/${JAVA_PKG_VIRTUALS_PATH}/${JAVA_PKG_NAME}"
 
        [[ -z "${JAVA_PKG_JARDEST}" ]] && 
JAVA_PKG_JARDEST="${JAVA_PKG_SHAREPATH}/lib"
        [[ -z "${JAVA_PKG_LIBDEST}" ]] && 
JAVA_PKG_LIBDEST="${DESTTREE}/$(get_libdir)/${JAVA_PKG_NAME}"
@@ -2220,58 +2312,71 @@
 java-pkg_do_write_() {
        debug-print-function ${FUNCNAME} $*
        java-pkg_init_paths_
-       # Create directory for package.env
-       dodir "${JAVA_PKG_SHAREPATH}"
-       if [[ -n "${JAVA_PKG_CLASSPATH}" || -n "${JAVA_PKG_LIBRARY}" || -f \
-                       "${JAVA_PKG_DEPEND_FILE}" || -f \
-                       "${JAVA_PKG_OPTIONAL_DEPEND_FILE}" ]]; then
-               # Create package.env
-               (
-                       echo "DESCRIPTION=\"${DESCRIPTION}\""
-                       echo "GENERATION=\"2\""
-
-                       [[ -n "${JAVA_PKG_CLASSPATH}" ]] && echo 
"CLASSPATH=\"${JAVA_PKG_CLASSPATH}\""
-                       [[ -n "${JAVA_PKG_LIBRARY}" ]] && echo 
"LIBRARY_PATH=\"${JAVA_PKG_LIBRARY}\""
-                       [[ -n "${JAVA_PROVIDE}" ]] && echo 
"PROVIDES=\"${JAVA_PROVIDE}\""
-                       [[ -f "${JAVA_PKG_DEPEND_FILE}" ]] \
-                               && echo "DEPEND=\"$(cat 
"${JAVA_PKG_DEPEND_FILE}" | uniq | tr '\n' ':')\""
-                       [[ -f "${JAVA_PKG_OPTIONAL_DEPEND_FILE}" ]] \
-                               && echo "OPTIONAL_DEPEND=\"$(cat 
"${JAVA_PKG_OPTIONAL_DEPEND_FILE}" | uniq | tr '\n' ':')\""
-                       echo "VM=\"$(echo ${RDEPEND} ${DEPEND} | sed -e 's/ 
/\n/g' | sed -n -e '/virtual\/\(jre\|jdk\)/ { p;q }')\"" # TODO cleanup !
-               ) > "${JAVA_PKG_ENV}"
-
-               # register target/source
-               local target="$(java-pkg_get-target)"
-               local source="$(java-pkg_get-source)"
-               [[ -n ${target} ]] && echo "TARGET=\"${target}\"" >> 
"${JAVA_PKG_ENV}"
-               [[ -n ${source} ]] && echo "SOURCE=\"${source}\"" >> 
"${JAVA_PKG_ENV}"
-
-               # register javadoc info
-               [[ -n ${JAVADOC_PATH} ]] && echo 
"JAVADOC_PATH=\"${JAVADOC_PATH}\"" \
-                       >> ${JAVA_PKG_ENV}
-               # register source archives
-               [[ -n ${JAVA_SOURCES} ]] && echo 
"JAVA_SOURCES=\"${JAVA_SOURCES}\"" \
-                       >> ${JAVA_PKG_ENV}
-
-
-               echo "MERGE_VM=\"${GENTOO_VM}\"" >> "${JAVA_PKG_ENV}"
-               [[ -n ${GENTOO_COMPILER} ]] && echo 
"MERGE_COMPILER=\"${GENTOO_COMPILER}\"" >> "${JAVA_PKG_ENV}"
-
-               # extra env variables
-               if [[ -n "${JAVA_PKG_EXTRA_ENV_VARS}" ]]; then
-                       cat "${JAVA_PKG_EXTRA_ENV}" >> "${JAVA_PKG_ENV}" || die
-                       # nested echo to remove leading/trailing spaces
-                       echo "ENV_VARS=\"$(echo ${JAVA_PKG_EXTRA_ENV_VARS})\"" \
-                               >> "${JAVA_PKG_ENV}" || die
-               fi
-
-               # Strip unnecessary leading and trailing colons
-               # TODO try to cleanup if possible
-               sed -e "s/=\":/=\"/" -e "s/:\"$/\"/" -i "${JAVA_PKG_ENV}" || 
die "Did you forget to call java_init ?"
+       
+       if [[ $1 != provider ]]; then
+               # Create directory for package.env
+               dodir "${JAVA_PKG_SHAREPATH}"
+               if [[ -n "${JAVA_PKG_CLASSPATH}" || -n "${JAVA_PKG_LIBRARY}" || 
-f \
+                               "${JAVA_PKG_DEPEND_FILE}" || -f \
+                               "${JAVA_PKG_OPTIONAL_DEPEND_FILE}" ]]; then
+                       # Create package.env
+                       (
+                               echo "DESCRIPTION=\"${DESCRIPTION}\""
+                               echo "GENERATION=\"2\""
+
+                               [[ -n "${JAVA_PKG_CLASSPATH}" ]] && echo 
"CLASSPATH=\"${JAVA_PKG_CLASSPATH}\""
+                               [[ -n "${JAVA_PKG_LIBRARY}" ]] && echo 
"LIBRARY_PATH=\"${JAVA_PKG_LIBRARY}\""
+                               [[ -n "${JAVA_PROVIDE}" ]] && echo 
"PROVIDES=\"${JAVA_PROVIDE}\""
+                               [[ -f "${JAVA_PKG_DEPEND_FILE}" ]] \
+                                       && echo "DEPEND=\"$(cat 
"${JAVA_PKG_DEPEND_FILE}" | uniq | tr '\n' ':')\""
+                               [[ -f "${JAVA_PKG_OPTIONAL_DEPEND_FILE}" ]] \
+                                       && echo "OPTIONAL_DEPEND=\"$(cat 
"${JAVA_PKG_OPTIONAL_DEPEND_FILE}" | uniq | tr '\n' ':')\""
+                               echo "VM=\"$(echo ${RDEPEND} ${DEPEND} | sed -e 
's/ /\n/g' | sed -n -e '/virtual\/\(jre\|jdk\)/ { p;q }')\"" # TODO cleanup !
+                       ) > "${JAVA_PKG_ENV}"
+
+                       # register target/source
+                       local target="$(java-pkg_get-target)"
+                       local source="$(java-pkg_get-source)"
+                       [[ -n ${target} ]] && echo "TARGET=\"${target}\"" >> 
"${JAVA_PKG_ENV}"
+                       [[ -n ${source} ]] && echo "SOURCE=\"${source}\"" >> 
"${JAVA_PKG_ENV}"
+
+                       # register javadoc info
+                       [[ -n ${JAVADOC_PATH} ]] && echo 
"JAVADOC_PATH=\"${JAVADOC_PATH}\"" \
+                               >> ${JAVA_PKG_ENV}
+                       # register source archives
+                       [[ -n ${JAVA_SOURCES} ]] && echo 
"JAVA_SOURCES=\"${JAVA_SOURCES}\"" \
+                               >> ${JAVA_PKG_ENV}
+
+
+                       echo "MERGE_VM=\"${GENTOO_VM}\"" >> "${JAVA_PKG_ENV}"
+                       [[ -n ${GENTOO_COMPILER} ]] && echo 
"MERGE_COMPILER=\"${GENTOO_COMPILER}\"" >> "${JAVA_PKG_ENV}"
+
+                       # extra env variables
+                       if [[ -n "${JAVA_PKG_EXTRA_ENV_VARS}" ]]; then
+                               cat "${JAVA_PKG_EXTRA_ENV}" >> 
"${JAVA_PKG_ENV}" || die
+                               # nested echo to remove leading/trailing spaces
+                               echo "ENV_VARS=\"$(echo 
${JAVA_PKG_EXTRA_ENV_VARS})\"" \
+                                       >> "${JAVA_PKG_ENV}" || die
+                       fi
+
+                       # Strip unnecessary leading and trailing colons
+                       # TODO try to cleanup if possible
+                       sed -e "s/=\":/=\"/" -e "s/:\"$/\"/" -i 
"${JAVA_PKG_ENV}" || die "Did you forget to call java_init ?"
+               else
+                       debug-print "JAVA_PKG_CLASSPATH, JAVA_PKG_LIBRARY, 
JAVA_PKG_DEPEND_FILE"
+                       debug-print "or JAVA_PKG_OPTIONAL_DEPEND_FILE not 
defined so can't"
+                       debug-print "write package.env."
+               fi
        else
-               debug-print "JAVA_PKG_CLASSPATH, JAVA_PKG_LIBRARY, 
JAVA_PKG_DEPEND_FILE"
-               debug-print "or JAVA_PKG_OPTIONAL_DEPEND_FILE not defined so 
can't"
-               debug-print "write package.env."
+               dodir "${JAVA_PKG_VIRTUALS_PATH}"
+
+               echo "PROVIDERS=\"${JAVA_VIRTUAL_PROVIDES}\"" \
+                               >> ${JAVA_PKG_VIRTUAL_PROVIDER}
+               echo "VM=\"${JAVA_VIRTUAL_VM}\"" \
+                               >> ${JAVA_PKG_VIRTUAL_PROVIDER}
+
+               echo "VM_CLASSPATH=\"${JAVA_VIRTUAL_VM_CLASSPATH}\"" \
+                               >> ${JAVA_PKG_VIRTUAL_PROVIDER} 
        fi
 }
 
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

# Original Author: Alistair John Bush <[EMAIL PROTECTED]>
# Purpose:      To provide a default (and only) src_install function
#                       for ebuilds in the java-virtuals category.

inherit java-utils-2

EXPORT_FUNCTIONS src_install

java-virtuals-2_src_install() {
        java-pkg_do_write_ provider
}

Reply via email to