Skip to contentSkip to conversation

netatalk: Make BerkeleyDB optional for Netatalk

PATCH New Maxime Hadjinlian 3 participants 12 messages Nov 8, 2012 – Dec 17, 2012 1 message not in the archive

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): 1352057123-7137-2-git-send-email-maxime.hadjinlian

#1 lore raw

PATCH 2/2 netatalk: Make BerkeleyDB optional for Netatalk

As the documentation of netatalk states :
"dbd is the default backend since version 2.1"
So cdb (which is the CNID provided by BerkeleyDB) should not be the default.

Also, this patches fixes a trouble when compiling with berkeleydb in 64bits where netatalk would look the berkeleylib in [...]/lib64 instead of [...]/lib

---
 package/netatalk/Config.in   |    1 -
 package/netatalk/netatalk.mk |   16 ++++++++++++----
 2 files changed, 12 insertions(+), 5 deletions(-)
package/netatalk/Config.in +0 -1
index 26f14c3..e602acd 100644
@@ -1,6 +1,5 @@
 config BR2_PACKAGE_NETATALK
 	bool "netatalk"
-	select BR2_PACKAGE_BERKELEYDB
 	select BR2_PACKAGE_OPENSSL
 	select BR2_PACKAGE_LIBGCRYPT
 	select BR2_PACKAGE_LIBGPG_ERROR
package/netatalk/netatalk.mk +12 -4
index 4aa179e..70c8a13 100644
@@ -7,11 +7,10 @@ NETATALK_VERSION = 3.0
 NETATALK_SITE = http://downloads.sourceforge.net/project/netatalk/netatalk/$(NETATALK_VERSION)
 NETATALK_SOURCE = netatalk-$(NETATALK_VERSION).tar.bz2
 
-NETATALK_DEPENDENCIES = host-pkg-config openssl berkeleydb libgcrypt libgpg-error
+NETATALK_DEPENDENCIES = host-pkg-config openssl libgcrypt libgpg-error
 NETATALK_CONF_ENV += CC="$(TARGET_CC) -std=gnu99"
-NETATALK_CONF_OPT += --with-cnid-cdb-backend \
-	--with-bdb=$(STAGING_DIR)/usr \
-	--disable-zeroconf \
+
+NETATALK_CONF_OPT += --disable-zeroconf \
 	--with-ssl-dir=$(STAGING_DIR)/usr \
 	--with-libgcrypt-dir=$(STAGING_DIR)/usr \
 	--with-shadow \
@@ -19,6 +18,15 @@ NETATALK_CONF_OPT += --with-cnid-cdb-backend \
 	--without-kerberos \
 	--without-pam
 
+ifeq ($(BR2_PACKAGE_BERKELEYDB),y)
+	NETATALK_DEPENDENCIES += berkeleydb
+	NETATALK_CONF_ENV += BDB_LIB=$(STAGING_LIB)/usr/lib
+	NETATALK_CONF_OPT += --with-cnid-cdb-backend \
+		--with-bdb=$(STAGING_DIR)/usr
+else
+	NETATALK_CONF_OPT += --without-cnid-cdb-backend
+endif
+
 ifeq ($(BR2_PACKAGE_CUPS),y)
 	NETATALK_DEPENDENCIES += cups
 	NETATALK_CONF_ENV += ac_cv_path_CUPS_CONFIG=$(STAGING_DIR)/usr/bin/cups-config

--
1.7.10.4

#2 lore raw

PATCH 2/2 netatalk: Make BerkeleyDB optional for Netatalk

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Maxime" == Maxime Hadjinlian <[email protected]> writes:

Maxime> As the documentation of netatalk states :
Maxime> "dbd is the default backend since version 2.1"
Maxime> So cdb (which is the CNID provided by BerkeleyDB) should not be the default.

Maxime> Also, this patches fixes a trouble when compiling with Maxime> berkeleydb in 64bits where netatalk would look the berkeleylib Maxime> in [...]/lib64 instead of [...]/lib

Thanks, but:

- It doesn't apply because of host-pkg-config -> host-pkgconf.
- It doesn't work:

checking for Berkeley DB headers in /usr/include/db48... no
checking for Berkeley DB headers in /usr/include/db4.7... no
checking for Berkeley DB headers in /usr/include/db47... no
checking for Berkeley DB headers in /usr/include/db4.6... no
checking for Berkeley DB headers in /usr/include/db46... no
checking for Berkeley DB headers in /usr/include/db4... no
configure: error: Berkeley DB library required but not found!
make[1]: *** [/home/peko/source/buildroot/testnetatalk/build/netatalk-3.0/.stamp_configured] Error 1

With an empty default BR config (only netatalk enabled).

Signature · 1 line
Bye, Peter Korsgaard
#3 lore raw

PATCH 2/2 netatalk: Make BerkeleyDB optional for Netatalk

Quoted 24 lines · Peter Korsgaard
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Maxime" == Maxime Hadjinlian <[email protected]> writes:

Maxime> As the documentation of netatalk states :
Maxime> "dbd is the default backend since version 2.1"
Maxime> So cdb (which is the CNID provided by BerkeleyDB) should not be the default.

Maxime> Also, this patches fixes a trouble when compiling with Maxime> berkeleydb in 64bits where netatalk would look the berkeleylib Maxime> in [...]/lib64 instead of [...]/lib

Thanks, but:

- It doesn't apply because of host-pkg-config -> host-pkgconf.
- It doesn't work:

checking for Berkeley DB headers in /usr/include/db48... no
checking for Berkeley DB headers in /usr/include/db4.7... no
checking for Berkeley DB headers in /usr/include/db47... no
checking for Berkeley DB headers in /usr/include/db4.6... no
checking for Berkeley DB headers in /usr/include/db46... no
checking for Berkeley DB headers in /usr/include/db4... no
configure: error: Berkeley DB library required but not found!
make[1]: *** [/home/peko/source/buildroot/testnetatalk/build/netatalk-3.0/.stamp_configured] Error 1

Quoted 1 line

With an empty default BR config (only netatalk enabled).

I'll look into it, it should not error because of this since BerkeleDB is not longer needed for building netatalk...
Thanks for your feedback.

Quoted 3 lines

--
Bye, Peter Korsgaard

#4 lore raw

PATCH 1/1 netatalk : Fix BerkeleyDB library path

This fix is needed for the 64bits build because Netatalk will assume the library are stored in [..]/lib64/ instead of [..]/lib/

---
 package/netatalk/netatalk.mk |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/netatalk/netatalk.mk +1 -1
index 4063b53..23c2a95 100644
@@ -8,7 +8,7 @@ NETATALK_SITE = http://downloads.sourceforge.net/project/netatalk/netatalk/$(NET
 NETATALK_SOURCE = netatalk-$(NETATALK_VERSION).tar.bz2
 
 NETATALK_DEPENDENCIES = host-pkgconf openssl berkeleydb libgcrypt libgpg-error
-NETATALK_CONF_ENV += CC="$(TARGET_CC) -std=gnu99"
+NETATALK_CONF_ENV += CC="$(TARGET_CC) -std=gnu99" BDB_LIB=$(STAGING_LIB)/usr/lib
 NETATALK_CONF_OPT += --with-cnid-cdb-backend \
 	--with-bdb=$(STAGING_DIR)/usr \
 	--disable-zeroconf \

--
1.7.10.4

#5 lore raw

PATCH 1/1 netatalk : Fix BerkeleyDB library path

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Maxime" == Maxime Hadjinlian <[email protected]> writes:

Maxime> This fix is needed for the 64bits build because Netatalk will assume the library Maxime> are stored in [..]/lib64/ instead of [..]/lib/

Committed, thanks.

Signature · 1 line
Bye, Peter Korsgaard
#6 lore raw

PATCH 1/1 netatalk : Fix BerkeleyDB library path

In reply to Maxime Hadjinlian
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Maxime" == Maxime Hadjinlian <[email protected]> writes:

Maxime> This fix is needed for the 64bits build because Netatalk will assume the library Maxime> are stored in [..]/lib64/ instead of [..]/lib/

Hmm, we still seem to have issues on the autobuilders:

http://autobuild.buildroot.net/results/cf5c3ce94c229204bfa0f19b1009c13a9bcc1dfc/build-end.log

Maxime> +++ b/package/netatalk/netatalk.mk
Maxime> @@ -8,7 +8,7 @@ NETATALK_SITE = http://downloads.sourceforge.net/project/netatalk/netatalk/$(NET
Maxime> NETATALK_SOURCE = netatalk-$(NETATALK_VERSION).tar.bz2

Maxime> NETATALK_DEPENDENCIES = host-pkgconf openssl berkeleydb libgcrypt libgpg-error Maxime> -NETATALK_CONF_ENV += CC="$(TARGET_CC) -std=gnu99"
Maxime> +NETATALK_CONF_ENV += CC="$(TARGET_CC) -std=gnu99" BDB_LIB=$(STAGING_LIB)/usr/lib

I guess you meant STAGING_DIR instead here, will fix.

Signature · 1 line
Bye, Peter Korsgaard
#7 lore raw

PATCH 1/1 netatalk : Fix BerkeleyDB library path

Quoted 13 lines · Peter Korsgaard
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Maxime" == Maxime Hadjinlian <[email protected]> writes:

Maxime> This fix is needed for the 64bits build because Netatalk will assume the library Maxime> are stored in [..]/lib64/ instead of [..]/lib/

Hmm, we still seem to have issues on the autobuilders:

http://autobuild.buildroot.net/results/cf5c3ce94c229204bfa0f19b1009c13a9bcc1dfc/build-end.log

Maxime> +++ b/package/netatalk/netatalk.mk
Maxime> @@ -8,7 +8,7 @@ NETATALK_SITE = http://downloads.sourceforge.net/project/netatalk/netatalk/$(NET
Maxime> NETATALK_SOURCE = netatalk-$(NETATALK_VERSION).tar.bz2

Quoted 6 lines

Maxime> NETATALK_DEPENDENCIES = host-pkgconf openssl berkeleydb libgcrypt libgpg-error Maxime> -NETATALK_CONF_ENV += CC="$(TARGET_CC) -std=gnu99"
Maxime> +NETATALK_CONF_ENV += CC="$(TARGET_CC) -std=gnu99" BDB_LIB=$(STAGING_LIB)/usr/lib

I guess you meant STAGING_DIR instead here, will fix.

This is strange because I tested with a 64 bits build and I had'nt the problem anymore.. And I don't remember rewriting the patch before sending it here. But then again, you're totally right, this does'nt make sense. I'm really wondering how it could have worked for me :/

Quoted 3 lines

--
Bye, Peter Korsgaard

#8 lore raw

PATCH 1/1 netatalk : Fix BerkeleyDB library path

Quoted 19 lines · Maxime Hadjinlian
Quoted 18 lines · Peter Korsgaard
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Maxime" == Maxime Hadjinlian<[email protected]> writes:

Maxime> This fix is needed for the 64bits build because Netatalk will assume the library Maxime> are stored in [..]/lib64/ instead of [..]/lib/

Hmm, we still seem to have issues on the autobuilders:

http://autobuild.buildroot.net/results/cf5c3ce94c229204bfa0f19b1009c13a9bcc1dfc/build-end.log

  Maxime>  +++ b/package/netatalk/netatalk.mk
  Maxime>  @@ -8,7 +8,7 @@ NETATALK_SITE = http://downloads.sourceforge.net/project/netatalk/netatalk/$(NET
  Maxime>   NETATALK_SOURCE = netatalk-$(NETATALK_VERSION).tar.bz2

  Maxime>   NETATALK_DEPENDENCIES = host-pkgconf openssl berkeleydb libgcrypt libgpg-error
  Maxime>  -NETATALK_CONF_ENV += CC="$(TARGET_CC) -std=gnu99"
  Maxime>  +NETATALK_CONF_ENV += CC="$(TARGET_CC) -std=gnu99" BDB_LIB=$(STAGING_LIB)/usr/lib
Quoted 5 lines
Quoted 1 line

I guess you meant STAGING_DIR instead here, will fix.

This is strange because I tested with a 64 bits build and I had'nt the problem anymore.. And I don't remember rewriting the patch before sending it here. But then again, you're totally right, this does'nt make sense. I'm really wondering how it could have worked for me :/

I guess it was an accident then :-)

configure checks for libdb by doing: ls $bdblibdir/lib$lib.*
and bdblibdir="${bdbdir}/${atalk_libname}" and atalk_libname="lib64" for most 64-bit architectures.

So you happened to have an existing /usr/lib/lib64/libdb* on your build
machine...

BDB_LIB isn't even used by configure, so I don't think does patch does
much :-)

The problem I encounter in my build is that configure uses ls ... to
find the library, and my /bin/ls is linked against libacl.so.1. It seems LD_LIBRARY_PATH is overridden because ls fails with:

/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /home/arnout/src/buildroot/output-ext-toolchain-x86_64/host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libacl.so.1

And indeed, configure sets:
eval export $shlibpath_var=$bdblibdir

This is OK for native builds, but not for cross-builds...

Looking a bit further into macros/db3-check.m4, it looks even worse:
after that configure step, there is an
eval export $shlibpath_var=$saved_shlibpath_var
which expands to
export LD_LIBRARY_PATH=LD_LIBRARY_PATH
:-)

I'll try to cook a fix and send a patch.

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#9 lore raw

PATCH 1/1 netatalk : Fix BerkeleyDB library path

Quoted 26 lines · Arnout Vandecappelle
Quoted 19 lines · Maxime Hadjinlian
Quoted 18 lines · Peter Korsgaard
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Maxime" == Maxime Hadjinlian<[email protected]> writes:

Maxime> This fix is needed for the 64bits build because Netatalk will assume the library Maxime> are stored in [..]/lib64/ instead of [..]/lib/

Hmm, we still seem to have issues on the autobuilders:

http://autobuild.buildroot.net/results/cf5c3ce94c229204bfa0f19b1009c13a9bcc1dfc/build-end.log

  Maxime>  +++ b/package/netatalk/netatalk.mk
  Maxime>  @@ -8,7 +8,7 @@ NETATALK_SITE = http://downloads.sourceforge.net/project/netatalk/netatalk/$(NET
  Maxime>   NETATALK_SOURCE = netatalk-$(NETATALK_VERSION).tar.bz2

  Maxime>   NETATALK_DEPENDENCIES = host-pkgconf openssl berkeleydb libgcrypt libgpg-error
  Maxime>  -NETATALK_CONF_ENV += CC="$(TARGET_CC) -std=gnu99"
  Maxime>  +NETATALK_CONF_ENV += CC="$(TARGET_CC) -std=gnu99" BDB_LIB=$(STAGING_LIB)/usr/lib
Quoted 5 lines
Quoted 1 line

I guess you meant STAGING_DIR instead here, will fix.

This is strange because I tested with a 64 bits build and I had'nt the problem anymore.. And I don't remember rewriting the patch before sending it here. But then again, you're totally right, this does'nt make sense. I'm really wondering how it could have worked for me :/

Quoted 8 lines

I guess it was an accident then :-)

configure checks for libdb by doing: ls $bdblibdir/lib$lib.*
and bdblibdir="${bdbdir}/${atalk_libname}" and atalk_libname="lib64" for most 64-bit architectures.

So you happened to have an existing /usr/lib/lib64/libdb* on your build
machine...

I looked for it but I don't have one, I have although my host system is 64bits, there should some bits in there...

Quoted 3 lines

BDB_LIB isn't even used by configure, so I don't think does patch does
much :-)

You're right, it should be BDB_LIBS at least.

Quoted 6 lines

The problem I encounter in my build is that configure uses ls ... to
find the library, and my /bin/ls is linked against libacl.so.1. It seems LD_LIBRARY_PATH is overridden because ls fails with:

Quoted 6 lines

/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /home/arnout/src/buildroot/output-ext-toolchain-x86_64/host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libacl.so.1

And indeed, configure sets:
eval export $shlibpath_var=$bdblibdir

This is OK for native builds, but not for cross-builds...

If I'm reading this correctly (and I'm not sure I am), there is one bug with ls if you native hosts is 32bits but also, if you look the value of atalk_libname, it will value lib64 and since the lib are not put there by BerkeleyDB, it will also fail. And so we must look for them in lib, right ? (That was I tried to fixed in my numerous attempt).
So is it possible that there is two bugs enclosed here ?

Quoted 7 lines

Looking a bit further into macros/db3-check.m4, it looks even worse:
after that configure step, there is an
eval export $shlibpath_var=$saved_shlibpath_var
which expands to
export LD_LIBRARY_PATH=LD_LIBRARY_PATH
:-)

Which is obviously not what we want here :).

Quoted 2 lines

I'll try to cook a fix and send a patch.

I'm really curious to see something, because I don't think I could have figured this one out myself (given the lack of experience in cross compiling and also my host being 64bits, well I'm short on excuses).

Quoted 3 lines

Regards,
Arnout

Thanks !

Quoted 8 lines

--

Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#10 lore raw

PATCH 1/1 netatalk : Fix BerkeleyDB library path

Quoted 2 lines · Maxime Hadjinlian
Quoted 1 line · Arnout Vandecappelle

On 17/12/12 00:15, Maxime Hadjinlian wrote:

[snip]

Quoted 3 lines
Quoted 2 lines

BDB_LIB isn't even used by configure, so I don't think does patch does
much :-)

You're right, it should be BDB_LIBS at least.

But BDB_LIBS is unconditionally set by configure.

Quoted 9 lines
Quoted 9 lines

The problem I encounter in my build is that configure uses ls ... to
find the library, and my /bin/ls is linked against libacl.so.1. It seems LD_LIBRARY_PATH is overridden because ls fails with:

/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /home/arnout/src/buildroot/output-ext-toolchain-x86_64/host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libacl.so.1

And indeed, configure sets:
eval export $shlibpath_var=$bdblibdir

Quoted 7 lines
Quoted 1 line

This is OK for native builds, but not for cross-builds...

If I'm reading this correctly (and I'm not sure I am), there is one bug with ls if you native hosts is 32bits but also, if you look the value of atalk_libname, it will value lib64 and since the lib are not put there by BerkeleyDB, it will also fail. And so we must look for them in lib, right ? (That was I tried to fixed in my numerous attempt).

Yes, but the configure script already does that: if it fails to find it
in $atalk_libname and $atalk_libname != lib then it tries again in lib.

Regards,
Arnout

[snip]

Signature · 6 lines
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#11 lore raw

PATCH 1/1 netatalk : Fix BerkeleyDB library path

Quoted 40 lines · Arnout Vandecappelle
Quoted 5 lines · Maxime Hadjinlian
Quoted 2 lines · Arnout Vandecappelle

On 17/12/12 00:15, Maxime Hadjinlian wrote:

[snip]

Quoted 4 lines
Quoted 2 lines

BDB_LIB isn't even used by configure, so I don't think does patch does
much :-)

You're right, it should be BDB_LIBS at least.

But BDB_LIBS is unconditionally set by configure.

Quoted 11 lines
Quoted 11 lines

The problem I encounter in my build is that configure uses ls ... to
find the library, and my /bin/ls is linked against libacl.so.1. It seems LD_LIBRARY_PATH is overridden because ls fails with:

/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required
by /home/arnout/src/buildroot/output-ext-toolchain-x86_64/host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libacl.so.1

And indeed, configure sets:
eval export $shlibpath_var=$bdblibdir

Quoted 8 lines
Quoted 1 line

This is OK for native builds, but not for cross-builds...

If I'm reading this correctly (and I'm not sure I am), there is one bug with ls if you native hosts is 32bits but also, if you look the value of atalk_libname, it will value lib64 and since the lib are not put there by BerkeleyDB, it will also fail. And so we must look for them in lib, right ? (That was I tried to fixed in my numerous attempt).

Quoted 2 lines

Yes, but the configure script already does that: if it fails to find it in
$atalk_libname and $atalk_libname != lib then it tries again in lib.

Okay, I see what I missed and I'm looking at your patch, I'll go to bed less stupid.

Quoted 3 lines

Regards,
Arnout

Thanks

Quoted 10 lines

[snip]

--

Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#12 lore raw

PATCH 1/1 netatalk : Fix BerkeleyDB library path

Quoted 1 line · Maxime Hadjinlian

On Mon, Dec 17, 2012 at 11:05 PM, Arnout Vandecappelle<[email protected]> wrote:

[snip]

Quoted 4 lines
Quoted 2 lines

Yes, but the configure script already does that: if it fails to find it in
$atalk_libname and $atalk_libname != lib then it tries again in lib.

Okay, I see what I missed and I'm looking at your patch, I'll go to bed less stupid.

The only reason I'm less stupid is that I spent three hours looking at
that configure script...

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F