New BIND releases ... 9.16.4: build, 'fatal error: lmdb.h: No such file or directory'

Mark Andrews marka at isc.org
Fri Jun 19 01:55:11 UTC 2020


${LMDB_CFLAGS} is missing from make/includes.in or bin/named/Makefile.in

diff --git a/make/includes.in b/make/includes.in
index 9ff1bd8cf1..9eaf1d3dd5 100644
--- a/make/includes.in
+++ b/make/includes.in
@@ -28,7 +28,7 @@ ISCCFG_INCLUDES = @BIND9_ISCCFG_BUILDINCLUDE@ \
 DNS_INCLUDES = @BIND9_DNS_BUILDINCLUDE@ \
        -I${top_srcdir}/lib/dns/include \
        ${FSTRM_CFLAGS} ${PROTOBUF_C_CFLAGS} \
-       ${OPENSSL_CFLAGS}
+       ${OPENSSL_CFLAGS} ${LMDB_CFLAGS}
 
 NS_INCLUDES = @BIND9_NS_BUILDINCLUDE@ \
        -I${top_srcdir}/lib/ns/include

As for ‘lib64’ vs ‘lib' the complier should adjust the -L paths to match the architecture as needed usually by appending “/../lib64” to account for given path being a symbolic link.

The pkg-config output is architecture dependent and it should be architecture independent.


> On 19 Jun 2020, at 03:25, PGNet Dev <pgnet.dev at gmail.com> wrote:
> 
> this
> 
> 	configure.ac
> 		AC_MSG_CHECKING(for lmdb library)
> 		AC_ARG_WITH(lmdb,
> 		        AS_HELP_STRING([--with-lmdb[=PATH]],
> 		               [build with LMDB library [yes|no|path]]),
> 		    use_lmdb="$withval", use_lmdb="auto")
> 
> 		have_lmdb=""
> 		case "$use_lmdb" in
> 		    no)
> 		        LMDB_LIBS=""
> 		        ;;
> 		    auto|yes)
> 		        for d in /usr /usr/local /opt/local
> 		        do
> 		            if test -f "${d}/include/lmdb.h"
> 		            then
> 		                if test ${d} != /usr
> 		                then
> 		                    LMDB_CFLAGS="-I ${d}/include"
> !!		                    LMDB_LIBS="-L${d}/lib"
> 		                fi
> 		                have_lmdb="yes"
> 		            fi
> 		        done
> 		        ;;
> 		    *)
> 		        if test -f "${use_lmdb}/include/lmdb.h"
> 		        then
> 		            LMDB_CFLAGS="-I${use_lmdb}/include"
> !!		            LMDB_LIBS="-L${use_lmdb}/lib"
> 		            have_lmdb="yes"
> 		        else
> 		            AC_MSG_ERROR([$use_lmdb/include/lmdb.h not found.])
> 		        fi
> 		        ;;
> 		esac
> 
> 
> is naive. it ignores commonplace multiarch support.
> 
> 
> 
> with =path enabled on config, generated Makefile is just wrong
> 
> 	egrep "^LMDB" Makefile
> 		LMDB_CFLAGS = -I/usr/local/lmdb/include
> 		LMDB_LIBS = -L/usr/local/lmdb/lib none required
> 
> 
> 
> bind advertises
> 
> 	./configure --help | grep -i LMDB
> 		--with-lmdb=PATH        build with LMDB library [yes|no|path]
> 
> it simply fails to work as advertised.
> 
>> you can use and adjust the .pc file from any Linux distribution package
> 
> of course you can.
> 
> it's here
> 
> 	pkg-config --libs --cflags lmdb
> 		-I/usr/local/lmdb/include -L/usr/local/lmdb/lib64 -llmdb
> 
>> LMDB support in BIND 9 comes with pkg-config support too
> 
> there's NO such option advertised by bind configure, as
> 
> 	LMDB_CFLAGS
> 	          C compiler flags for LMDB, overriding pkg-config
> 	LMDB_LIBS
> 	          linker flags for LMDB, overriding pkg-config
> 
> it's simply not used by this bind build
> 
> 	grep PKG_CHECK `grep -rln PKG_CHECK .` | grep -i lmdb
> 		(empty)
> 
> & no mention at all of it in source
> 
> 	grep -i lmdb `grep -rlni lmdb .` | grep -i pkg
> 		(empty)
> 
> this
> 
> 	--with-openssl=/usr/local/openssl
> 
> works.
> this,
> 
> 	--with-lmdb=/usr/local/lmdb
> 
> does not.
> 
> That has _nothing_ to do with 'LMDB upstream'
> 
> 
>> Did you came to get help or to argue?
> 
> neither.
> 
>> It’s really not our fault the LMDB upstream decided to make it hard to use the library.
> 
> ::facepalm::
> 
> 
> this
> 
> 	tree /usr/local/lmdb
> 		/usr/local/lmdb
> 		...
> 		├── include
> 		│   └── lmdb.h
> 		...
> 		├── lib64
> 		│   ├── liblmdb.a
> 		│   └── liblmdb.so
> 		...
> 
> is about as simple as it gets.
> 
> fix it, remove it, or leave it as is -- your product, your choice.
> 
> good luck.
> _______________________________________________
> Please visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe from this list
> 
> ISC funds the development of this software with paid support subscriptions. Contact us at https://www.isc.org/contact/ for more information.
> 
> 
> bind-users mailing list
> bind-users at lists.isc.org
> https://lists.isc.org/mailman/listinfo/bind-users

-- 
Mark Andrews, ISC
1 Seymour St., Dundas Valley, NSW 2117, Australia
PHONE: +61 2 9871 4742              INTERNET: marka at isc.org



More information about the bind-users mailing list