gnu: ruby-pandoc-ruby: Use pandoc instead of ghc-pandoc.
[jackhill/guix/guix.git] / gnu / packages / smalltalk.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
3 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
4 ;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr>
5 ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
6 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
7 ;;;
8 ;;; This file is part of GNU Guix.
9 ;;;
10 ;;; GNU Guix is free software; you can redistribute it and/or modify it
11 ;;; under the terms of the GNU General Public License as published by
12 ;;; the Free Software Foundation; either version 3 of the License, or (at
13 ;;; your option) any later version.
14 ;;;
15 ;;; GNU Guix is distributed in the hope that it will be useful, but
16 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
17 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 ;;; GNU General Public License for more details.
19 ;;;
20 ;;; You should have received a copy of the GNU General Public License
21 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
22
23 (define-module (gnu packages smalltalk)
24 #:use-module ((guix licenses) #:prefix license:)
25 #:use-module (guix packages)
26 #:use-module (guix download)
27 #:use-module (guix build-system cmake)
28 #:use-module (guix build-system gnu)
29 #:use-module (gnu packages audio)
30 #:use-module (gnu packages autotools)
31 #:use-module (gnu packages base)
32 #:use-module (gnu packages compression)
33 #:use-module (gnu packages fontutils)
34 #:use-module (gnu packages gl)
35 #:use-module (gnu packages glib)
36 #:use-module (gnu packages libffi)
37 #:use-module (gnu packages libsigsegv)
38 #:use-module (gnu packages linux)
39 #:use-module (gnu packages pkg-config)
40 #:use-module (gnu packages pulseaudio)
41 #:use-module (gnu packages xorg))
42
43 (define-public smalltalk
44 (package
45 (name "smalltalk")
46 (version "3.2.5")
47 (source
48 (origin
49 (method url-fetch)
50 (uri (string-append "mirror://gnu/smalltalk/smalltalk-"
51 version ".tar.xz"))
52 (sha256
53 (base32
54 "1k2ssrapfzhngc7bg1zrnd9n2vyxp9c9m70byvsma6wapbvib6l1"))))
55 (build-system gnu-build-system)
56 (native-inputs
57 `(("libffi" ,libffi)
58 ("libltdl" ,libltdl)
59 ("libsigsegv" ,libsigsegv)
60 ("pkg-config" ,pkg-config)))
61 (inputs
62 `(("zip" ,zip)))
63 (arguments
64 `(#:phases
65 (modify-phases %standard-phases
66 (add-before 'configure 'fix-libc
67 (lambda _
68 (let ((libc (assoc-ref %build-inputs "libc")))
69 (substitute* "libc.la.in"
70 (("@LIBC_SO_NAME@") "libc.so")
71 (("@LIBC_SO_DIR@") (string-append libc "/lib"))))
72 #t)))))
73 (home-page "http://smalltalk.gnu.org/")
74 (synopsis "Smalltalk environment")
75 (description
76 "GNU Smalltalk is a free implementation of the Smalltalk language. It
77 implements the ANSI standard for the language and also includes extra classes
78 such as ones for networking and GUI programming.")
79 (license license:gpl2+)))
80
81 (define-public squeak-vm
82 (package
83 (name "squeak-vm")
84 (version "4.10.2.2614")
85 (source
86 (origin
87 (method url-fetch)
88 (uri (string-append "http://squeakvm.org/unix/release/"
89 "Squeak-" version "-src.tar.gz"))
90 (sha256
91 (base32 "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.*")
103 "(VM_BUILD_STRING \\\"Built with GNU Guix\\\")"))
104 #t))))
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-before 'configure 'enter-build-directory
128 (lambda _
129 (mkdir "build")
130 (chdir "build")
131 #t))
132 (replace 'configure
133 (lambda* (#:key outputs #:allow-other-keys)
134 (let ((out (assoc-ref outputs "out")))
135 (invoke "../unix/cmake/configure"
136 (string-append "--prefix=" out)
137 "--without-quartz")
138 #t))))))
139 (synopsis "Smalltalk programming language and environment")
140 (description "Squeak is a full-featured implementation of the Smalltalk
141 programming language and environment based on (and largely compatible with)
142 the original Smalltalk-80 system. Squeak has very powerful 2- and 3-D
143 graphics, sound, video, MIDI, animation and other multimedia capabilities. It
144 also includes a customisable framework for creating dynamic HTTP servers and
145 interactively extensible Web sites.")
146 (home-page "http://squeakvm.org/")
147 (license license:x11)))