about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEfraim Flashner2020-11-25 08:02:37 -0600
committerEfraim Flashner2020-11-25 08:03:02 -0600
commitd142bda43b7926aa50433a8cfac22b54593904c1 (patch)
tree23fb3ee1b1c01af7f252ade5c573272a9f1d2d31
parent4034fd9b19e6807d355c86726b33f6dc10a39664 (diff)
downloadguix-bioinformatics-d142bda43b7926aa50433a8cfac22b54593904c1.tar.gz
gn: Add lizardfs
-rw-r--r--gn/packages/file-systems.scm114
1 files changed, 114 insertions, 0 deletions
diff --git a/gn/packages/file-systems.scm b/gn/packages/file-systems.scm
new file mode 100644
index 0000000..0e874c2
--- /dev/null
+++ b/gn/packages/file-systems.scm
@@ -0,0 +1,114 @@
+(define-module (gn packages file-systems)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
+  #:use-module (guix packages)
+  #:use-module (guix git-download)
+  #:use-module (guix utils)
+  #:use-module (guix build-system cmake)
+  #:use-module (gnu packages boost)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages documentation)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages logging)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python))
+
+(define-public lizardfs
+  (package
+    (name "lizardfs")
+    (version "3.12.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/lizardfs/lizardfs")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "0zk73wmx82ari3m2mv0zx04x1ggsdmwcwn7k6bkl5c0jnxffc4ax"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "-DENABLE_CLIENT_LIB=YES"
+             ;"-DENABLE_TESTS=YES"
+             "-DENABLE_STATIC=NO"
+             "-DENABLE_VERBOSE_ASCIIDOC=YES"
+             "-DENABLE_TCMALLOC=NO"
+             ;; Some directories need to be changed
+             "-DRUN_SUBDIR=/var/run/lizardfs"
+             "-DDATA_SUBDIR=/var/lib/lizardfs"
+             "-DENABLE_UTILS=YES")
+       #:tests? #f  ; Tests fail to build.
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'dont-use-lib64
+           (lambda _
+             (substitute* "CMakeLists.txt"
+               (("\"64\"") "\"\""))
+             #t))
+         (add-after 'unpack 'use-system-libraries
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((gtest  (assoc-ref inputs "googletest"))
+                   (spdlog (assoc-ref inputs "spdlog")))
+               (substitute* "cmake/Libraries.cmake"
+                 (("ENABLE_TESTS") "DOWNLOAD_GTEST")
+                 (("# Find GoogleTest" all)
+                  (string-append "set(GTEST_NAME gtest)\n" all))
+                 (("GTEST_INCLUDE_DIRS.*")
+                  (string-append "GTEST_INCLUDE_DIRS " gtest "/include)\n"))
+                 (("download_external\\(SPDLOG" all)
+                  (string-append "if(DOWNLOAD_SPDLOG)\n" all))
+                 (("\"spdlog-1\")")
+                  (string-append "\"spdlog-1\")\n"
+                                 "endif()\n"
+                                 "find_package(spdlog CONFIG REQUIRED)"))
+                 (("include_directories(external/spdlog-0.14.0/include)") ""))
+               ;; Don't include gtest vendor directory
+               (substitute* "external/CMakeLists.txt"
+                 (("add_subdirectory.*") ""))
+
+               ;; Compatability with spdlog1.2.0+
+               ;; https://github.com/lizardfs/lizardfs/issues/774
+               (substitute* "src/common/slogger.h"
+                 (("spdlog/spdlog.h\"")
+                  (string-append "spdlog/spdlog.h\"\n"
+                                 "#include \"spdlog/sinks/rotating_file_sink.h\"\n"
+                                 "#include \"spdlog/sinks/syslog_sink.h\"\n"
+                                 "#include \"spdlog/sinks/stdout_color_sinks.h\"")))
+               (substitute* "src/common/slogger.cc"
+                 (("spdlog::syslog_logger\\(\"syslog\"\\);")
+                  "spdlog::syslog_logger_mt(\"syslog\");"))
+
+               ;; fix FTBFS with glibc-2.28; for makedev
+               ;; https://github.com/lizardfs/lizardfs/issues/655
+               (substitute* "src/chunkserver/iostat.h"
+                 (("sys/stat.h>") "sys/stat.h>\n#include <sys/sysmacros.h>"))
+
+               #t))))))
+    (inputs
+     `(("boost" ,boost)
+       ("fuse" ,fuse)
+       ("linux-pam" ,linux-pam)
+       ("python" ,python-2)
+       ("spdlog" ,spdlog)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("asciidoc" ,asciidoc)
+       ("googletest" ,googletest-1.8)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://lizardfs.com/")
+    (synopsis "Distributed, scalable, fault-tolerant, highly available file system")
+    (description
+     "LizardFS makes files secure by keeping all the data in many replicas
+spread over all available servers. It can be used also to build affordable
+storage because it runs without any problems on commodity hardware.  Disk and
+server failures are handled transparently and most of all without any downtime
+or loss of data.  If storage requirements grow, it's possible to scale an
+existing LizardFS installation just by adding new servers at any time, without
+any downtime.  The system will automatically move data across to the newly
+added servers, as it continuously takes care of balancing disk usage across all
+connected nodes.")
+    (license (list license:asl2.0   ; external/crcutil
+                   license:gpl3))))