diff mbox series

[bug#53704] Bump

Message ID 3c9dxjEeXYXD76uUQgjwTlqZOtOb7IFb8FX50AHQoH9bc-bapcr6kxnaouHjVYd3CaIPjKPiuUwZ6tx6VW-YRPKUMri5i_mLx4du5ux81a8=@protonmail.com
State New
Headers show
Series [bug#53704] Bump | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Charles Feb. 12, 2022, 12:30 a.m. UTC
Thanks for the review, Julien. Here is a new patch that includes your suggestions.

------- Original Message -------

On Friday, February 11th, 2022 at 1:05 AM, Julien Lepiller <julien@lepiller.eu> wrote:

> Your patch looks good, though I haven't tested yet. In your synopsis, it's "an emulator", not "a emulator". The patches should contain author information. Did you create them yourself? Did you get them from somewhere else?
>
> The gcc patch could be replaced with a phase that substitutes cc for gcc.
>
> You need to add the patches to gnu/local.mk.
>
> Thanks!
>
> On February 11, 2022 7:51:31 AM GMT+01:00, Charles via Guix-patches via <guix-patches@gnu.org> wrote:
>
> > Is there any chance this can get merged? If there is something wrong with the package, I am happy to fix it.

Comments

M Feb. 12, 2022, 9:54 a.m. UTC | #1
Charles via Guix-patches via schreef op za 12-02-2022 om 00:30 [+0000]:
> +               ((" cc ") " gcc "))))

This needs to be TARGET-gcc when cross-compiling, use cc-for-target:

((" cc ") (string-append " " ,(cc-for-target) " "))

Greetings,
Maxime.
M Feb. 12, 2022, 10:11 a.m. UTC | #2
Charles via Guix-patches via schreef op za 12-02-2022 om 00:30 [+0000]:
> ++        set(MY_C_LINKER_FLAGS ${MY_C_LINKER_FLAGS} "-Wl,-
> rpath,$ENV{LIBRARY_PATH}")

When cross-compiling, CROSS_LIBRARY_PATH needs to be used instead.
Usually, fiddling with rpaths manually is unnecessary, Guix does
that automatically in most situations.  I'll look into this.

Greetings,
Maxime.
M Feb. 12, 2022, 11:35 a.m. UTC | #3
Charles via Guix-patches via schreef op za 12-02-2022 om 00:30 [+0000]:
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url
> "https://github.com/visualboyadvance-m/visualboyadvance-m/")
> +             (commit (string-append "v" version))))
> +       (file-name (git-file-name name version))
> +       (sha256
> +        (base32
> "1kgpbvng3c12ws0dy92zc0azd94h0i3j4vm7b67zc8mi3pqsppdg"))
> +       (patches (search-patches "visualboyadvance-m-fix-
> rpath.patch"))))

The iniparser package is bundled in src/common/iniparser.c and
src/common/iniparser.h.

A part of a variant of zlib is in src/common/memgzio.c and
src/common/memgzio.h.  I think it's ok in this case, since it appears
to be modified for use in visualboyadvance-m.  However, the license of
zlib needs to be respected:

/* gzio.c -- IO on .gz files
 * Copyright (C) 1995-2002 Jean-loup Gailly.
 * For conditions of distribution and use, see copyright notice in
zlib.h
 *
 * Compile this file with -DNO_DEFLATE to avoid the compression code.
 */

I don't see zlib.h anywhere and the zlib license requires preserving
the license notice:

  3. This notice may not be removed or altered from any source
distribution.

There is another problem: the version in visualboyadvance-m is old
(2002, according to the copyright line) while there have been
quite a few bugfixes since then (https://www.zlib.net/ChangeLog.txt).

Another bundled library: src/common/dictionary.c and
src/common/dictionary.h.

There is also src/filters/bilinear.cpp which is extracted from Exult
(GPL2+ licensed), but it appears that the copyright+license header was
not preserved, while preserving that is a requirement of the GPL IIUC?

The files in src/filters/xBRZ are GPL3 licensed, so 'license:gpl2+'
in the package definition seems inaccurate.  It is unclear of GPL3-only
or GPL3-or-later was meant.

The file src/gba/debugger-expr-lex.cpp and src/gba/debugger-expr-
yacc.cpp are generated by flex and Bison, can they be generated during
the build?

libretro is bundled in src/libretro, can it be unbundled?

src/expr.cpp and src/expr.cpp.h are generated files, not source code.

A part of glibc is bundled in src/sdl/getopt1.c, src/sdl/getopt.c
and src/sdl/getopt.h.

wxwidgets is bundled in src/wx.

Greetings,
Maxime.
M Feb. 12, 2022, 12:17 p.m. UTC | #4
Maxime Devos schreef op za 12-02-2022 om 12:35 [+0100]:
> wxwidgets is bundled in src/wx.

Nevermind, it's only wxwidgets-related, not wxwidgets itself.

Greetings,
Maxime.
diff mbox series

Patch

From 3b03ca688dd33091d4e43754eaf3c74ad00cbd10 Mon Sep 17 00:00:00 2001
From: Charles <charles.b.jackson@protonmail.com>
Date: Tue, 1 Feb 2022 10:36:06 -0600
Subject: [PATCH] gnu: emulators: Add visualboyadvance-m.

* gnu/packages/emulators.scm (visualboyadvance-m): New variable.
* gnu/packages/patches/visualboyadvance-m-fix-rpath.patch: New patch.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/emulators.scm                    | 53 +++++++++++++++++++
 .../visualboyadvance-m-fix-rpath.patch        | 25 +++++++++
 3 files changed, 79 insertions(+)
 create mode 100644 gnu/packages/patches/visualboyadvance-m-fix-rpath.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 1b08b40b9c..5e6bceedfb 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1960,6 +1960,7 @@  dist_patch_DATA =						\
   %D%/packages/patches/vinagre-newer-freerdp.patch             \
   %D%/packages/patches/vinagre-newer-rdp-parameters.patch      \
   %D%/packages/patches/virglrenderer-CVE-2017-6386.patch 	\
+  %D%/packages/patches/visualboyadvance-m-fix-rpath.patch       \
   %D%/packages/patches/vsearch-unbundle-cityhash.patch		\
   %D%/packages/patches/vte-CVE-2012-2738-pt1.patch			\
   %D%/packages/patches/vte-CVE-2012-2738-pt2.patch			\
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 9ec73bc11f..ae4c395d78 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -17,6 +17,7 @@ 
 ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2022 Charles Jackson <charles.b.jackson@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -814,6 +815,58 @@  (define-public sameboy
 from an emulator---from save states to scaling filters.")
     (license license:expat)))
 
+(define-public visualboyadvance-m
+  (package
+    (name "visualboyadvance-m")
+    (version "2.1.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/visualboyadvance-m/visualboyadvance-m/")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1kgpbvng3c12ws0dy92zc0azd94h0i3j4vm7b67zc8mi3pqsppdg"))
+       (patches (search-patches "visualboyadvance-m-fix-rpath.patch"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:build-type "Release"
+       #:tests? #f
+       #:configure-flags
+       (list "-DENABLE_SSP=ON"
+             "-DENABLE_ONLINEUPDATES=OFF"
+             (string-append "-DCMAKE_PREFIX_PATH="
+                            (assoc-ref %build-inputs "wxwidgets")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'set-c-compiler
+           (lambda _
+             (substitute* "cmake/HostCompile.cmake"
+               ((" cc ") " gcc "))))
+         (add-before 'configure 'set-home
+           (lambda _ (setenv "HOME" (getcwd)))))))
+    (native-inputs (list
+                    gettext-minimal
+                    nasm
+                    pkg-config
+                    zip))
+    (inputs (list
+             ffmpeg
+             gtk+
+             libpng
+             mesa
+             openal
+             sdl2
+             sfml
+             wxwidgets
+             zlib))
+    (home-page "https://vba-m.com/")
+    (synopsis "Performant Nintendo Gameboy emulator")
+    (description "Visual Boy Advance M is an emulator of the Game Boy, Game Boy
+Color, and Game Boy Advance handheld game consoles.")
+    (license license:gpl2+)))
+
 (define-public mupen64plus-core
   (package
     (name "mupen64plus-core")
diff --git a/gnu/packages/patches/visualboyadvance-m-fix-rpath.patch b/gnu/packages/patches/visualboyadvance-m-fix-rpath.patch
new file mode 100644
index 0000000000..9116f35b2a
--- /dev/null
+++ b/gnu/packages/patches/visualboyadvance-m-fix-rpath.patch
@@ -0,0 +1,25 @@ 
+From 6ec4f4224aa360d5c233941148465ad1c8c77f33 Mon Sep 17 00:00:00 2001
+From: Charles Jackson <charles.b.jackson@protonmail.com>
+Date: Mon, 31 Jan 2022 23:24:17 -0600
+Subject: [PATCH] Fix rpath
+
+---
+ CMakeLists.txt | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 010c9b0e..3a959b59 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -610,9 +610,6 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL Clang)
+ 
+         set(MY_C_LINKER_FLAGS ${MY_C_LINKER_FLAGS} -Wl,-allow-multiple-definition)
+ 
+-        if(CMAKE_PREFIX_PATH)
+-            list(GET CMAKE_PREFIX_PATH 0 prefix_path_first)
+-            set(MY_C_LINKER_FLAGS ${MY_C_LINKER_FLAGS} "-Wl,-rpath-link=${prefix_path_first}/lib")
+-        endif()
++        set(MY_C_LINKER_FLAGS ${MY_C_LINKER_FLAGS} "-Wl,-rpath,$ENV{LIBRARY_PATH}")
+     endif()
+ 
+     # set linker flags
\ No newline at end of file
-- 
2.34.0