gnu: All snippets report errors using exceptions, else return #t.
[jackhill/guix/guix.git] / gnu / packages / smalltalk.scm
CommitLineData
54845460
NK
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
0c9df457 3;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
ef380d72
NG
4;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr>
5;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
54845460
NK
6;;;
7;;; This file is part of GNU Guix.
8;;;
9;;; GNU Guix is free software; you can redistribute it and/or modify it
10;;; under the terms of the GNU General Public License as published by
11;;; the Free Software Foundation; either version 3 of the License, or (at
12;;; your option) any later version.
13;;;
14;;; GNU Guix is distributed in the hope that it will be useful, but
15;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17;;; GNU General Public License for more details.
18;;;
19;;; You should have received a copy of the GNU General Public License
20;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
21
22(define-module (gnu packages smalltalk)
5b65bcab 23 #:use-module ((guix licenses) #:prefix license:)
54845460
NK
24 #:use-module (guix packages)
25 #:use-module (guix download)
ef380d72 26 #:use-module (guix build-system cmake)
54845460 27 #:use-module (guix build-system gnu)
ef380d72 28 #:use-module (gnu packages audio)
0c9df457 29 #:use-module (gnu packages autotools)
ef380d72 30 #:use-module (gnu packages base)
148585c2 31 #:use-module (gnu packages compression)
ef380d72
NG
32 #:use-module (gnu packages fontutils)
33 #:use-module (gnu packages gl)
34 #:use-module (gnu packages glib)
0c9df457
EF
35 #:use-module (gnu packages libffi)
36 #:use-module (gnu packages libsigsegv)
ef380d72 37 #:use-module (gnu packages linux)
0c9df457 38 #:use-module (gnu packages pkg-config)
ef380d72 39 #:use-module (gnu packages pulseaudio)
148585c2 40 #:use-module (gnu packages xorg))
54845460
NK
41
42(define-public smalltalk
43 (package
44 (name "smalltalk")
693b57e4 45 (version "3.2.5")
54845460
NK
46 (source
47 (origin
48 (method url-fetch)
49 (uri (string-append "mirror://gnu/smalltalk/smalltalk-"
50 version ".tar.xz"))
51 (sha256
52 (base32
693b57e4 53 "1k2ssrapfzhngc7bg1zrnd9n2vyxp9c9m70byvsma6wapbvib6l1"))))
54845460 54 (build-system gnu-build-system)
0c9df457
EF
55 (native-inputs
56 `(("libffi" ,libffi)
57 ("libltdl" ,libltdl)
58 ("libsigsegv" ,libsigsegv)
59 ("pkg-config" ,pkg-config)))
60 (inputs
61 `(("zip" ,zip)))
54845460 62 (arguments
dc1d3cde
KK
63 `(#:phases
64 (modify-phases %standard-phases
65 (add-before 'configure 'fix-libc
66 (lambda _
67 (let ((libc (assoc-ref %build-inputs "libc")))
68 (substitute* "libc.la.in"
69 (("@LIBC_SO_NAME@") "libc.so")
70 (("@LIBC_SO_DIR@") (string-append libc "/lib"))))
71 #t)))))
0c9df457 72 (home-page "http://smalltalk.gnu.org/")
f50d2669 73 (synopsis "Smalltalk environment")
54845460 74 (description
a22dc0c4
LC
75 "GNU Smalltalk is a free implementation of the Smalltalk language. It
76implements the ANSI standard for the language and also includes extra classes
77such as ones for networking and GUI programming.")
5b65bcab 78 (license license:gpl2+)))
ef380d72
NG
79
80(define-public squeak-vm
81 (package
82 (name "squeak-vm")
83 (version "4.10.2.2614")
84 (source
85 (origin
86 (method url-fetch)
87 (uri (string-append "http://www.squeakvm.org/unix/release/"
88 "Squeak-" version "-src.tar.gz"))
89 (sha256
90 (base32
4af1876e
LC
91 "0bpwbnpy2sb4gylchfx50sha70z36bwgdxraym4vrr93l8pd3dix"))
92 (modules '((guix build utils)))
93 (snippet
94 ;; Make builds bit-reproducible.
95 '(begin
96 (substitute* "unix/cmake/verstamp"
97 (("vm_date=.*")
98 "vm_date = \"1970-01-01\";\n")
99 (("ux_version=.*")
100 "ux_version = \"GNU\";\n"))
101 (substitute* "unix/vm/config.cmake"
102 (("\\(VM_BUILD_STRING.*")
6cbee49d
MW
103 "(VM_BUILD_STRING \\\"Built with GNU Guix\\\")"))
104 #t))))
ef380d72
NG
105 (inputs
106 `(("alsa-lib" ,alsa-lib)
107 ("dbus" ,dbus)
108 ("freetype" ,freetype)
109 ("libffi" ,libffi)
110 ("libxrender" ,libxrender)
111 ("mesa" ,mesa)
112 ("pulseaudio" ,pulseaudio)))
113 (native-inputs
114 `(("pkg-config" ,pkg-config)))
115 (build-system cmake-build-system)
116 (arguments
117 `(#:tests? #f ;no check target
118 #:phases
119 (modify-phases %standard-phases
120 (add-after 'unpack 'remove-hardcoded-PATH
121 (lambda _
122 ;; Remove hard-coded FHS PATH entries.
123 (substitute* '("unix/cmake/squeak.in"
124 "unix/cmake/squeak.sh.in")
125 (("^PATH=.*") ""))
126 #t))
127 (add-after 'unpack 'create-build-dir
128 (lambda _
129 (mkdir "bld")
130 #t))
131 (replace 'configure
132 (lambda* (#:key outputs #:allow-other-keys)
133 (let ((out (assoc-ref outputs "out")))
134 (with-directory-excursion "bld"
135 (zero?
136 (system* "../unix/cmake/configure"
137 (string-append "--prefix=" out)
138 "--without-quartz"))))))
139 (replace 'build
140 (lambda _
141 (with-directory-excursion "bld"
142 (zero? (system* "make"))))))))
143 (synopsis "Smalltalk programming language and environment")
144 (description "Squeak is a full-featured implementation of the Smalltalk
145programming language and environment based on (and largely compatible with)
146the original Smalltalk-80 system. Squeak has very powerful 2- and 3-D
147graphics, sound, video, MIDI, animation and other multimedia capabilities. It
148also includes a customisable framework for creating dynamic HTTP servers and
149interactively extensible Web sites.")
150 (home-page "http://www.squeakvm.org")
151 (license license:x11)))