From patchwork Tue Oct 25 00:25:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Felix Lechner X-Patchwork-Id: 44103 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id E652127BBE9; Tue, 25 Oct 2022 01:27:48 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-3.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 5FC8F27BBEA for ; Tue, 25 Oct 2022 01:27:44 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1on7ma-0003Tf-T8; Mon, 24 Oct 2022 20:27:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1on7mZ-0003RV-2U for guix-patches@gnu.org; Mon, 24 Oct 2022 20:27:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1on7mY-0002ix-Qn for guix-patches@gnu.org; Mon, 24 Oct 2022 20:27:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1on7mY-0007VV-IO for guix-patches@gnu.org; Mon, 24 Oct 2022 20:27:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#58768] Patch attached References: In-Reply-To: Resent-From: Felix Lechner Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 25 Oct 2022 00:27:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 58768 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 58768@debbugs.gnu.org Received: via spool by 58768-submit@debbugs.gnu.org id=B58768.166665759728823 (code B ref 58768); Tue, 25 Oct 2022 00:27:02 +0000 Received: (at 58768) by debbugs.gnu.org; 25 Oct 2022 00:26:37 +0000 Received: from localhost ([127.0.0.1]:49768 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1on7m8-0007Up-Jm for submit@debbugs.gnu.org; Mon, 24 Oct 2022 20:26:37 -0400 Received: from linode.us-core.com ([23.239.4.72]:51432) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1on7m6-0007Uf-83 for 58768@debbugs.gnu.org; Mon, 24 Oct 2022 20:26:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; s=2017; bh=FWn/1aHWXbAUuai iarybPh6xpI0UqtZjwKIFm+0kc3c=; h=to:subject:date:from; d=lease-up.com; b=GWvtPo6kqA7XvDfibTp7qiXnHgpeJd5vNYR6wfcfp9/dvjNKTg76La9j8KFyK8rz9cSb h5lVOg5SDo5oPLRqbKNTpLglcq2BiEGoSktm+oE47kPtAY8T6seqi+KC34nXufP0O6p04W t/guza52ZAt8apiM66BVZA+VMH5k7zgJU= Received: by linode.us-core.com (OpenSMTPD) with ESMTPSA id e538503a (TLSv1.3:AEAD-AES256-GCM-SHA384:256:NO) for <58768@debbugs.gnu.org>; Tue, 25 Oct 2022 00:26:33 +0000 (UTC) Received: by mail-lf1-f41.google.com with SMTP id g7so19323555lfv.5 for <58768@debbugs.gnu.org>; Mon, 24 Oct 2022 17:26:32 -0700 (PDT) X-Gm-Message-State: ACrzQf04JmDCUrxZiSLSAwvDYnDwZVMpJsZb23BuuAIsRv2VQZldQQa7 TTOPPYCVwFy2CJvEM3QzTKV1cqArkoMHVKwpdyw= X-Google-Smtp-Source: AMsMyM5gEJgNeGom+HuOLJgdgB36K/Ry8IJ+hop/Q+nnacVpqBlueZ9Sb23OmtEs8/vZf5KBz8mwroFB6SXOsApX3Uc= X-Received: by 2002:ac2:5978:0:b0:4a2:6792:df61 with SMTP id h24-20020ac25978000000b004a26792df61mr11857162lfp.565.1666657590652; Mon, 24 Oct 2022 17:26:30 -0700 (PDT) MIME-Version: 1.0 Date: Mon, 24 Oct 2022 17:25:54 -0700 X-Gmail-Original-Message-ID: Message-ID: 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: , Sender: "Guix-patches" Reply-to: Felix Lechner X-ACL-Warn: , Felix Lechner via Guix-patches X-Patchwork-Original-From: Felix Lechner via Guix-patches via From: Felix Lechner Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches Sorry, I meant to attach the patch instead of the file being added. Here it is. From bf3d67684d0cba656b05ff3a102e9217dbf78934 Mon Sep 17 00:00:00 2001 From: Felix Lechner Date: Sat, 22 Oct 2022 23:39:52 -0700 Subject: [PATCH] gnu: Add gocryptfs. * gnu/packages/gocryptfs.scm: New file. * gnu/packages/gocryptfs.scm (go-github-com-hanwen-go-fuse-v2): New variable. * gnu/packages/gocryptfs.scm (go-github-com-jacobsa-crypto): New variable. * gnu/packages/gocryptfs.scm (go-github-com-jacobsa-oglematchers): New variable. * gnu/packages/gocryptfs.scm (go-github-com-jacobsa-oglemock): New variable. * gnu/packages/gocryptfs.scm (go-github-com-jacobsa-ogletest): New variable. * gnu/packages/gocryptfs.scm (go-github-com-jacobsa-reqtrace): New variable. * gnu/packages/gocryptfs.scm (go-github-com-pkg-xattr): New variable. * gnu/packages/gocryptfs.scm (go-github-com-rfjakob-eme): New variable. * gnu/packages/gocryptfs.scm (gocryptfs): New variable. --- gnu/packages/gocryptfs.scm | 314 +++++++++++++++++++++++++++++++++++++ 1 file changed, 314 insertions(+) create mode 100644 gnu/packages/gocryptfs.scm diff --git a/gnu/packages/gocryptfs.scm b/gnu/packages/gocryptfs.scm new file mode 100644 index 0000000000..7893a3b4ca --- /dev/null +++ b/gnu/packages/gocryptfs.scm @@ -0,0 +1,314 @@ +(define-module (gnu packages gocryptfs)) + +(use-modules (gnu packages golang) + (gnu packages pkg-config) + (gnu packages tls) + (guix build-system go) + (guix gexp) + (guix git-download) + ((guix licenses) #:prefix license:) + (guix packages)) + +(define-public go-github-com-hanwen-go-fuse-v2 + (let ((commit "4c25c9c1eecefb8beeea3daddf3486eb1dd48b89") + (revision "0")) + (package + (name "go-github-com-hanwen-go-fuse-v2") + (version (git-version "2.1.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/hanwen/go-fuse") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0hi3x963bj9hcngyy2ba3mipcqx5gwqvcj7vg1r4vlal2qbsqcmf")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/hanwen/go-fuse/v2")) + (native-inputs (list + go-golang-org-x-sys + go-golang-org-x-sync + go-github-com-kylelemons-godebug)) + (home-page "https://github.com/hanwen/go-fuse") + (synopsis "Go bindings for FUSE filesystems") + (description + "This is a repository containing Go bindings for writing FUSE file systems.") + (license license:bsd-3)))) + +(define-public go-github-com-jacobsa-crypto + (let ((commit "9f44e2d11115452dad8f404f029574422855f46a") + (revision "0")) + (package + (name "go-github-com-jacobsa-crypto") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jacobsa/crypto") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "18c3cx8izxdajq22zdq0n19j9d2l6iickd3mz39j5h96kw7l5qmy")))) + (build-system go-build-system) + (arguments + (list #:import-path "github.com/jacobsa/crypto" + ;; Source-only package. + #:tests? #f + #:phases + #~(modify-phases %standard-phases + ;; Source-only package. + (delete 'build)))) + (home-page "https://github.com/jacobsa/crypto") + (synopsis "Cryptography missing from the Go standard library") + (description + "This repository contains Go packages related to cryptographic standards that are +not included in the Go standard library.") + (license license:asl2.0)))) + +(define-public go-github-com-jacobsa-oglematchers + (let ((commit "141901ea67cd4769c6800aa7bfdfc558fa22bda5") + (revision "0")) + (package + (name "go-github-com-jacobsa-oglematchers") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jacobsa/oglematchers") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "09ff5x6vbhd9zl1z4yzyk573ifh16rry38q1rx986kbz4hqkmniq")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/jacobsa/oglematchers" + ;; break loop with with go-github-com-jacobsa-ogletest + #:tests? #f)) + (home-page "https://github.com/jacobsa/oglematchers") + (synopsis "Matchers for Go testing framework") + (description + "Package oglematchers provides a set of matchers useful in a testing or mocking +framework. These matchers are inspired by and mostly compatible with Google +Test for C++ and Google JS Test.") + (license license:asl2.0)))) + +(define-public go-github-com-jacobsa-oglemock + (let ((commit "e94d794d06ffc6de42cb19d0dab3c219efdd6dcf") + (revision "0")) + (package + (name "go-github-com-jacobsa-oglemock") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jacobsa/oglemock") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "14yxf8ykwdwkcccksl6741xgzcf8qykyi58kp4maxpgscqhdl8rq")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/jacobsa/oglemock" + ;; break loop with with go-github-com-jacobsa-ogletest + #:tests? #f)) + (native-inputs (list + go-github-com-jacobsa-oglematchers)) + (home-page "https://github.com/jacobsa/oglemock") + (synopsis "Mocking framework for unit tests") + (description + "Package oglemock provides a mocking framework for unit tests.") + (license license:asl2.0)))) + +(define-public go-github-com-jacobsa-ogletest + (let ((commit "80d50a735a1108a2aeb7abc4a988d183f20c5292") + (revision "0")) + (package + (name "go-github-com-jacobsa-ogletest") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jacobsa/ogletest") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1lbwbxzr75g65q07ry5k4kglxqs3ym7xkvqznzm55rm3qk76v83r")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/jacobsa/ogletest" + ;; These tests should be made working + #:tests? #f)) + (native-inputs (list + go-github-com-jacobsa-oglematchers + go-github-com-jacobsa-oglemock + go-github-com-jacobsa-reqtrace + go-golang-org-x-net)) + (home-page "https://github.com/jacobsa/ogletest") + (synopsis "Expressive unit tests") + (description + "Package ogletest provides a framework for writing expressive unit tests. It +integrates with the builtin testing package, so it works with the gotest +command. Unlike the testing package which offers only basic capabilities for +signalling failures, it offers ways to express expectations and get nice failure +messages automatically.") + (license license:asl2.0)))) + +(define-public go-github-com-jacobsa-reqtrace + (let ((commit "245c9e0234cb2ad542483a336324e982f1a22934") + (revision "0")) + (package + (name "go-github-com-jacobsa-reqtrace") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jacobsa/reqtrace") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0zfyijig10896v42rvxka1n4wn6lijqz40y2281187l7mq8vv5jn")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/jacobsa/reqtrace")) + (inputs (list + go-golang-org-x-net)) + (home-page "https://github.com/jacobsa/reqtrace") + (synopsis "Simple request tracing framework") + (description + "Package reqtrace contains a very simple request tracing framework.") + (license license:asl2.0)))) + +(define-public go-github-com-pkg-xattr + (package + (name "go-github-com-pkg-xattr") + (version "0.4.9") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pkg/xattr") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0qg4zh0d8m4adaiicsd0cpw0w6g8sk01f4jz7jyxgirh1wfcsqyz")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/pkg/xattr")) + (native-inputs (list go-golang-org-x-sys)) + (home-page "https://github.com/pkg/xattr") + (synopsis "Support for extended file system attributes") + (description + "Package xattr provides support for extended attributes on Linux, Darwin and +FreeBSD. Extended attributes are name:value pairs permanently associated with +files or directories. They are similar to the environment strings associated with +a process. An attribute may be defined or undefined. If defined, its value may +be empty or non-empty. You can find more details here: +@@url{https://en.wikipedia.org/wiki/Extended_file_attributes, +https://en.wikipedia.org/wiki/Extended_file_attributes} +.") + (license license:bsd-2))) + +(define-public go-github-com-rfjakob-eme + (package + (name "go-github-com-rfjakob-eme") + (version "1.1.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rfjakob/eme") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1yrbhvy0337mf12fp8p4sy8ry8r3w2qfdf8val5hj07p2lri0cqk")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/rfjakob/eme")) + (home-page "https://github.com/rfjakob/eme") + (synopsis "EME for Go") + (description + "EME (ECB-Mix-ECB or, clearer, Encrypt-Mix-Encrypt) is a wide-block encryption +mode developed by Halevi and Rogaway.") + (license license:expat))) + +(define-public gocryptfs + (package + (name "gocryptfs") + (version "2.3.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rfjakob/gocryptfs") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1lkcx61r93xq21scg98hrvclwwxbli93pqnnck0d08isvhgjd590")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/rfjakob/gocryptfs" + #:build-flags + #~(list + "-ldflags" (string-append + "-X main.GitVersion=" #$version + " -X main.GitVersionFuse=" #$(package-version + go-github-com-hanwen-go-fuse-v2) + " -X main.BuildDate=" "[reproducible]")) + #:phases + #~(modify-phases %standard-phases + ;; after 'check phase, should maybe unmount leftover mounts as in + ;; https://github.com/rfjakob/gocryptfs/blob/a55b3cc15a6d9bce116a90f33df4bc99d9dd6a10/test.bash#L28 + (replace 'build + (lambda arguments + (for-each + (lambda (directory) + (apply (assoc-ref %standard-phases 'build) + (append arguments (list #:import-path directory)))) + (list + "github.com/rfjakob/gocryptfs" + "github.com/rfjakob/gocryptfs/gocryptfs-xray" + "github.com/rfjakob/gocryptfs/contrib/statfs" + "github.com/rfjakob/gocryptfs/contrib/findholes" + "github.com/rfjakob/gocryptfs/contrib/atomicrename"))))))) + (native-inputs (list + go-github-com-hanwen-go-fuse-v2 + go-github-com-jacobsa-crypto + go-github-com-jacobsa-oglematchers + go-github-com-jacobsa-oglemock + go-github-com-jacobsa-ogletest + go-github-com-jacobsa-reqtrace + go-github-com-pkg-xattr + go-github-com-rfjakob-eme + go-github-com-sabhiram-go-gitignore + go-github-com-spf13-pflag + go-golang-org-x-crypto + go-golang-org-x-net + go-golang-org-x-sys + go-golang-org-x-term + openssl + pkg-config)) + (home-page "https://github.com/rfjakob/gocryptfs") + (synopsis "Encrypted overlay filesystem") + (description + "Gocryptfs is an encrypted overlay filesystem written in Go. It +features a file-based encryption that is implemented as a mountable +FUSE filesystem. + +Gocryptfs was inspired by EncFS and strives to fix its security issues +while providing good performance. Gocryptfs is as fast as EncFS in the +default mode and significantly faster than paranoia mode in EncFS, +which provides a security level comparable to Gocryptfs. + +On CPUs without AES-NI, gocryptfs uses OpenSSL through a thin wrapper +called stupidgcm. This provides a 4x speedup compared to Go's builtin +AES-GCM implementation.") + (license license:expat))) base-commit: bb2701b9111a3d82a82ceaaf2b22b51ecd8ac21f prerequisite-patch-id: 26ec5a03b0ac6b2d5b9df1a82b699a3701e62f91 prerequisite-patch-id: 11b4410d3ba809f1cf31d46f3f7fec85d8eab5c0 -- 2.38.0