diff mbox

[bug#51592,0/2] gnu: Add bloomberg-bde.

Message ID CA+3U0ZkdS2O_bFKzvkTr-Zj17FsBk42-bT8hF4=MvXVv3_YNWw@mail.gmail.com
State Accepted
Headers show

Commit Message

Greg Hogan Feb. 4, 2022, 9:23 p.m. UTC
I have updated the attached patches to the latest versioned commits. I
believe the recommended fixes are all in place.

Thanks,
Greg

>

Comments

Ludovic Courtès Feb. 8, 2022, 5:19 p.m. UTC | #1
Hi Greg,

Greg Hogan <code@greghogan.com> skribis:

> From fa9d62133973705b08f4f0952cf55189ff9cdb7b Mon Sep 17 00:00:00 2001
> From: Greg Hogan <code@greghogan.com>
> Date: Wed, 3 Nov 2021 15:20:51 +0000
> Subject: [PATCH 1/2] gnu: Add bloomberg-bde-tools.
>
> * gnu/packages/cpp.scm (bloomberg-bde-tools): New variable.

> From 5b6114f4ee2c3801858d2984d706a490cd34f50e Mon Sep 17 00:00:00 2001
> From: Greg Hogan <code@greghogan.com>
> Date: Wed, 3 Nov 2021 15:22:19 +0000
> Subject: [PATCH 2/2] gnu: Add bloomberg-bde.
>
> * gnu/packages/cpp.scm (bloomberg-bde): New variable.

Applied both, sorry for the delay!

However, I hit a test failure in one case:

--8<---------------cut here---------------start------------->8---
513/950 Test #513: bslh_defaultseededhashalgorithm.t ..................   Passed    0.05 sec
        Start 514: bslh_fibonaccibadhashwrapper.t
514/950 Test #514: bslh_fibonaccibadhashwrapper.t .....................   Passed    0.05 sec
        Start 515: bslh_hash.t
515/950 Test #515: bslh_hash.t ........................................***Failed    0.05 sec
[11:23:07] TEST START
[11:23:07] CASE  1: SUCCESS
[11:23:07] CASE  2: SUCCESS
[11:23:07] CASE  3: FAILURE (rc 1)
TEST /tmp/guix-build-bloomberg-bde-3.98.0.0.drv-0/source/groups/bsl/bslh/bslh_hash.t.cpp CASE 3
1463: 1463      alg.getLength(): 10     size: 16
Error, non-zero test status = 1.
Error /tmp/guix-build-bloomberg-bde-3.98.0.0.drv-0/source/groups/bsl/bslh/bslh_hash.t.cpp(1463): alg.getLength() == size    (failed)

[11:23:07] CASE  4: SUCCESS
[11:23:07] CASE  5: SUCCESS
[11:23:07] CASE  6: SUCCESS
[11:23:07] CASE  7: SUCCESS
[11:23:07] CASE  8: SUCCESS

        Start 516: bslh_hashoptional.t
516/950 Test #516: bslh_hashoptional.t ................................   Passed    0.05 sec
        Start 517: bslh_hashtuple.t
517/950 Test #517: bslh_hashtuple.t ...................................   Passed    0.05 sec
        Start 518: bslh_hashvariant.t
518/950 Test #518: bslh_hashvariant.t .................................   Passed    0.05 sec
--8<---------------cut here---------------end--------------->8---

It’d be worth monitoring ci.guix to see if it happens reproducibly.

Thanks,
Ludo’.
diff mbox

Patch

From 5b6114f4ee2c3801858d2984d706a490cd34f50e Mon Sep 17 00:00:00 2001
From: Greg Hogan <code@greghogan.com>
Date: Wed, 3 Nov 2021 15:22:19 +0000
Subject: [PATCH 2/2] gnu: Add bloomberg-bde.

* gnu/packages/cpp.scm (bloomberg-bde): New variable.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/cpp.scm                          | 75 ++++++++++++++++++-
 .../bloomberg-bde-cmake-module-path.patch     | 16 ++++
 3 files changed, 91 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/bloomberg-bde-cmake-module-path.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index b533002407..4b194604db 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -911,6 +911,7 @@  dist_patch_DATA =						\
   %D%/packages/patches/binutils-mingw-w64-timestamp.patch	\
   %D%/packages/patches/binutils-mingw-w64-deterministic.patch	\
   %D%/packages/patches/binutils-CVE-2021-45078.patch		\
+  %D%/packages/patches/bloomberg-bde-cmake-module-path.patch	\
   %D%/packages/patches/bloomberg-bde-tools-fix-install-path.patch	\
   %D%/packages/patches/bpftrace-disable-bfd-disasm.patch	\
   %D%/packages/patches/byobu-writable-status.patch		\
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index b8c89813d1..86ac3c8e39 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -80,7 +80,8 @@  (define-module (gnu packages cpp)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages web)
-  #:use-module (gnu packages xml))
+  #:use-module (gnu packages xml)
+  #:use-module (ice-9 match))
 
 (define-public argagg
   (let ((commit "79e4adfa2c6e2bfbe63da05cc668eb9ad5596748") (revision "0"))
@@ -1613,3 +1614,75 @@  (define-public bloomberg-bde-tools
        "This package provides the cmake imports needed to build bloomberg-bde.")
       (home-page "https://github.com/bloomberg/bde-tools")
       (license license:asl2.0))))
+
+(define-public bloomberg-bde
+  (let ((commit "b6bcc0e24a5862bf77aea7edd831dedf50e21d64"))
+    (package
+      (name "bloomberg-bde")
+      ;; Recent releases are not tagged so commit must be used for checkout.
+      (version "3.98.0.0")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/bloomberg/bde")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0y3lipi1lj9qazgc935851r2qsx5aq3vvc4y52jq57riyz8wg3ma"))
+                (patches
+                 (search-patches
+                  "bloomberg-bde-cmake-module-path.patch"))
+                ;;(modules '((guix build utils)))
+                (snippet
+                 `(begin
+                    ;; FIXME: Delete bundled software. The third-party packages
+                    ;; may be patched or modified from upstream sources.
+                    ;;(for-each delete-file-recursively
+                    ;; (list "thirdparty"))
+                    ;; Delete failing tests.
+                    (for-each
+                     delete-file
+                     (list "groups/bal/ball/ball_asyncfileobserver.t.cpp"
+                           "groups/bal/ball/ball_fileobserver2.t.cpp"
+                           "groups/bal/ball/ball_recordstringformatter.t.cpp"
+                           "groups/bal/balst/balst_stacktraceutil.t.cpp"
+                           "groups/bdl/bdlmt/bdlmt_eventscheduler.t.cpp"
+                           "groups/bdl/bdlmt/bdlmt_timereventscheduler.t.cpp"
+                           "groups/bdl/bdls/bdls_filesystemutil.t.cpp"
+                           "groups/bsl/bslh/bslh_hashpair.t.cpp"
+                           "groups/bsl/bsls/bsls_platform.t.cpp"
+                           "groups/bsl/bsls/bsls_stackaddressutil.t.cpp"
+                           "groups/bsl/bsls/bsls_stopwatch.t.cpp"
+                           "groups/bsl/bslstl/bslstl_function_invokerutil.t.cpp"))
+                    #t))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:parallel-tests? #f           ; Test parallelism may fail inconsistently.
+         ;; Set UFID to build shared libraries. Flag descriptions can be found at
+         ;; https://bloomberg.github.io/bde-tools/reference/bde_repo.html#ufid
+         #:configure-flags ,(match %current-system
+            ((or "i686-linux" "armhf-linux")
+             ''("-DUFID=opt_dbg_exc_mt_32_shr_cpp17"))
+            (_
+             ''("-DUFID=opt_dbg_exc_mt_64_shr_cpp17")))
+         #:phases
+         (modify-phases %standard-phases
+           ;; Explicitly build tests separate from the main build.
+           (add-after 'build 'build-tests
+             (lambda* (#:key make-flags #:allow-other-keys)
+               (apply invoke "make" "all.t"
+                 `(,@(if #:parallel-build?
+                         `("-j" ,(number->string (parallel-job-count)))
+                         '())
+                 ,@make-flags)))))))
+      (native-inputs
+       (list bloomberg-bde-tools pkg-config python))
+      (synopsis "Foundational C++ libraries used at Bloomberg")
+      (description
+       "The BDE Development Environment libraries provide an enhanced
+implementation of STL containers, vocabulary types for representing common
+concepts (like dates and times), and building blocks for developing
+multi-threaded applications and network applications.")
+      (home-page "https://github.com/bloomberg/bde")
+      (license license:asl2.0))))
diff --git a/gnu/packages/patches/bloomberg-bde-cmake-module-path.patch b/gnu/packages/patches/bloomberg-bde-cmake-module-path.patch
new file mode 100644
index 0000000000..b08ca5eac0
--- /dev/null
+++ b/gnu/packages/patches/bloomberg-bde-cmake-module-path.patch
@@ -0,0 +1,16 @@ 
+This package requires CMAKE_MODULE_PATH be set by the calling process. This
+patch uses the CMAKE_PREFIX_PATH passed from Guix as the search path for
+locating the bloomberg-bde-tools CMake modules.
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,8 +1,6 @@
+ cmake_minimum_required(VERSION 3.15)
+ 
+-if (NOT CMAKE_MODULE_PATH)
+-    message(FATAL "Please specify path to BDE cmake modules.")
+-endif()
++string(REPLACE ":" "cmake/;" CMAKE_MODULE_PATH "$ENV{CMAKE_PREFIX_PATH}cmake/")
+ 
+ get_filename_component(repoName ${CMAKE_CURRENT_LIST_DIR} NAME)
+ 
-- 
2.34.0