Subject: [bug#31802] [PATCH] gnu: ldb: Fix build on 32-bit systems.

From: Marius Bakke <[email-masked]>
Date: Tue, 12 Jun 2018 19:55:33 +0200

* guix/utils.scm (target-64bit?): New procedure.
* gnu/packages/samba.scm (ldb)[inputs]: Only add LMDB on 64-bit systems.
[arguments]: Make #:tests? conditional on LMDB availability.
---
 gnu/packages/samba.scm | 9 +++++++--
 guix/utils.scm         | 5 +++++
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index abbfdd83c..e10f00a83 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -362,7 +362,10 @@ many event types, including timers, signals, and the classic file descriptor eve
                   #t))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases
+     '(;; LMDB is only supported on 64-bit systems, yet the test suite
+       ;; requires it.
+       #:tests? (assoc-ref %build-inputs "lmdb")
+       #:phases
        (modify-phases %standard-phases
          (replace 'configure
            ;; ldb use a custom configuration script that runs waf.
@@ -382,7 +385,9 @@ many event types, including timers, signals, and the classic file descriptor eve
      `(("talloc" ,talloc)
        ("tdb" ,tdb)))
     (inputs
-     `(("lmdb" ,lmdb)
+     `(,@(if (target-64bit?)
+             `(("lmdb" ,lmdb))
+             '())
        ("popt" ,popt)
        ("tevent" ,tevent)))
     (synopsis "LDAP-like embedded database")
diff --git a/guix/utils.scm b/guix/utils.scm
index e9efea586..81aee0bf8 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -77,6 +77,7 @@
             package-name->name+version
             target-mingw?
             target-arm32?
+            target-64bit?
             version-compare
             version>?
             version>=?
@@ -474,6 +475,10 @@ a character other than '@'."
 (define (target-arm32?)
   (string-prefix? "arm" (or (%current-target-system) (%current-system))))
 
+(define (target-64bit?)
+  (let ((system (or (%current-target-system) (%current-system))))
+    (any (cut string-prefix? <> system) '("x86_64" "aarch64" "ppc64"))))
+
 (define version-compare
   (let ((strverscmp
          (let ((sym (or (dynamic-func "strverscmp" (dynamic-link))
-- 
2.17.1