Date: Thu, 6 Nov 2003 15:19:25 +0100 From: Matthias Andree <matthias.andree@gmx.de> To: freebsd-ports@freebsd.org Subject: Re: RFC: FreeBSD DB Port Reform Message-ID: <20031106141924.GA11241@merlin.emma.line.org> In-Reply-To: <3FAA3B77.7090002@fillmore-labs.com> References: <m365hxoh65.fsf@merlin.emma.line.org> <3FAA3B77.7090002@fillmore-labs.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 06 Nov 2003, Oliver Eikemeier wrote: > > 2. bsd.ports.mk should be extended to support WITH_BDB_VER, > > USE_BDB_VER or WANT_BDB_VER or something that presets a set of > > variables, for instance BDB_VERSION, BDB_INCLUDES, BDB_LIBNAME, > > BDB_LIBPATH and LIB_DEPENDS, to lift shared code out of the > > individual ports into bsd.ports.mk. > No WITH_* options in bsd.ports.mk, they are supposed to use as make > arguments > to communicate user => port. WITH_BDB_VER was removed from the draft. > > 3. for db3, db4 and db41, the following changes are made: > > 1. all programs move into $PREFIX/BerkeleyDB.N.M/bin/db_* > That violates hier(7). How about moving them to libexec? It's a bit difficult. We have three db_dump variants that all link against different libraries, but that have the same name. We could, alternatively, symlink those from $PREFIX/BerkeleyDB.N.M/bin/db_* to $PREFIX/bin/db_*-N.M > > 4. all libraries move into $PREFIX/BerkeleyDB.N.M/lib, because > > BerkeleyDB installs not only libdb-N.M* but also libdb-N* and > > libdb* (where * is .so.N, .so or .a), which cannot work in > > the same path. > Same as above. How about lib/db-N.M? Berkeley documentation recommends including db.h (so the port adds -I...) and linking with -ldb (so the port adds -L$PREFIX/BerkeleyDB.N.M/lib). My ultimate goal is to get rid of all FreeBSD-specific patches. If we don't have a libdb.so in a distinct directory, we'll again need to patch or ${REINPLACE_CMD} Makefiles, which this reform is trying to address. > > 6. documentation moves into $PREFIX/share/doc/BerkeleyDB.N.M and > > is symlinked from $PREFIX/BerkeleyDB.N.M/docs > The symlink should not be necessary. Documentation will remain in the default $PREFIX/share/doc/${PORTNAME} for compatibility. > Could you explain stupid people like me again what you gain by not simply > renaming the libraries to libdb-3.3, libdb-4.0 and libdb-4.1 and leaving > the other stuff as it is now? That is what we'll see in /usr/local/lib/: the SONAMEs. The documentation however suggests linking against libdb.so, by using -ldb. http://www.sleepycat.com/docs/ref/build_unix/shlib.html We'd need some mechanism to allow applications (remember, they are provided by third parties) continue to use -ldb, by just adding LDFLAGS=-L/usr/local/BerkeleyDB-N.M/lib. Using LIBS=-ldb-4.1 doesn't work universally. > IMHO ports that expect a BerkeleyDB.N.M directory under /usr/local violate > hier(7), and does this approach work with the ldconfig -r LIB_DEPENDS > checking > we have in bsd.port.mk? The /usr/local/BerkeleyDB.N.M/lib directory's use is relevant at build time. Of course, we can drop support for db2, db3, db4 instead and mark all ports that don't support db41 as broken. But that's even more intrusive than my suggestion. Thanks for your comments. A new 0.2 version of the document has been posted, the ports are unchanged from the first draft. -- Matthias Andree Encrypt your mail: my GnuPG key ID is 0x052E7D95
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20031106141924.GA11241>