From owner-freebsd-ports@FreeBSD.ORG Wed Apr 30 06:25:22 2008 Return-Path: Delivered-To: ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 97E011065682; Wed, 30 Apr 2008 06:25:22 +0000 (UTC) (envelope-from david@wood2.org.uk) Received: from v-smtp-auth-relay-2.gradwell.net (v-smtp-auth-relay-2.gradwell.net [79.135.125.41]) by mx1.freebsd.org (Postfix) with ESMTP id A571A8FC20; Wed, 30 Apr 2008 06:25:21 +0000 (UTC) (envelope-from david@wood2.org.uk) Received: from argon.wood2.org.uk ([82.71.104.124] country=GB ident=postmaster^pop3*wood2^org#uk) by v-smtp-auth-relay-2.gradwell.net with esmtpa (Gradwell gwh-smtpd 1.290) id 48180e39.5d29.e7c; Wed, 30 Apr 2008 07:14:17 +0100 (envelope-sender ) Message-ID: Date: Wed, 30 Apr 2008 07:13:02 +0100 To: "Aryeh M. Friedman" From: David Wood References: <20080429184420.GB5010@dose.local.invalid> <48178247.2010008@gmail.com> <20080429212721.GA5795@dose.local.invalid> <4817D91E.1040900@gmail.com> In-Reply-To: <4817D91E.1040900@gmail.com> MIME-Version: 1.0 Content-Type: text/plain;charset=us-ascii;format=flowed User-Agent: Turnpike/6.06-M (<+nhRuLNS5oZIqwOH7WWZxwfp$O>) Cc: ports@FreeBSD.org, Jacobus Geluk , Simon Barner , Jeremy Messenger Subject: Re: Is someone already working on a port that supports Boost 1.35.0? X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Apr 2008 06:25:22 -0000 Dear Aryeh and all, In message <4817D91E.1040900@gmail.com>, Aryeh M. Friedman writes >Simon Barner wrote: >|> | Yes, I am working on a port. I will send a message to freebsd-ports >|> | once it is ready for testing. >|> >|> While your at it please make it so there is one boost port not boost and >|> boost-python >| >| I will keep boost and boost-python in seperate ports in order to >| keep boost as lean as possible. boost-python will no longer conflict >| with boost but just add python support. The same applies for OpenMPI >| and MPICH support. >| >| Simon >| >Have you ever examined the ports that actually use boost and >boost-pyhton... it seems completely random sometimes which one is which >(i.e. stuff that doesn't require pyhton often depends on boost-python >and stuff that does depend on it relies on boost).... this leads to >some really nasty conflicts and hard to resolve (unless you have done >it before) ordering problems (if I build port A then B then B will fail >because it wanted one flavor of boost when the other one is the >installed one but if you do B then A then it works fine because A >doesn't care what flavor of boost it is looking for).... the classic >example of this is net-p2p/deluge and multimedia/miro where deluge >wants python and miro doesn't care.... Since it is trivial to have a >build/ruin depend on an OPTION (and you already do it via a gnob no >more complexity it added by doing it as an OPTION)... Almost every time >I have brought boost problems up the overwelming consenus among >maintainers that relie on boost is two seperate ports is completely insane. boost-python is merely a slave port of boost that adds python support - it's not two separate ports. You can build boost with python support using the WITH_PYTHON knob. At the moment, it really has to be this way because you can't USE_PYTHON= yes after including bsd.port.pre.mk - but that's exactly what you'd need to have python as an option. This is why there's the slave port - or the WITH_PYTHON knob - so that the python dependency is dealt with before including bsd.port.pre.mk. The only way around this at present would be to change bsd.python.mk so that it could be set after bsd.port.pre.mk. One of the ports I maintain, net/freeradius, uses an ugly hack that I inherited and would not have written. net/freeradius2 has the hack removed because FreeRADIUS 2 includes rlm_python in the default configuration, so it always depends on python. My mind is a little hazy this early in the morning, but I believe we're only a month away from being able to use Mk/bsd.options.mk, as all FreeBSD versions that lack the necessary support in the underlying OS go EOL on 31 May. That will solve this problem, as you'll be able to call bsd.options.mk before bsd.port.pre.mk, and will therefore be able to include bsd.python.mk based on OPTIONS without bsd.python.mk being rewritten. Unless there's any last minute extensions, the only versions of FreeBSD that are supported after 31 May will be 6.x from 6.3-RELEASE onwards, 7.x from 7.0-RELEASE onwards and 8-CURRENT. 6.1-RELEASE and 6.2-RELEASE both become End of Life on 31 May, as does RELENG_5 and all 5.x-RELEASEs. However, there's a deeper issue here - and it's IMHO not about the infrastructure, but about user choice versus the difficulties of dependency with 18000 or so ports. To that end, please don't make this into a discussion about "Ports 2.0", Aryeh - at least not from the starting point that the current infrastructure causes this problem. I'm not saying that the current infrastructure is perfect, or that there's no scope for improvement. Rather, I don't see how any infrastructure changes could, by themselves, resolve the conflicting issues here. When there's a fairly heavyweight option in a port, such as python support, and other ports need to depend on the "with python" version of that port, things can get a bit tricky. Clearly, any ports that do rely on the python version need to depend on the "with python" version. Those that don't rely on python support in that port should depend on either version (which is one situation where slave ports are useful - you depend on the master port and don't care about the state of the option or knob). That way, if you need to add python support of the depended upon port later, it's a case of substituting the "with python" version, maybe using portmaster or portupgrade with -o. The difficulty when you need to depend on the "with python" version can be writing the test for LIB_DEPENDS / RUN_DEPENDS / BUILD_DEPENDS, bearing in mind that you only have the equivalent of ldconfig -r | grep ... for LIB_DEPENDS or test -e / which -s available to you for RUN_DEPENDS / BUILD_DEPENDS. It's not always easy to test via these mechanisms for a particular option or knob in a port you are depending on - sometimes the best that can be done is to test separately and return an error, ideally giving a suggested fix to the user, if the necessary support isn't found. Surely it should be the user's right to choose wherever possible whether a port includes or excludes certain support. Adding an extra dependency on a complex piece of code such as OpenSSL or the Cyrus SASL library arguably increases the security risk of running that port, as well as introducing possible extra maintenance overhead. Not every system has plenty of spare storage space and processor power, either. My new FreeBSD server is a dual Xeon E5430 (a total of 8 cores at 2.66GHz) with 8GB of RAM, though my current production box is a rather more modest Pentium III 733MHz with 512MB of RAM. There are many running FreeBSD on very modest embedded boards, including users of firewall distributions such as pfSense. Of course, even 'big iron' like my dual Xeon box doesn't necessarily have processor power to waste! I'll leave it there - I'm sure many here are familiar with all the issues in this sometimes difficult area of dependency, often from both sides of the fence as ports maintainer / committer and as user. Best wishes, David -- David Wood david@wood2.org.uk