From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43745) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fNW1P-00072r-Hl for guix-patches@gnu.org; Tue, 29 May 2018 00:14:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fNW1M-0004aT-B8 for guix-patches@gnu.org; Tue, 29 May 2018 00:14:07 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:45077) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fNW1M-0004aJ-7P for guix-patches@gnu.org; Tue, 29 May 2018 00:14:04 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1fNW1K-0000X2-He for guix-patches@gnu.org; Tue, 29 May 2018 00:14:03 -0400 Subject: [bug#31582] [PATCH 8/8] gnu: Add git-annex. Resent-Message-ID: References: <878t88vp2n.fsf@ngyro.com> <87tvqwsvnt.fsf@mrblack.i-did-not-set--mail-host-address--so-tickle-me> From: Christopher Lemmer Webber In-reply-to: <87tvqwsvnt.fsf@mrblack.i-did-not-set--mail-host-address--so-tickle-me> Date: Mon, 28 May 2018 23:13:35 -0500 Message-ID: <87y3g3rte8.fsf@dustycloud.org> MIME-Version: 1.0 Content-Type: text/plain List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: Timothy Sample Cc: 31582@debbugs.gnu.org Note that you didn't add a copyright header to this file (or the haskell.scm one either). I can do that though if everything builds before I push it. Timothy Sample writes: > * gnu/packages/backup.scm (git-annex): New variable. > --- > gnu/packages/backup.scm | 134 ++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 134 insertions(+) > > diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm > index a3782e129..1e4c03427 100644 > --- a/gnu/packages/backup.scm > +++ b/gnu/packages/backup.scm > @@ -31,6 +31,7 @@ > #:use-module (guix download) > #:use-module (guix utils) > #:use-module (guix build-system gnu) > + #:use-module (guix build-system haskell) > #:use-module (guix build-system python) > #:use-module (gnu packages) > #:use-module (gnu packages acl) > @@ -39,6 +40,7 @@ > #:use-module (gnu packages check) > #:use-module (gnu packages compression) > #:use-module (gnu packages crypto) > + #:use-module (gnu packages curl) > #:use-module (gnu packages databases) > #:use-module (gnu packages dejagnu) > #:use-module (gnu packages ftp) > @@ -46,6 +48,10 @@ > #:use-module (gnu packages gnupg) > #:use-module (gnu packages gperf) > #:use-module (gnu packages guile) > + #:use-module (gnu packages haskell) > + #:use-module (gnu packages haskell-check) > + #:use-module (gnu packages haskell-web) > + #:use-module (gnu packages haskell-crypto) > #:use-module (gnu packages linux) > #:use-module (gnu packages mcrypt) > #:use-module (gnu packages nettle) > @@ -58,6 +64,7 @@ > #:use-module (gnu packages rsync) > #:use-module (gnu packages ssh) > #:use-module (gnu packages tls) > + #:use-module (gnu packages version-control) > #:use-module (gnu packages xml)) > > (define-public duplicity > @@ -813,3 +820,130 @@ file systems with unattended creation and expiration. A dirvish backup vault > is like a time machine for your data. ") > (license (license:fsf-free "file://COPYING" > "Open Software License 2.0")))) > + > +(define-public git-annex > + (package > + (name "git-annex") > + (version "6.20170818") > + (source > + (origin > + (method url-fetch) > + (uri (string-append "https://hackage.haskell.org/package/" > + "git-annex/git-annex-" version ".tar.gz")) > + (sha256 > + (base32 > + "0ybxixbqvy4rx6mq9s02rh349rbr04hb17z4bfayin0qwa5kzpvx")))) > + (build-system haskell-build-system) > + (arguments > + `(#:configure-flags > + '("--flags=-Android -Assistant -Pairing -S3 -Webapp -WebDAV") > + #:phases > + (modify-phases %standard-phases > + (add-before 'configure 'patch-shell > + (lambda _ > + (substitute* "Utility/Shell.hs" > + (("/bin/sh") (which "sh"))) > + #t)) > + (add-before 'configure 'factor-setup > + (lambda _ > + ;; Factor out necessary build logic from the provided > + ;; `Setup.hs' script. The script as-is does not work because > + ;; it cannot find its dependencies, and there is no obvious way > + ;; to tell it where to look. Note that we do not preserve the > + ;; code that installs man pages here. > + (call-with-output-file "PreConf.hs" > + (lambda (out) > + (format out "import qualified Build.Configure as Configure~%") > + (format out "main = Configure.run Configure.tests~%"))) > + (call-with-output-file "Setup.hs" > + (lambda (out) > + (format out "import Distribution.Simple~%") > + (format out "main = defaultMain~%"))) > + #t)) > + (add-before 'configure 'pre-configure > + (lambda _ > + (invoke "runhaskell" "PreConf.hs") > + #t)) > + (replace 'check > + (lambda _ > + ;; We need to set the path so that Git recognizes > + ;; `git annex' as a custom command. > + (setenv "PATH" (string-append (getenv "PATH") ":" > + (getcwd) "/dist/build/git-annex")) > + (with-directory-excursion "dist/build/git-annex" > + (symlink "git-annex" "git-annex-shell")) > + (invoke "git-annex" "test") > + #t)) > + (add-after 'install 'install-symlinks > + (lambda* (#:key outputs #:allow-other-keys) > + (let* ((out (assoc-ref outputs "out")) > + (bin (string-append out "/bin"))) > + (symlink (string-append bin "/git-annex") > + (string-append bin "/git-annex-shell")) > + (symlink (string-append bin "/git-annex") > + (string-append bin "/git-remote-tor-annex")) > + #t)))))) > + (inputs > + `(("curl" ,curl) > + ("ghc-aeson" ,ghc-aeson) > + ("ghc-async" ,ghc-async) > + ("ghc-bloomfilter" ,ghc-bloomfilter) > + ("ghc-byteable" ,ghc-byteable) > + ("ghc-case-insensitive" ,ghc-case-insensitive) > + ("ghc-crypto-api" ,ghc-crypto-api) > + ("ghc-cryptonite" ,ghc-cryptonite) > + ("ghc-data-default" ,ghc-data-default) > + ("ghc-disk-free-space" ,ghc-disk-free-space) > + ("ghc-dlist" ,ghc-dlist) > + ("ghc-edit-distance" ,ghc-edit-distance) > + ("ghc-esqueleto" ,ghc-esqueleto) > + ("ghc-exceptions" ,ghc-exceptions) > + ("ghc-feed" ,ghc-feed) > + ("ghc-free" ,ghc-free) > + ("ghc-hslogger" ,ghc-hslogger) > + ("ghc-http-client" ,ghc-http-client) > + ("ghc-http-conduit" ,ghc-http-conduit) > + ("ghc-http-types" ,ghc-http-types) > + ("ghc-ifelse" ,ghc-ifelse) > + ("ghc-memory" ,ghc-memory) > + ("ghc-monad-control" ,ghc-monad-control) > + ("ghc-monad-logger" ,ghc-monad-logger) > + ("ghc-mtl" ,ghc-mtl) > + ("ghc-network" ,ghc-network) > + ("ghc-old-locale" ,ghc-old-locale) > + ("ghc-optparse-applicative" ,ghc-optparse-applicative) > + ("ghc-persistent" ,ghc-persistent) > + ("ghc-persistent-sqlite" ,ghc-persistent-sqlite) > + ("ghc-persistent-template" ,ghc-persistent-template) > + ("ghc-quickcheck" ,ghc-quickcheck) > + ("ghc-random" ,ghc-random) > + ("ghc-regex-tdfa" ,ghc-regex-tdfa) > + ("ghc-resourcet" ,ghc-resourcet) > + ("ghc-safesemaphore" ,ghc-safesemaphore) > + ("ghc-sandi" ,ghc-sandi) > + ("ghc-securemem" ,ghc-securemem) > + ("ghc-socks" ,ghc-socks) > + ("ghc-split" ,ghc-split) > + ("ghc-stm" ,ghc-stm) > + ("ghc-stm-chans" ,ghc-stm-chans) > + ("ghc-text" ,ghc-text) > + ("ghc-unix-compat" ,ghc-unix-compat) > + ("ghc-unordered-containers" ,ghc-unordered-containers) > + ("ghc-utf8-string" ,ghc-utf8-string) > + ("ghc-uuid" ,ghc-uuid) > + ("git" ,git) > + ("rsync" ,rsync))) > + (native-inputs > + `(("ghc-tasty" ,ghc-tasty) > + ("ghc-tasty-hunit" ,ghc-tasty-hunit) > + ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck) > + ("ghc-tasty-rerun" ,ghc-tasty-rerun))) > + (home-page "https://git-annex.branchable.com/") > + (synopsis "Manage files with Git, without checking in their contents") > + (description "This package allows managing files with Git, without > +checking the file contents into Git. It can store files in many places, > +such as local hard drives and cloud storage services. It can also be > +used to keep a folder in sync between computers.") > + ;; The web app is released under the AGPLv3+. > + (license (list license:gpl3+ > + license:agpl3+))))