From patchwork Sat Mar 8 10:55:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "King, Spencer via Guix-patches\" via" X-Patchwork-Id: 39900 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 A3F8D27BBE2; Sat, 8 Mar 2025 10:52:36 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-7.3 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS,URIBL_BLOCKED,URIBL_SBL_A 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 1E56C27BBEA for ; Sat, 8 Mar 2025 10:52:36 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tqrmp-0001uA-By; Sat, 08 Mar 2025 05:52:07 -0500 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 1tqrmm-0001tD-MI for guix-patches@gnu.org; Sat, 08 Mar 2025 05:52:04 -0500 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 1tqrmm-0005IZ-DS for guix-patches@gnu.org; Sat, 08 Mar 2025 05:52:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=gX1oEqz/xNk37U2adbyw6cXWpUmt77ngH+FCLqYbEa8=; b=KHUcncnOtcGI5CEfWTWr+yVhNBA1X8EUQFdRcZWGgj927htZ0XufsWAZHHXvxUOGlJXGkD3WUJfmfcibaoQz0tKUuEIQz8A9XPTBd+2HOrcMaEdWy+aYr3AUZXno7KWa4NeTKU7XBBSCPsO6CF3ieS9FxGajKGlS93XkkcvGy7lQwJb7NYKvqkJUbbO3MlmaHRnYdl+rSHiBAfJ+UrMPZnHeyorFuNrSDLRwJzOL1pxqbfJoFlZMnrSDqbBk69rOjVAF37wvDmAY7BiJ4++BZ2teCftmTugS7svnrfOJE6Q8/fRIbtiEbcY5IW3dCeIPQsoFHrt0n77XPd2MoHeTRA==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1tqrmm-0002xo-7K; Sat, 08 Mar 2025 05:52:04 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#76862] [PATCH 6/6] gnu: Add tic80. Resent-From: iyzsong@envs.net Original-Sender: "Debbugs-submit" Resent-CC: adam.faiz@disroot.org, liliana.prikler@gmail.com, iyzsong@envs.net, guix-patches@gnu.org Resent-Date: Sat, 08 Mar 2025 10:52:04 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 76862 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 76862@debbugs.gnu.org Cc: =?utf-8?b?5a6L5paH5q2m?= , Adam Faiz , Liliana Marie Prikler , =?utf-8?b?5a6L5paH5q2m?= X-Debbugs-Original-Xcc: Adam Faiz , Liliana Marie Prikler , =?utf-8?b?5a6L5paH5q2m?= Received: via spool by 76862-submit@debbugs.gnu.org id=B76862.174143111611336 (code B ref 76862); Sat, 08 Mar 2025 10:52:04 +0000 Received: (at 76862) by debbugs.gnu.org; 8 Mar 2025 10:51:56 +0000 Received: from localhost ([127.0.0.1]:53073 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tqrmd-0002wm-PH for submit@debbugs.gnu.org; Sat, 08 Mar 2025 05:51:56 -0500 Received: from mail.envs.net ([5.199.136.28]:48696) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1tqrmX-0002wG-UH for 76862@debbugs.gnu.org; Sat, 08 Mar 2025 05:51:51 -0500 Received: from localhost (mail.envs.net [127.0.0.1]) by mail.envs.net (Postfix) with ESMTP id 18BEE38A3FF0; Sat, 8 Mar 2025 10:51:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=envs.net; s=modoboa; t=1741431109; bh=gX1oEqz/xNk37U2adbyw6cXWpUmt77ngH+FCLqYbEa8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UJG+taYo2fqiiHFlOZp02VLnfgWXUpEQ14vXYLeFEDflECMLGG6NEe3N9MbYIuexT /DGUC1/Cys3+RdzLQ2dwWo6Jma42MVL83kaP9MyxIxWB2j5KZcBWS+LH2hPDvwrYrT X7aqYs/lBqtmlM0E0p8DeLfnSD0G+jt/JjzX/rXs3eOXtmFDSarVMc+9BfXEN4UjWi tsBLwtEvnLAiHXBruKi2H5r/ZI6jeF5K8GQsYHFbtyiUBDsGFfv0DXc7rtcKYK+Z7G JIB3kzmxL7dxkO+Ra/T87l7Iqrf4BM/J6ep3ykiQZJx4RQCdnpKAF2xVAwcMi4WzuH HJEGiudcjKOa4ltQnVwUoERT9qVl7VsO5YqDIIqo+OJQmLVNXLPGVySUoxl4bWrFGk h00teuWHAq3Ere5xYzyuiyrQdrETTzTvqb83wIkNt71t7o/gO6GTowzP4VtsbYq6Xv zDTzO+kH/BvZIMhg/llPzO9J6ZALebD3rWA2asJZEuBEoDc3ETRB4Rohiq7hpkknjG g+tvgB+PzCjyyyAqcm98jIJucGbuC4vd//ukQ0WTju65JRJtapjZYobU3njvxxvcMM +9tzR7hVuIBtqcoikfSMOlOhgqafhqRym+twK/vgBZp1rcqokHDR3lBsseYsR0uHhz MCgrezt4Z6bFvW0TmovofQA8= X-Virus-Scanned: Debian amavisd-new at mail.envs.net Received: from mail.envs.net ([127.0.0.1]) by localhost (mail.envs.net [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id T5ONBfrCnyKZ; Sat, 8 Mar 2025 10:51:45 +0000 (UTC) Received: from localhost (unknown [112.44.72.228]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.envs.net (Postfix) with ESMTPSA; Sat, 8 Mar 2025 10:51:43 +0000 (UTC) Received: from localhost.localdomain (localhost.lan [127.0.0.1]) by localhost (OpenSMTPD) with ESMTP id 076520a0; Sat, 8 Mar 2025 10:55:44 +0000 (UTC) Date: Sat, 8 Mar 2025 18:55:34 +0800 Message-ID: X-Mailer: git-send-email 2.48.1 In-Reply-To: References: 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: iyzsong@envs.net X-ACL-Warn: , iyzsong--- via Guix-patches X-Patchwork-Original-From: iyzsong--- via Guix-patches via From: "King, Spencer via Guix-patches\" via" 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 From: 宋文武 * gnu/packages/game-development.scm (tic80): New variable. Change-Id: I459d2a3270ac2524f7024d2aac32b954eba15c59 --- gnu/packages/game-development.scm | 132 ++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index a026e114c4..3f01fbd192 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -34,6 +34,7 @@ ;;; Copyright © 2024 Nicolas Graves ;;; Copyright © 2024 Maxim Cournoyer ;;; Copyright © 2025 Sharlatan Hellseher +;;; Copyright © 2025 宋文武 ;;; ;;; This file is part of GNU Guix. ;;; @@ -76,6 +77,7 @@ (define-module (gnu packages game-development) #:use-module (gnu packages bison) #:use-module (gnu packages boost) #:use-module (gnu packages build-tools) + #:use-module (gnu packages c) #:use-module (gnu packages compression) #:use-module (gnu packages check) #:use-module (gnu packages curl) @@ -101,7 +103,9 @@ (define-module (gnu packages game-development) #:use-module (gnu packages haskell-xyz) #:use-module (gnu packages icu4c) #:use-module (gnu packages image) + #:use-module (gnu packages javascript) #:use-module (gnu packages linux) + #:use-module (gnu packages lisp) #:use-module (gnu packages llvm) #:use-module (gnu packages lua) #:use-module (gnu packages m4) @@ -122,12 +126,14 @@ (define-module (gnu packages game-development) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages readline) + #:use-module (gnu packages ruby) #:use-module (gnu packages qt) #:use-module (gnu packages sdl) #:use-module (gnu packages serialization) #:use-module (gnu packages speech) #:use-module (gnu packages sphinx) #:use-module (gnu packages sqlite) + #:use-module (gnu packages squirrel) #:use-module (gnu packages stb) #:use-module (gnu packages swig) #:use-module (gnu packages texinfo) @@ -135,6 +141,7 @@ (define-module (gnu packages game-development) #:use-module (gnu packages tls) #:use-module (gnu packages version-control) #:use-module (gnu packages video) + #:use-module (gnu packages vim) #:use-module (gnu packages vulkan) #:use-module (gnu packages web) #:use-module (gnu packages wxwidgets) @@ -3710,6 +3717,131 @@ (define-public raylib (home-page "https://www.raylib.com/") (license license:zlib))) +(define-public tic80 + ;; Use an unreleased version for 'PREFER_SYSTEM_LIBRARIES'. + (let ((commit "fcfd7c9862e9157512bcab53affecd592b320131") + ;; These C libraries are used in source form by tic80. + (3rd/jsmn + (origin ;Expat + (method git-fetch) + (uri (git-reference + (url "https://github.com/zserge/jsmn") + (commit "25647e692c7906b96ffd2b05ca54c097948e879c"))) + (file-name "jsmn-checkout") + (sha256 + (base32 + "19xgrap95a8ziicgd0c3fns51z1g4q06b5lb5pg76ah4ychhgg5p")))) + (3rd/blip-buf + (origin ;LGPL2.1+ + (method git-fetch) + (uri (git-reference + (url "https://github.com/nesbox/blip-buf") + (commit "330226d9b55ecbeea644e17b5e0f096a165ca07e"))) + (file-name "blip-buf-checkout") + (sha256 + (base32 + "0fycffd6pbh9ilmr032dlrwd6dhvpkjp2r9x98r0kmwqpxc4x90d")))) + (3rd/msf-gif + (origin ;Expat or Public Domain + (method url-fetch) + (uri (string-append + "https://github.com/notnullnotvoid/msf_gif/releases/download/" + "v2.3/msf_gif.h")) + (sha256 + (base32 + "1ivjwwqxqjfhm8caz1srkp8wx7fpzvpf7s26ifif7cryvqch8vnf"))))) + (package + (name "tic80") + (version (git-version "1.2.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nesbox/TIC-80") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "17zxfiji6cb9ad7j3l82bdig0k7bz77bzwg7m0vd9ywrwk0kgxjk")) + (modules '((guix build utils))) + (snippet + #~(begin + (delete-file-recursively "vendor") + (copy-recursively #$3rd/jsmn "vendor/jsmn") + (copy-recursively #$3rd/blip-buf "vendor/blip-buf") + (mkdir "vendor/msf_gif") + (copy-file #$3rd/msf-gif "vendor/msf_gif/msf_gif.h"))))) + (build-system cmake-build-system) + (arguments + (list #:tests? #f ;no tests + #:configure-flags + #~'("-DBUILD_STATIC=ON" ;don't build runtimes as shared libraries + "-DPREFER_SYSTEM_LIBRARIES=ON" + "-DCMAKE_EXE_LINKER_FLAGS=-lpulse" ;for miniaudio + ;; TODO: moon, python, wren + "-DBUILD_WITH_FENNEL=ON" + "-DBUILD_WITH_JANET=ON" + "-DBUILD_WITH_JS=ON" + "-DBUILD_WITH_LUA=ON" + "-DBUILD_WITH_RUBY=ON" + "-DBUILD_WITH_SCHEME=ON" + "-DBUILD_WITH_SQUIRREL=ON" + "-DBUILD_WITH_WASM=ON") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'prepare-sources + (lambda _ + (let* ((s7 #$(this-package-input "s7")) + (fennel #$(this-package-input "fennel"))) + (install-file (string-append s7 "/include/s7.h") + "vendor/s7/") + (install-file (string-append s7 "/share/s7/s7.c") + "vendor/s7/") + (mkdir "vendor/fennel") + (copy-file (car (find-files fennel "fennel\\.lua")) + "vendor/fennel/loadfennel.lua") + (with-directory-excursion "vendor/fennel" + (substitute* "loadfennel.lua" + (("return mod") "package.loaded['fennel'] = mod")) + (invoke "xxd" "-i" "loadfennel.lua" "fennel.h"))) + (substitute* "src/api/mruby.c" + (("#include " all) + (string-append + all "\n#include "))) + (substitute* "src/ext/fft.c" + (("#include \"miniaudio\\.h\"") " +#define MA_NO_RUNTIME_LINKING +#define MA_ENABLE_ONLY_SPECIFIC_BACKENDS +#define MA_ENABLE_PULSEAUDIO +#define MA_ENABLE_NULL +#include \"miniaudio.h\" +"))))))) + (native-inputs + (list pkg-config xxd)) + (inputs + (list argparse + fennel + giflib + janet + kubazip + libpng + lua + mruby + naett + pulseaudio + quickjs + s7 + sdl2 + squirrel + wasm3)) + (synopsis "Fantasy tiny computer") + (home-page "https://tic80.com/") + (description + "TIC-80 is a fantasy computer for making, playing and sharing tiny +games. There are built-in tools for development: code, sprites, maps, sound +editors and the command line, which is enough to create a mini retro game.") + (license license:expat)))) + (define-public bbcsdl (package (name "bbcsdl")