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

Attachment: pgpvvM23q64N7.pgp
Description: PGP signature

Reply via email to