From ff72111b7f65afb02f6e52f8f48cf7ae02837380 Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Tue, 21 Apr 2015 22:40:15 -0500 Subject: [PATCH] gnu: Add guile-minikanren. * gnu/packages/guile.scm (guile-minikanren): New variable. --- AUTHORS | 1 + gnu/packages/guile.scm | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/AUTHORS b/AUTHORS index fa1835b..e2dafe0 100644 --- a/AUTHORS +++ b/AUTHORS @@ -35,5 +35,6 @@ alphabetical order): David Thompson Paul van der Walt Mark H. Weaver + Christopher A. Webber Andy Wingo Ricardo Wurmus diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index c605533..86bb4da 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2014, 2015 Mark H Weaver +;;; Copyright © 2015 Christopher Allan Webber ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,7 +37,9 @@ #:use-module (gnu packages base) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix build-system gnu) + #:use-module (guix build-system trivial) #:use-module (guix utils) #:use-module (ice-9 match)) @@ -358,4 +361,51 @@ http:://json.org specification. These are the main features: - Allows JSON pretty printing.") (license lgpl3+))) +(define-public guile-minikanren + (package + (name "guile-minikanren") + (version "2012.11.07") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ijp/minikanren.git") + (commit "10d507785eab30b0f8b47bf8bb37d880731fc031"))) + ;; sha256 goes here + (sha256 + (base32 + "00cq5k3yk58yzmjl0c3d72590xprb2cg7zvhnalql4v4f2pd8ida")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (begin + (let* ((out (assoc-ref %outputs "out")) + (package-libs-dir + (string-append out "/share/guile/site/2.0/")) + (source (assoc-ref %build-inputs "source")) + (doc (string-append out "share/doc"))) + (mkdir-p package-libs-dir) + (copy-file (string-append source "/minikanren.scm") + (string-append package-libs-dir "minikanren.scm")) + (copy-recursively (string-append source "/minikanren") + (string-append package-libs-dir "/minikanren")) + (mkdir-p doc) + (copy-file (string-append source "/COPYING") + (string-append doc "/guile-minikanren"))))))) + (native-inputs `(("guile" ,guile-2.0))) + (home-page "https://github.com/ijp/minikanren") + (synopsis "The miniKanren declarative logic system, ported to Guile") + (description + "MiniKanren is a relational programming extension to the Scheme +programming Language, written as a smaller version of Kanren suitable for +pedagogical purposes. It is featured in the book, The Reasoned Schemer, +written by Dan Friedman, William Byrd, and Oleg Kiselyov. + +This is a port to Guile. + +See http://minikanren.org/ for more on miniKanren generally.") + (license expat))) + ;;; guile.scm ends here -- 2.1.4