to 9.16.4, with my usual build config, including
--with-lmdb=/usr/local/lmdb \
where,
tree /usr/local/lmdb
/usr/local/lmdb
roLroCroC bin
roe-a-a roLroCroC mdb_copy
roe-a-a roLroCroC mdb_drop
roe-a-a roLroCroC mdb_dump
roe-a-a roLroCroC mdb_load
roe-a-a rooroCroC mdb_stat
roLroCroC include
!! roe-a-a rooroCroC lmdb.h
roLroCroC lib
roLroCroC lib64
roe-a-a roLroCroC liblmdb.a
roe-a-a rooroCroC liblmdb.so
roLroCroC man
rooroCroC share
rooroCroC man
rooroCroC man1
roLroCroC mdb_copy.1
roLroCroC mdb_drop.1
roLroCroC mdb_dump.1
roLroCroC mdb_load.1
rooroCroC mdb_stat.1
On 18 Jun 2020, at 04:28, PGNet Dev <pgnet.dev@gmail.com> wrote:--- Synchronet 3.21d-Linux NewsLink 1.2
which certainly isn't correct.
Virtually everybody except upstream has modified LMDB to follow a normal directory layout and BIND expect that.
You should just move the header files and library to /usr/local/include and /usr/local/lib respectively.
On 18 Jun 2020, at 07:15, PGNet Dev <pgnet.dev@gmail.com> wrote:--- Synchronet 3.21d-Linux NewsLink 1.2
N++On 6/17/20 9:48 PM, Ond+Oej Sur|+ wrote:
Virtually everybody except upstream has modified LMDB to follow a normal directory layout and BIND expect that.
You should just move the header files and library to /usr/local/include and /usr/local/lib respectively.
That's just a silly statement.
1st, /usr/local/lib is NOT a 'normal directory' layout for a number of distros -- /usr/local/lib64 is. That assumption in bind's code is just wrong.
Software should link against the libs, and include the headers, you TELL it to -- not what it arbitrarily 'expects'.
Finally, if that's BIND's 'expectation', why does bind even have a =path config option for it?
What's the basis for arbitrary choice of bind using pkg-config for some pkgs, providing well-functioning _CFLAGS/_LDFLAGS/_LIBS overrides for others -- but in the case of lmdb, neither -- just an 'expectation'?
build now fails @ "fatal error: lmdb.h: No such file or directory"onfig.h -I/usr/local/src/bind-9.16.4 -I../.. -I./include -I./unix/include -=
...
libtool: compile: /usr/bin/gcc-10 -include /usr/local/src/bind-9.16.4/c=
In file included from ./server.c:131:
echo $CPPFLAGSnclude -I/usr/include
-I/usr/local/include -I/usr/local/openssl11/include -I/usr/local/lmdb/i=
Response in-line./config.h -I/usr/local/src/bind-9.16.4 -I../.. -I./include -I./unix/include=
=20
build now fails @ "fatal error: lmdb.h: No such file or directory"
...
libtool: compile: /usr/bin/gcc-10 -include /usr/local/src/bind-9.16.4=
/include -I/usr/includeIn file included from ./server.c:131:=20
There is no `-I/usr/local/lmdb/include` here
=20
echo $CPPFLAGS
-I/usr/local/include -I/usr/local/openssl11/include -I/usr/local/lmdb=
=20
I'd imagine you want CPPFLAGS here. or you can export C_INCLUDE_PATH
I'd imagine you want CPPFLAGS here. or you can export C_INCLUDE_PATH...
Edit:`s/CPPFLAGS/CFLAGS`
you can use and adjust the .pc file from any Linux distribution package
LMDB support in BIND 9 comes with pkg-config support too
Did you came to get help or to argue?
ItrCOs really not our fault the LMDB upstream decided to make it hard to use the library.
On 19 Jun 2020, at 03:25, PGNet Dev <pgnet.dev@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.
ItrCOs 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
...
roLroCroC include
roe rooroCroC lmdb.h
...
roLroCroC lib64
roe roLroCroC liblmdb.a
roe rooroCroC 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@lists.isc.org
https://lists.isc.org/mailman/listinfo/bind-users
but whether lmdb inclusion/usage now _functions_ correctly with that^ cleanup, i have yet to verify.
checking now ...
| Sysop: | Amessyroom |
|---|---|
| Location: | Fayetteville, NC |
| Users: | 65 |
| Nodes: | 6 (0 / 6) |
| Uptime: | 05:10:39 |
| Calls: | 862 |
| Files: | 1,311 |
| D/L today: |
921 files (14,318M bytes) |
| Messages: | 264,602 |