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