From patchwork Fri Jun 16 19:04:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Sughosha X-Patchwork-Id: 50989 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 8385F27BBE9; Fri, 16 Jun 2023 20:05:34 +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_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,SPF_HELO_PASS,URIBL_BLOCKED autolearn=unavailable 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 E60AA27BBE2 for ; Fri, 16 Jun 2023 20:05:31 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qAEks-00075S-Ur; Fri, 16 Jun 2023 15:05:06 -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 1qAEko-00074n-Rr for guix-patches@gnu.org; Fri, 16 Jun 2023 15:05:04 -0400 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qAEko-00059q-ER for guix-patches@gnu.org; Fri, 16 Jun 2023 15:05:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qAEko-0001ql-9D for guix-patches@gnu.org; Fri, 16 Jun 2023 15:05:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#63254] [PATCH v4 4/5] gnu: Add mruby-zest. References: In-Reply-To: Resent-From: Sughosha Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Fri, 16 Jun 2023 19:05:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 63254 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: "63254@debbugs.gnu.org" <63254@debbugs.gnu.org> Received: via spool by 63254-submit@debbugs.gnu.org id=B63254.16869422647048 (code B ref 63254); Fri, 16 Jun 2023 19:05:02 +0000 Received: (at 63254) by debbugs.gnu.org; 16 Jun 2023 19:04:24 +0000 Received: from localhost ([127.0.0.1]:50402 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qAEkC-0001pb-2C for submit@debbugs.gnu.org; Fri, 16 Jun 2023 15:04:24 -0400 Received: from mail-4027.protonmail.ch ([185.70.40.27]:57221) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qAEkA-0001pL-Ai for 63254@debbugs.gnu.org; Fri, 16 Jun 2023 15:04:23 -0400 Date: Fri, 16 Jun 2023 19:04:08 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=proton.me; s=protonmail; t=1686942255; x=1687201455; bh=OsHXrAOL3XssnbRgoccHFoDr3BVeijv3o5jkbZU7WYE=; h=Date:To:From:Subject:Message-ID:Feedback-ID:From:To:Cc:Date: Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=YdnivLEBYmYUQxGxYsDARMguD7+UIjnBx7qx2DIq01/dcFJ/40VzCGbkVnn9DulOb Nmj49DuoaVt335ceZQQoERnE9KA8dRKSQhZ0rPzhv4O0G4nUfc+axhVRLJD01ubwuW kxUmj7GvkS1kaW25eUqpmjh4cBVXrd1yE/F7dUD4Xu5vg/G+RZo0YyDC4kXEEPKUQD /bWD/p76Bft5or36tRLgwfwPB2HLek04iUzZQxmB6lxomCpDiCYZaIlwZ1ZXHnxzpB 0tAZxT/rSZVWwHCN5Zrxp7vMdWPLH9p1P0f3WSx95O31T2v871azSMy0PQPvjWx7lA 23G3mD2DoEWrA== Message-ID: Feedback-ID: 45211691:user:proton MIME-Version: 1.0 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: , Reply-to: Sughosha X-ACL-Warn: , Sughosha via Guix-patches X-Patchwork-Original-From: Sughosha via Guix-patches via From: Sughosha 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 * gnu/packages/mruby-xyz.scm: New file. * gnu/local.mk: Register the file. --- gnu/local.mk | 1 + gnu/packages/mruby-xyz.scm | 176 +++++++++++++++++++++++++++++++++++++ 2 files changed, 177 insertions(+) create mode 100644 gnu/packages/mruby-xyz.scm diff --git a/gnu/local.mk b/gnu/local.mk index 3f516d395a..1649398f59 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -440,6 +440,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/mpd.scm \ %D%/packages/mp3.scm \ %D%/packages/mpi.scm \ + %D%/packages/mruby-xyz.scm \ %D%/packages/multiprecision.scm \ %D%/packages/music.scm \ %D%/packages/musl.scm \ diff --git a/gnu/packages/mruby-xyz.scm b/gnu/packages/mruby-xyz.scm new file mode 100644 index 0000000000..5524976dec --- /dev/null +++ b/gnu/packages/mruby-xyz.scm @@ -0,0 +1,176 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2023 +;;; +;;; 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 . + +(define-module (gnu packages mruby-xyz) + #:use-module (guix packages) + #:use-module (guix git-download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix gexp) + #:use-module (guix utils) + #:use-module (guix build-system gnu) + #:use-module (gnu packages) + #:use-module (gnu packages audio) + #:use-module (gnu packages bash) + #:use-module (gnu packages fonts) + #:use-module (gnu packages gl) + #:use-module (gnu packages libevent) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages ruby) + #:use-module (gnu packages xorg)) + +(define-public mruby-zest + (package + (name "mruby-zest") + (version "3.0.6") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mruby-zest/mruby-zest-build") + (commit version) + ;; Cloning recursively for and the required mruby sources + ;; and gems. + (recursive? #t))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0dz4zv1km9805lji2q2qqdd8s8hgfd723dxdzcivbhm612szm1mc")) + (modules '((guix build utils))) + (snippet + ;; This packages contains a custom "pugl". Replacing it with the + ;; system "pugl" fails to build. + ;; Delete the bundled "libuv", "nanovg" and "rtosc". + '(with-directory-excursion "deps" + (for-each delete-file-recursively + (list "libuv" "nanovg" "rtosc")))))) + (build-system gnu-build-system) + (arguments + (list #:tests? #f ;no test suite + #:make-flags + #~(list (string-append "CC=" #$(cc-for-target)) + "CONFIG_SHELL=bash") + #:phases + #~(modify-phases %standard-phases + (delete 'configure) ;no configure script + (add-after 'unpack 'patch-paths + (lambda* (#:key inputs #:allow-other-keys) + ;; Do not compile "nanovg" and "libuv" and use the system + ;; provided versions of them. + (substitute* "Makefile" + (("cd deps/nanovg") "#cd deps/nanovg") + (("\\$\\(AR\\) rc deps/libnanovg\\.a") + "#$(AR) rc deps/libnanovg.a") + (("\\./deps/libnanovg\\.a") + "-lnanovg") + (("cd deps/libuv") "#cd deps/libuv") + (("\\./deps/libuv/\\.libs/libuv\\.a") + "-luv") + (("\\./deps/libuv/\\.libs/libuv-win\\.a") + "-luv-win")) + (substitute* "build_config.rb" + (("#\\{`pwd`\\.strip\\}/\\.\\./deps/libnanovg\\.a") + "-lnanovg") + (("#\\{`pwd`\\.strip\\}/\\.\\./deps/libuv\\.a") + "-luv") + (("cc\\.include_paths.*\\./deps/nanovg/.*$") + "#") + (("cc\\.include_paths.*\\./deps/libuv/.*$") + "#")) + (substitute* "deps/mruby-nanovg/src/nvg_screenshot.c" + (("\\.\\./\\.\\./nanovg/.*/stb_image_write\\.h") + (search-input-file inputs "/example/stb_image_write.h"))) + ;; Use the system provided "rtosc" headers. + (substitute* "src/mruby-widget-lib/src/gem.c" + (("\"\\.\\./\\.\\./\\.\\./deps/.*/rtosc\\.h\"") + "")) + ;; Fix missing fonts. + (substitute* + "src/mruby-widget-lib/mrblib/script.rb" + (("sans = \\[") + (string-append + "sans = [\"" + (search-input-file inputs + "/share/fonts/truetype/Roboto-Regular.ttf") + "\", ")) + (("bold = \\[") + (string-append + "bold = [\"" + (search-input-file inputs + "/share/fonts/truetype/Roboto-Bold.ttf") + "\", "))) + ;; Fix paths for zyn-fusion files. + (substitute* "src/osc-bridge/src/bridge.c" + (("fopen\\(\\\"schema/") + (string-append + "fopen(\"" #$output "/share/zyn-fusion/schema/"))) + (substitute* "test-libversion.c" + (("./libzest.so") + (string-append #$output "/lib/libzest.so"))) + (substitute* "src/mruby-widget-lib/src/api.c" + ((", \\\"\\./qml/") ", \"../share/zyn-fusion/qml/") + (("\\./qml/") + (string-append #$output "/share/zyn-fusion/qml"))))) + (replace 'install + (lambda _ + (rename-file "zest" "zyn-fusion") + (install-file "zyn-fusion" (string-append #$output "/bin")) + (install-file "libzest.so" (string-append #$output "/lib")) + (for-each + (lambda (folder) + (for-each + (lambda (file) + (install-file file + (string-append #$output "/share/zyn-fusion/qml"))) + (find-files folder "\\.qml$"))) + '("src/mruby-zest/qml" "src/mruby-zest/example")) + (install-file "src/osc-bridge/schema/test.json" + (string-append #$output "/share/zyn-fusion/schema")) + (install-file "completions/zyn-fusion" + (string-append + #$output "/share/bash-completion/completions"))))))) + (native-inputs + (list (package-source nanovg) ;for "stb_image_write.h" + pkg-config + ruby)) + (inputs + (list font-google-roboto + libuv + libx11 + mesa + ;; With the latest version of "nanovg" the contents are not + ;; displayed properly. + (let ((version "0") + (revision "0") + (commit "b83cf926525e7cea8d2483da2a75852b8c7b6d28")) + (package (inherit nanovg) + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/memononen/nanovg") + (commit commit))) + (sha256 + (base32 + "1zp355pw6xnb5mjarz67cxkglv7j1s0qzv705fz1wf0gl0sjhy8f")))))) + rtosc)) + (home-page "https://github.com/mruby-zest/mruby-zest-build") + (synopsis "Zyn-Fusion user interface") + (description + "This package provides user interface for Zyn-Fusion.") + (license + (list license:lgpl2.1))))