Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 Sep 2005 12:02:53 -0600
From:      Greg Lewis <glewis@eyesbeyond.com>
To:        Panagiotis Astithas <past@ebs.gr>
Cc:        freebsd-java@freebsd.org
Subject:   Re: [patch] Install a desktop icon for the jdk15 Control Panel
Message-ID:  <20050930180253.GC10169@misty.eyesbeyond.com>
In-Reply-To: <433B9826.10607@ebs.gr>
References:  <433B067C.2020500@ebs.gr> <20050928222659.GA21920@misty.eyesbeyond.com> <433B9826.10607@ebs.gr>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi Panagiotis,

On Thu, Sep 29, 2005 at 10:30:46AM +0300, Panagiotis Astithas wrote:
> Greg Lewis wrote:
> >Hi Panagiotis,
> >
> >On Thu, Sep 29, 2005 at 12:09:16AM +0300, Panagiotis Astithas wrote:
> >
> >>I cooked up this patch to fix something that has been annoying me for a 
> >>long time. When we install the jdk we don't fix the provided 
> >>sun_java.desktop file, or install it in a suitable place for desktop 
> >>environments to pick up. This patch is for jdk15 and creates the 
> >>necessary menu entry for Gnome and KDE (although I haven't tested on the 
> >>latter). It should be trivial to make the same changes for jdk14, by 
> >>using MINIMAL instead of WITHOUT_WEB.
> >
> >
> >Thanks working this up.  Can you please send-pr it?  I'm worried that
> >it will get lost otherwise since I'm currently tracking some other patches
> >as well.
> 
> Certainly.

Thanks!

> >It would be good if someone could test your changes against KDE as well.
> >
> >I have some minor comments on the patch.
> >
> >
> >>--- /usr/ports/java/jdk15/Makefile	Tue Sep 20 23:00:08 2005
> >>+++ jdk15/Makefile	Wed Sep 28 23:57:17 2005
> >>@@ -43,6 +43,7 @@
> >>MAKE_ENV+=	BROWSER=mozilla
> >>.endif
> >>USE_ICONV=	yes
> >>+USE_GNOME=	desktopfileutils
> >
> >
> >Does this pull in any extra dependencies other than desktop-file-utils?
> >the jdk is already pretty fat with dependencies, and I particularly don't
> >want to pull in a bunch of KDE and/or Gnome dependencies.
> 
> I don't think so, I used it as a convenience, since desktopfileutils 
> itself contains a 'USE_GNOME=glib20' line. So I figured, if you have 
> that, you had glib20 at least. I guess a tester with KDE will let us 
> know for sure.

Ok, good.  I think glib20 is an acceptable extra dependency :).

> >>MAKE_ENV+=	ALT_MOZILLA_HEADERS_PATH="${X11BASE}/include"
> >>.endif
> >>
> >>@@ -118,6 +119,9 @@
> >>
> >>PLIST_FILES=	jdk${JDK_VERSION}/jre/.systemPrefs/.system.lock \
> >>		jdk${JDK_VERSION}/jre/.systemPrefs/.systemRootModFile
> >>+.if !defined(WITHOUT_WEB)
> >>+PLIST_FILES+=	share/applications/sun_java15.desktop
> >>+.endif
> >>PLIST_DIRS=	jdk${JDK_VERSION}/jre/.systemPrefs
> >>
> >>.if (${ARCH} == amd64)
> >>@@ -284,9 +288,20 @@
> >>	${MKDIR} ${PREFIX}/jdk${JDK_VERSION}
> >>	cd ${JDKIMAGEDIR} && ${FIND} . \
> >>	  | ${CPIO} -pdmu -R ${LIBOWN}:${LIBGRP} ${PREFIX}/jdk${JDK_VERSION}
> >>+.if !defined(WITHOUT_WEB)
> >>+	@${SED} -e 
> >>'s#Exec=INSTALL_DIR/JRE_NAME_VERSION/bin/ControlPanel#Exec=${PREFIX}/jdk${JDK_VERSION}/bin/ControlPanel#' \
> >>+		-e 
> >>'s#Icon=INSTALL_DIR/JRE_NAME_VERSION/plugin/desktop/sun_java.png#Icon=${PREFIX}/jdk${JDK_VERSION}/jre/plugin/desktop/sun_java.png#' \
> >>+		< ${JDKIMAGEDIR}/jre/plugin/desktop/sun_java.desktop \
> >>+		> ${JDKIMAGEDIR}/jre/plugin/desktop/sun_java.desktop.tmp
> >>+	${INSTALL_DATA} 
> >>${JDKIMAGEDIR}/jre/plugin/desktop/sun_java.desktop.tmp 
> >>${PREFIX}/share/applications/sun_java15.desktop
> >>+.endif
> >
> >
> >It feels like maybe it would be more appropriate to have a patch for the
> >source file and then use REINPLACE_CMD on it in post-patch and simply
> >install the icon here.
> 
> Sure, if you like it better than this.

Thanks.  I just think its more the standard way to do things.

> >>	@${ECHO_MSG} "@unexec ${LOCALBASE}/bin/unregistervm 
> >>	${PREFIX}/jdk${JDK_VERSION}/bin/java" >> ${TMPPLIST}
> >>	@${FIND} -s ${JDKIMAGEDIR} -not -type d | \
> >>	  ${SED} -ne 's#^${JDKIMAGEDIR}#jdk${JDK_VERSION}#p' >> ${TMPPLIST}
> >>+.if !defined(WITHOUT_WEB)
> >>+	@-update-desktop-database
> >
> >
> >You may want to consider using ${LOCALBASE}/bin/update-desktop-database
> >here.  Also, it seems more appropriate to do this in the post-install step.
> 
> It seems that this particular invocation of update-desktop-database is 
> very popular. Try running the following into any ports category you can 
> think of:
> 
> grep update-desktop-database /usr/ports/[any category]/*/Makefile

Fair enough then, probably no need to put ${LOCALBASE} in.

> Initially I had it in the post-install step, but I thought an extra 
> ifdef there, would be considered uglier than this :-)

My feeling on it is that an operation like this is a post-install
operation rather than an install operation since it would appear to
be updating an external "database" of some sort.  If updating that
database is important, then the operation should actually be done
in the pkg-install script (or installing a package will mean that
the database isn't updated).

However, you mention that this step is done in Makefiles for other
ports.  That leads me to believe that either these ports are all broken
in terms of being installed as a package (not inconceivable ;) or this
operation doesn't actually do anything important.  I think we need
to determine which it is so we can do the right thing here.

Thanks for working on this!

-- 
Greg Lewis                          Email   : glewis@eyesbeyond.com
Eyes Beyond                         Web     : http://www.eyesbeyond.com
Information Technology              FreeBSD : glewis@FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050930180253.GC10169>