Subject: Re: openoffice2-bin and java
To: None <tech-pkg@netbsd.org>
From: Antoine Reilles <Antoine.Reilles@loria.fr>
List: tech-pkg
Date: 10/21/2005 14:00:44
On Oct 21, 2005, at 1:54 PM, Geert Hendrickx wrote:

> I already discussed this with Michael, but we didn't reach consensus;
>
> OpenOffice 2 needs a Java Runtime Environment for some features  
> (e.g. the
> documents wizard in Writer, the media player, ...), but works  
> without one,
> too.
>
> Right now, the files/soffice startup script adds all /usr/pkg/java/*
> subdirectories to the PATH when starting OpenOffice, so it will  
> look for
> JRE's there.  However, this gives a few problems.  Only Linux  
> binary JRE's
> will work, since OOo links to them.  But the JRE detection can't  
> seem to
> make this distinction, so you can e.g. add a native JRE (wip/jdk14)  
> to the
> list, but you will get an error when you try to use the Java-dependent
> features.  Also, when you have lang/kaffe installed (in /usr/pkg/ 
> java),
> this causes long delays in OOo's Java detection, it is probably  
> confused by
> Kaffe not behaving as it expected.  Anyway, to make a long story  
> short, I
> would like to do this: make the admin choose _one_ (Linux) JRE at  
> install
> time, and make the startup script only add that one directory to  
> the PATH.
> Implementation would look like this:
>
> ===>
> Index: Makefile
> ===================================================================
> RCS file: /pub/NetBSD-CVS/pkgsrc/misc/openoffice2-bin/Makefile,v
> retrieving revision 1.4
> diff -u -r1.4 Makefile
> --- Makefile    20 Oct 2005 14:05:39 -0000    1.4
> +++ Makefile    21 Oct 2005 11:50:40 -0000
> @@ -86,14 +85,21 @@
>  DISTNAME=    # Dummy to prevent error from missing DISTNAME
>  .endif
>
> +.include "options.mk"
> +
>  do-install:
>      ${RM} -f ${WRKDIR}/PLIST.nouniq
>      ${RPM2PKG} ${RPM2PKGARGS} ${WRKSRC}/*.rpm
>      uniq ${WRKDIR}/PLIST.nouniq >${WRKDIR}/PLIST
> +.if !empty(JRE)
>      ${RM} -f ${PREFIX}/bin/soffice
>      ${SED}  -e "s|@@PREFIX@@|${PREFIX}|g" -e "s|@@OO_VER@@|$ 
> {OO_VER}|g" \
> +        -e "s|@@JRE@@|${JRE}|g" \
>          < ${FILESDIR}/soffice > ${PREFIX}/bin/soffice
>      ${CHMOD} +x ${PREFIX}/bin/soffice
> +.else
> +    ${LN} -sf ../openoffice.org${OO_VER}/program/soffice ${PREFIX}/ 
> bin/soffice
> +.endif
>  .for i in scalc sdraw simpress swriter
>      ${LN} -sf ../openoffice.org${OO_VER}/program/${i} ${PREFIX}/ 
> bin/${i}
>  .endfor
> Index: files/soffice
> ===================================================================
> RCS file: /pub/NetBSD-CVS/pkgsrc/misc/openoffice2-bin/files/soffice,v
> retrieving revision 1.2
> diff -u -r1.2 soffice
> --- files/soffice    10 Oct 2005 20:08:49 -0000    1.2
> +++ files/soffice    21 Oct 2005 11:50:40 -0000
> @@ -7,16 +7,10 @@
>  # make sure we can find `whoami` on solaris
>  PATH=${PATH}:/usr/ucb
>
> -# add an existing java directory to $PATH to allow OOo to
> +# add the chosen java directory to $PATH to allow OOo to
>  # automatically find it
> -#
> -if [ -d "@@PREFIX@@/java" ]; then
> -  for i in @@PREFIX@@/java/*; do
> -    if [ -f "$i/bin/java" ]; then
> -    export PATH=$PATH:$i/bin
> -    fi
> -  done
> -fi
> +PATH=${PATH}:@@JRE@@
> +
>  # default data seg size is too small for java
>  ulimit -d `ulimit -H -d`
> <===
>
> i.e. a run-time dependency on zero or one Linux JRE.  This solves  
> all the
> problems above.
>
> A slightly different alternative options.mk could look like this:
>
> ===>
> # $NetBSD
>
> PKG_OPTIONS_VAR=        PKG_OPTIONS.openoffice2-bin
> PKG_OPTIONS_OPTIONAL_GROUPS=    jre
> PKG_OPTIONS_GROUP.jre=        sun-jre13 sun-jre14 sun-jre15
>
> .include "../../mk/bsd.options.mk"
>
> .if !empty(PKG_OPTIONS:Msun-jre13)
> .include "../../lang/sun-jre13/buildlink3.mk"
> JRE=    ${BUILDLINK_JAVA_PREFIX.sun-jre13}
> .endif
>
> .if !empty(PKG_OPTIONS:Msun-jre14)
> .include "../../lang/sun-jre14/buildlink3.mk"
> JRE=    ${BUILDLINK_JAVA_PREFIX.sun-jre14}
> .endif
>
> .if !empty(PKG_OPTIONS:Msun-jre15)
> .include "../../lang/sun-jre15/buildlink3.mk"
> JRE=    ${BUILDLINK_JAVA_PREFIX.sun-jre15}
> .endif
> <===
>
> i.e., an OPTIONAL_GROUP containin only JRE's (not the option "no- 
> jre"),
> defaulting to none (with the same result as "no-jre").  I prefer the
> REQUIRED_GROUP though, to make it more clear that no-jre is an actual
> option. :-)
>
> What do you think?
Why not include mk/java-vm.mk, and use ${PKG_JAVA_HOME} to let  
openoffice ind it's java implementation/classes ?

antoine