mirror of
https://codeberg.org/guix/guix.git
synced 2025-10-02 02:15:12 +00:00
* gnu/packages/mruby-xyz.scm: New file. * gnu/local.mk: Add it. Change-Id: Ie228b57feefcce6bf868d93d234a028daf5a6e38 Signed-off-by: Gabriel Wicki <gabriel@erlikon.ch>
174 lines
7.9 KiB
Scheme
174 lines
7.9 KiB
Scheme
;;; GNU Guix --- Functional package management for GNU
|
|
;;; Copyright © 2025 Sughosha <Sughosha@disroot.org>
|
|
;;;
|
|
;;; 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-module (gnu packages mruby-xyz)
|
|
#:use-module (guix gexp)
|
|
#:use-module (guix packages)
|
|
#:use-module (guix git-download)
|
|
#:use-module ((guix licenses) #:prefix license:)
|
|
#:use-module (guix build-system gnu)
|
|
#:use-module (guix utils)
|
|
#:use-module (gnu packages)
|
|
#:use-module (gnu packages audio)
|
|
#: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)
|
|
#:use-module (ice-9 match))
|
|
|
|
(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)
|
|
;; Clone recursively for the mruby sources and gems that
|
|
;; are needed for compilation. The rest of the bundled
|
|
;; dependencies will be deleted in the snippet.
|
|
(recursive? #t)))
|
|
(file-name (git-file-name name version))
|
|
(sha256
|
|
(base32
|
|
"0dz4zv1km9805lji2q2qqdd8s8hgfd723dxdzcivbhm612szm1mc"))
|
|
(modules '((guix build utils)))
|
|
(snippet
|
|
'(begin
|
|
;; This package 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")))
|
|
;; Do not compile "nanovg" and "libuv" and replace them with
|
|
;; the respective system libraries.
|
|
(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"))
|
|
;; Do not include the bundled "nanovg" and "uv" and replace
|
|
;; them with the respective system libraries.
|
|
(substitute* "build_config.rb"
|
|
(("cc\\.include_paths.*\\./deps/nanovg/.*$" all)
|
|
(string-append "#" all))
|
|
(("cc\\.include_paths.*\\./deps/libuv/.*$" all)
|
|
(string-append "#" all))
|
|
(("#\\{`pwd`\\.strip\\}/\\.\\./deps/libnanovg\\.a")
|
|
"-lnanovg")
|
|
(("#\\{`pwd`\\.strip\\}/\\.\\./deps/libuv\\.a")
|
|
"-luv"))
|
|
;; Fix including "nanovg" headers.
|
|
(substitute* (find-files "deps/mruby-nanovg" "\\.(c|h)")
|
|
(("nanovg\\.h") "nanovg/nanovg.h")
|
|
(("nanovg_gl\\.h") "nanovg/nanovg_gl.h")
|
|
(("\"\\.\\./\\.\\./nanovg/.*/stb_image_write\\.h\"")
|
|
"<nanovg/stb_image_write.h>"))
|
|
;; Fix including "rtosc" headers.
|
|
(substitute* "src/mruby-widget-lib/src/gem.c"
|
|
(("\"\\.\\./\\.\\./\\.\\./deps/.*/rtosc\\.h\"")
|
|
"<rtosc/rtosc.h>"))))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
(list #:tests? #f ;no test suite
|
|
#:make-flags
|
|
#~(list (string-append "CC=" #$(cc-for-target))
|
|
"CONFIG_SHELL=bash")
|
|
#:modules
|
|
`(,@%default-gnu-modules
|
|
(srfi srfi-26))
|
|
#:phases
|
|
#~(modify-phases %standard-phases
|
|
(delete 'configure) ;no configure script
|
|
(add-after 'unpack 'patch-paths
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
|
;; Patch paths to the 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")
|
|
"\", ")))
|
|
;; Patch paths to the 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")))))
|
|
;; No install target.
|
|
(replace 'install
|
|
(lambda _
|
|
(let* ((bin (string-append #$output "/bin"))
|
|
(lib (string-append #$output "/lib"))
|
|
(share (string-append #$output "/share"))
|
|
(qml (string-append share "/zyn-fusion/qml"))
|
|
(schema (string-append share "/zyn-fusion/schema"))
|
|
(completions
|
|
(string-append share
|
|
"/bash-completion/completions")))
|
|
;; zynaddsubfx looks for "zyn-fusion" instead of "zest".
|
|
(rename-file "zest" "zyn-fusion")
|
|
(install-file "zyn-fusion" bin)
|
|
(install-file "libzest.so" lib)
|
|
(for-each (cut install-file <> qml)
|
|
(append (find-files "src/mruby-zest/qml"
|
|
"\\.qml$")
|
|
(find-files "src/mruby-zest/example"
|
|
"\\.qml$")))
|
|
(install-file "src/osc-bridge/schema/test.json" schema)
|
|
(install-file "completions/zyn-fusion" completions)))))))
|
|
(native-inputs
|
|
(list pkg-config ruby))
|
|
(inputs
|
|
(list font-google-roboto
|
|
libuv
|
|
libx11
|
|
mesa
|
|
nanovg
|
|
rtosc))
|
|
(home-page "https://github.com/mruby-zest/mruby-zest-build")
|
|
(synopsis "Zyn-Fusion user interface")
|
|
(description
|
|
"This package provides Zyn-Fusion user interface for
|
|
@command{zynaddsubfx}.")
|
|
(license
|
|
(list license:lgpl2.1))))
|