[PATCH 0/6] Add tic80

  • Open
  • quality assurance status badge
Details
One participant
  • iyzsong
Owner
unassigned
Submitted by
iyzsong
Severity
normal

Debbugs page

iyzsong wrote 3 days ago
(address . guix-patches@gnu.org)(name . 宋文武)(address . iyzsong@member.fsf.org)
cover.1741431068.git.iyzsong@member.fsf.org
From: 宋文武 <iyzsong@member.fsf.org>

Hello, here are patches to add TIC-80, a fantasy computer to make and
play tiny games.


Sou Bunnbu (宋文武) (6):
gnu: Add argparse.
gnu: Add naett.
gnu: Add kubazip.
gnu: wasm3: Update to 0.5.0-1.139076a.
gnu: mruby: Update to 3.3.0.
gnu: Add tic80.

gnu/packages/c.scm | 33 ++++++++
gnu/packages/compression.scm | 20 +++++
gnu/packages/game-development.scm | 132 ++++++++++++++++++++++++++++++
gnu/packages/networking.scm | 33 ++++++++
gnu/packages/ruby.scm | 11 ++-
gnu/packages/web.scm | 92 +++++++++++----------
6 files changed, 272 insertions(+), 49 deletions(-)


base-commit: 42bc94adbd1114771ef14a8e19563829ae355e87
--
2.48.1
iyzsong wrote 3 days ago
[PATCH 1/6] gnu: Add argparse.
(address . 76862@debbugs.gnu.org)(name . 宋文武)(address . iyzsong@member.fsf.org)
85a74ab01b644070fe8b38cb429cbc387274b6fa.1741431068.git.iyzsong@member.fsf.org
From: 宋文武 <iyzsong@member.fsf.org>

* gnu/packages/c.scm (argparse): New variable.

Change-Id: I846cf9229c44f6e40b07dc9f82cd0327ebd02fcb
---
gnu/packages/c.scm | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)

Toggle diff (46 lines)
diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index bd5f8ac20f..8efb782811 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -1020,6 +1020,39 @@ (define-public byacc
C programming language.")
(license license:public-domain)))
+(define-public argparse
+ (package
+ (name "argparse")
+ (version "1.1.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/cofyc/argparse")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0zb0b2aikk4dasjzsyiyf2xn1hbld8gf8np3843zcg9wbxydd8zd"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:test-target "test"
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure) ;no configure script
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (inc (string-append out "/include"))
+ (lib (string-append out "/lib")))
+ (install-file "argparse.h" inc)
+ (install-file "libargparse.so" lib)))))))
+ (synopsis "Command line arguments parsing library")
+ (home-page "https://github.com/cofyc/argparse")
+ (description
+ "This C library provides high-level arguments parsing solutions inspired
+by Python's @code{argparse} module.")
+ (license license:expat)))
+
(define-public aws-c-common
(package
(name "aws-c-common")
--
2.48.1
iyzsong wrote 3 days ago
[PATCH 2/6] gnu: Add naett.
(address . 76862@debbugs.gnu.org)(name . 宋文武)(address . iyzsong@member.fsf.org)
ab67825577d7028679c2dab61e62731316376b63.1741431068.git.iyzsong@member.fsf.org
From: 宋文武 <iyzsong@member.fsf.org>

* gnu/packages/networking.scm (naett): New variable.

Change-Id: I5e4698d9dfe5677d945bede462943576fcfe3b06
---
gnu/packages/networking.scm | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)

Toggle diff (53 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index b0a0fb420d..673b77585d 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -89,6 +89,7 @@ (define-module (gnu packages networking)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix build-system cmake)
+ #:use-module (guix build-system copy)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system gnu)
#:use-module (guix build-system go)
@@ -4292,6 +4293,38 @@ (define-public batctl
module @code{batman-adv}, for Layer 2.")
(license license:gpl2+)))
+(define-public naett
+ (package
+ (name "naett")
+ (version "0.3.3")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/erkkah/naett")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1nnnps1755h8yawzpf71fm4g2hqdja4zw993ilsaad3z7p464q47"))))
+ (build-system copy-build-system)
+ (inputs (list curl))
+ (arguments
+ (list #:install-plan
+ #~'(("naett.h" "include/")
+ ("libnaett.so" "lib/"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'install 'build
+ (lambda _
+ (invoke #$(cc-for-target)
+ "-o" "libnaett.so"
+ "-shared" "-fPIC" "-O2" "naett.c"
+ "-lcurl" "-lpthread"))))))
+ (synopsis "Tiny HTTP client library")
+ (home-page "https://github.com/erkkah/naett")
+ (description "This package provides a tiny HTTP client library in C.")
+ (license license:unlicense)))
+
(define-public pagekite
(package
(name "pagekite")
--
2.48.1
iyzsong wrote 3 days ago
[PATCH 4/6] gnu: wasm3: Update to 0.5.0-1.139076a.
(address . 76862@debbugs.gnu.org)(name . 宋文武)(address . iyzsong@member.fsf.org)
2e6fe67cc697e1008d0f5174b822b9d865576466.1741431068.git.iyzsong@member.fsf.org
From: 宋文武 <iyzsong@member.fsf.org>

* gnu/packages/web.scm (wasm3): Update to 0.5.0-1.139076a.

Change-Id: I0c1e28d8ed20b4e030db3d118ca69fe459b338c0
---
gnu/packages/web.scm | 92 ++++++++++++++++++++++----------------------
1 file changed, 47 insertions(+), 45 deletions(-)

Toggle diff (105 lines)
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 193241bcf3..d10cee88fe 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -1850,51 +1850,53 @@ (define-public wabt
(license license:asl2.0)))
(define-public wasm3
- (package
- (name "wasm3")
- (version "0.5.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/wasm3/wasm3")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "07zzmk776j8ydyxhrnnjiscbhhmz182a62r6aix6kfk5kq2cwia2"))))
- (build-system cmake-build-system)
- (arguments
- ;; The default WASI option "uvwasi" causes CMake to initiate a 'git
- ;; clone' which cannot happen within the build container.
- '(#:configure-flags '("-DBUILD_WASI=simple")
- ;; No check target. There are tests but they require a network
- ;; connection to download the WebAssembly core test suite.
- #:tests? #f
- ;; There is no install target. Instead, we have to manually copy the
- ;; wasm3 build artifacts to the output directory.
- #:phases
- (modify-phases %standard-phases
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bindir (string-append out "/bin"))
- (includedir (string-append out "/include"))
- (libdir (string-append out "/lib")))
- (mkdir-p bindir)
- (mkdir-p includedir)
- (mkdir-p libdir)
- (copy-file "wasm3" (string-append bindir "/wasm3"))
- (for-each (lambda (header)
- (copy-file header
- (string-append includedir "/"
- (basename header))))
- (find-files "../source/source" "\\.h$"))
- (copy-file "source/libm3.a"
- (string-append libdir "/libm3.a"))))))))
- (home-page "https://github.com/wasm3/wasm3")
- (synopsis "WebAssembly interpreter")
- (description "WASM3 is a fast WebAssembly interpreter.")
- (license license:expat)))
+ ;; Use an unreleased version with 'm3_GetTableFunction' for tic80.
+ (let ((commit "139076a98b8321b67f850a844f558b5e91b5ac83"))
+ (package
+ (name "wasm3")
+ (version (git-version "0.5.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/wasm3/wasm3")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0329kx43n0ns9qxj813239wna69qyi9ghfb1sks46f39h24q0n3x"))))
+ (build-system cmake-build-system)
+ (arguments
+ ;; The default WASI option "uvwasi" causes CMake to initiate a 'git
+ ;; clone' which cannot happen within the build container.
+ '(#:configure-flags '("-DBUILD_WASI=simple")
+ ;; No check target. There are tests but they require a network
+ ;; connection to download the WebAssembly core test suite.
+ #:tests? #f
+ ;; There is no install target. Instead, we have to manually copy the
+ ;; wasm3 build artifacts to the output directory.
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bindir (string-append out "/bin"))
+ (includedir (string-append out "/include"))
+ (libdir (string-append out "/lib")))
+ (mkdir-p bindir)
+ (mkdir-p includedir)
+ (mkdir-p libdir)
+ (copy-file "wasm3" (string-append bindir "/wasm3"))
+ (for-each (lambda (header)
+ (copy-file header
+ (string-append includedir "/"
+ (basename header))))
+ (find-files "../source/source" "\\.h$"))
+ (copy-file "source/libm3.a"
+ (string-append libdir "/libm3.a"))))))))
+ (home-page "https://github.com/wasm3/wasm3")
+ (synopsis "WebAssembly interpreter")
+ (description "WASM3 is a fast WebAssembly interpreter.")
+ (license license:expat))))
(define-public wasm-micro-runtime
(package
--
2.48.1
iyzsong wrote 3 days ago
[PATCH 5/6] gnu: mruby: Update to 3.3.0.
(address . 76862@debbugs.gnu.org)(name . 宋文武)(address . iyzsong@member.fsf.org)
1243b7e5a53aa5f7d51dcbfee2a7887015d2832a.1741431068.git.iyzsong@member.fsf.org
From: 宋文武 <iyzsong@member.fsf.org>

* gnu/packages/ruby.scm (mruby): Update to 3.3.0.
[arguments]: Install header files in install phase.

Change-Id: I1768c039cef599d8330b223d112f470802ab788a
---
gnu/packages/ruby.scm | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)

Toggle diff (41 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 58082359f6..bb4903958f 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -296,7 +296,7 @@ (define-public ruby ruby-3.1)
(define-public mruby
(package
(name "mruby")
- (version "3.2.0")
+ (version "3.3.0")
(source
(origin
(method git-fetch)
@@ -306,7 +306,7 @@ (define-public mruby
(file-name (git-file-name name version))
(sha256
(base32
- "0c0scaqbnywrd9z1z4rnnj345rjc3vbklszm0rc6y6rzx1cxnsij"))))
+ "0zynr6dk0zxdip53il0qr0rhyzmjicpkxs63l77acpx8b05h8amc"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
@@ -333,11 +333,14 @@ (define-public mruby
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
- (lib (string-append out "/lib")))
+ (lib (string-append out "/lib"))
+ (inc (string-append out "/include")))
(mkdir-p bin)
(copy-recursively "build/host/bin" bin)
(mkdir-p lib)
- (copy-recursively "build/host/lib" lib))
+ (copy-recursively "build/host/lib" lib)
+ (mkdir-p inc)
+ (copy-recursively "include" inc))
#t)))))
(native-inputs
(list ruby bison))
--
2.48.1
iyzsong wrote 3 days ago
[PATCH 3/6] gnu: Add kubazip.
(address . 76862@debbugs.gnu.org)(name . 宋文武)(address . iyzsong@member.fsf.org)
11f521e648120dca4621ffa4f4c185bcc88e4c46.1741431068.git.iyzsong@member.fsf.org
From: 宋文武 <iyzsong@member.fsf.org>

* gnu/packages/compression.scm (kubazip): New variable.

Change-Id: I2066f141575d476e866905bbc52c05e1ec81a226
---
gnu/packages/compression.scm | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

Toggle diff (33 lines)
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index cdb029b225..127466a0f7 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -204,6 +204,26 @@ (define-public minizip
the @code{zlib} source.")
(license (package-license zlib))))
+(define-public kubazip
+ (package
+ (name "kubazip")
+ (version "0.3.3")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/kuba--/zip")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "182p059nvs5vpdzmmkn2g6mphsvkjdcxq6gpbh58dcsjj507j9ab"))))
+ (build-system cmake-build-system)
+ (synopsis "Simple zip library")
+ (home-page "https://github.com/kuba--/zip")
+ (description
+ "This package provides a simple zip library based on miniz.")
+ (license license:unlicense)))
+
(define-public fastjar
(package
(name "fastjar")
--
2.48.1
iyzsong wrote 3 days ago
[PATCH 6/6] gnu: Add tic80.
(address . 76862@debbugs.gnu.org)(name . 宋文武)(address . iyzsong@member.fsf.org)
f3e5e210d9049939923aca1946b0e09874692512.1741431068.git.iyzsong@member.fsf.org
From: 宋文武 <iyzsong@member.fsf.org>

* gnu/packages/game-development.scm (tic80): New variable.

Change-Id: I459d2a3270ac2524f7024d2aac32b954eba15c59
---
gnu/packages/game-development.scm | 132 ++++++++++++++++++++++++++++++
1 file changed, 132 insertions(+)

Toggle diff (187 lines)
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 <ngraves@ngraves.fr>
;;; Copyright © 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2025 Sharlatan Hellseher <sharlatanus@gmail.com>
+;;; Copyright © 2025 宋文武 <iyzsong@envs.net>
;;;
;;; 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 <mruby\\.h>" all)
+ (string-append
+ all "\n#include <mruby/internal.h>")))
+ (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")
--
2.48.1
宋文武 wrote 24 minutes ago
Re: [bug#76862] [PATCH 0/6] Add tic80
(address . 76862-done@debbugs.gnu.org)
87y0xcw9je.fsf@envs.net
Pushed to master, close.
Closed
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 76862@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 76862
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help