summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-05-11 22:13:59 +0200
committerLudovic Courtès <ludo@gnu.org>2013-05-11 22:13:59 +0200
commitf7ce90e7b94bc06aae8a28d493242969fbe7737c (patch)
tree853b1958eb296e864db69bac096ce8e31e38165f /gnu
parent35ff176877886ee335ecfd2dfc43a3290d10b9ff (diff)
gnu: Add Scheme48.
* gnu/packages/scheme.scm (scheme48): New variable. * gnu/packages/patches/scheme48-tests.patch: New file. * Makefile.am (dist_patch_DATA): Add it.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/patches/scheme48-tests.patch36
-rw-r--r--gnu/packages/scheme.scm24
2 files changed, 60 insertions, 0 deletions
diff --git a/gnu/packages/patches/scheme48-tests.patch b/gnu/packages/patches/scheme48-tests.patch
new file mode 100644
index 00000000000..7ee228f3aaa
--- /dev/null
+++ b/gnu/packages/patches/scheme48-tests.patch
@@ -0,0 +1,36 @@
1The test case below relies on /etc/groups and similar info that is
2not available in chroot builds, so skip it.
3
4--- scheme48-1.9/scheme/posix/check.scm 2013-05-11 21:55:36.000000000 +0200
5+++ scheme48-1.9/scheme/posix/check.scm 2013-05-11 21:55:40.000000000 +0200
6@@ -229,29 +229,7 @@
7
8 ; This assumes that we are not running as root and that / is owned by root.
9
10-(define-test-case users&groups posix-core-tests
11- (let ((my-info (get-file-info directory-name))
12- (root-info (get-file-info "/")))
13- (let ((my-user (user-id->user-info (file-info-owner my-info)))
14- (root-user (user-id->user-info (file-info-owner root-info)))
15- (my-group (group-id->group-info (file-info-group my-info)))
16- (root-group (group-id->group-info (file-info-group root-info))))
17- (let ((my-other-user (name->user-info (user-info-name my-user)))
18- (my-other-group (name->group-info (group-info-name my-group))))
19- (check-that (file-info-owner my-info)
20- (is user-id=? (user-info-id my-user)))
21- (check-that (file-info-owner root-info)
22- (opposite (is user-id=? (user-info-id my-user))))
23- (check-that (file-info-group my-info)
24- (is group-id=? (group-info-id my-group)))
25- ;; doesn't work reliably
26- ;; (specifically, if the user is member of wheel)
27- ;; (check (not (group-id=? (file-info-group root-info)
28- ;; (group-info-id my-group))))
29- (check-that (os-string->string (user-info-name root-user))
30- (member-of '("root"
31- "bin" ; AIX
32- )))))))
33+
34
35 (define-test-case environment posix-core-tests
36 (let ((env (reverse (environment-alist))))
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 13f1002090b..c79a709ecd9 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -295,3 +295,27 @@ mashups, office (web agendas, mail clients, ...), etc.")
295produces portable and efficient C, supports almost all of the R5RS Scheme 295produces portable and efficient C, supports almost all of the R5RS Scheme
296language standard, and includes many enhancements and extensions.") 296language standard, and includes many enhancements and extensions.")
297 (license bsd-3))) 297 (license bsd-3)))
298
299(define-public scheme48
300 (package
301 (name "scheme48")
302 (version "1.9")
303 (source (origin
304 (method url-fetch)
305 (uri (string-append "http://s48.org/" version
306 "/scheme48-" version ".tgz"))
307 (sha256
308 (base32
309 "0rw2lz5xgld0klvld292ds6hvfk5l12vskzgf1hhwjdpa38r3fnw"))))
310 (build-system gnu-build-system)
311 (arguments `(#:patches (list (assoc-ref %build-inputs "patch/tests"))))
312 (inputs `(("patch/tests" ,(search-patch "scheme48-tests.patch"))))
313 (home-page "http://s48.org/")
314 (synopsis "Scheme implementation using a bytecode interpreter")
315 (description
316 "Scheme 48 is an implementation of Scheme based on a byte-code
317interpreter and is designed to be used as a testbed for experiments in
318implementation techniques and as an expository tool.")
319
320 ;; Most files are BSD-3; see COPYING for the few exceptions.
321 (license bsd-3)))