Is someone already working on a port that supports Boost 1.35.0?

Aryeh M. Friedman aryeh.friedman at gmail.com
Wed Apr 30 07:05:26 UTC 2008


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I am top posting because my comments are general and not in relationship 
to any given point.   I think Mezz along with Simon both the right way 
to handle it for now.   There are several projects that I am not 
directly involved designed to tackle this sort of issue with ports 2.0 
being the right long term solution but not needed to solve this issue 
per se so I will not discuss it here.   Most of the projects can be 
found on Ale's PortsToDo wiki (wiki.freebsd.org/PortsToDo) the main one 
not found on there is Jim Staplton's virtual ports DB (which I think is 
either in the committ queue or should be since both me an Ale have 
signed off on it as being a good idea).  The issue is really not the 
infrastruct as you state but the more patchs like this we make the more 
likely it is the infrastruct will become problematic down the road.


David Wood wrote:
| Dear Aryeh and all,
|
| In message <4817D91E.1040900 at gmail.com>, Aryeh M. Friedman 
<aryeh.friedman at gmail.com> 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

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (FreeBSD)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkgYGioACgkQk8GFzCrQm4B4vgCdFFCSLf2uiRENPgEVqt7Zybju
OzMAoIcPRfVfiLCksEr/4wmXwIup0Iuy
=PMwp
-----END PGP SIGNATURE-----



More information about the freebsd-ports mailing list