unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Jack Hill <jackhill@jackhill.us>
To: 47983@debbugs.gnu.org
Subject: [bug#47983] [PATCH] gnu: Add bees.
Date: Fri, 23 Apr 2021 17:16:02 -0400	[thread overview]
Message-ID: <20210423211602.15255-1-jackhill@jackhill.us> (raw)

* gnu/packages/file-system.scm (bees): New variable.
---

Submitting this patch for review and collaboration. Bees builds and
installs fine, and the runpath is correct. However, I have not tested
it against an actual filesystem.

I'm not sure if substituting all the external programs in the launcher
shell script should be factored out (I noticed several common regex
patterns when I was writing it), but I think it might be clearer as it is.


 gnu/packages/file-systems.scm | 106 ++++++++++++++++++++++++++++++++++
 1 file changed, 106 insertions(+)

diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index 6724ad96bb..b08cc68d7e 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
 ;;; Copyright © 2021 raid5atemyhomework <raid5atemyhomework@protonmail.com>
 ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
+;;; Copyright © 2021 Jack Hill <jackhill@jackhill.us>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -59,6 +60,7 @@
   #:use-module (gnu packages kerberos)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages markup)
   #:use-module (gnu packages nfs)
   #:use-module (gnu packages onc-rpc)
   #:use-module (gnu packages openldap)
@@ -155,6 +157,110 @@ large and/or frequently changing (network) environment.")
     (license (list license:bsd-3        ; modules/cyrus-sasl.c
                    license:gpl2+))))    ; the rest
 
+(define-public bees
+  (package
+    (name "bees")
+    (version "0.6.5")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Zygo/bees")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "11ppbf23b8ngzfy02am0skxlybzmgsp6kna21jimb01x9pp1q7l7"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags
+       (let ((out (assoc-ref %outputs "out")))
+         (list (string-append "CC=" ,(cc-for-target))
+               (string-append "DESTDIR=" out)
+               "LIBEXEC_PREFIX=/libexec"
+               "PREFIX=/"
+               "SYSTEMD_SYSTEM_UNIT_DIR=/lib/systemd/system"))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "src/Makefile"
+                 (("^LDFLAGS.*")
+                  (string-append "LDFLAGS=-L../lib -Wl,-rpath=" out "/lib"))))))
+         ;; Substitute external commands in beesds shell script with absolute
+         ;; store paths.  When updating package, this phase is worth extra
+         ;; review.
+         (add-after 'configure 'patch-beesd
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((btrfs (assoc-ref inputs "btrfs-progs"))
+                   (coreutils (assoc-ref inputs "coreutils"))
+                   (gawk (assoc-ref inputs "gawk"))
+                   (grep (assoc-ref inputs "grep"))
+                   (out (assoc-ref outputs "out"))
+                   (sed (assoc-ref inputs "sed"))
+                   (util-linux (assoc-ref inputs "util-linux")))
+               (substitute* "scripts/beesd.in"
+                 (("(readonly bees_bin=).*" _ start)
+                  (string-append start out "/libexec/bees"))
+                 (("\\$\\(blkid")
+                  (string-append "$(" util-linux "/sbin/blkid"))
+                 (("^([[:blank:]]+)btrfs([[:blank:]].*)" _ indent args)
+                  (string-append indent (string-append btrfs "/bin/btrfs")
+                                 args))
+                 (("([[:blank:]]+)chmod([[:blank:]]+)" _ before after)
+                  (string-append before coreutils "/bin/chmod" after))
+                 (("([[:blank:]]+)cut([[:blank:]]+)" _ before after)
+                  (string-append before coreutils "/bin/cut" after))
+                 (("\\$\\(egrep")
+                  (string-append "$(" grep "/bin/egrep"))
+                 (("\\$\\(du")
+                  (string-append "$(" coreutils "/bin/du"))
+                 (("([[:blank:]]+)awk([[:blank:]]+)" _ before after)
+                  (string-append before gawk "/bin/awk" after))
+                 (("([[:blank:]]+)grep([[:blank:]]+)" _ before after)
+                  (string-append before grep "/bin/grep" after))
+                 (("([[:blank:]]+)head([[:blank:]]+)" _ before after)
+                  (string-append before coreutils "/bin/head" after))
+                 (("^mkdir([[:blank:]]+)" _ after)
+                  (string-append coreutils "/bin/mkdir" after))
+                 (("^mount([[:blank:]]+)" _ after)
+                  (string-append util-linux "/bin/mount" after))
+                 (("([[:blank:]]+)mountpoint([[:blank:]]+)" _ before after)
+                  (string-append before util-linux "/bin/mountpoint" after))
+                 (("\\$\\(realpath")
+                  (string-append "$(" coreutils "/bin/realpath"))
+                 (("([[:blank:]]+)rm([[:blank:]]+)" _ before after)
+                  (string-append before coreutils "/bin/rm" after))
+                 (("([[:blank:]]+)sed([[:blank:]]+)" _ before after)
+                  (string-append before sed "/bin/sed" after))
+                 (("([[:blank:]]+)touch([[:blank:]]+)" _ before after)
+                  (string-append before coreutils "/bin/touch" after))
+                 (("([[:blank:]]+)truncate([[:blank:]]+)" _ before after)
+                  (string-append before coreutils "/bin/truncate" after))
+                 (("([[:blank:]]+)umount([[:blank:]]+)" _ before after)
+                  (string-append before util-linux "/bin/umount" after))
+                 (("([[:blank:]]+)uuidparse([[:blank:]]+)" _ before after)
+                  (string-append before util-linux "/bin/uuidparse" after))))))
+         (add-after 'install 'install-docs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (install-file "README.html"
+                           (string-append (assoc-ref outputs "out") "/share/doc/"
+                                          ,name "-" ,version)))))
+       #:test-target "test"))
+    (native-inputs
+     `(("markdown" ,markdown)))
+    (inputs
+     `(("gawk" ,gawk)
+       ("btrfs-progs" ,btrfs-progs)
+       ("util-linux" ,util-linux "lib")))
+    (home-page "https://github.com/Zygo/bees")
+    (synopsis "Deduplication for btrfs")
+    (description "@acronym{BEES, Best-Effort Extent-Same} is a deduplication
+agent for btrfs.  It scans a btrfs filesystem for duplicate blocks and submits
+them for deduplication.  As new data are added to the filesystem, the BEES
+daemon will scan it.")
+    (license license:gpl3+)))
+
 (define-public bindfs
   (package
     (name "bindfs")
-- 
2.31.1





             reply	other threads:[~2021-04-23 21:17 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-23 21:16 Jack Hill [this message]
2023-01-17 16:50 ` bug#47983: Bees has been added Jack Hill

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210423211602.15255-1-jackhill@jackhill.us \
    --to=jackhill@jackhill.us \
    --cc=47983@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).