unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#31582] [PATCH 1/8] gnu: Add ghc-bloomfilter.
  2018-05-24 19:19 [bug#31582] [PATCH 0/8] git-annex Timothy Sample
@ 2018-02-19 17:58 ` Timothy Sample
  2018-05-29  4:08   ` Christopher Lemmer Webber
  2018-02-20  0:07 ` [bug#31582] [PATCH 2/8] gnu: Add ghc-feed Timothy Sample
                   ` (8 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Timothy Sample @ 2018-02-19 17:58 UTC (permalink / raw)
  To: 31582

* gnu/package/haskell.scm (ghc-bloomfilter): New variable.
---
 gnu/packages/haskell.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index c8fade065..ccb3adf15 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -3573,6 +3573,31 @@ vector types are supported.  Specific instances are provided for unboxed,
 boxed and storable vectors.")
     (license license:bsd-3)))
 
+(define-public ghc-bloomfilter
+  (package
+    (name "ghc-bloomfilter")
+    (version "2.0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "bloomfilter/bloomfilter-" version ".tar.gz"))
+       (sha256
+        (base32
+         "03vrmncg1c10a2wcg5skq30m1yiknn7nwxz2gblyyfaxglshspkc"))))
+    (build-system haskell-build-system)
+    (native-inputs
+     `(("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-random" ,ghc-random)
+       ("ghc-test-framework" ,ghc-test-framework)
+       ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)))
+    (home-page "https://github.com/bos/bloomfilter")
+    (synopsis "Pure and impure Bloom filter implementations")
+    (description "This package provides both mutable and immutable Bloom
+filter data types, along with a family of hash functions and an easy-to-use
+interface.")
+    (license license:bsd-3)))
+
 (define-public ghc-network
   (package
     (name "ghc-network")
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [bug#31582] [PATCH v2 1/8] gnu: Add ghc-bloomfilter.
  2018-05-29 14:55       ` Timothy Sample
@ 2018-02-19 17:58         ` Timothy Sample
  2018-05-29 16:07         ` [bug#31582] [PATCH v2 8/8] gnu: Add git-annex Timothy Sample
  1 sibling, 0 replies; 20+ messages in thread
From: Timothy Sample @ 2018-02-19 17:58 UTC (permalink / raw)
  To: 31582

* gnu/package/haskell.scm (ghc-bloomfilter): New variable.
---
 gnu/packages/haskell.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index c8fade065..ece879778 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -14,6 +14,7 @@
 ;;; Copyright © 2017 rsiddharth <s@ricketyspace.net>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Tonton <tonton@riseup.net>
+;;; Copyright © 2018 Timothy Sample <samplet@ngyro.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3573,6 +3574,31 @@ vector types are supported.  Specific instances are provided for unboxed,
 boxed and storable vectors.")
     (license license:bsd-3)))
 
+(define-public ghc-bloomfilter
+  (package
+    (name "ghc-bloomfilter")
+    (version "2.0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "bloomfilter/bloomfilter-" version ".tar.gz"))
+       (sha256
+        (base32
+         "03vrmncg1c10a2wcg5skq30m1yiknn7nwxz2gblyyfaxglshspkc"))))
+    (build-system haskell-build-system)
+    (native-inputs
+     `(("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-random" ,ghc-random)
+       ("ghc-test-framework" ,ghc-test-framework)
+       ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)))
+    (home-page "https://github.com/bos/bloomfilter")
+    (synopsis "Pure and impure Bloom filter implementations")
+    (description "This package provides both mutable and immutable Bloom
+filter data types, along with a family of hash functions and an easy-to-use
+interface.")
+    (license license:bsd-3)))
+
 (define-public ghc-network
   (package
     (name "ghc-network")
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [bug#31582] [PATCH 2/8] gnu: Add ghc-feed.
  2018-05-24 19:19 [bug#31582] [PATCH 0/8] git-annex Timothy Sample
  2018-02-19 17:58 ` [bug#31582] [PATCH 1/8] gnu: Add ghc-bloomfilter Timothy Sample
@ 2018-02-20  0:07 ` Timothy Sample
  2018-02-20  0:08 ` [bug#31582] [PATCH 3/8] gnu: Add ghc-ifelse Timothy Sample
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 20+ messages in thread
From: Timothy Sample @ 2018-02-20  0:07 UTC (permalink / raw)
  To: 31582

* gnu/packages/haskell.scm (ghc-feed): New variable.
---
 gnu/packages/haskell.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index ccb3adf15..07a639b76 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -2988,6 +2988,35 @@ online}.")
     (description "This package provides a simple XML library for Haskell.")
     (license license:bsd-3)))
 
+(define-public ghc-feed
+  (package
+    (name "ghc-feed")
+    (version "0.3.12.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "feed/feed-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0hkrsinspg70bbm3hwqdrvivws6zya1hyk0a3awpaz82j4xnlbfc"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-old-locale" ,ghc-old-locale)
+       ("ghc-old-time" ,ghc-old-time)
+       ("ghc-time-locale-compat" ,ghc-time-locale-compat)
+       ("ghc-utf8-string" ,ghc-utf8-string)
+       ("ghc-xml" ,ghc-xml)))
+    (native-inputs
+     `(("ghc-hunit" ,ghc-hunit)
+       ("ghc-test-framework" ,ghc-test-framework)
+       ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)))
+    (home-page "https://github.com/bergmark/feed")
+    (synopsis "Haskell package for handling various syndication formats")
+    (description "This Haskell package includes tools for generating and
+consuming feeds in both RSS (Really Simple Syndication) and Atom format.")
+    (license license:bsd-3)))
+
 (define-public ghc-exceptions
   (package
     (name "ghc-exceptions")
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [bug#31582] [PATCH 3/8] gnu: Add ghc-ifelse.
  2018-05-24 19:19 [bug#31582] [PATCH 0/8] git-annex Timothy Sample
  2018-02-19 17:58 ` [bug#31582] [PATCH 1/8] gnu: Add ghc-bloomfilter Timothy Sample
  2018-02-20  0:07 ` [bug#31582] [PATCH 2/8] gnu: Add ghc-feed Timothy Sample
@ 2018-02-20  0:08 ` Timothy Sample
  2018-02-20  5:12 ` [bug#31582] [PATCH 4/8] gnu: Add ghc-esqueleto Timothy Sample
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 20+ messages in thread
From: Timothy Sample @ 2018-02-20  0:08 UTC (permalink / raw)
  To: 31582

* gnu/packages/haskell.scm (ghc-ifelse): New variable.
---
 gnu/packages/haskell.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 07a639b76..f4f054895 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -3812,6 +3812,27 @@ with various performance characteristics.")
 manipulating monad transformer stacks.")
     (license license:bsd-3)))
 
+(define-public ghc-ifelse
+  (package
+    (name "ghc-ifelse")
+    (version "0.85")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "IfElse/IfElse-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1kfx1bwfjczj93a8yqz1n8snqiq5655qgzwv1lrycry8wb1vzlwa"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-mtl" ,ghc-mtl)))
+    (home-page "http://hackage.haskell.org/package/IfElse")
+    (synopsis "Monadic control flow with anaphoric variants")
+    (description "This library provides functions for control flow inside of
+monads with anaphoric variants on @code{if} and @code{when} and a C-like
+@code{switch} function.")
+    (license license:bsd-3)))
+
 (define-public ghc-monad-control
   (package
     (name "ghc-monad-control")
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [bug#31582] [PATCH 4/8] gnu: Add ghc-esqueleto.
  2018-05-24 19:19 [bug#31582] [PATCH 0/8] git-annex Timothy Sample
                   ` (2 preceding siblings ...)
  2018-02-20  0:08 ` [bug#31582] [PATCH 3/8] gnu: Add ghc-ifelse Timothy Sample
@ 2018-02-20  5:12 ` Timothy Sample
  2018-02-20  5:25 ` [bug#31582] [PATCH 5/8] gnu: Add ghc-safesemaphore Timothy Sample
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 20+ messages in thread
From: Timothy Sample @ 2018-02-20  5:12 UTC (permalink / raw)
  To: 31582

* gnu/packages/haskell.scm (ghc-esqueleto): New variable.
---
 gnu/packages/haskell.scm | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index f4f054895..2c0b66396 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -7811,6 +7811,44 @@ converting between Haskell values and JSON.
 JSON (JavaScript Object Notation) is a lightweight data-interchange format.")
     (license license:bsd-3)))
 
+(define-public ghc-esqueleto
+  (package
+    (name "ghc-esqueleto")
+    (version "2.5.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "esqueleto/esqueleto-" version ".tar.gz"))
+       (sha256
+        (base32
+         "10n49rzqmblky7pwjnysalyy6nacmxfms8dqbsdv6hlyzr8pb69x"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-blaze-html" ,ghc-blaze-html)
+       ("ghc-conduit" ,ghc-conduit)
+       ("ghc-monad-logger" ,ghc-monad-logger)
+       ("ghc-persistent" ,ghc-persistent)
+       ("ghc-resourcet" ,ghc-resourcet)
+       ("ghc-tagged" ,ghc-tagged)
+       ("ghc-text" ,ghc-text)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)))
+    (native-inputs
+     `(("ghc-hspec" ,ghc-hspec)
+       ("ghc-hunit" ,ghc-hunit)
+       ("ghc-monad-control" ,ghc-monad-control)
+       ("ghc-persistent-sqlite" ,ghc-persistent-sqlite)
+       ("ghc-persistent-template" ,ghc-persistent-template)
+       ("ghc-quickcheck" ,ghc-quickcheck)))
+    (home-page "https://github.com/bitemyapp/esqueleto")
+    (synopsis "Type-safe embedded domain specific language for SQL queries")
+    (description "This library provides a type-safe embedded domain specific
+language (EDSL) for SQL queries that works with SQL backends as provided by
+@code{ghc-persistent}.  Its language closely resembles SQL, so you don't have
+to learn new concepts, just new syntax, and it's fairly easy to predict the
+generated SQL and optimize it for your backend.")
+    (license license:bsd-3)))
+
 (define-public shellcheck
   (package
     (name "shellcheck")
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [bug#31582] [PATCH 5/8] gnu: Add ghc-safesemaphore.
  2018-05-24 19:19 [bug#31582] [PATCH 0/8] git-annex Timothy Sample
                   ` (3 preceding siblings ...)
  2018-02-20  5:12 ` [bug#31582] [PATCH 4/8] gnu: Add ghc-esqueleto Timothy Sample
@ 2018-02-20  5:25 ` Timothy Sample
  2018-02-20  7:56 ` [bug#31582] [PATCH 6/8] gnu: ghc-psqueues: Allow building with newer versions of QuickCheck Timothy Sample
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 20+ messages in thread
From: Timothy Sample @ 2018-02-20  5:25 UTC (permalink / raw)
  To: 31582

* gnu/packages/haskell.scm (ghc-safesemaphore): New variable.
---
 gnu/packages/haskell.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 2c0b66396..6860c42c3 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1938,6 +1938,30 @@ case with other forms of concurrent communication, such as locks or
      "This package provides a library for parallel programming.")
     (license license:bsd-3)))
 
+(define-public ghc-safesemaphore
+  (package
+    (name "ghc-safesemaphore")
+    (version "0.10.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "SafeSemaphore/SafeSemaphore-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0rpg9j6fy70i0b9dkrip9d6wim0nac0snp7qzbhykjkqlcvvgr91"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-stm" ,ghc-stm)))
+    (native-inputs
+     `(("ghc-hunit" ,ghc-hunit)))
+    (home-page "https://github.com/ChrisKuklewicz/SafeSemaphore")
+    (synopsis "Exception safe semaphores")
+    (description "This library provides exception safe semaphores that can be
+used in place of @code{QSem}, @code{QSemN}, and @code{SampleVar}, all of which
+are not exception safe and can be broken by @code{killThread}.")
+    (license license:bsd-3)))
+
 (define-public ghc-text
   (package
     (name "ghc-text")
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [bug#31582] [PATCH 6/8] gnu: ghc-psqueues: Allow building with newer versions of QuickCheck.
  2018-05-24 19:19 [bug#31582] [PATCH 0/8] git-annex Timothy Sample
                   ` (4 preceding siblings ...)
  2018-02-20  5:25 ` [bug#31582] [PATCH 5/8] gnu: Add ghc-safesemaphore Timothy Sample
@ 2018-02-20  7:56 ` Timothy Sample
  2018-02-21  4:13 ` [bug#31582] [PATCH 7/8] gnu: Add ghc-disk-free-space Timothy Sample
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 20+ messages in thread
From: Timothy Sample @ 2018-02-20  7:56 UTC (permalink / raw)
  To: 31582

* gnu/packages/haskell.scm (ghc-psqueues)[arguments]: Add configure
flag to allow newer versions of QuickCheck.
---
 gnu/packages/haskell.scm | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 6860c42c3..962e63dfa 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -7971,6 +7971,8 @@ bytestrings and their hexademical representation.")
         (base32
          "0n39s1i88j6s7vvsdhpbhcr3gpbwlzabwcc3nbd7nqb4kb4i0sls"))))
     (build-system haskell-build-system)
+    (arguments
+     `(#:configure-flags (list "--allow-newer=QuickCheck")))
     (inputs
      `(("ghc-hashable" ,ghc-hashable)))
     (native-inputs
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [bug#31582] [PATCH 7/8] gnu: Add ghc-disk-free-space.
  2018-05-24 19:19 [bug#31582] [PATCH 0/8] git-annex Timothy Sample
                   ` (5 preceding siblings ...)
  2018-02-20  7:56 ` [bug#31582] [PATCH 6/8] gnu: ghc-psqueues: Allow building with newer versions of QuickCheck Timothy Sample
@ 2018-02-21  4:13 ` Timothy Sample
  2018-02-21  4:15 ` [bug#31582] [PATCH 8/8] gnu: Add git-annex Timothy Sample
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 20+ messages in thread
From: Timothy Sample @ 2018-02-21  4:13 UTC (permalink / raw)
  To: 31582

* gnu/packages/haskell.scm (ghc-disk-free-space): New variable.
---
 gnu/packages/haskell.scm | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 962e63dfa..3cbb33fa1 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -9655,4 +9655,24 @@ serialization code.")
    (home-page "https://hackage.haskell.org/package/bytes")
    (license license:bsd-3)))
 
+(define-public ghc-disk-free-space
+  (package
+    (name "ghc-disk-free-space")
+    (version "0.1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "disk-free-space/disk-free-space-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "07rqj8k1vh3cykq9yidpjxhgh1f7vgmjs6y1nv5kq2217ff4yypi"))))
+    (build-system haskell-build-system)
+    (home-page "https://github.com/redneb/disk-free-space")
+    (synopsis "Retrieve information about disk space usage")
+    (description "A cross-platform library for retrieving information about
+disk space usage.")
+    (license license:bsd-3)))
+
 ;;; haskell.scm ends here
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [bug#31582] [PATCH 8/8] gnu: Add git-annex.
  2018-05-24 19:19 [bug#31582] [PATCH 0/8] git-annex Timothy Sample
                   ` (6 preceding siblings ...)
  2018-02-21  4:13 ` [bug#31582] [PATCH 7/8] gnu: Add ghc-disk-free-space Timothy Sample
@ 2018-02-21  4:15 ` Timothy Sample
  2018-05-29  4:13   ` Christopher Lemmer Webber
  2018-05-29  4:11 ` [bug#31582] [PATCH 0/8] git-annex Christopher Lemmer Webber
  2018-06-01 17:26 ` [bug#31582] git-annex make install Joey Hess
  9 siblings, 1 reply; 20+ messages in thread
From: Timothy Sample @ 2018-02-21  4:15 UTC (permalink / raw)
  To: 31582

* 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+))))
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [bug#31582] [PATCH 0/8] git-annex
@ 2018-05-24 19:19 Timothy Sample
  2018-02-19 17:58 ` [bug#31582] [PATCH 1/8] gnu: Add ghc-bloomfilter Timothy Sample
                   ` (9 more replies)
  0 siblings, 10 replies; 20+ messages in thread
From: Timothy Sample @ 2018-05-24 19:19 UTC (permalink / raw)
  To: 31582

Hello!

This patch series adds a package for “git-annex”.  The package is not
quite perfect, but I think it is far enough along to be included.

One of the issues is that it only builds a very minimal version,
disabling most of the optional features (the most important being the
Web app).  One reason for this is that we are missing quite a few of
these features’ dependencies.  Another reason is that I’m not really
familiar with them, so I wouldn’t know how to test them ;).

The other issue is that I needed to rework the build a fair bit, and I
did it in a bit of a shoddy way.  The way that the Haskell build system
sets up the environment means that the “Setup.hs” does not run properly.
It passes the Haskell package DB as a parameter to Cabal, but this
doesn’t affect the code that initializes Cabal.  On the other hand,
Cabal disallows the package DB to be passed in by environment variables.
It might be possible to pass it in as a parameter to “runhaskell”, but
I’m not sure.  Following that path would require copying large chunks of
the build system into the package, which seems like a poor choice!  (As
far as I can tell, this is the first package with this problem.  If it
were more common, I would suggest an update to the build system itself.)
In the end, I decided to cheat a little, and factor out the different
parts so that they can be run separately.  This means that the ‘man’
pages do not get installed :/.  Maybe that could be fixed later, though.


-- Tim

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [bug#31582] [PATCH 1/8] gnu: Add ghc-bloomfilter.
  2018-02-19 17:58 ` [bug#31582] [PATCH 1/8] gnu: Add ghc-bloomfilter Timothy Sample
@ 2018-05-29  4:08   ` Christopher Lemmer Webber
  0 siblings, 0 replies; 20+ messages in thread
From: Christopher Lemmer Webber @ 2018-05-29  4:08 UTC (permalink / raw)
  To: Timothy Sample; +Cc: 31582

LGTM.

Timothy Sample writes:

> * gnu/package/haskell.scm (ghc-bloomfilter): New variable.
> ---
>  gnu/packages/haskell.scm | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
>
> diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
> index c8fade065..ccb3adf15 100644
> --- a/gnu/packages/haskell.scm
> +++ b/gnu/packages/haskell.scm
> @@ -3573,6 +3573,31 @@ vector types are supported.  Specific instances are provided for unboxed,
>  boxed and storable vectors.")
>      (license license:bsd-3)))
>  
> +(define-public ghc-bloomfilter
> +  (package
> +    (name "ghc-bloomfilter")
> +    (version "2.0.1.0")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append "https://hackage.haskell.org/package/"
> +                           "bloomfilter/bloomfilter-" version ".tar.gz"))
> +       (sha256
> +        (base32
> +         "03vrmncg1c10a2wcg5skq30m1yiknn7nwxz2gblyyfaxglshspkc"))))
> +    (build-system haskell-build-system)
> +    (native-inputs
> +     `(("ghc-quickcheck" ,ghc-quickcheck)
> +       ("ghc-random" ,ghc-random)
> +       ("ghc-test-framework" ,ghc-test-framework)
> +       ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)))
> +    (home-page "https://github.com/bos/bloomfilter")
> +    (synopsis "Pure and impure Bloom filter implementations")
> +    (description "This package provides both mutable and immutable Bloom
> +filter data types, along with a family of hash functions and an easy-to-use
> +interface.")
> +    (license license:bsd-3)))
> +
>  (define-public ghc-network
>    (package
>      (name "ghc-network")

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [bug#31582] [PATCH 0/8] git-annex
  2018-05-24 19:19 [bug#31582] [PATCH 0/8] git-annex Timothy Sample
                   ` (7 preceding siblings ...)
  2018-02-21  4:15 ` [bug#31582] [PATCH 8/8] gnu: Add git-annex Timothy Sample
@ 2018-05-29  4:11 ` Christopher Lemmer Webber
  2018-06-01 17:26 ` [bug#31582] git-annex make install Joey Hess
  9 siblings, 0 replies; 20+ messages in thread
From: Christopher Lemmer Webber @ 2018-05-29  4:11 UTC (permalink / raw)
  To: Timothy Sample; +Cc: 31582

Timothy Sample writes:

> Hello!
>
> This patch series adds a package for “git-annex”.  The package is not
> quite perfect, but I think it is far enough along to be included.
>
> One of the issues is that it only builds a very minimal version,
> disabling most of the optional features (the most important being the
> Web app).  One reason for this is that we are missing quite a few of
> these features’ dependencies.  Another reason is that I’m not really
> familiar with them, so I wouldn’t know how to test them ;).
>
> The other issue is that I needed to rework the build a fair bit, and I
> did it in a bit of a shoddy way.  The way that the Haskell build system
> sets up the environment means that the “Setup.hs” does not run properly.
> It passes the Haskell package DB as a parameter to Cabal, but this
> doesn’t affect the code that initializes Cabal.  On the other hand,
> Cabal disallows the package DB to be passed in by environment variables.
> It might be possible to pass it in as a parameter to “runhaskell”, but
> I’m not sure.  Following that path would require copying large chunks of
> the build system into the package, which seems like a poor choice!  (As
> far as I can tell, this is the first package with this problem.  If it
> were more common, I would suggest an update to the build system itself.)
> In the end, I decided to cheat a little, and factor out the different
> parts so that they can be run separately.  This means that the ‘man’
> pages do not get installed :/.  Maybe that could be fixed later, though.
>
>
> -- Tim

I was going to respond to "LGTM" on all the patches, but they all look
good to me.  The concerns you raised in this post seem like things we
should address, but which need not block getting an initial version of
git-annex into Guix.

I'm building it now, will report back when I get a chance to test it.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [bug#31582] [PATCH 8/8] gnu: Add git-annex.
  2018-02-21  4:15 ` [bug#31582] [PATCH 8/8] gnu: Add git-annex Timothy Sample
@ 2018-05-29  4:13   ` Christopher Lemmer Webber
  2018-05-29 13:45     ` Christopher Lemmer Webber
  0 siblings, 1 reply; 20+ messages in thread
From: Christopher Lemmer Webber @ 2018-05-29  4:13 UTC (permalink / raw)
  To: Timothy Sample; +Cc: 31582

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+))))

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [bug#31582] [PATCH 8/8] gnu: Add git-annex.
  2018-05-29  4:13   ` Christopher Lemmer Webber
@ 2018-05-29 13:45     ` Christopher Lemmer Webber
  2018-05-29 14:55       ` Timothy Sample
  0 siblings, 1 reply; 20+ messages in thread
From: Christopher Lemmer Webber @ 2018-05-29 13:45 UTC (permalink / raw)
  To: Timothy Sample; +Cc: 31582

I tested this morning.  It seems to work well.

My one comment before I push this is a minor one... should this go in
backup.scm or should it be in version-control.scm?  Not everyone is
using it in ways I would consider to be "backups" any more than other
VCS things are... I'm not.

Christopher Lemmer Webber writes:

> 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+))))

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [bug#31582] [PATCH 8/8] gnu: Add git-annex.
  2018-05-29 13:45     ` Christopher Lemmer Webber
@ 2018-05-29 14:55       ` Timothy Sample
  2018-02-19 17:58         ` [bug#31582] [PATCH v2 1/8] gnu: Add ghc-bloomfilter Timothy Sample
  2018-05-29 16:07         ` [bug#31582] [PATCH v2 8/8] gnu: Add git-annex Timothy Sample
  0 siblings, 2 replies; 20+ messages in thread
From: Timothy Sample @ 2018-05-29 14:55 UTC (permalink / raw)
  To: Christopher Lemmer Webber; +Cc: 31582

Christopher Lemmer Webber <cwebber@dustycloud.org> writes:

> I tested this morning.  It seems to work well.

Thanks for the review and doing the tests!

> My one comment before I push this is a minor one... should this go in
> backup.scm or should it be in version-control.scm?  Not everyone is
> using it in ways I would consider to be "backups" any more than other
> VCS things are... I'm not.

I hesitated quite a bit here.  I agree that “version-control.scm” is the
right place.  The website specifically says “git-annex is not a backup
system”.  I must have been suffering from categorizing-fatigue when I
made that choice :).

> Christopher Lemmer Webber writes:
>
>> 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.

Whoops!  Sorry.  I will update the patches in a few hours unless you
have your finger on the button and do it first.

Thanks again!

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [bug#31582] [PATCH v2 8/8] gnu: Add git-annex.
  2018-05-29 14:55       ` Timothy Sample
  2018-02-19 17:58         ` [bug#31582] [PATCH v2 1/8] gnu: Add ghc-bloomfilter Timothy Sample
@ 2018-05-29 16:07         ` Timothy Sample
  2018-06-01  8:36           ` bug#31582: " Ludovic Courtès
  1 sibling, 1 reply; 20+ messages in thread
From: Timothy Sample @ 2018-05-29 16:07 UTC (permalink / raw)
  To: 31582

* gnu/packages/version-control.scm (git-annex): New variable.
---
 gnu/packages/version-control.scm | 129 +++++++++++++++++++++++++++++++
 1 file changed, 129 insertions(+)

diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 603e8a46d..90e1875b9 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -20,6 +20,7 @@
 ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
 ;;; Copyright © 2018 Christopher Baines <mail@cbaines.net>
+;;; Copyright © 2018 Timothy Sample <samplet@ngyro.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -84,6 +85,7 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages rsync)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages xml)
@@ -1995,3 +1997,130 @@ venerable RCS, hence the anagrammatic acronym.  The design is tuned for use
 cases like all those little scripts in your @file{~/bin} directory, or a
 directory full of HOWTOs.")
     (license license:bsd-2)))
+
+(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+))))
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* bug#31582: [PATCH v2 8/8] gnu: Add git-annex.
  2018-05-29 16:07         ` [bug#31582] [PATCH v2 8/8] gnu: Add git-annex Timothy Sample
@ 2018-06-01  8:36           ` Ludovic Courtès
  0 siblings, 0 replies; 20+ messages in thread
From: Ludovic Courtès @ 2018-06-01  8:36 UTC (permalink / raw)
  To: Timothy Sample; +Cc: 31582-done

Hello Timothy & Chris,

Since Chris said it’s OK and it builds fine for me, I went ahead and
committed the whole series.

Thank you!

Ludo’.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [bug#31582] git-annex make install
  2018-05-24 19:19 [bug#31582] [PATCH 0/8] git-annex Timothy Sample
                   ` (8 preceding siblings ...)
  2018-05-29  4:11 ` [bug#31582] [PATCH 0/8] git-annex Christopher Lemmer Webber
@ 2018-06-01 17:26 ` Joey Hess
  2018-06-01 20:12   ` Timothy Sample
  9 siblings, 1 reply; 20+ messages in thread
From: Joey Hess @ 2018-06-01 17:26 UTC (permalink / raw)
  To: Timothy Sample; +Cc: 31582

[-- Attachment #1: Type: text/plain, Size: 716 bytes --]

Thanks for your work on this package, I'm excited to see it.

You could avoid most of the problems with Setup.hs by using git-annex's
Makefile. That has targets to build the man pages and install
everything. The equivilant code in Setup.hs is really only there to
minimally support people installing with haskell tooling, but the
Makefile is generally preferable for distribution use.

Also, I'd encourage you to enable S3 and WebDAV in the build, since
those are often used, and you're not testing all the other storage
backends that are already supported in your build; nor should you need
to. `git-annex testremote` is there so users can test this stuff in
their own environments.

-- 
see shy jo

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [bug#31582] git-annex make install
  2018-06-01 17:26 ` [bug#31582] git-annex make install Joey Hess
@ 2018-06-01 20:12   ` Timothy Sample
  2018-06-01 21:00     ` Joey Hess
  0 siblings, 1 reply; 20+ messages in thread
From: Timothy Sample @ 2018-06-01 20:12 UTC (permalink / raw)
  To: Joey Hess; +Cc: 31582

Joey Hess <id@joeyh.name> writes:

> Thanks for your work on this package, I'm excited to see it.

My pleasure!  Thanks for creating git-annex :).

> You could avoid most of the problems with Setup.hs by using git-annex's
> Makefile. That has targets to build the man pages and install
> everything. The equivilant code in Setup.hs is really only there to
> minimally support people installing with haskell tooling, but the
> Makefile is generally preferable for distribution use.

This is really useful.  I probably should have looked at the Debian
package a little more closely.  I got the impression that Hackage was
the main source for git-annex, and went straight from there to Cabal.

> Also, I'd encourage you to enable S3 and WebDAV in the build, since
> those are often used, and you're not testing all the other storage
> backends that are already supported in your build; nor should you need
> to. `git-annex testremote` is there so users can test this stuff in
> their own environments.

Thanks for the recommendation.  Both WebDAV and S3 should be easy enough
to add to the package.  The web client and the Android stuff probably
not so much.

Thanks a million for your help here. I will put together some patches
soon to fix the manuals using the Makefile, and I will add S3 and
WebDAV.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [bug#31582] git-annex make install
  2018-06-01 20:12   ` Timothy Sample
@ 2018-06-01 21:00     ` Joey Hess
  0 siblings, 0 replies; 20+ messages in thread
From: Joey Hess @ 2018-06-01 21:00 UTC (permalink / raw)
  To: Timothy Sample; +Cc: 31582

[-- Attachment #1: Type: text/plain, Size: 561 bytes --]

Timothy Sample wrote:
> This is really useful.  I probably should have looked at the Debian
> package a little more closely.  I got the impression that Hackage was
> the main source for git-annex, and went straight from there to Cabal.

Indeed Hackage is not the main source, and due to clumsiness of cabal, the
git-annex.tar.gz stored on Hackage doesn't include all the files from the
upstream source; only the ones needed for cabal to build it. So for the
Makefile etc you'll need to get the source from git or use a git
archive.

-- 
see shy jo

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2018-06-01 21:01 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-05-24 19:19 [bug#31582] [PATCH 0/8] git-annex Timothy Sample
2018-02-19 17:58 ` [bug#31582] [PATCH 1/8] gnu: Add ghc-bloomfilter Timothy Sample
2018-05-29  4:08   ` Christopher Lemmer Webber
2018-02-20  0:07 ` [bug#31582] [PATCH 2/8] gnu: Add ghc-feed Timothy Sample
2018-02-20  0:08 ` [bug#31582] [PATCH 3/8] gnu: Add ghc-ifelse Timothy Sample
2018-02-20  5:12 ` [bug#31582] [PATCH 4/8] gnu: Add ghc-esqueleto Timothy Sample
2018-02-20  5:25 ` [bug#31582] [PATCH 5/8] gnu: Add ghc-safesemaphore Timothy Sample
2018-02-20  7:56 ` [bug#31582] [PATCH 6/8] gnu: ghc-psqueues: Allow building with newer versions of QuickCheck Timothy Sample
2018-02-21  4:13 ` [bug#31582] [PATCH 7/8] gnu: Add ghc-disk-free-space Timothy Sample
2018-02-21  4:15 ` [bug#31582] [PATCH 8/8] gnu: Add git-annex Timothy Sample
2018-05-29  4:13   ` Christopher Lemmer Webber
2018-05-29 13:45     ` Christopher Lemmer Webber
2018-05-29 14:55       ` Timothy Sample
2018-02-19 17:58         ` [bug#31582] [PATCH v2 1/8] gnu: Add ghc-bloomfilter Timothy Sample
2018-05-29 16:07         ` [bug#31582] [PATCH v2 8/8] gnu: Add git-annex Timothy Sample
2018-06-01  8:36           ` bug#31582: " Ludovic Courtès
2018-05-29  4:11 ` [bug#31582] [PATCH 0/8] git-annex Christopher Lemmer Webber
2018-06-01 17:26 ` [bug#31582] git-annex make install Joey Hess
2018-06-01 20:12   ` Timothy Sample
2018-06-01 21:00     ` Joey Hess

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).