unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Rutger Helling <rhelling@mykolab.com>
To: "Björn Höfling" <bjoern.hoefling@bjoernhoefling.de>
Cc: 30380@debbugs.gnu.org
Subject: [bug#30380] gnu: Add dolphin-emu.
Date: Wed, 21 Feb 2018 10:48:52 +0100	[thread overview]
Message-ID: <20180221104852.77a2daa9@mykolab.com> (raw)
In-Reply-To: <20180220235208.54ae3b81@alma-ubu>


[-- Attachment #1.1: Type: text/plain, Size: 3044 bytes --]

Hi Björn,

Thanks for the review. I've added a phase to the patch that removes all
the file types that you mentioned entirely. 

I think that the only files that are truly needed to work are
"Data/Sys/GC/font_{western,japanese}.bin". Thankfully these two
files can be built from the source code. I've done that in the
'remove-more-binaries&generate-fonts phase as well.

On Tue, 20 Feb 2018 23:52:08 +0100
Björn Höfling <bjoern.hoefling@bjoernhoefling.de> wrote:

> Hi Rutger,
> 
> On Fri, 16 Feb 2018 10:20:46 +0100
> Rutger Helling <rhelling@mykolab.com> wrote:
> 
> > Hello everyone,
> > 
> > As promised I've updated these patches. Just to reiterate, these are
> > David's patches. I've only changed a few things.
> > 
> > Here's the changes of the top of my head:
> > * First patch is unchanged.
> > * Renamed to dolphin-emu instead of dolphin-emulator since that
> > seems like a more canonical name.
> > * Incorporated Björn's suggestions.
> > * Added a few more inputs to get rid of more externals.
> > * Enabled Qt interface.  
> 
> Thanks for taking another iteration of this. 
> 
> In my review of the first patch by David I stated that I haven't done
> a full review. I just mentioned some points I noticed, not all
> possible critics. I still haven't done a full review and found some
> more points.
> 
> As Dave said, this package bears some "friction": I'm still not
> convinced of it. For me this doesn't feel like a sound, perfect
> package. It is a collection of the emulators code plus binaries plus
> reverse-engineered codes and notes plus external documentation. 
> 
> I thought of quickly fixing it myself but I find it hard to
> figure out what of the Data and the docs directory is really part of
> the program (documentation) and what can safely be stripped away.
> 
> On the other hand there seams to be interest by at least 2-3 people to
> make a package out of that and I wouldn't say it's not possible.
> 
> Here is what I found that should be stripped away:
> 
> /review/dolphin-emu-5.0-0.d04b179-checkout$ find . -name "*.rar" -or
> -name "*.pdf" -or -name "*.bin" -or -name "*.pdf" -or -name "*.dsy"
> -or -name "*.jar" -or -name "*.exe" 
> 
> ./docs/WiiMote/Dumps/WiiMote_AttribTree_0x10001.bin
> ./docs/WiiMote/Dumps/WiiMote_AttribTree_0x10000.bin
> ./docs/WiiMote/Dumps/WiiMote_AttribTree_0x10000_strip.bin
> ./docs/WiiMote/Dumps/WiiMote_AttribTree_0x10001_strip.bin
> ./docs/WiiMote/Dumps/WiiMote_ServiceScan.bin
> ./docs/WiiMote/HID_SPEC_V10.rar
> ./docs/DSP/GC_DSP.pdf
> ./Installer/vcredist/vc_redist.x64.exe
> ./Source/Android/code-style-java.jar
> ./Source/Android/gradle/wrapper/gradle-wrapper.jar
> ./Data/Sys/Wii/shared2/wc24/nwc24dl.bin
> ./Data/Sys/Wii/shared2/wc24/misc.bin
> ./Data/Sys/Wii/shared2/wc24/nwc24fls.bin
> ./Data/Sys/Wii/shared2/wc24/nwc24fl.bin
> ./Data/Sys/GC/font_western.bin
> ./Data/Sys/GC/font_japanese.bin
> ./Data/Sys/totaldb.dsy
> ./Data/Sys/codehandler.bin
> 
> 
> Yours,
> 
> Björn
> 


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-gnu-Add-wxwidgets-gtk2-3.1.patch --]
[-- Type: text/x-patch, Size: 1058 bytes --]

From b09950c2847be7f17ea57906714f74a5ca2f671b Mon Sep 17 00:00:00 2001
From: David Thompson <davet@gnu.org>
Date: Wed, 7 Feb 2018 06:28:46 -0500
Subject: [PATCH 1/2] gnu: Add wxwidgets-gtk2-3.1.

* gnu/packages/wxwidgets.scm (wxwidgets-gtk2-3.1): New variable.
---
 gnu/packages/wxwidgets.scm | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm
index 84446d8ef..9f7a87ca4 100644
--- a/gnu/packages/wxwidgets.scm
+++ b/gnu/packages/wxwidgets.scm
@@ -126,6 +126,14 @@ and many other languages.")
               ((#:configure-flags flags)
                `(cons "--enable-mediactrl" ,flags))))))
 
+(define-public wxwidgets-gtk2-3.1
+  (package (inherit wxwidgets-3.1)
+           (inputs `(("gtk+" ,gtk+-2)
+                     ,@(alist-delete
+                        "gtk+"
+                        (package-inputs wxwidgets-3.1))))
+           (name "wxwidgets-gtk2")))
+
 (define-public python2-wxpython
   (package
     (name "python2-wxpython")
-- 
2.16.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.3: 0002-gnu-Add-dolphin-emu.patch --]
[-- Type: text/x-patch, Size: 7693 bytes --]

From f1833eb828326705e2ff5693f05b1b5fd4b0de33 Mon Sep 17 00:00:00 2001
From: Rutger Helling <rhelling@mykolab.com>
Date: Wed, 21 Feb 2018 10:35:44 +0100
Subject: [PATCH 2/2] gnu: Add dolphin-emu.

* gnu/packages/games.scm (dolphin-emu): New variable.
---
 gnu/packages/games.scm | 132 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 131 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 0ac7d992c..eaab55cee 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2014, 2015, 2016 David Thompson <dthompson2@worcester.edu>
+;;; Copyright © 2014, 2015, 2016, 2018 David Thompson <dthompson2@worcester.edu>
 ;;; Copyright © 2014, 2015, 2016, 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
 ;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
@@ -89,6 +89,7 @@
   #:use-module (gnu packages libcanberra)
   #:use-module (gnu packages libedit)
   #:use-module (gnu packages libunwind)
+  #:use-module (gnu packages libusb)
   #:use-module (gnu packages haskell)
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages music)
@@ -113,6 +114,7 @@
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages bash)
+  #:use-module (gnu packages digest)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages compression)
@@ -5767,3 +5769,131 @@ Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
                    (license:non-copyleft ; modified dumb
                     "file://dumb/licence.txt"
                     "Dumb license, explicitly GPL compatible.")))))
+
+;; Building from recent Git because the official 5.0 release no longer builds.
+(define-public dolphin-emu
+  (let ((commit "d04b179111f8d863f360839474cb82c766f762b8")
+        (revision "0"))
+    (package
+      (name "dolphin-emu")
+      (version (git-version "5.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/dolphin-emu/dolphin.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (for-each delete-file-recursively
+                            ; Remove external stuff we don't need.
+                            '("Externals/LZO"
+                              "Externals/OpenAL"
+                              "Externals/Qt"
+                              "Externals/SFML"
+                              "Externals/SOIL"
+                              "Externals/curl"
+                              "Externals/ffmpeg"
+                              "Externals/gettext"
+                              "Externals/hidapi"
+                              "Externals/libpng"
+                              "Externals/libusb"
+                              "Externals/mbedtls"
+                              "Externals/miniupnpc"
+                              "Externals/wxWidgets3"
+                              "Externals/zlib"))
+                  #t))
+         (sha256
+          (base32
+           "0g725wmhlim73zrhi47wmr1bmplpy4b7sbimd5pm8xpfhj5nm10l"))))
+      (build-system cmake-build-system)
+      (arguments
+       '(#:tests? #f
+         ;; The FindGTK2 cmake script only checks hardcoded directories for
+         ;; glib/gtk headers.
+
+         #:phases
+         (modify-phases %standard-phases
+           (add-before 'configure 'remove-more-binaries&generate-fonts
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let ((fontfile
+                      (string-append (assoc-ref inputs "font-wqy-microhei")
+                                     "/share/fonts/truetype/wqy-microhei.ttc")))
+                 (for-each delete-file (find-files "." "\\.bin$"))
+                 (for-each delete-file (find-files "." "\\.dsy$"))
+                 (for-each delete-file (find-files "." "\\.exe$"))
+                 (for-each delete-file (find-files "." "\\.jar$"))
+                 (for-each delete-file (find-files "." "\\.pdf$"))
+                 (for-each delete-file (find-files "." "\\.rar$"))
+                 (chdir "docs")
+                 (invoke "bash" "-c" "g++ -O2 -std=c++11 $(freetype-config \
+--cflags --libs) gc-font-tool.cpp -o gc-font-tool")
+                 (invoke "./gc-font-tool" "a" fontfile "font_western.bin")
+                 (invoke "./gc-font-tool" "s" fontfile "font_japanese.bin")
+                 (copy-file "font_japanese.bin" "../Data/Sys/GC/font_japanese.bin")
+                 (copy-file "font_western.bin" "../Data/Sys/GC/font_western.bin")
+                 (chdir "..")
+                 #t))))
+
+         #:configure-flags
+         (list (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
+                              (assoc-ref %build-inputs "gtk+")
+                              "/lib/gtk-2.0/include")
+               (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
+                              (assoc-ref %build-inputs "glib")
+                              "/lib/glib-2.0/include")
+               (string-append "-DX11_INCLUDE_DIR="
+                              (assoc-ref %build-inputs "libx11")
+                              "/include")
+               (string-append "-DX11_LIBRARIES="
+                              (assoc-ref %build-inputs "libx11")
+                              "/lib/libX11.so")
+               "-DX11_FOUND=1")))
+      ; TODO: Make Vulkan backend work.
+      (native-inputs
+       `(("pkg-config" ,pkg-config)
+         ("gettext" ,gnu-gettext)))
+      (inputs
+       `(("alsa-lib" ,alsa-lib)
+         ("ao" ,ao)
+         ("bluez" ,bluez)
+         ("curl" ,curl)
+         ("eudev" ,eudev)
+         ("ffmpeg" ,ffmpeg)
+         ("font-wqy-microhei" ,font-wqy-microhei)
+         ("freetype" ,freetype)
+         ("glew" ,glew)
+         ("glib" ,glib)
+         ("glu" ,glu)
+         ("gtk+" ,gtk+-2)
+         ("hidapi" ,hidapi)
+         ("libevdev" ,libevdev)
+         ("libpng" ,libpng)
+         ("libusb" ,libusb)
+         ("libx11" ,libx11)
+         ("libxi" ,libxi)
+         ("libxrandr" ,libxrandr)
+         ("lzo" ,lzo)
+         ("mbedtls-apache" ,mbedtls-apache)
+         ("mesa" ,mesa)
+         ("miniupnpc" ,miniupnpc)
+         ("openal" ,openal)
+         ("pulseaudio" ,pulseaudio)
+         ("qtbase" ,qtbase)
+         ("sdl2" ,sdl2)
+         ("sfml" ,sfml)
+         ("soil" ,soil)
+         ("soundtouch" ,soundtouch)
+         ("wxwidgets" ,wxwidgets-gtk2-3.1)
+         ("zlib" ,zlib)))
+      (home-page "https://dolphin-emu.org/")
+      (synopsis "Nintendo Wii and GameCube emulator")
+      (description
+       "Dolphin is an emulator for two Nintendo video game consoles: the
+GameCube and the Wii.  It provides compatibility with all PC controllers,
+turbo speed, networked multiplayer, and graphical enhancements.")
+      (supported-systems '("x86_64-linux")) ; TODO: should also work on ARM64.
+      ; dolphin/Data/Sys/GC/font_*.bin: Licensed under ASL2.0.
+      (license (list license:gpl2+ license:asl2.0)))))
-- 
2.16.2


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

  reply	other threads:[~2018-02-21  9:50 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-07 16:58 [bug#30380] gnu: Add dolphin-emulator Thompson, David
2018-02-07 20:43 ` Björn Höfling
2018-02-07 20:53   ` Thompson, David
2018-02-09 10:21     ` Ludovic Courtès
2018-02-09 14:11       ` Thompson, David
2018-02-09 15:52         ` Manolis Ragkousis
2018-02-09 16:10           ` Thompson, David
2018-02-16  9:20 ` [bug#30380] gnu: Add dolphin-emu Rutger Helling
2018-02-20 22:52   ` Björn Höfling
2018-02-21  9:48     ` Rutger Helling [this message]
2018-02-21 15:19       ` Marius Bakke
2018-02-21 15:55         ` Rutger Helling
2018-02-21 16:37     ` Leo Famulari
2018-02-21 21:55       ` Björn Höfling
2018-02-22  8:46         ` bug#30380: " Rutger Helling

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180221104852.77a2daa9@mykolab.com \
    --to=rhelling@mykolab.com \
    --cc=30380@debbugs.gnu.org \
    --cc=bjoern.hoefling@bjoernhoefling.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).