[PATCH] gnu: Add melonds.

  • Open
  • quality assurance status badge
Details
3 participants
  • altadil
  • cesarbcr
  • Lilah Tascheter
Owner
unassigned
Submitted by
altadil
Severity
normal
A
A
altadil wrote on 15 Jan 13:47 +0100
(address . guix-patches@gnu.org)(name . altadil)(address . altadil@protonmail.com)
30c6be832a2771676f848a79e2ac47ff23af69fe.1705322704.git.altadil@protonmail.com
* gnu/packages/emulators.scm (melonds): New variable.

Change-Id: I8f7d31686fe5c9860acd86eb5740933218ca2910
---
guix build --no-grafts --check --rounds=2 --system=x86_64-linux was
run successfully on a Zen4 CPU.
gnu/packages/emulators.scm | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)

Toggle diff (64 lines)
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index cde3ee052c..a0235e572b 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -21,6 +21,7 @@
;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
;;; Copyright © 2023 Hendursaga <hendursaga@aol.com>
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
+;;; Copyright © 2024 Altadil <altadil@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -81,6 +82,7 @@ (define-module (gnu packages emulators)
#:use-module (gnu packages graphics)
#:use-module (gnu packages gtk)
#:use-module (gnu packages image)
+ #:use-module (gnu packages kde-frameworks)
#:use-module (gnu packages libedit)
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
@@ -733,6 +735,39 @@ (define-public mednafen
;; Main license is GPL2+. Some parts are BSD-3.
(license (list license:gpl2+ license:bsd-3))))
+(define-public melonds
+ (package
+ (name "melonds")
+ (version "0.9.5")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/melonDS-emu/melonDS")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256 (base32 "0c4hhs5mffj43pa2y18k70q6szc09m8yj0gqw2svszpvpz2n91cz"))))
+ (build-system cmake-build-system)
+ (arguments (list #:tests? #f)) ; No test target available.
+ (native-inputs (list extra-cmake-modules pkg-config))
+ (inputs (list curl
+ gnutls
+ libarchive
+ libpcap
+ libslirp
+ qtbase-5
+ qtmultimedia-5
+ sdl2
+ wayland
+ zstd))
+ (synopsis "DS emulator")
+ (description "melonDS is an emulator of the Nintendo DS. It aims at
+providing fast and accurate emulation. While it is still a work in progress,
+it has a pretty solid set of features, includind a nearly complete core, a JIT
+recompiler for fast emulation, an OpenGL renderer, joystick support and
+savestates.")
+ (home-page "https://melonds.kuribo64.net/")
+ (license license:gpl3+)))
+
(define-public mgba
(package
(name "mgba")

base-commit: 162d6a2fdd6af13272967c77347a54934ecb45e6
--
2.41.0
L
L
Lilah Tascheter wrote on 16 Jan 08:11 +0100
(address . 68469@debbugs.gnu.org)
fbd22fd4047a226f0b96d2218e6e51029f8a116a.camel@lunabee.space
hi!

great patch!! :)
there's a few small issues I found:
* the source hash line is too long, style guide says lines shouldn't
exceed 80 cols.
* melonds doesn't actually require curl and gnutls. no clue why their
README says it does. I've verified it compiles without them.
* melonds secretly bundles in pre-compiled DS firmware in
src/FreeBIOS.h. they do, however, provide source, but our buildscript
shouldn't rely on bundled blobs.

I took the liberty of attaching an edited patch. hope that's alright!

- lilah

---
gnu/packages/emulators.scm | 64 ++++++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)

Toggle diff (100 lines)
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index cde3ee052c..0f7962115d 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -21,6 +21,7 @@
;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
;;; Copyright © 2023 Hendursaga <hendursaga@aol.com>
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
+;;; Copyright © 2024 Altadil <altadil@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -81,6 +82,7 @@ (define-module (gnu packages emulators)
#:use-module (gnu packages graphics)
#:use-module (gnu packages gtk)
#:use-module (gnu packages image)
+ #:use-module (gnu packages kde-frameworks)
#:use-module (gnu packages libedit)
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
@@ -102,6 +104,7 @@ (define-module (gnu packages emulators)
#:use-module (gnu packages tls)
#:use-module (gnu packages upnp)
#:use-module (gnu packages video)
+ #:use-module (gnu packages vim)
#:use-module (gnu packages vulkan)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xiph)
@@ -733,6 +736,67 @@ (define-public mednafen
;; Main license is GPL2+. Some parts are BSD-3.
(license (list license:gpl2+ license:bsd-3))))
+(define-public melonds
+ (package
+ (name "melonds")
+ (version "0.9.5")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/melonDS-emu/melonDS")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0c4hhs5mffj43pa2y18k70q6szc09m8yj0gqw2svszpvpz2n91cz"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list #:tests? #f ; No test target available.
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'configure 'compile-bios
+ (lambda* (#:key inputs #:allow-other-keys)
+ (define (as arm arch)
+ (invoke "arm-none-eabi-gcc"
+ "-c" "freebios/bios_common.S"
+ (string-append "-march=armv" arch)
+ (string-append "-DBIOS_ARM" arm)
+ "-o" (string-append "bios_arm" arm ".o"))
+ (invoke "arm-none-eabi-objcopy"
+ "-O" "binary"
+ (string-append "bios_arm" arm ".o")
+ (string-append "bios_arm" arm ".bin")))
+
+ (as "7" "4t")
+ (as "9" "5te")
+ (with-output-to-file "src/FreeBIOS.h"
+ (lambda ()
+ (display "#ifndef FREEBIOS_H\n#define FREEBIOS_H\n")
+ (invoke "xxd" "-i" "bios_arm7.bin")
+ (invoke "xxd" "-i" "bios_arm9.bin")
+ (display "#endif\n"))))))))
+ (native-inputs (list (cross-gcc "arm-none-eabi")
+ (cross-binutils "arm-none-eabi")
+ extra-cmake-modules
+ pkg-config
+ xxd))
+ (inputs (list libarchive
+ libpcap
+ libslirp
+ qtbase-5
+ qtmultimedia-5
+ sdl2
+ wayland
+ zstd))
+ (synopsis "DS emulator")
+ (description "melonDS is an emulator of the Nintendo DS. It aims at
+providing fast and accurate emulation. While it is still a work in progress,
+it has a pretty solid set of features, includind a nearly complete core, a JIT
+recompiler for fast emulation, an OpenGL renderer, joystick support and
+savestates.")
+ (home-page "https://melonds.kuribo64.net/")
+ (license license:gpl3+)))
+
(define-public mgba
(package
(name "mgba")

base-commit: 21f5d20d68e0359f8111ccb936905649c70db9c1
--
2.41.0
C
C
cesarbcr wrote on 28 May 13:03 +0200
Re: [PATCH] gnu: Add melonds
(name . 68469@debbugs.gnu.org)(address . 68469@debbugs.gnu.org)(name . lilah@lunabee.space)(address . lilah@lunabee.space)
OATEznYFG-hmYkeZkLGne_ME9xdedK9NRKpndPR1TrD5ybbTEdJ2yHW-VyPCGa9gViLUyXFGgFwNhq4WpQtWYKyX4lIQrQMpkxuC-za-Z-o=@protonmail.com
Hi,
thanks a lot for your help!
Really sorry to not have answered sooner (I wrongly assumed debbugs would send notifications to me, so didn’t check the thread).

It seems your level in packaging is far above mine, so I can’t comment on your improvement (except saying it’s impressive ^.^).
The only thing I can add is: you should add yourself to the copyright lines at the top (but anyone can do it for you, once we get feedback from a reviewer).

Thanks again!
Altadil
?
Your comment

Commenting via the web interface is currently disabled.

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

To respond to this issue using the mumi CLI, first switch to it
mumi current 68469
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