Date: Tue, 14 Oct 2003 13:21:34 +0200 From: Matthias Andree <matthias.andree@gmx.de> To: ports@freebsd.org Subject: READ PLEASE if your port uses BerkeleyDB (db3, db4, db41) Message-ID: <20031014112134.GA18306@merlin.emma.line.org>
next in thread | raw e-mail | index | archive | help
Hi, as some of you know, I am currently maintaining the db4, db41, db41-nocrypto and bogofilter ports, among others. One thing that has bewildered me since I've first used FreeBSD is the DB specific prodding that is taking place in the ports. We don't install BerkeleyDB into /usr/local/BerkeleyDB.4.1/lib/libdb.so for instance, but we're renaming the library (including the ELF SONAME trait) and tossing it into /usr/local/lib. One reason why this MIGHT (just guessing!) have happened is that Sleepycat hasn't made use of the library major version - it's always been 0, even across incompatible API/ABI changes. While the current scheme makes sure that a program is always linked against the right library at run time (libdb41.so.0, for instance), this scheme effectively prohibits packages from using AC_LIB_LINKFLAGS, since the canonical name is libdb rather than libdb4 or something. OTOH, if we reverted to installing in the original SleepyCat directory layout, this would require ALL FreeBSD ports using some libdb version to hard code the path (ld -rpath), so the library is found. /usr/local/BerkeleyDB.X.Y is not in the default library path, not should it be: if it was, a system could only have one BerkeleyDB version installed at a time. This is not an option at this time, since it causes ports conflicts that can be avoided with the current schemes. Just symlinking things into /usr/local/BerkeleyDB.X.Y might not work since the library SONAME does not match then -- or can we have a file /usr/local/BerkeleyDB.4.1/lib/libdb.so when its SONAME is in fact libdb41.so.1? Does anyone see a good way out? Suggestions, thoughts are solicited. For reference, here are the libdb "consumers" and "providers": * databases/db3: aswiki-1.0.1_2 openldap-server-2.0.27_2 cdonkey-0.8.9 p5-BerkeleyDB-0.23 cfengine-1.6.3_4 p5-Lingua-ZH-TaBE-0.03 crawl-0.3_2 poedit-1.2.2_1 cyrus-imapd-2.0.17 rbot-0.9.6 cyrus-imapd-2.1.15_1 rdfdb-0.46_1 cyrus-imapd-2.2.1.b_1 ruby-bdb-0.4.8 db3-3.3.11,1 squidGuard-1.2.0_1 fastresolve-2.10_1 zh-emacs-20.7_2 hotkeys-0.5.7.1 zh-libtabe-0.2.5_1 isync-0.9.1 zh-xcin-2.5.3.p2_3 kiltdown-0.8.045_7 zh-xemacs-20.4_1 netatalk-1.6.3,1 zh-xsim-0.3.9.4 nvi-1.81.5_3 * databases/db4: bogofilter-0.14.5.4 gnucash-1.8.5 pyslsk-1.2.4 cfengine2-2.0.3 gnucash-docs-1.8.1 spamprobe-0.8b db4-4.0.14_1,1 kpsk-1.0 subversion-0.29.0 dctc-0.84.1 libetpan-0.28 zodb-1.0,1 dctc-gui-0.66_1 py23-bsddb-2.3 dctc-gui-qt-0.0.6 py23-bsddb3-4.1.6 * databases/db41: db41-4.1.25_1 kdesdk-3.1.4 db41-nocrypto-4.1.25_1 openldap-server-2.1.22_2 digikam-0.5.1 openldap-server-2.2.0.a_2 dspam-2.6.3 I've used grep -w $PORTNAME /usr/ports/INDEX to find out, where PORTNAME is in the set {db3, db4, db41}. -- 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?20031014112134.GA18306>