From patchwork Sun Jun 30 18:53:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jorge Acereda X-Patchwork-Id: 65800 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 4157627BBEA; Sun, 30 Jun 2024 19:55:37 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FROM,MAILING_LIST_MULTI, SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id EA3E127BBE2 for ; Sun, 30 Jun 2024 19:55:35 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sNzhY-0003Jf-O3; Sun, 30 Jun 2024 14:55:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sNzhW-0003JG-Jh for guix-patches@gnu.org; Sun, 30 Jun 2024 14:55:02 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sNzhW-0004kB-87 for guix-patches@gnu.org; Sun, 30 Jun 2024 14:55:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1sNzhW-00022a-0W for guix-patches@gnu.org; Sun, 30 Jun 2024 14:55:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#71862] [PATCH] gnu: Add pharo. Resent-From: Jorge Acereda Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 30 Jun 2024 18:55:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 71862 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 71862@debbugs.gnu.org Cc: Jorge Acereda X-Debbugs-Original-To: guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.17197736777793 (code B ref -1); Sun, 30 Jun 2024 18:55:01 +0000 Received: (at submit) by debbugs.gnu.org; 30 Jun 2024 18:54:37 +0000 Received: from localhost ([127.0.0.1]:59111 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sNzh6-00021c-8D for submit@debbugs.gnu.org; Sun, 30 Jun 2024 14:54:36 -0400 Received: from lists.gnu.org ([209.51.188.17]:43642) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sNzh3-00021U-K2 for submit@debbugs.gnu.org; Sun, 30 Jun 2024 14:54:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sNzh3-0003Hc-AH for guix-patches@gnu.org; Sun, 30 Jun 2024 14:54:33 -0400 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sNzh1-0004ia-9L for guix-patches@gnu.org; Sun, 30 Jun 2024 14:54:33 -0400 Received: by mail-wr1-x435.google.com with SMTP id ffacd0b85a97d-361785bfa71so1689302f8f.2 for ; Sun, 30 Jun 2024 11:54:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719773669; x=1720378469; darn=gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=ssxi12/wKuFA33owb+KxObZV2/sTKjlhgav8CSLDtZY=; b=UpUJGtrG9yspqVZkwUEO2THIGmSiVJ4FggMv4xDPltI1f34AOgrOfndmV1i5iZicq+ iKw5vM5i/JsMRcjuo3gpPTXIQg9Q7z/iQ+opuklaf6NWaYbiIy9dp5OkVhkGisdjx4Ko 4a68WJWKG3VEZCzMLvZjYoiCnCycPZNQATEjQikfy9Fi7dOMJeijKNE1vleFa0NBO02h Qrpye9TDhj+u8i31POoI5bBal0ijLzdTh0rOG3+qT9zbncBEh9E0ZfGlEANBamk26zfc CclKP9bTRosJwu+TC3x4z5AnAlm1vveuVTkcwOqEuIpOzrmrRpCpvrT5wP578+frJyDp lOAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719773669; x=1720378469; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ssxi12/wKuFA33owb+KxObZV2/sTKjlhgav8CSLDtZY=; b=iAi19PNbXYDQRQaP6gCVB+YK+KqrWTeV3Jlo3QdCnRr+wKPC8lWbgDgdOsYUtoA/n3 aku8NsZ9h1HhmaBh36UdVyy1X++0w1OUq62RFBXfE/pDBa4zOlB8Wj0l/fR4y+CJc9j3 fQ9i4k9mYy9zqSakAQtmhUG1XK54a+TRT4U7qvlvx4l09MVlMaVUF5lXSNiNS5mVFwwB 5T5VbaeM7YPqWK6wNCBhiXy2blq1jCL5sDnXjacYqT9EgQ0vepu/BRcewmJH5mkWS0RA I1pFNXh5lEzQyxXmOdb4t01qIJCUITcr5Y+it+9ARD5ac/u1T11ZfzXVahDdM5abCr1B Rn5w== X-Gm-Message-State: AOJu0YyhV+lq2nW0dgSrZI0+NaZcBqV8IDzDgUBNLx2GZ0AMRG35xOpz Jafz3Si1xlt+C7jDLKziuahzIY4yA+OCLMgdh7dTqnZxQ21pRhHUHoCZVA== X-Google-Smtp-Source: AGHT+IGatpiu1EJFt/gqniFkE5PemR58nc7FpD5aOrlYAU28YWdCJ74ROBZPfQMVop44H4Bh1Wzvdw== X-Received: by 2002:adf:f983:0:b0:354:e089:41ea with SMTP id ffacd0b85a97d-367757201fbmr2158665f8f.44.1719773669160; Sun, 30 Jun 2024 11:54:29 -0700 (PDT) Received: from localhost.localdomain ([91.247.175.110]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3675a0fb950sm8038047f8f.83.2024.06.30.11.54.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Jun 2024 11:54:28 -0700 (PDT) From: Jorge Acereda Date: Sun, 30 Jun 2024 20:53:33 +0200 Message-ID: <33ce0e5891298e45598489006595bd9bfc6d6685.1719773612.git.jacereda@gmail.com> X-Mailer: git-send-email 2.45.2 MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::435; envelope-from=jacereda@gmail.com; helo=mail-wr1-x435.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches I didn't realize there's already an ongoing issue (69918) by Daniel Ziltener, but I had a 10.2.1 version floating around and I've updated it to 0.13.0. I won't have much time to work on this for a while, so anyone, feel free to grab bits if this isn't in good shape and resubmit. To test the VM, download a suitable image and run with: pharo --interactive Thanks, Jorge Acereda * gnu/packages/patches/pharo-install.patch (pharo): New variable. Change-Id: I1618103786c6e1a8a5df924d1b1b1dea22db80cd --- gnu/packages/patches/pharo-install.patch | 81 ++++++++++++++++++++++++ gnu/packages/smalltalk.scm | 67 ++++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 gnu/packages/patches/pharo-install.patch base-commit: f3689976da3d23b0a73cf1733da04add5e1035ee prerequisite-patch-id: 5fde795662902a8e1c89f32da3570827179fa814 -- 2.45.2 diff --git a/gnu/packages/patches/pharo-install.patch b/gnu/packages/patches/pharo-install.patch new file mode 100644 index 0000000000..cc9ce44780 --- /dev/null +++ b/gnu/packages/patches/pharo-install.patch @@ -0,0 +1,81 @@ +This patch just tweaks the cmake scripts to simplify the packaging. +Probably not worth contributing. + + +diff --git a/cmake/Linux.cmake b/cmake/Linux.cmake +index 0b6b9d7c4..cedc1b743 100644 +--- a/cmake/Linux.cmake ++++ b/cmake/Linux.cmake +@@ -1,4 +1,3 @@ +-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-rpath=.") + set(PHARO_BIN_LOCATION "default" CACHE STRING "The default location of the PHARO bin, used by the launch.sh.in") + + if(${PHARO_BIN_LOCATION} STREQUAL "default") +@@ -60,36 +59,29 @@ endmacro() + + + macro(configure_installables INSTALL_COMPONENT) +- set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/build/dist") +- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/packaging/linux/launch.sh.in +- ${CMAKE_CURRENT_BINARY_DIR}/build/packaging/linux/${VM_EXECUTABLE_NAME} @ONLY) +- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/packaging/linux/bin/launch.sh.in +- ${CMAKE_CURRENT_BINARY_DIR}/build/packaging/linux/bin/${VM_EXECUTABLE_NAME} @ONLY) +- +- + install( +- DIRECTORY "${CMAKE_BINARY_DIR}/build/packaging/linux/" +- DESTINATION "./" ++ DIRECTORY "${CMAKE_BINARY_DIR}/build/vm/" ++ DESTINATION "bin" + USE_SOURCE_PERMISSIONS +- COMPONENT ${INSTALL_COMPONENT}) ++ COMPONENT ${INSTALL_COMPONENT} ++ FILES_MATCHING PATTERN pharo) + install( + DIRECTORY "${CMAKE_BINARY_DIR}/build/vm/" + DESTINATION "lib" + USE_SOURCE_PERMISSIONS +- COMPONENT ${INSTALL_COMPONENT}) +- install( +- DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/build/libffi/install/lib/" +- DESTINATION "lib" +- USE_SOURCE_PERMISSIONS +- COMPONENT ${INSTALL_COMPONENT} +- FILES_MATCHING PATTERN ${DYLIB_EXT}) +- +- +- install( +- DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/include/unix/" +- DESTINATION include/pharovm +- COMPONENT include +- FILES_MATCHING PATTERN *.h) ++ COMPONENT ${INSTALL_COMPONENT} ++ FILES_MATCHING PATTERN *.so) ++ install( ++ DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/build/libffi/install/lib/" ++ DESTINATION "lib" ++ USE_SOURCE_PERMISSIONS ++ COMPONENT ${INSTALL_COMPONENT} ++ FILES_MATCHING PATTERN ${DYLIB_EXT}) ++ install( ++ DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/include/unix/" ++ DESTINATION include/pharovm ++ COMPONENT include ++ FILES_MATCHING PATTERN *.h) + endmacro() + + macro(add_required_libs_per_platform) +diff --git a/macros.cmake b/macros.cmake +index 811e49687..53bb9133b 100644 +--- a/macros.cmake ++++ b/macros.cmake +@@ -14,9 +14,6 @@ endmacro() + + # Include a loose-dependency library in the project, but do not link it to the main library + macro(addIndependentLibraryWithRPATH NAME) +- SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) +- set(CMAKE_INSTALL_RPATH ${PHARO_LIBRARY_PATH}) +- + add_library(${NAME} SHARED ${ARGN}) + set_target_properties(${NAME} PROPERTIES MACOSX_RPATH ON) + set_target_properties(${NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_DIRECTORY}) diff --git a/gnu/packages/smalltalk.scm b/gnu/packages/smalltalk.scm index 64146813d1..49b93963d6 100644 --- a/gnu/packages/smalltalk.scm +++ b/gnu/packages/smalltalk.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2016 Ludovic Courtès ;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; Copyright © 2021 Maxime Devos +;;; Copyright © 2024 Jorge Acereda ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,23 +28,89 @@ (define-module (gnu packages smalltalk) #:use-module (guix download) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) + #:use-module (guix gexp) #:use-module (gnu packages) #:use-module (gnu packages assembly) #:use-module (gnu packages audio) #:use-module (gnu packages autotools) #:use-module (gnu packages base) + #:use-module (gnu packages bash) #:use-module (gnu packages compression) #:use-module (gnu packages fontutils) #:use-module (gnu packages gl) #:use-module (gnu packages glib) + #:use-module (gnu packages gtk) + #:use-module (gnu packages image) #:use-module (gnu packages libffi) #:use-module (gnu packages libsigsegv) #:use-module (gnu packages linux) #:use-module (gnu packages multiprecision) #:use-module (gnu packages pkg-config) #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages sdl) + #:use-module (gnu packages tls) + #:use-module (gnu packages version-control) + #:use-module (gnu packages xdisorg) #:use-module (gnu packages xorg)) +(define-public pharo + (package + (name "pharo") + (version "10.3.0-ce15171") + (synopsis "Clean and innovative Smalltalk-inspired environment") + (source + (origin + (method url-fetch) + (uri (string-append "https://files.pharo.org/vm/pharo-spur64-headless/" + "Linux-x86_64/source/PharoVM-" version + "-Linux-x86_64-c-src.tar.gz")) + (sha256 + (base32 "07pkxn0pl3mkbjcfskw94xc8vs74l5lmbslj57xlq6vpz1207ab0")) + (patches (search-patches "./pharo-install.patch")))) + (build-system cmake-build-system) + (inputs (list bash-minimal + cairo + freetype + libffi + libgit2 + libpng + openssl + pixman + sdl2)) + (home-page "https://pharo.org") + (arguments + (list + #:configure-flags #~(list "-DGENERATED_SOURCE_DIR=." + "-DALWAYS_INTERACTIVE=ON" + "-DBUILD_IS_RELEASE=ON" + "-DGENERATE_SOURCES=OFF" + "-DBUILD_BUNDLE=OFF" + "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON" + (string-append "-DCMAKE_BUILD_RPATH=" + #$output "/lib") + (string-append "-DPHARO_BIN_LOCATION=" + #$output "/bin") + (string-append "-DPHARO_LIBRARY_PATH=" + #$output "/lib")) + #:phases #~(modify-phases %standard-phases + (add-after 'install 'wrapper + (lambda* (#:key inputs outputs #:allow-other-keys) + (wrap-program (string-append (assoc-ref outputs "out") + "/bin/pharo") + `("LD_LIBRARY_PATH" ":" prefix + ,(map (lambda (name) + (string-append (assoc-ref inputs name) + "/lib")) + '("sdl2" "libgit2" "freetype" "cairo" + "pixman"))))))) + #:tests? #f)) + (description + "Pharo's goal is to deliver a clean, innovative, free open-source +Smalltalk-inspired environment. By providing a stable and small core +system, excellent dev tools, and maintained releases, Pharo is an +attractive platform to build and deploy mission critical applications.") + (license license:expat))) + (define-public smalltalk (package (name "smalltalk")