mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 05:18:07 -05:00
gnu: Add idris-lightyear.
* gnu/packages/idris.scm (idris-lightyear, idris-default-arguments): New variables.
This commit is contained in:
parent
ae482ce12d
commit
ea3b38f1e1
1 changed files with 71 additions and 1 deletions
|
@ -21,8 +21,8 @@ (define-module (gnu packages idris)
|
|||
#:use-module (gnu packages haskell)
|
||||
#: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 build-system idris)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
|
@ -109,3 +109,73 @@ (define-public idris
|
|||
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
|
||||
"--install" ipkg
|
||||
(apply append (map (lambda (path)
|
||||
(list "--idrispath"
|
||||
path))
|
||||
idris-path-subdirs)))))
|
||||
(setenv "IDRIS_LIBRARY_PATH" idris-libs)
|
||||
;; 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))))
|
||||
|
|
Loading…
Reference in a new issue