Ganglia currently uses an old copy of libdnet embeded in the lib directory. This works fine in general, but I recently heard from a FreeBSD user who was having problems with it. The issue was that he had a copy of libdnet installed in /usr/local and for some reason ganglia picked up the headers from that copy instead of the ones in lib. Since the version in ganglia is old, some of the prerequisits for including dnet.h have been added. This means that ganglia won't compile when libdnet is installed.
There are a couple possiable solutions to this problem: 1) Update libdnet in ganglia Pros: - less changes to the build structure (assuming libdnet hasn't changed much) - Easy to keep building static binaries Cons: - Updating can be difficult, especialy if the libdnet layout changes - Embeding third-party libs in the source violates principles of the FreeBSD ports. 2) Remove libdnet from ganglia and require an external one to build Pros: - Few or no build system changes for updates. - Makes the FreeBSD ports collection happy (I'll add a simple library dependency of libdnet and it will just work.) Cons: - Might cause problems with static binaries (unlikely since we manage with rrdtool). - More things required to build from source. 3) Move to embedding a complete copy of libdnet in it's own directory to be used if the user don't have a copy installed. Pros: - Fairly easy to update. - Doesn't require the user to build another library (or at least hides it from them.) - Makes FreeBSD more or less happy. Cons: - Still needs updating. Doing vendor code right in CVS is a pain. - Wastes bandwidth for people that use the external version. 4) Add the missing prereqs and ignore the issue. Pros: - Easy. Cons: - Only works if libdnet doesn't change their API. 5) Rename dnet headers so installed ones won't get picked up. Pros: - Fairly easy. Cons: - Ick! My personal prefrence is 2, 3, 4, 1, 5 in that order. What do others think? My view is that a good packaging system means the burden of using an exernal library is pretty low (I'd have do type one more word to get my ganglia dependences when building by hand and none when using the port.) -- Brooks -- Any statement of the form "X is the one, true Y" is FALSE. PGP fingerprint 655D 519C 26A7 82E7 2529 9BF0 5D8E 8BE9 F238 1AD4
pgpvvM23q64N7.pgp
Description: PGP signature