diff mbox series

[bug#43620,2/2] gnu: Add folly.

Message ID CA+3U0Z=z6R7Ma21yZEUmSNxP=WoO6xemB4=9UN-ZxC_9YMB1Ag@mail.gmail.com
State Accepted
Headers show
Series [bug#43619,1/2] gnu: Add liburing. | expand

Commit Message

Greg Hogan Sept. 25, 2020, 6:13 p.m. UTC
This patch depends on #43619

From 2835c2ac08db9b5887bcc33a3c15e84f26111864 Mon Sep 17 00:00:00 2001
From: Greg Hogan <code@greghogan.com>
Date: Tue, 22 Sep 2020 15:22:32 +0000
Subject: [PATCH 2/2] gnu: Add folly.

* gnu/packages/cpp.scm (folly): New variable.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/cpp.scm                          | 73 +++++++++++++++++++
 .../patches/folly-add-missing-include.patch   | 10 +++
 3 files changed, 84 insertions(+)
 create mode 100644 gnu/packages/patches/folly-add-missing-include.patch

Comments

Ludovic Courtès Sept. 29, 2020, 8:46 p.m. UTC | #1
Greg Hogan <code@greghogan.com> skribis:

>>From 2835c2ac08db9b5887bcc33a3c15e84f26111864 Mon Sep 17 00:00:00 2001
> From: Greg Hogan <code@greghogan.com>
> Date: Tue, 22 Sep 2020 15:22:32 +0000
> Subject: [PATCH 2/2] gnu: Add folly.
>
> * gnu/packages/cpp.scm (folly): New variable.

[...]

> +              (file-name (git-file-name name version))
> +              (sha256
> +               (base32
> +                "0ppd02scbi4a52s99par4i17cys4z8gangpxa86yma48k72z5xvs"))
> +              (patches (search-patches
> "folly-add-missing-include.patch"))))

Looks like your mail client mangled the patch.

> +    (synopsis "An open-source C++ library developed and used at Facebook")

Everything is free software in here, no need to write it.  Also, please
remove the initial article and somehow say what the library provides in
terms of features:

  https://guix.gnu.org/manual/en/html_node/Synopses-and-Descriptions.html

> +    (description
> +     "Folly (acronymed loosely after Facebook Open Source Library) is a
> library
> +  of C++14 components designed with practicality and efficiency in mind.
> Folly
> +  contains a variety of core library components used extensively at
> Facebook. In
> +  particular, it's often a dependency of Facebook's other open source C++
> efforts
> +  and place where those projects can share code.
> +
> +  It complements (as opposed to competing against) offerings such as Boost
> and of
> +  course std. In fact, we embark on defining our own component only when
> +  something we need is either not available, or does not meet the needed
> +  performance profile. We endeavor to remove things from folly if or when
> std or
> +  Boost obsoletes them.
> +
> +  Performance concerns permeate much of Folly, sometimes leading to
> designs that
> +  are more idiosyncratic than they would otherwise be (see e.g.
> PackedSyncPtr.h,
> +  SmallLocks.h). Good performance at large scale is a unifying theme in
> all of Folly.")

I’d strip all but one reference to Facebook, we’re not an advertising
project.  :-)

Nitpick: please remove “open source”, avoid marketing terms
(“competing”, “offerings”, etc.), write @code{std}, @file{SmallLocks.h}
and similar.

Could you send an updated patch?

Thank you!

Ludo’.
diff mbox series

Patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 99e9b5a6ab..6f62493ff2 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -964,6 +964,7 @@  dist_patch_DATA =
    \
   %D%/packages/patches/findutils-localstatedir.patch           \
   %D%/packages/patches/findutils-test-rwlock-threads.patch     \
   %D%/packages/patches/flann-cmake-3.11.patch                  \
+  %D%/packages/patches/folly-add-missing-include.patch         \
   %D%/packages/patches/foobillard++-pkg-config.patch           \
   %D%/packages/patches/foomatic-filters-CVE-2015-8327.patch    \
   %D%/packages/patches/foomatic-filters-CVE-2015-8560.patch    \
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 90e139e9eb..277f9da115 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -41,12 +41,23 @@ 
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
   #:use-module (gnu packages code)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages crypto)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages libevent)
+  #:use-module (gnu packages libunwind)
+  #:use-module (gnu packages liburing)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
+  #:use-module (gnu packages logging)
+  #:use-module (gnu packages maths)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages popt)
+  #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages web))

@@ -669,3 +680,65 @@  parsers according to a Parsing Expression Grammar
(PEG).")
 standard GNU style syntax for options.")
     (home-page "https://github.com/jarro2783/cxxopts/wiki")
     (license license:expat)))
+
+(define-public folly
+  (package
+    (name "folly")
+    (version "2020.09.21.00")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/facebook/folly")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0ppd02scbi4a52s99par4i17cys4z8gangpxa86yma48k72z5xvs"))
+              (patches (search-patches
"folly-add-missing-include.patch"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(;; Tests must be explicitly enabled
+       ;#:configure-flags
+       ;'("-DBUILD_TESTS=ON")))
+       ;; Leave tests disabled; see
https://github.com/facebook/folly/issues/1456
+       #:tests? #f))
+    (propagated-inputs
+     `(("boost" ,boost)
+       ("gflags" ,gflags)
+       ("glog" ,glog)
+       ("liburing" ,liburing)))
+    (inputs
+     `(("bzip2" ,bzip2)
+       ("double-conversion" ,double-conversion)
+       ("fmt" ,fmt)
+       ("libaio" ,libaio)
+       ("libevent" ,libevent)
+       ("libiberty" ,libiberty)
+       ("libsodium" ,libsodium)
+       ("libunwind" ,libunwind)
+       ("lz4" ,lz4)
+       ("openssl" ,openssl)
+       ("snappy" ,snappy)
+       ("zlib" ,zlib)
+       ("zstd" ,zstd "lib")))
+    (native-inputs
+     `(("googletest" ,googletest)))
+    (synopsis "An open-source C++ library developed and used at Facebook")
+    (description
+     "Folly (acronymed loosely after Facebook Open Source Library) is a
library
+  of C++14 components designed with practicality and efficiency in mind.
Folly
+  contains a variety of core library components used extensively at
Facebook. In
+  particular, it's often a dependency of Facebook's other open source C++
efforts
+  and place where those projects can share code.
+
+  It complements (as opposed to competing against) offerings such as Boost
and of
+  course std. In fact, we embark on defining our own component only when
+  something we need is either not available, or does not meet the needed
+  performance profile. We endeavor to remove things from folly if or when
std or
+  Boost obsoletes them.
+
+  Performance concerns permeate much of Folly, sometimes leading to
designs that
+  are more idiosyncratic than they would otherwise be (see e.g.
PackedSyncPtr.h,
+  SmallLocks.h). Good performance at large scale is a unifying theme in
all of Folly.")
+    (home-page "https://github.com/facebook/folly/wiki")
+    (license license:asl2.0)))
diff --git a/gnu/packages/patches/folly-add-missing-include.patch
b/gnu/packages/patches/folly-add-missing-include.patch
new file mode 100644
index 0000000000..929239233f
--- /dev/null
+++ b/gnu/packages/patches/folly-add-missing-include.patch
@@ -0,0 +1,10 @@ 
+--- a/folly/concurrency/test/AtomicSharedPtrTest.cpp
++++ b/folly/concurrency/test/AtomicSharedPtrTest.cpp
+@@ -27,6 +27,7 @@
+ #include <folly/concurrency/AtomicSharedPtr.h>
+ #include <folly/concurrency/test/AtomicSharedPtrCounted.h>
+ #include <folly/portability/GTest.h>
++#include <folly/portability/GFlags.h>
+
+ #include <folly/test/DeterministicSchedule.h>
+