From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:bcc0::]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id 8MgFN205g2DmXAEAgWs5BA (envelope-from ) for ; Fri, 23 Apr 2021 23:17:33 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id uMaUMm05g2AnZQAAbx9fmQ (envelope-from ) for ; Fri, 23 Apr 2021 21:17:33 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id D04DD169BE for ; Fri, 23 Apr 2021 23:17:32 +0200 (CEST) Received: from localhost ([::1]:33540 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1la3B6-0005lm-16 for larch@yhetil.org; Fri, 23 Apr 2021 17:17:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:32996) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1la3Ac-0005kU-Ln for guix-patches@gnu.org; Fri, 23 Apr 2021 17:17:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:55731) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1la3Ac-0004re-Cb for guix-patches@gnu.org; Fri, 23 Apr 2021 17:17:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1la3Ac-0000Ig-8T for guix-patches@gnu.org; Fri, 23 Apr 2021 17:17:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#47983] [PATCH] gnu: Add bees. Resent-From: Jack Hill Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Fri, 23 Apr 2021 21:17:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 47983 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 47983@debbugs.gnu.org X-Debbugs-Original-To: guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.16192125811099 (code B ref -1); Fri, 23 Apr 2021 21:17:02 +0000 Received: (at submit) by debbugs.gnu.org; 23 Apr 2021 21:16:21 +0000 Received: from localhost ([127.0.0.1]:39043 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1la39x-0000He-3I for submit@debbugs.gnu.org; Fri, 23 Apr 2021 17:16:21 -0400 Received: from lists.gnu.org ([209.51.188.17]:33380) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1la39u-0000HW-FB for submit@debbugs.gnu.org; Fri, 23 Apr 2021 17:16:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:32772) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1la39u-00051A-1t for guix-patches@gnu.org; Fri, 23 Apr 2021 17:16:18 -0400 Received: from minsky.hcoop.net ([104.248.1.95]:44132) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1la39q-0004Pb-4Q for guix-patches@gnu.org; Fri, 23 Apr 2021 17:16:17 -0400 Received: from [2001:470:8:9f5:f850:c9a2:75c6:a2d9] (helo=alperton.home.eronel.org) by minsky.hcoop.net with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1la39o-0006W4-Ty for guix-patches@gnu.org; Fri, 23 Apr 2021 17:16:12 -0400 From: Jack Hill Date: Fri, 23 Apr 2021 17:16:02 -0400 Message-Id: <20210423211602.15255-1-jackhill@jackhill.us> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=104.248.1.95; envelope-from=jackhill@jackhill.us; helo=minsky.hcoop.net X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1619212653; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=reKLmqSrSnlTLX63YFTe3B+hKsSd4FHWYHyIwthRups=; b=SDKG735m6ZEf+j2FFqcT2PdKbJPNscRZqV6lUwfEJOIEM4h+4NaJWZGNhITwEgvPwA4W7Y DMqty3xD1sL7Nrwy82Hmer4CoCloXAlyDt/7dMCTUqCWacoCexV8YLOT/ynQNyaJDiniMa 9KUZbRIeBCgoQUpiFwdWJFYIWwxKuOWU4RCVyDYj3ZKMm8x6Al66P/jL2AmYPQR+WQOKto +H/V8HUluxUSGVVYFgq9uUnmG+PRywQn18xiuGxJd6b2KRxXIX+bS6tyUOX4GeAL9KMmVI wzynLk2eCJm/PBK+vpzHO8N8Bd26EK2rUSMTt35OW0hUmbXDUevgbJx99mOadw== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1619212653; a=rsa-sha256; cv=none; b=X79oJPIIyA5kQtfXjqP29iW52VxgrusjDykvEuWKhILMS50dK1flFyseGKVztF3tTns+5a e8LxR8AeAAlv0sRh0+nOc1fD9gDAdZNcwmk03TZ3pjD5s9LXkOJQpdR1YMk3B4laY0Vp2F 4tzutTgZjdFsf/8t7HLv87cA6W4ucQjwqHsWCfaoMSET5Qn6IJsaOUeI8c5L2saNBPasr2 78lipJiVVyBHuYOqf5nx6mExTe/ds97FFrarwiz8q6nm8RhMRqdWzD5UPJ0i6yTogOICIa RrQlUJ/AdiYCi8mJgJWQuY8w2F8H1qCkxjEyExHrLMJngsnxALIkj2DSByQ6Jw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of guix-patches-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Migadu-Spam-Score: -1.44 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of guix-patches-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Migadu-Queue-Id: D04DD169BE X-Spam-Score: -1.44 X-Migadu-Scanner: scn0.migadu.com X-TUID: hkbzZF3GNdoN * 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 ;;; Copyright © 2021 raid5atemyhomework ;;; Copyright © 2021 Stefan Reichör +;;; Copyright © 2021 Jack Hill ;;; ;;; 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