[bug#53704] Bump

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

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

Maxime Devos 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.
  
Maxime Devos 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.
  
Maxime Devos 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.
  
Maxime Devos 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.
  

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