Patchwork gnu: Add sicp.

login
register
mail settings
Submitter Jan Nieuwenhuizen
Date May 15, 2016, 8:29 a.m.
Message ID <87d1onafmy.fsf@drakenvlieg.flower>
Download mbox | patch
Permalink /patch/12262/
State New
Headers show

Comments

Jan Nieuwenhuizen - May 15, 2016, 8:29 a.m.
Hi,

Too lazy to get up and go for my book shelf, I was presently surprised
that SICP is available in info; and even more surprised it hasn't been
packaged yet.

Happy hacking!
Greetings,
Jan
Ludovic Courtès - May 17, 2016, 8:55 p.m.
Hi!

Jan Nieuwenhuizen <janneke@gnu.org> skribis:

> Too lazy to get up and go for my book shelf, I was presently surprised
> that SICP is available in info; and even more surprised it hasn't been
> packaged yet.

Indeed!  :-)

> From 85c7f3d9ba64989b2fbdba9ee0a0da6c635b1d3c Mon Sep 17 00:00:00 2001
> From: Jan Nieuwenhuizen <janneke@gnu.org>
> Date: Sun, 15 May 2016 09:57:05 +0200
> Subject: [PATCH] gnu: Add sicp.
>
> * gnu/packages/sicp.scm: New file.
> * gnu/local.mk (GNU_SYSTEM_MODULES): Add it.

What about putting it in (gnu packages scheme) instead?  Sounds like a
natural home.

> +(define-public sicp
> +  (package
> +    (name "sicp")
> +    (version "2016-02-20")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://github.com/sarabander/sicp")
> +             (commit "5b52db566968d28a89fbbaf338d207f01cc81cac")))

Could you change the ‘version’ field according to the conventions
described at (info "(guix) Version Numbers")?  Since there’s no release
number, it’s OK to use “20160220” (no hyphens) before the rest of the
version field.

> +       (sha256
> +        (base32
> +         "10h6h7szwlfbshwh18bnl2hvyddj5i7106l79s145l0sjjv15cxb"))))
> +    (build-system trivial-build-system)
> +    (native-inputs `(("gzip" ,gzip)
> +                     ("source" ,source)
> +                     ("texinfo" ,texinfo)))
> +    (arguments
> +     `(#:modules ((guix build utils)
> +                  (srfi srfi-1)
> +                  (srfi srfi-26))
> +                 #:builder

#:builder should be aligned with #:modules.

> +                 (let ((gzip (assoc-ref %build-inputs "gzip"))
> +                       (source (assoc-ref %build-inputs "source"))
> +                       (texinfo (assoc-ref %build-inputs "texinfo"))
> +                       (info-dir (string-append %output "/share/info")))
> +                   (use-modules (guix build utils)
> +                                (srfi srfi-1)
> +                                (srfi srfi-26))

Please move ‘use-modules’ to the top:

  (begin
    (use-modules (srfi …) …)

    (let (…) …))

> +                   (and
> +                    (system* "makeinfo"
> +                             "--output" (string-append info-dir "/sicp.info")
> +                             (string-append source "/sicp-pocket.texi"))

(zero? (system* …))

> +    (home-page "http://sarabander.github.io/sicp")
> +    (synopsis "Structure and Interpretation of Computer Programs")
> +    (description "Structure and Interpretation of Computer Programs (SICP) is
> +a textbook aiming to teach the principles of computer programming.
> +
> +Using Scheme, a dialect of the Lisp programming language, the book explains
> +core computer science concepts such as abstraction in programming,
> +metalinguistic abstraction, recursion, interpreters, and modular programming.
> +
> +It was first published in 1985 by MIT Press and written by Massachusetts
> +Institute of Technology (MIT) professors Harold Abelson and Gerald Jay
> +Sussman, with Julie Sussman.")

I would remove the last paragraph.

Could you send an updated patch?

Thanks for filling this gap!  :-)

Ludo’.

Patch

From 85c7f3d9ba64989b2fbdba9ee0a0da6c635b1d3c Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Sun, 15 May 2016 09:57:05 +0200
Subject: [PATCH] gnu: Add sicp.

* gnu/packages/sicp.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
---
 gnu/local.mk          |  1 +
 gnu/packages/sicp.scm | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 81 insertions(+)
 create mode 100644 gnu/packages/sicp.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index acb9790..06d6782 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -304,6 +304,7 @@  GNU_SYSTEM_MODULES =				\
   gnu/packages/serialization.scm		\
   gnu/packages/serveez.scm			\
   gnu/packages/shishi.scm			\
+  gnu/packages/sicp.scm				\
   gnu/packages/skarnet.scm			\
   gnu/packages/skribilo.scm			\
   gnu/packages/slang.scm			\
diff --git a/gnu/packages/sicp.scm b/gnu/packages/sicp.scm
new file mode 100644
index 0000000..35f7ad1
--- /dev/null
+++ b/gnu/packages/sicp.scm
@@ -0,0 +1,80 @@ 
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;
+;;; 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 sicp)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages texinfo)
+
+  #:use-module (guix build-system trivial)
+  #:use-module (guix git-download)
+  #:use-module (guix licenses)
+  #:use-module (guix packages))
+
+(define-public sicp
+  (package
+    (name "sicp")
+    (version "2016-02-20")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sarabander/sicp")
+             (commit "5b52db566968d28a89fbbaf338d207f01cc81cac")))
+       (sha256
+        (base32
+         "10h6h7szwlfbshwh18bnl2hvyddj5i7106l79s145l0sjjv15cxb"))))
+    (build-system trivial-build-system)
+    (native-inputs `(("gzip" ,gzip)
+                     ("source" ,source)
+                     ("texinfo" ,texinfo)))
+    (arguments
+     `(#:modules ((guix build utils)
+                  (srfi srfi-1)
+                  (srfi srfi-26))
+                 #:builder
+                 (let ((gzip (assoc-ref %build-inputs "gzip"))
+                       (source (assoc-ref %build-inputs "source"))
+                       (texinfo (assoc-ref %build-inputs "texinfo"))
+                       (info-dir (string-append %output "/share/info")))
+                   (use-modules (guix build utils)
+                                (srfi srfi-1)
+                                (srfi srfi-26))
+                   (setenv "PATH" (string-append gzip "/bin"
+                                                 ":" texinfo "/bin"))
+                   (mkdir-p info-dir)
+                   (and
+                    (system* "makeinfo"
+                             "--output" (string-append info-dir "/sicp.info")
+                             (string-append source "/sicp-pocket.texi"))
+                    (every zero? (map
+                                  (cut system* "gzip" <>)
+                                  (find-files info-dir)))))))
+    (home-page "http://sarabander.github.io/sicp")
+    (synopsis "Structure and Interpretation of Computer Programs")
+    (description "Structure and Interpretation of Computer Programs (SICP) is
+a textbook aiming to teach the principles of computer programming.
+
+Using Scheme, a dialect of the Lisp programming language, the book explains
+core computer science concepts such as abstraction in programming,
+metalinguistic abstraction, recursion, interpreters, and modular programming.
+
+It was first published in 1985 by MIT Press and written by Massachusetts
+Institute of Technology (MIT) professors Harold Abelson and Gerald Jay
+Sussman, with Julie Sussman.")
+    (license cc-by-sa4.0)))
-- 
2.7.3