Re: Issues with portmaster
Alex Dupre wrote: Peter Jeremy wrote: Firstly, I have jdk-1.5.0.14p8,1 installed and this needs updating. portmaster has decided that doing so requires java/diablo-jdk15 to be installed - which is wrong because I already have a suitable jdk installed. You are right, but the port has the following line: BUILD_DEPENDS+= ${BOOTSTRAPJDKDIR}/bin/javac:${PORTSDIR}/java/diablo-jdk15 So, even if it correctly find the installed /usr/local/jdk1.5.0/bin/javac binary, it adds the diablo dependency. Portmaster checks all the dependencies, even if the binary file exists, and so try to install the diablo jdk. All java ports should be fixed regarding this issue. Portmaster uses CONFLICTS to avoid this issue. This isn't the first time I've heard this complaint about the java ports. I'm wondering if glewis could shed some light on why they don't have proper CONFLICTS set. Meanwhile, the only other alternative is for portmaster to essentially adopt the same functionality as the ports infrastructure itself in order to handle these kinds of dependency issues. That's a step I'd really like to avoid since my goal has always been to make portmaster a sort of wrapper that ties together existing ports functionality rather than replacing it. And of course there is the obvious objection to doing this that it would make the script a lot more complicated. For the most part, relying on CONFLICTS has worked well to solve this problem, I'm hoping it will continue to be a reliable solution. Finally, I'm glad to hear that overall your experience has been favorable Peter. :) Doug -- This .signature sanitized for your protection ___ freebsd-ports@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-ports To unsubscribe, send any mail to [EMAIL PROTECTED]
Re: Issues with portmaster
Doug Barton wrote: Alex Dupre wrote: Peter Jeremy wrote: Firstly, I have jdk-1.5.0.14p8,1 installed and this needs updating. portmaster has decided that doing so requires java/diablo-jdk15 to be installed - which is wrong because I already have a suitable jdk installed. You are right, but the port has the following line: BUILD_DEPENDS+= ${BOOTSTRAPJDKDIR}/bin/javac:${PORTSDIR}/java/diablo-jdk15 So, even if it correctly find the installed /usr/local/jdk1.5.0/bin/javac binary, it adds the diablo dependency. Portmaster checks all the dependencies, even if the binary file exists, and so try to install the diablo jdk. All java ports should be fixed regarding this issue. Portmaster uses CONFLICTS to avoid this issue. This isn't the first time I've heard this complaint about the java ports. I'm wondering if glewis could shed some light on why they don't have proper CONFLICTS set. Because they don't conflict. /usr/local/bin/javac is a script that selects one of the installed JAVA VMs, dependant on what is available, environment settings and a make variable that can be changed in make.conf. ___ freebsd-ports@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-ports To unsubscribe, send any mail to [EMAIL PROTECTED]
Re: Issues with portmaster
Dominic Fandrey wrote: Doug Barton wrote: Portmaster uses CONFLICTS to avoid this issue. This isn't the first time I've heard this complaint about the java ports. I'm wondering if glewis could shed some light on why they don't have proper CONFLICTS set. Because they don't conflict. /usr/local/bin/javac is a script that selects one of the installed JAVA VMs, dependant on what is available, environment settings and a make variable that can be changed in make.conf. AFAICT, javac isn't relevant to the issue of whether the various jdk ports conflict with each other. It's just a convenient way to handle the dependency question within the ports framework. Doug -- This .signature sanitized for your protection ___ freebsd-ports@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-ports To unsubscribe, send any mail to [EMAIL PROTECTED]
Re: Issues with portmaster
Doug Barton wrote: Dominic Fandrey wrote: Doug Barton wrote: Portmaster uses CONFLICTS to avoid this issue. This isn't the first time I've heard this complaint about the java ports. I'm wondering if glewis could shed some light on why they don't have proper CONFLICTS set. Because they don't conflict. /usr/local/bin/javac is a script that selects one of the installed JAVA VMs, dependant on what is available, environment settings and a make variable that can be changed in make.conf. AFAICT, javac isn't relevant to the issue of whether the various jdk ports conflict with each other. It's just a convenient way to handle the dependency question within the ports framework. JDK Ports don't conflict. None of them. And because many Java developers have several JDKs installed, noone will ever put a CONFLICT line into JDK port. The only way to resolve this is to detect weather a dependency is required in the same way as a port does. I suggest to check for the existence of the file and when the file is from a different port, 'pkg_info -W' should be called and whatever turns out to be the origin, should be entered as a dependency in /var/db/pkg. ___ freebsd-ports@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-ports To unsubscribe, send any mail to [EMAIL PROTECTED]
Re: Issues with portmaster
Doug Barton ha scritto: Portmaster uses CONFLICTS to avoid this issue. I can't see how CONFLICTS could solve this issue: we can install all the JDKs together without problems (this is different from original bison problem). The issue here is that the jdk port directory is not a variable parameter, based on which javac binary is selected. -- Alex Dupre ___ freebsd-ports@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-ports To unsubscribe, send any mail to [EMAIL PROTECTED]
Re: Issues with portmaster
Hello! On Mon, Jun 23, 2008 at 12:49:22AM -0700, Doug Barton wrote: Alex Dupre wrote: Doug Barton ha scritto: Portmaster uses CONFLICTS to avoid this issue. I can't see how CONFLICTS could solve this issue: we can install all the JDKs together without problems It seems I don't understand something here. Can someone explain why jdk ports need to set BUILD_DEPENDS on diablo-jdk15 unconditionally? Why it is not possible to define it inside 'if !defined(BOOTSTRAPJDKDIR)'? (See attached patch.) Just curious, Alexey. --- Makefile.orig 2008-06-23 10:33:59.0 +0200 +++ Makefile2008-06-23 10:34:36.0 +0200 @@ -108,9 +108,8 @@ # if no valid jdk found, set dependency .if !defined(BOOTSTRAPJDKDIR) BOOTSTRAPJDKDIR?= ${LOCALBASE}/diablo-jdk1.5.0 -.endif - BUILD_DEPENDS+= ${BOOTSTRAPJDKDIR}/bin/javac:${PORTSDIR}/java/diablo-jdk15 +.endif .if defined(WITHOUT_WEB) MAKE_ENV+= DONT_BUILD_DEPLOY=YES ___ freebsd-ports@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-ports To unsubscribe, send any mail to [EMAIL PROTECTED]
Re: Issues with portmaster
Alexey Shuvaev ha scritto: It seems I don't understand something here. Can someone explain why jdk ports need to set BUILD_DEPENDS on diablo-jdk15 unconditionally? (nearly) every JDK port needs an already usable/installed JDK to bootstrap the compilation. This is the reason of the BUILD_DEPENDS on javac that you cannot remove. But the port providing the javac binary could not be the diablo-jdk. -- Alex Dupre ___ freebsd-ports@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-ports To unsubscribe, send any mail to [EMAIL PROTECTED]
Re: Issues with portmaster
On Mon, Jun 23, 2008 at 10:57:41AM +0200, Alex Dupre wrote: Alexey Shuvaev ha scritto: It seems I don't understand something here. Can someone explain why jdk ports need to set BUILD_DEPENDS on diablo-jdk15 unconditionally? (nearly) every JDK port needs an already usable/installed JDK to bootstrap the compilation. This is the reason of the BUILD_DEPENDS on javac that you cannot remove. But the port providing the javac binary ^ could not be the diablo-jdk. Mmmm... why not??? In a nutshell, from the user point of view the reason to set BUILD_DEPENDS is to ensure that some port (java here) is installed prior to build. However, if the port checks against installed java in a more complicated manner than BUILD_DEPENDS mechanism can provide, I see no reason to set BUILD_DEPENDS to something just for its own sake. And from the build cluster point of view, the port will be built in a clean environment, so port will not detect any installed java and will set BUILD_DEPENDS *conditionally* (.if !defiend(BOOTSTRAPJDKDIR)). I have a feeling that the way BUILD_DEPENDS is set now is overkill, and one can put it under .if !defined(BOOTSTRAPJDKDIR) without any functional change. Of course, the Right Way To Do This would be to set the whole correct BUILD_DEPENDS line based on detected java. Maybe this is even not so complicated. Or I miss something? Just 0.02$, Alexey. ___ freebsd-ports@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-ports To unsubscribe, send any mail to [EMAIL PROTECTED]
Re: Issues with portmaster
On Mon, 23 Jun 2008 10:57:41 +0200 Alex Dupre [EMAIL PROTECTED] wrote: Alexey Shuvaev ha scritto: It seems I don't understand something here. Can someone explain why jdk ports need to set BUILD_DEPENDS on diablo-jdk15 unconditionally? (nearly) every JDK port needs an already usable/installed JDK to bootstrap the compilation. This is the reason of the BUILD_DEPENDS on javac that you cannot remove. But the port providing the javac binary could not be the diablo-jdk. The thing is that, IIRC, it doesn't have to create a dependency at all, unless the functionality is missing. It's not simply a case of it creating a normally dependency in the sense of: install this port if that file is not found. The makefile has logic to detect which java ports are installed, so it doesn't build a second bootstap port, but it doesn't carry it through to removing the dependency once bootstrapping is no longer required. I reported this problem a long time ago after I spotted that portmanager was reinstalling a linux java version. I thought the maintainer was going to fix it. ___ freebsd-ports@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-ports To unsubscribe, send any mail to [EMAIL PROTECTED]
Re: Issues with portmaster
On Mon, 23 Jun 2008 00:06:38 -0700 Doug Barton [EMAIL PROTECTED] wrote: Portmaster uses CONFLICTS to avoid this issue. This isn't the first time I've heard this complaint about the java ports. I'm wondering if glewis could shed some light on why they don't have proper CONFLICTS set. Meanwhile, the only other alternative is for portmaster to essentially adopt the same functionality as the ports infrastructure itself in order to handle these kinds of dependency issues. That's a step I'd really like to avoid since my goal has always been to make portmaster a sort of wrapper that ties together existing ports functionality rather than replacing it. And of course there is the obvious objection to doing this that it would make the script a lot more complicated. In this case I think it's pure logic problem in the makefile. More generally though I wonder if it would be possible to create a more useful missing target, i.e. show which first-level dependencies would actually be installed if the given port were rebuilt. That way build tools would have enough information to determine which ports need to be built without having to parse the makefiles. ___ freebsd-ports@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-ports To unsubscribe, send any mail to [EMAIL PROTECTED]
Re: Issues with portmaster
Alexey Shuvaev wrote: On Mon, Jun 23, 2008 at 10:57:41AM +0200, Alex Dupre wrote: Alexey Shuvaev ha scritto: It seems I don't understand something here. Can someone explain why jdk ports need to set BUILD_DEPENDS on diablo-jdk15 unconditionally? (nearly) every JDK port needs an already usable/installed JDK to bootstrap the compilation. This is the reason of the BUILD_DEPENDS on javac that you cannot remove. But the port providing the javac binary ^ could not be the diablo-jdk. Mmmm... why not??? In a nutshell, from the user point of view the reason to set BUILD_DEPENDS is to ensure that some port (java here) is installed prior to build. However, if the port checks against installed java in a more complicated manner than BUILD_DEPENDS mechanism can provide, I see no reason to set BUILD_DEPENDS to something just for its own sake. And from the build cluster point of view, the port will be built in a clean environment, so port will not detect any installed java and will set BUILD_DEPENDS *conditionally* (.if !defiend(BOOTSTRAPJDKDIR)). I have a feeling that the way BUILD_DEPENDS is set now is overkill, and one can put it under .if !defined(BOOTSTRAPJDKDIR) without any functional change. Of course, the Right Way To Do This would be to set the whole correct BUILD_DEPENDS line based on detected java. Maybe this is even not so complicated. Or I miss something? Thanks for the discussion on this. Since I don't use java I'm relying an the users here. Hopefully glewis can weigh in at some point. Doug -- This .signature sanitized for your protection ___ freebsd-ports@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-ports To unsubscribe, send any mail to [EMAIL PROTECTED]
Re: Issues with portmaster
On Mon, Jun 23, 2008 at 12:28:08PM -0700, Doug Barton wrote: Alexey Shuvaev wrote: On Mon, Jun 23, 2008 at 10:57:41AM +0200, Alex Dupre wrote: Alexey Shuvaev ha scritto: It seems I don't understand something here. Can someone explain why jdk ports need to set BUILD_DEPENDS on diablo-jdk15 unconditionally? (nearly) every JDK port needs an already usable/installed JDK to bootstrap the compilation. This is the reason of the BUILD_DEPENDS on javac that you cannot remove. But the port providing the javac binary ^ could not be the diablo-jdk. Mmmm... why not??? In a nutshell, from the user point of view the reason to set BUILD_DEPENDS is to ensure that some port (java here) is installed prior to build. However, if the port checks against installed java in a more complicated manner than BUILD_DEPENDS mechanism can provide, I see no reason to set BUILD_DEPENDS to something just for its own sake. And from the build cluster point of view, the port will be built in a clean environment, so port will not detect any installed java and will set BUILD_DEPENDS *conditionally* (.if !defiend(BOOTSTRAPJDKDIR)). I have a feeling that the way BUILD_DEPENDS is set now is overkill, and one can put it under .if !defined(BOOTSTRAPJDKDIR) without any functional change. Of course, the Right Way To Do This would be to set the whole correct BUILD_DEPENDS line based on detected java. Maybe this is even not so complicated. Or I miss something? Thanks for the discussion on this. Since I don't use java I'm relying an the users here. Hopefully glewis can weigh in at some point. Its probably not that complicated for the port to stop cheating on the way it sets up BUILD_DEPENDS. At the moment it knows the potential bootstrap JDKs install paths, but it doesn't know where they live in ports, so it cheats and sets the requirement to the detected javac but then hardcodes the dependency as Diablo. This works from a ports point of view in that the dependency isn't installed if the requirement is found, but it obviously confuses portsmaster. From a partial reading of the email thread, it looks like the simplest thing to do is to just not set BUILD_DEPENDS if it finds an appropriately installed JDK. That way it will only set it if it can't find a bootstrap JDK and it needs one installed. -- Greg Lewis Email : [EMAIL PROTECTED] Eyes Beyond Web : http://www.eyesbeyond.com Information Technology FreeBSD : [EMAIL PROTECTED] ___ freebsd-ports@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-ports To unsubscribe, send any mail to [EMAIL PROTECTED]
Re: Issues with portmaster
Peter Jeremy wrote: Firstly, I have jdk-1.5.0.14p8,1 installed and this needs updating. portmaster has decided that doing so requires java/diablo-jdk15 to be installed - which is wrong because I already have a suitable jdk installed. You are right, but the port has the following line: BUILD_DEPENDS+= ${BOOTSTRAPJDKDIR}/bin/javac:${PORTSDIR}/java/diablo-jdk15 So, even if it correctly find the installed /usr/local/jdk1.5.0/bin/javac binary, it adds the diablo dependency. Portmaster checks all the dependencies, even if the binary file exists, and so try to install the diablo jdk. All java ports should be fixed regarding this issue. -- Alex Dupre ___ freebsd-ports@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-ports To unsubscribe, send any mail to [EMAIL PROTECTED]
Issues with portmaster
I recently installed portmaster on a old/slow box to handle upgrading ports without the overheads of installing portupgrade (which I have been using elsewhere). That seemed to go fairly well so I then tried it on some of my other machines and have run into some issues. Firstly, I have jdk-1.5.0.14p8,1 installed and this needs updating. portmaster has decided that doing so requires java/diablo-jdk15 to be installed - which is wrong because I already have a suitable jdk installed. I can't find any reference to this on the mailing lists so I suspect it's something I've done or am not doing but I can't see what the problem is. If I do a build-depends-list in java/jdk15 then I get java/diablo-jdk15 so portmaster isn't being totally unreasonable but I can't see how to resolve the problem. Relevant output from portmaster -v is: === Launching child to update jdk-1.5.0.14p8,1 === Port directory: /usr/ports/java/jdk15 === Launching 'make checksum' for java/jdk15 in background === Gathering dependency list for java/jdk15 from ports === Starting recursive 'make config' check === Checking dependency: /usr/ports/archivers/unzip === Checking dependency: /usr/ports/archivers/zip === Checking dependency: /usr/ports/converters/libiconv === Checking dependency: /usr/ports/devel/desktop-file-utils === Checking dependency: /usr/ports/devel/gio-fam-backend === Checking dependency: /usr/ports/devel/glib20 === Checking dependency: /usr/ports/devel/gmake === Checking dependency: /usr/ports/devel/m4 === Checking dependency: /usr/ports/devel/nspr === Checking dependency: /usr/ports/devel/pkg-config === Checking dependency: /usr/ports/java/diablo-jdk15 === Launching child to update java/diablo-jdk15 jdk-1.5.0.14p8,1 java/diablo-jdk15 === Port directory: /usr/ports/java/diablo-jdk15 === This port is marked IGNORE === : Because of licensing restrictions, you must fetch the distribution manually. Please access http://www.FreeBSDFoundation.org/cgi-bin/download?download=diablo-caffe-freebsd6-amd64-1.5.0_07-b01.tar.bz2 with a web browser and Accept the End User License Agreement for Caffe Diablo 1.5.0. Please place the downloaded diablo-caffe-freebsd6-amd64-1.5.0_07-b01.tar.bz2 in /usr/ports/distfiles. === If you are sure you can build it, remove the IGNORE line in the Makefile and try again. === Update for /usr/ports/java/diablo-jdk15 failed === Aborting update === Update for jdk-1.5.0.14p8,1 failed === Aborting update Secondly, I notice 'DEPRECATED' is treated as a fatal error. Some of the ports I use have DEPRECATED dependencies but I don't maintain those ports so I'm not directly responsible for resolving that. Shouldn't there be an easier way for me to treat DEPRECATED as a non-fatal condition than editing my ports tree? -- Peter Jeremy Please excuse any delays as the result of my ISP's inability to implement an MTA that is either RFC2821-compliant or matches their claimed behaviour. pgpOzTz35zJvw.pgp Description: PGP signature