aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCatonano <catonano@gmail.com>2017-05-10 08:36:40 +0200
committerRicardo Wurmus <rekado@elephly.net>2017-05-10 08:54:38 +0200
commit28a1041fa5b6896e16c6f7c1c2b77763c540de7a (patch)
treef946a606dfd6ae78fbf18ca03503eca85d2b7291
parent180bd4a8368273b469ce4cd605328a8dd698e208 (diff)
downloadguix-28a1041fa5b6896e16c6f7c1c2b77763c540de7a.tar
guix-28a1041fa5b6896e16c6f7c1c2b77763c540de7a.tar.gz
gnu: Add guile-miniadapton.
* gnu/packages/guile.scm (guile-miniadapton): New variable.
-rw-r--r--gnu/packages/guile.scm69
1 files changed, 69 insertions, 0 deletions
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index c2f31fc8a1..c7f3b8241a 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -32,6 +32,7 @@
(define-module (gnu packages guile)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
+ #:use-module (gnu packages admin) ;;for tree
#:use-module (gnu packages aspell)
#:use-module (gnu packages bash)
#:use-module (gnu packages bdw-gc)
@@ -794,6 +795,74 @@ See http://minikanren.org/ for more on miniKanren generally.")
(define-public guile2.2-minikanren
(package-for-guile-2.2 guile-minikanren))
+(define-public guile-miniadapton
+ (let ((commit "1b5749422304567c96ac5367f2221dda9eff5880")
+ (revision "1"))
+ (package
+ (name "guile-miniadapton")
+ (version (string-append "0-" revision "." (string-take commit 9)))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/fisherdj/miniAdapton.git")
+ (commit commit)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "09q51zkw2fypad5xixskfzw2cjhjgs5cswdp3i7cpp651rb3zndh"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:modules ((guix build utils)
+ (ice-9 popen)
+ (ice-9 rdelim)
+ (srfi srfi-1)
+ (guix build gnu-build-system))
+ #:tests? #f ; there is no test target
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'build)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((cwd (getcwd))
+ (scm-files (find-files "." "\\.scm$"))
+ (effective (read-line
+ (open-pipe* OPEN_READ
+ "guile" "-c"
+ "(display (effective-version))")))
+ (module-dir (string-append (assoc-ref outputs "out")
+ "/share/guile/site/"
+ effective)))
+
+ ;; Make installation directories.
+ (mkdir-p module-dir)
+
+ (setenv "GUILE_AUTO_COMPILE" "0")
+
+ ;; Compile .scm files and install.
+ (every (lambda (file)
+ (let ((go-file (string-append module-dir "/"
+ (basename file ".scm") ".go")))
+ ;; Install source module.
+ (install-file file module-dir)
+ ;; Compile and install module.
+ (zero? (system* "guild" "compile" "-L" cwd
+ "-o" go-file file))))
+ scm-files)))))))
+ (inputs
+ `(("guile" ,guile-2.2)))
+ (home-page "https://github.com/fisherdj/miniAdapton")
+ (synopsis "Minimal implementation of incremental computation in Guile
+Scheme")
+ (description "This package provides a complete Scheme implementation of
+miniAdapton, which implements the core functionality of the Adapton system for
+incremental computation (also known as self-adjusting computation). Like
+Adapton, miniAdapton allows programmers to safely combine mutation and
+memoization. miniAdapton is built on top of an even simpler system,
+microAdapton. Both miniAdapton and microAdapton are designed to be easy to
+understand, extend, and port to host languages other than Scheme.")
+ (license license:expat))))
+
(define-public guile-irregex
(package
(name "guile-irregex")