* [PATCH] fix idris (was "Re: Incomplete work to upgrade Idris to 1.2.0")
[not found] <877eqp7pql.fsf@librem.i-did-not-set--mail-host-address--so-tickle-me>
@ 2018-03-07 5:19 ` Alex ter Weele
2018-03-13 2:08 ` [bug#30741] " Alex ter Weele
0 siblings, 1 reply; 3+ messages in thread
From: Alex ter Weele @ 2018-03-07 5:19 UTC (permalink / raw)
To: guix-patches; +Cc: guix-devel
[-- Attachment #1: Type: text/plain, Size: 445 bytes --]
On guix-devel¹, I had given an incomplete patch to update idris to
1.2.0. After further investigation, I concluded this was the wrong
approach because our current version of GHC is 8.0.2, so the right
version of LTS Haskell to follow is https://www.stackage.org/lts-9.4,
which includes Idris 1.0, not 1.2.
Big thank you to sclv on #hackage for all their help.
¹ https://lists.gnu.org/archive/html/guix-devel/2018-03/msg00100.html
[-- Attachment #2: idris.scm --]
[-- Type: text/plain, Size: 12898 bytes --]
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages idris)
#:use-module (gnu packages haskell)
#:use-module (gnu packages haskell-check)
#:use-module (gnu packages haskell-web)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses)
#:use-module (guix build-system gnu)
#:use-module (guix build-system haskell)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages))
(define ghc-aeson-1.1.2.0
(package (inherit ghc-aeson)
(version "1.1.2.0")
(source
(origin
(method url-fetch)
(uri (string-append
"https://hackage.haskell.org/package/aeson/aeson-"
version
".tar.gz"))
(sha256
(base32
"1zy5z8pzvh53qkjm0nm3f4rwqfqg3867ck8ncd6mrxpcyvxqqj1p"))))))
(define ghc-trifecta-1.6.2.1
(package (inherit ghc-trifecta)
(version "1.6.2.1")
(source
(origin
(method url-fetch)
(uri (string-append
"https://hackage.haskell.org/package/trifecta/"
"trifecta-" version ".tar.gz"))
(sha256
(base32
"1rgv62dlmm4vkdymx5rw5jg3w8ifpzg1745rvs1m4kzdx16p5cxs"))))))
;; ghc-cheapskate appeared too new. This follows LTS Haskell.
(define ghc-cheapskate-0.1.0.5
(package
(inherit ghc-cheapskate)
(version "0.1.0.5")
(source
(origin
(method url-fetch)
(uri (string-append
"https://hackage.haskell.org/package/cheapskate/cheapskate-"
version
".tar.gz"))
(sha256
(base32
"0cpsmfx5z2xykg71sv8j7pl8ga6pzyjnjdb9bxn00vcpqkzvfqvs"))))
(arguments
;; LTS Haskell says data-default >=0.5 && <0.8
`(#:configure-flags (list "--allow-newer=data-default")))))
(define-public idris
(package
(name "idris")
(version "1.0")
(source (origin
(method url-fetch)
(uri (string-append
"https://hackage.haskell.org/package/"
"idris-" version "/idris-" version ".tar.gz"))
(sha256
(base32
"1srbz0cyvd0k1yqgbrwnfj94yg5y3z533q1kzac96z1h7v454s5h"))))
(build-system haskell-build-system)
(inputs
`(("gmp" ,gmp)
("ncurses" ,ncurses)
("ghc-aeson" ,ghc-aeson-1.1.2.0)
("ghc-annotated-wl-pprint" ,ghc-annotated-wl-pprint)
("ghc-ansi-terminal" ,ghc-ansi-terminal)
("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint)
("ghc-async" ,ghc-async)
("ghc-base64-bytestring" ,ghc-base64-bytestring)
("ghc-blaze-html" ,ghc-blaze-html)
("ghc-blaze-markup" ,ghc-blaze-markup)
("ghc-cheapskate" ,ghc-cheapskate-0.1.0.5)
("ghc-code-page" ,ghc-code-page)
("ghc-fingertree" ,ghc-fingertree)
("ghc-fsnotify" ,ghc-fsnotify)
("ghc-ieee754" ,ghc-ieee754)
("ghc-mtl" ,ghc-mtl)
("ghc-network" ,ghc-network)
("ghc-optparse-applicative" ,ghc-optparse-applicative)
("ghc-regex-tdfa" ,ghc-regex-tdfa)
("ghc-safe" ,ghc-safe)
("ghc-split" ,ghc-split)
("ghc-terminal-size" ,ghc-terminal-size)
("ghc-text" ,ghc-text)
("ghc-trifecta" ,ghc-trifecta-1.6.2.1)
("ghc-uniplate" ,ghc-uniplate)
("ghc-unordered-containers" ,ghc-unordered-containers)
("ghc-utf8-string" ,ghc-utf8-string)
("ghc-vector" ,ghc-vector)
("ghc-vector-binary-instances" ,ghc-vector-binary-instances)
("ghc-zip-archive" ,ghc-zip-archive)))
(arguments
`(#:tests? #f ; FIXME: Test suite doesn't run in a sandbox.
#:configure-flags
(list (string-append "--datasubdir="
(assoc-ref %outputs "out") "/lib/idris"))
#:phases
(modify-phases %standard-phases
(add-before 'configure 'set-cc-command
(lambda _
(setenv "CC" "gcc")
#t))
(add-after 'install 'fix-libs-install-location
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib/idris"))
(modules (string-append lib "/libs")))
(for-each
(lambda (module)
(symlink (string-append modules "/" module)
(string-append lib "/" module)))
'("prelude" "base" "contrib" "effects" "pruviloj"))))))))
(native-search-paths
(list (search-path-specification
(variable "IDRIS_LIBRARY_PATH")
(files '("lib/idris")))))
(home-page "http://www.idris-lang.org")
(synopsis "General purpose language with full dependent types")
(description "Idris is a general purpose language with full dependent
types. It is compiled, with eager evaluation. Dependent types allow types to
be predicated on values, meaning that some aspects of a program's behaviour
can be specified precisely in the type. The language is closely related to
Epigram and Agda.")
(license license:bsd-3)))
;; Idris modules use the gnu-build-system so that the IDRIS_LIBRARY_PATH is set.
(define (idris-default-arguments name)
`(#:modules ((guix build gnu-build-system)
(guix build utils)
(ice-9 ftw)
(ice-9 match))
#:phases
(modify-phases %standard-phases
(delete 'configure)
(delete 'build)
(delete 'check)
(replace 'install
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(idris (assoc-ref inputs "idris"))
(idris-bin (string-append idris "/bin/idris"))
(idris-libs (string-append idris "/lib/idris/libs"))
(module-name (and (string-prefix? "idris-" ,name)
(substring ,name 6)))
(ibcsubdir (string-append out "/lib/idris/" module-name))
(ipkg (string-append module-name ".ipkg"))
(idris-library-path (getenv "IDRIS_LIBRARY_PATH"))
(idris-path (string-split idris-library-path #\:))
(idris-path-files (apply append
(map (lambda (path)
(map (lambda (dir)
(string-append path "/" dir))
(scandir path))) idris-path)))
(idris-path-subdirs (filter (lambda (path)
(and path (match (stat:type (stat path))
('directory #t)
(_ #f))))
idris-path-files))
(install-cmd (cons* idris-bin
"--ibcsubdir" ibcsubdir
"--build" ipkg
;; only trigger a build, as --ibcsubdir
;; already installs .ibc files.
(apply append (map (lambda (path)
(list "--idrispath"
path))
idris-path-subdirs)))))
;; FIXME: Seems to be a bug in idris that causes a dubious failure.
(apply system* install-cmd)
#t))))))
(define-public idris-lightyear
(let ((commit "6d65ad111b4bed2bc131396f8385528fc6b3678a"))
(package
(name "idris-lightyear")
(version (git-version "0.1" "1" commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ziman/lightyear")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"1pkxnn3ryr0v0cin4nasw7kgkc9dnnpja1nfbj466mf3qv5s98af"))))
(build-system gnu-build-system)
(native-inputs
`(("idris" ,idris)))
(arguments (idris-default-arguments name))
(home-page "https://github.com/ziman/lightyear")
(synopsis "Lightweight parser combinator library for Idris")
(description "Lightweight parser combinator library for Idris, inspired
by Parsec. This package is used (almost) the same way as Parsec, except for one
difference: backtracking.")
(license license:bsd-2))))
(define-public idris-wl-pprint
(let ((commit "1d365fcf4ba075859844dbc5eb96a90f57b9f338"))
(package
(name "idris-wl-pprint")
(version (git-version "0.1" "1" commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/shayan-najd/wl-pprint")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0g7c3y9smifdz4sivi3qmvymhdr7v9kfq45fmfmmvkqcrix0spzn"))))
(build-system gnu-build-system)
(native-inputs
`(("idris" ,idris)))
(arguments (idris-default-arguments name))
(home-page "https://github.com/shayan-najd/wl-pprint")
(synopsis "Pretty printing library")
(description "A pretty printing library for Idris based on Phil Wadler's
paper A Prettier Printer and on Daan Leijen's extensions in the Haskell
wl-pprint library.")
(license license:bsd-2))))
(define-public idris-bifunctors
(let ((commit "53d06a6ccfe70c49c9ae8c8a4135981dd2173202"))
(package
(name "idris-bifunctors")
(version (git-version "0.1" "1" commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/HuwCampbell/Idris-Bifunctors")
(commit commit)))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"02vbsd3rmgnj0l1qq787709qcxjbr9890cbad4ykn27f77jk81h4"))))
(build-system gnu-build-system)
(native-inputs
`(("idris" ,idris)))
(arguments (idris-default-arguments name))
(home-page "https://github.com/HuwCampbell/Idris-Bifunctors")
(synopsis "Bifunctor library")
(description "This is a bifunctor library for Idris based off the
excellent Haskell Bifunctors package from Edward Kmett.")
(license license:bsd-3))))
(define-public idris-lens
(let ((commit "26f012005f6849806cea630afe317e42cae97f29"))
(package
(name "idris-lens")
(version (git-version "0.1" "1" commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/HuwCampbell/idris-lens")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"06jzfj6rad08rk92w8jk5byi79svmyg0mrcqhibgx8rkjjy6vmai"))))
(build-system gnu-build-system)
(native-inputs
`(("idris" ,idris)))
(propagated-inputs
`(("idris-bifunctors" ,idris-bifunctors)))
(arguments (idris-default-arguments name))
(home-page "https://github.com/HuwCampbell/idris-lens")
(synopsis "Van Laarhoven lenses for Idris")
(description "Lenses are composable functional references. They allow
accessing and modifying data within a structure.")
(license license:bsd-3))))
^ permalink raw reply [flat|nested] 3+ messages in thread
* [bug#30741] [PATCH] fix idris (was "Re: Incomplete work to upgrade Idris to 1.2.0")
2018-03-07 5:19 ` [PATCH] fix idris (was "Re: Incomplete work to upgrade Idris to 1.2.0") Alex ter Weele
@ 2018-03-13 2:08 ` Alex ter Weele
2018-03-16 10:56 ` bug#30741: " Ludovic Courtès
0 siblings, 1 reply; 3+ messages in thread
From: Alex ter Weele @ 2018-03-13 2:08 UTC (permalink / raw)
To: 30741
[-- Attachment #1: Type: text/plain, Size: 51 bytes --]
Reposting a properly-formatted patch series here.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-ghc-aeson-1.1.2.0.patch --]
[-- Type: text/x-patch, Size: 1059 bytes --]
From 2486f55a177b3f62509fd999e5d5cbd072d5ce17 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Wed, 7 Mar 2018 18:28:24 -0600
Subject: [PATCH 1/4] gnu: Add ghc-aeson-1.1.2.0.
* gnu/packages/idris.scm (ghc-aeson-1.1.2.0): New variable.
---
gnu/packages/idris.scm | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/gnu/packages/idris.scm b/gnu/packages/idris.scm
index 6eb940c9d..ae90676d5 100644
--- a/gnu/packages/idris.scm
+++ b/gnu/packages/idris.scm
@@ -30,6 +30,20 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages))
+(define ghc-aeson-1.1.2.0
+ (package (inherit ghc-aeson)
+ (version "1.1.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/aeson/aeson-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "1zy5z8pzvh53qkjm0nm3f4rwqfqg3867ck8ncd6mrxpcyvxqqj1p"))))))
+
(define-public idris
(package
(name "idris")
--
2.16.2
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-Add-ghc-trifecta-1.6.2.1.patch --]
[-- Type: text/x-patch, Size: 1068 bytes --]
From 477d5f85747501c5b78597f76713fa6f87eedd6f Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Wed, 7 Mar 2018 18:29:23 -0600
Subject: [PATCH 2/4] gnu: Add ghc-trifecta-1.6.2.1.
* gnu/packages/idris.scm (ghc-trifecta-1.6.2.1): New variable.
---
gnu/packages/idris.scm | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/gnu/packages/idris.scm b/gnu/packages/idris.scm
index ae90676d5..b67fcbccf 100644
--- a/gnu/packages/idris.scm
+++ b/gnu/packages/idris.scm
@@ -44,6 +44,19 @@
(base32
"1zy5z8pzvh53qkjm0nm3f4rwqfqg3867ck8ncd6mrxpcyvxqqj1p"))))))
+(define ghc-trifecta-1.6.2.1
+ (package (inherit ghc-trifecta)
+ (version "1.6.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/trifecta/"
+ "trifecta-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1rgv62dlmm4vkdymx5rw5jg3w8ifpzg1745rvs1m4kzdx16p5cxs"))))))
+
(define-public idris
(package
(name "idris")
--
2.16.2
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-gnu-Add-ghc-cheapskate-0.1.0.5.patch --]
[-- Type: text/x-patch, Size: 1298 bytes --]
From ef0dcd5a84c4f8e4331fb8f07a4e1709a577eb31 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Wed, 7 Mar 2018 18:31:22 -0600
Subject: [PATCH 3/4] gnu: Add ghc-cheapskate-0.1.0.5.
* gnu/packages/idris.scm (ghc-cheapskate-0.1.0.5): New variable.
---
gnu/packages/idris.scm | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/gnu/packages/idris.scm b/gnu/packages/idris.scm
index b67fcbccf..c103055f5 100644
--- a/gnu/packages/idris.scm
+++ b/gnu/packages/idris.scm
@@ -57,6 +57,25 @@
(base32
"1rgv62dlmm4vkdymx5rw5jg3w8ifpzg1745rvs1m4kzdx16p5cxs"))))))
+;; ghc-cheapskate appeared too new. This follows LTS Haskell.
+(define ghc-cheapskate-0.1.0.5
+ (package
+ (inherit ghc-cheapskate)
+ (version "0.1.0.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/cheapskate/cheapskate-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0cpsmfx5z2xykg71sv8j7pl8ga6pzyjnjdb9bxn00vcpqkzvfqvs"))))
+ (arguments
+ ;; LTS Haskell says data-default >=0.5 && <0.8
+ `(#:configure-flags (list "--allow-newer=data-default")))))
+
(define-public idris
(package
(name "idris")
--
2.16.2
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: 0004-gnu-Fix-idris.patch --]
[-- Type: text/x-patch, Size: 2647 bytes --]
From c19d3fc198afdddefc4feeb9151b57e7f72d8303 Mon Sep 17 00:00:00 2001
From: Alex ter Weele <alex.ter.weele@gmail.com>
Date: Wed, 7 Mar 2018 18:32:19 -0600
Subject: [PATCH 4/4] gnu: Fix idris.
* gnu/packages/idris.scm (idris)[inputs]: alphebetize
ghc-vector-binary-instances and ghc-async. Use ghc-aeson-1.1.2.0,
ghc-cheapskate-0.1.0.5, and ghc-trifecta-1.6.2.1. Remove ghc-aeson,
ghc-cheapskate, ghc-parsers, ghc-tasty, ghc-tasty-golden, ghc-tasty-rerun,
ghc-trifecta, and ghc-zlib.
---
gnu/packages/idris.scm | 17 ++++++-----------
1 file changed, 6 insertions(+), 11 deletions(-)
diff --git a/gnu/packages/idris.scm b/gnu/packages/idris.scm
index c103055f5..633b8b9d5 100644
--- a/gnu/packages/idris.scm
+++ b/gnu/packages/idris.scm
@@ -92,15 +92,15 @@
(inputs
`(("gmp" ,gmp)
("ncurses" ,ncurses)
- ("ghc-aeson" ,ghc-aeson)
- ("ghc-async" ,ghc-async)
+ ("ghc-aeson" ,ghc-aeson-1.1.2.0)
("ghc-annotated-wl-pprint" ,ghc-annotated-wl-pprint)
("ghc-ansi-terminal" ,ghc-ansi-terminal)
("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint)
+ ("ghc-async" ,ghc-async)
("ghc-base64-bytestring" ,ghc-base64-bytestring)
("ghc-blaze-html" ,ghc-blaze-html)
("ghc-blaze-markup" ,ghc-blaze-markup)
- ("ghc-cheapskate" ,ghc-cheapskate)
+ ("ghc-cheapskate" ,ghc-cheapskate-0.1.0.5)
("ghc-code-page" ,ghc-code-page)
("ghc-fingertree" ,ghc-fingertree)
("ghc-fsnotify" ,ghc-fsnotify)
@@ -108,23 +108,18 @@
("ghc-mtl" ,ghc-mtl)
("ghc-network" ,ghc-network)
("ghc-optparse-applicative" ,ghc-optparse-applicative)
- ("ghc-parsers" ,ghc-parsers)
("ghc-regex-tdfa" ,ghc-regex-tdfa)
("ghc-safe" ,ghc-safe)
("ghc-split" ,ghc-split)
- ("ghc-tasty" ,ghc-tasty)
- ("ghc-tasty-golden" ,ghc-tasty-golden)
- ("ghc-tasty-rerun" ,ghc-tasty-rerun)
("ghc-terminal-size" ,ghc-terminal-size)
("ghc-text" ,ghc-text)
- ("ghc-trifecta" ,ghc-trifecta)
+ ("ghc-trifecta" ,ghc-trifecta-1.6.2.1)
("ghc-uniplate" ,ghc-uniplate)
("ghc-unordered-containers" ,ghc-unordered-containers)
("ghc-utf8-string" ,ghc-utf8-string)
- ("ghc-vector-binary-instances" ,ghc-vector-binary-instances)
("ghc-vector" ,ghc-vector)
- ("ghc-zip-archive" ,ghc-zip-archive)
- ("ghc-zlib" ,ghc-zlib)))
+ ("ghc-vector-binary-instances" ,ghc-vector-binary-instances)
+ ("ghc-zip-archive" ,ghc-zip-archive)))
(arguments
`(#:tests? #f ; FIXME: Test suite doesn't run in a sandbox.
#:configure-flags
--
2.16.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* bug#30741: [PATCH] fix idris (was "Re: Incomplete work to upgrade Idris to 1.2.0")
2018-03-13 2:08 ` [bug#30741] " Alex ter Weele
@ 2018-03-16 10:56 ` Ludovic Courtès
0 siblings, 0 replies; 3+ messages in thread
From: Ludovic Courtès @ 2018-03-16 10:56 UTC (permalink / raw)
To: Alex ter Weele; +Cc: 30741-done
Hi Alex,
Alex ter Weele <alex.ter.weele@gmail.com> skribis:
> Reposting a properly-formatted patch series here.
I pushed this yesterday evening, thanks!
Ludo’.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-03-16 10:57 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <877eqp7pql.fsf@librem.i-did-not-set--mail-host-address--so-tickle-me>
2018-03-07 5:19 ` [PATCH] fix idris (was "Re: Incomplete work to upgrade Idris to 1.2.0") Alex ter Weele
2018-03-13 2:08 ` [bug#30741] " Alex ter Weele
2018-03-16 10:56 ` bug#30741: " Ludovic Courtès
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).