Subject: [bug#69916] [PATCH] gnu: add the Pharo language

From: Daniel Ziltener <[email-masked]>
Date: Wed, 20 Mar 2024 16:36:52 +0100

---
 gnu/packages/pharo.scm | 78 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 78 insertions(+)
 create mode 100644 gnu/packages/pharo.scm

diff --git a/gnu/packages/pharo.scm b/gnu/packages/pharo.scm
new file mode 100644
index 0000000000..4de35bcf9e
--- /dev/null
+++ b/gnu/packages/pharo.scm
@@ -0,0 +1,78 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2024 Daniel Ziltener <[email-masked]>
+;;;
+;;; 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-public pharo-vm
+  (package
+   (name "pharo-vm")
+   (version "10.1.1")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (string-append "http://files.pharo.org/vm/pharo-spur64-headless/Linux-x86_64/source/PharoVM-" version "-32b2be5-Linux-x86_64-c-src.tar.gz"))
+     (sha256
+      (base32
+       "1hbkvfrw57sz5nw48z64789yjcry9l1am4hmkndy9dd6i06n2c2n"))))
+   (build-system cmake-build-system)
+   (arguments
+    (list
+     #:configure-flags
+      #~(list
+         (string-append "-DPHARO_BIN_LOCATION="
+                        (assoc-ref %outputs "out") "/bin")
+         (string-append "-DPHARO_LIBRARY_PATH="
+                        (assoc-ref %outputs "out") "/lib")
+         "-DGENERATED_SOURCE_DIR=."
+         "-DALWAYS_INTERACTIVE=on"
+         "-DBUILD_IS_RELEASE=on"
+         "-DGENERATE_SOURCES=off"
+         "-DBUILD_BUNDLE=off")
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'check)
+          (add-after 'install 'really-install
+            (lambda _
+              (let ((bin (string-append #$output "/bin"))
+                    (lib (string-append #$output "/lib")))
+                (wrap-program "./build/vm/pharo"
+                              `("LD_LIBRARY_PATH" prefix (,lib)))
+                (mkdir-p bin)
+                (mkdir-p lib)
+                (copy-recursively "./build/vm/pharo"
+                                  (string-append bin "/pharo"))
+                (for-each (lambda (file)
+                            (let ((inode (string-append "./build/vm/" file)))
+                              (copy-recursively
+                               inode
+                               (string-append lib "/" file))))
+                          (with-directory-excursion
+                              "./build/vm"
+                            (find-files "."
+                                        (lambda (file stat)
+                                          (string-contains file ".so")))))))))))
+   (inputs
+    (list libffi
+          libgit2
+          cairo
+          freetype
+          pixman
+          libpng
+          util-linux))
+   (synopsis "This is the VM used by Pharo")
+   (home-page "https://www.pharo.org")
+   (description "This is the VM used by Pharo.")
+   (license license:expat)))
-- 
2.41.0