* [bug#31672] [PATCH 0/2] Add Mame
@ 2018-05-31 19:39 Nicolas Goaziou
2018-05-31 19:44 ` [bug#31672] [PATCH 1/2] gnu: asio: New variable Nicolas Goaziou
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: Nicolas Goaziou @ 2018-05-31 19:39 UTC (permalink / raw)
To: 31672
Hello,
The following patch set adds Mame.
Feedback welcome.
Regards,
Nicolas Goaziou (2):
gnu: asio: New variable.
gnu: mame: New variable.
gnu/packages/emulators.scm | 170 ++++++++++++++++++++++++++++++++++++
gnu/packages/networking.scm | 44 ++++++++++
2 files changed, 214 insertions(+)
--
2.17.0
^ permalink raw reply [flat|nested] 12+ messages in thread
* [bug#31672] [PATCH 1/2] gnu: asio: New variable.
2018-05-31 19:39 [bug#31672] [PATCH 0/2] Add Mame Nicolas Goaziou
@ 2018-05-31 19:44 ` Nicolas Goaziou
2018-05-31 19:44 ` [bug#31672] [PATCH 2/2] gnu: mame: " Nicolas Goaziou
2018-06-01 3:10 ` [bug#31672] [PATCH 0/2] Add Mame Eric Bavier
2018-06-01 11:27 ` Rutger Helling
2 siblings, 1 reply; 12+ messages in thread
From: Nicolas Goaziou @ 2018-05-31 19:44 UTC (permalink / raw)
To: 31672
* gnu/packages/networking.scm (asio): New variable.
---
gnu/packages/networking.scm | 44 +++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index d4cfffcc3..ba359b9a8 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -56,6 +56,7 @@
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages bison)
+ #:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages code)
#:use-module (gnu packages compression)
@@ -1856,3 +1857,46 @@ eight bytes) tools
@end itemize")
;; Either BSD-3 or GPL-2 can be used.
(license (list license:bsd-3 license:gpl2))))
+
+(define-public asio
+ (package
+ (name "asio")
+ (version "1.12.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/chriskohlhoff/asio.git")
+ (commit (string-join (cons name (string-split version #\.))
+ "-"))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "04dg8kpgriay7q62mqcq2gl439k5y4mf761zghsd6wfl0farh3mx"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)))
+ (inputs
+ `(("boost" ,boost)
+ ("openssl" ,openssl)))
+ (arguments
+ `(#:configure-flags
+ (list
+ (string-append "--with-boost=" (assoc-ref %build-inputs "boost"))
+ (string-append "--with-openssl=" (assoc-ref %build-inputs "openssl")))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'chdir-to-asio
+ (lambda _
+ (chdir "asio")))
+ (add-before 'configure 'bootstrap
+ (lambda _
+ (invoke "sh" "autogen.sh"))))))
+ (home-page "https://think-async.com/Asio")
+ (synopsis "C++ library for ASynchronous network I/O")
+ (description "Asio is a cross-platform C++ library for network and
+low-level I/O programming that provides developers with a consistent
+asynchronous model using a modern C++ approach.")
+ (license license:boost1.0)))
--
2.17.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [bug#31672] [PATCH 2/2] gnu: mame: New variable.
2018-05-31 19:44 ` [bug#31672] [PATCH 1/2] gnu: asio: New variable Nicolas Goaziou
@ 2018-05-31 19:44 ` Nicolas Goaziou
0 siblings, 0 replies; 12+ messages in thread
From: Nicolas Goaziou @ 2018-05-31 19:44 UTC (permalink / raw)
To: 31672
* gnu/packages/emulators.scm (mame): New variable.
---
gnu/packages/emulators.scm | 170 +++++++++++++++++++++++++++++++++++++
1 file changed, 170 insertions(+)
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index c354386bd..19872b009 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -56,13 +56,19 @@
#:use-module (gnu packages libedit)
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages lua)
+ #:use-module (gnu packages maths)
#:use-module (gnu packages mp3)
+ #:use-module (gnu packages music)
#:use-module (gnu packages ncurses)
+ #:use-module (gnu packages networking)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
#:use-module (gnu packages qt)
#:use-module (gnu packages sdl)
+ #:use-module (gnu packages texinfo)
+ #:use-module (gnu packages textutils)
#:use-module (gnu packages tls)
#:use-module (gnu packages upnp)
#:use-module (gnu packages video)
@@ -72,6 +78,7 @@
#:use-module (gnu packages xiph)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
+ #:use-module (gnu packages web)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu))
@@ -1167,3 +1174,166 @@ already have their data files. The clever part about this: ScummVM
just replaces the executables shipped with the games, allowing you to
play them on systems for which they were never designed!")
(license license:gpl2+)))
+
+(define-public mame
+ (package
+ (name "mame")
+ (version "0.198")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mamedev/mame.git")
+ (commit (apply string-append "mame" (string-split version #\.)))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0kl7qll8d6xlx7bj5920ljs888a6nc1fj2kfw1fz0r8za3m7wiq9"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Remove bundled libraries.
+ '(begin
+ (with-directory-excursion "3rdparty"
+ (for-each delete-file-recursively
+ '("asio" "expat" "glm" "libflac" "libjpeg" "lua"
+ "portaudio" "portmidi" "pugixml" "rapidjson" "SDL2"
+ "SDL2-override" "sqlite3" "utf8proc" "zlib")))
+ #t))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags
+ (map (lambda (lib)
+ (string-append "USE_SYSTEM_LIB_" (string-upcase lib) "=1"))
+ '("asio" "expat" "flac" "glm" "jpeg" "lua" "portaudio" "portmidi"
+ "pugixml" "rapidjson" "sqlite3" "utf8proc" "zlib"))
+ #:tests? #f ;no test in regular release
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-after 'build 'build-documentation
+ (lambda _ (invoke "make" "-C" "docs" "man" "info")))
+ (replace 'install
+ ;; Upstream does not provide an installation phase.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (share (string-append out "/share/mame")))
+ ;; Install data.
+ (for-each (lambda (dir)
+ (copy-recursively dir (string-append share "/" dir)))
+ '("artwork" "bgfx" "ctrlr" "hash" "ini" "language"
+ "plugins" "samples"))
+ (let ((keymaps (string-append share "/keymaps")))
+ (for-each (lambda (file) (install-file file keymaps))
+ (find-files "keymaps" ".*LINUX\\.map")))
+ (let ((fonts (string-append share "/fonts")))
+ (install-file "uismall.bdf" fonts))
+ (install-file "mame64" share)
+ ;; Create "mame" executable. MAME expects to be called from
+ ;; the directory where the "mame64" directory lives. Since we
+ ;; cannot afford to do that, we start a sub-shell in the
+ ;; appropriate directory.
+ (let* ((bin (string-append out "/bin"))
+ (script (string-append bin "/mame")))
+ (mkdir-p bin)
+ (with-output-to-file script
+ (lambda _
+ (format #t
+ "#!~a\n(cd ~a && exec ./mame64 \"$@\")~%"
+ (which "sh") share)))
+ (chmod script #o555)))
+ #t))
+ (add-after 'install 'install-documentation
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (man (string-append out "/share/man/man1"))
+ (info (string-append out "/share/info")))
+ (install-file "docs/build/man/MAME.1" man)
+ (install-file "docs/build/texinfo/MAME.info" info))
+ #t))
+ (add-after 'install 'install-ini-file
+ ;; Generate an ini file so as to set some directories (e.g., roms)
+ ;; to a writable location, i.e., "$HOME/.mame/" and "$HOME/mame/".
+ ;; It must be located in the same directory as the executable
+ ;; "mame64", otherwise MAME cannot find it.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (share (string-append out "/share/mame")))
+ (with-output-to-file (string-append share "/mame.ini")
+ (lambda _
+ (format #t
+ "inipath $HOME/.mame;.;ini~@
+ homepath $HOME/mame~@
+ rompath $HOME/mame/roms~@
+ samplepath $HOME/mame/samples;samples~@
+ cheatpath $HOME/mame/cheat~@
+ artpath $HOME/mame/artwork;artwork~@
+ crosshairpath $HOME/mame/crosshair~@
+ hashpath hash~@
+ fontpath fonts~@
+ ctrlrpath ctrlr~@
+ bgfx_path bgfx~@
+ pluginspath plugins~@
+ languagepath language~@
+ cfg_directory $HOME/.mame/cfg~@
+ nvram_directory $HOME/.mame/nvram~@
+ input_directory $HOME/.mame/inp~@
+ state_directory $HOME/.mame/sta~@
+ snapshot_directory $HOME/.mame/snap~@
+ diff_directory $HOME/.mame/diff~@
+ comment_directory $HOME/.mame/comments~%")))
+ #t)))
+ (add-after 'install 'install-desktop-file
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (desktop (string-append out "/share/applications"))
+ (executable (string-append out "/bin/mame")))
+ (mkdir-p desktop)
+ (with-output-to-file (string-append desktop "/mame.desktop")
+ (lambda _
+ (format #t
+ "[Desktop Entry]~@
+ Name=~a~@
+ Comment=Multi-purpose emulation framework~@
+ Exec=~a~@
+ TryExec=~@*~a~@
+ Terminal=false~@
+ Type=Application~@
+ Categories=Game;Emulator;~@
+ Keywords=Game;Emulator;Arcade;~%"
+ ,name executable)))
+ #t))))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("pugixml" ,pugixml)
+ ("python-sphinx" ,python-sphinx)
+ ("texinfo" ,texinfo)))
+ (inputs
+ `(("alsa-lib" ,alsa-lib)
+ ("asio" ,asio)
+ ("expat" ,expat)
+ ("flac" ,flac)
+ ("fontconfig" ,fontconfig)
+ ("glm" ,glm)
+ ("libjpeg" ,libjpeg-8) ;jpeg_read_header argument error in libjpeg-9
+ ("libxinerama" ,libxinerama)
+ ("lua" ,lua)
+ ("portaudio" ,portaudio)
+ ("portmidi" ,portmidi)
+ ("python-wrapper" ,python-wrapper)
+ ("qtbase" ,qtbase)
+ ("rapidjson" ,rapidjson)
+ ("sdl" ,(sdl-union (list sdl2 sdl2-ttf)))
+ ("sqlite" ,sqlite)
+ ("utf8proc" ,utf8proc)
+ ("zlib" ,zlib)))
+ (home-page "http://mamedev.org/")
+ (synopsis "Multi-purpose emulation framework")
+ (description "MAME's purpose is to preserve decades of software
+history. As electronic technology continues to rush forward, MAME
+prevents this important @emph{vintage} software from being lost and
+forgotten. This is achieved by documenting the hardware and how it
+functions. The source code to MAME serves as this documentation.")
+ ;; The MAME project as a whole is distributed under the terms of GPL2+.
+ ;; However, over 90% of the files are under Expat license. Also, artwork,
+ ;; keymaps, languages and samples are under CC0.
+ (license (list license:gpl2+ license:expat license:cc0))))
--
2.17.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [bug#31672] [PATCH 0/2] Add Mame
2018-05-31 19:39 [bug#31672] [PATCH 0/2] Add Mame Nicolas Goaziou
2018-05-31 19:44 ` [bug#31672] [PATCH 1/2] gnu: asio: New variable Nicolas Goaziou
@ 2018-06-01 3:10 ` Eric Bavier
2018-06-01 22:05 ` Nicolas Goaziou
2018-06-01 11:27 ` Rutger Helling
2 siblings, 1 reply; 12+ messages in thread
From: Eric Bavier @ 2018-06-01 3:10 UTC (permalink / raw)
To: 31672, mail
[-- Attachment #1: Type: text/plain, Size: 744 bytes --]
I haven't reviewed the patches properly, but just wondering whether/how these patches relate to those posted a while back to add MAME and the resulting discussion there.
I will try to give these patches a try in the next few days.
On May 31, 2018 2:39:23 PM CDT, Nicolas Goaziou <mail@nicolasgoaziou.fr> wrote:
>Hello,
>
>The following patch set adds Mame.
>
>Feedback welcome.
>
>Regards,
>
>Nicolas Goaziou (2):
> gnu: asio: New variable.
> gnu: mame: New variable.
>
> gnu/packages/emulators.scm | 170 ++++++++++++++++++++++++++++++++++++
> gnu/packages/networking.scm | 44 ++++++++++
> 2 files changed, 214 insertions(+)
>
>--
>2.17.0
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.
[-- Attachment #2: Type: text/html, Size: 1009 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* [bug#31672] [PATCH 0/2] Add Mame
2018-05-31 19:39 [bug#31672] [PATCH 0/2] Add Mame Nicolas Goaziou
2018-05-31 19:44 ` [bug#31672] [PATCH 1/2] gnu: asio: New variable Nicolas Goaziou
2018-06-01 3:10 ` [bug#31672] [PATCH 0/2] Add Mame Eric Bavier
@ 2018-06-01 11:27 ` Rutger Helling
2018-06-02 17:21 ` Nicolas Goaziou
2 siblings, 1 reply; 12+ messages in thread
From: Rutger Helling @ 2018-06-01 11:27 UTC (permalink / raw)
To: ericbavier; +Cc: 31672
[-- Attachment #1: Type: text/plain, Size: 145 bytes --]
The patches LGTM and I've succesfully built MAME with them. Unless
there's some specific reason why we can't I think it's fine to include
it.
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* [bug#31672] [PATCH 0/2] Add Mame
2018-06-01 3:10 ` [bug#31672] [PATCH 0/2] Add Mame Eric Bavier
@ 2018-06-01 22:05 ` Nicolas Goaziou
0 siblings, 0 replies; 12+ messages in thread
From: Nicolas Goaziou @ 2018-06-01 22:05 UTC (permalink / raw)
To: Eric Bavier; +Cc: 31672
Hello,
Eric Bavier <ericbavier@centurylink.net> writes:
> I haven't reviewed the patches properly, but just wondering
> whether/how these patches relate to those posted a while back to add
> MAME and the resulting discussion there.
I'm not the author of the original MAME patch.
They are also very different (you can compare the current patch with
<https://notabug.org/rain1/pkgs/src/master/rain/mame.scm>)
Regards,
--
Nicolas Goaziou 0x80A93738
^ permalink raw reply [flat|nested] 12+ messages in thread
* [bug#31672] [PATCH 0/2] Add Mame
2018-06-01 11:27 ` Rutger Helling
@ 2018-06-02 17:21 ` Nicolas Goaziou
2018-06-02 17:57 ` Nicolas Goaziou
0 siblings, 1 reply; 12+ messages in thread
From: Nicolas Goaziou @ 2018-06-02 17:21 UTC (permalink / raw)
To: Rutger Helling; +Cc: 31672
[-- Attachment #1: Type: text/plain, Size: 393 bytes --]
Hello,
Rutger Helling <rhelling@mykolab.com> writes:
> The patches LGTM and I've succesfully built MAME with them. Unless
> there's some specific reason why we can't I think it's fine to include
> it.
Great. Thank you.
I'm updating the package with more default settings while waiting for
the "go".
Regards,
--
Nicolas Goaziou 0x80A93738
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: mame (v2) --]
[-- Type: text/x-diff, Size: 11412 bytes --]
From 8af50f9208db13ae9461ee73112a6505211518d0 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <mail@nicolasgoaziou.fr>
Date: Thu, 31 May 2018 17:08:10 +0200
Subject: [PATCH 2/2] gnu: mame: New variable.
* gnu/packages/emulators.scm (mame): New variable.
---
gnu/packages/emulators.scm | 193 +++++++++++++++++++++++++++++++++++++
1 file changed, 193 insertions(+)
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index c354386bd..e1a742426 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -56,13 +56,19 @@
#:use-module (gnu packages libedit)
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages lua)
+ #:use-module (gnu packages maths)
#:use-module (gnu packages mp3)
+ #:use-module (gnu packages music)
#:use-module (gnu packages ncurses)
+ #:use-module (gnu packages networking)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
#:use-module (gnu packages qt)
#:use-module (gnu packages sdl)
+ #:use-module (gnu packages texinfo)
+ #:use-module (gnu packages textutils)
#:use-module (gnu packages tls)
#:use-module (gnu packages upnp)
#:use-module (gnu packages video)
@@ -72,6 +78,7 @@
#:use-module (gnu packages xiph)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
+ #:use-module (gnu packages web)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu))
@@ -1167,3 +1174,189 @@ already have their data files. The clever part about this: ScummVM
just replaces the executables shipped with the games, allowing you to
play them on systems for which they were never designed!")
(license license:gpl2+)))
+
+(define-public mame
+ (package
+ (name "mame")
+ (version "0.198")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mamedev/mame.git")
+ (commit (apply string-append "mame" (string-split version #\.)))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0kl7qll8d6xlx7bj5920ljs888a6nc1fj2kfw1fz0r8za3m7wiq9"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Remove bundled libraries.
+ '(begin
+ (with-directory-excursion "3rdparty"
+ (for-each delete-file-recursively
+ '("asio" "expat" "glm" "libflac" "libjpeg" "lua"
+ "portaudio" "portmidi" "pugixml" "rapidjson" "SDL2"
+ "SDL2-override" "sqlite3" "utf8proc" "zlib")))
+ #t))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags
+ (map (lambda (lib)
+ (string-append "USE_SYSTEM_LIB_" (string-upcase lib) "=1"))
+ '("asio" "expat" "flac" "glm" "jpeg" "lua" "portaudio" "portmidi"
+ "pugixml" "rapidjson" "sqlite3" "utf8proc" "zlib"))
+ #:tests? #f ;no test in regular release
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-after 'build 'build-documentation
+ (lambda _ (invoke "make" "-C" "docs" "man" "info")))
+ (replace 'install
+ ;; Upstream does not provide an installation phase.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (share (string-append out "/share/mame")))
+ ;; Install data.
+ (for-each (lambda (dir)
+ (copy-recursively dir (string-append share "/" dir)))
+ '("artwork" "bgfx" "ctrlr" "hash" "ini" "language"
+ "plugins" "samples"))
+ (let ((keymaps (string-append share "/keymaps")))
+ (for-each (lambda (file) (install-file file keymaps))
+ (find-files "keymaps" ".*LINUX\\.map")))
+ (let ((fonts (string-append share "/fonts")))
+ (install-file "uismall.bdf" fonts))
+ (install-file "mame64" share)
+ ;; Create "mame" executable. MAME expects to be called from
+ ;; the directory where the "mame64" directory lives. Since we
+ ;; cannot afford to do that, we start a sub-shell in the
+ ;; appropriate directory.
+ (let* ((bin (string-append out "/bin"))
+ (script (string-append bin "/mame")))
+ (mkdir-p bin)
+ (with-output-to-file script
+ (lambda _
+ (format #t
+ "#!~a\n~a/mame64 -inipath ~a/mame \"$@\"~%"
+ (which "sh") share share)))
+ (chmod script #o555)))
+ #t))
+ (add-after 'install 'install-documentation
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (man (string-append out "/share/man/man1"))
+ (info (string-append out "/share/info")))
+ (install-file "docs/build/man/MAME.1" man)
+ (install-file "docs/build/texinfo/MAME.info" info))
+ #t))
+ (add-after 'install 'install-ini-file
+ ;; Generate an ini file so as to set some directories (e.g., roms)
+ ;; to a writable location, i.e., "$HOME/.mame/" and "$HOME/mame/".
+ ;; It must be located in the same directory as the executable
+ ;; "mame64", otherwise MAME cannot find it.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (share (string-append out "/share/mame")))
+ (with-output-to-file (string-append share "/mame.ini")
+ (lambda _
+ (format #t
+ "inipath $HOME/.mame;.;ini~@
+ homepath $HOME/mame~@
+ rompath $HOME/mame/roms~@
+ samplepath $HOME/mame/samples;samples~@
+ cheatpath $HOME/mame/cheat~@
+ artpath $HOME/mame/artwork;artwork~@
+ crosshairpath $HOME/mame/crosshair~@
+ snapshot_directory $HOME/mame/snapshots~@
+ hashpath hash~@
+ fontpath $HOME/mame/fonts;fonts~@
+ ctrlrpath $HOME/mame/ctrlr;ctrlr~@
+ bgfx_path bgfx~@
+ pluginspath $HOME/mame/plugins;plugins~@
+ languagepath language~@
+ cfg_directory $HOME/.mame/cfg~@
+ nvram_directory $HOME/.mame/nvram~@
+ input_directory $HOME/.mame/inp~@
+ state_directory $HOME/.mame/sta~@
+ diff_directory $HOME/.mame/diff~@
+ comment_directory $HOME/.mame/comments~%")))
+ (with-output-to-file (string-append share "/ui.ini")
+ (lambda _
+ (format #t
+ "historypath $HOME/mame/history~@
+ categorypath $HOME/mame/folders~@
+ cabinets_directory $HOME/mame/cabinets~@
+ cpanels_directory $HOME/mame/cpanel~@
+ pcbs_directory $HOME/mame/pcb~@
+ flyers_directory $HOME/mame/flyers~@
+ titles_directory $HOME/mame/titles~@
+ ends_directory $HOME/mame/ends~@
+ marquees_directory $HOME/mame/marquees~@
+ artwork_preview_directory $HOME/mame/artpreview~@
+ bosses_directory $HOME/mame/bosses~@
+ logos_directory $HOME/mame/logo~@
+ scores_directory $HOME/mame/scores~@
+ versus_directory $HOME/mame/versus~@
+ gameover_directory $HOME/mame/gameover~@
+ howto_directory $HOME/mame/howto~@
+ select_directory $HOME/mame/select~@
+ icons_directory $HOME/mame/icons~@
+ covers_directory $HOME/mame/covers~@
+ ui_path $HOME/.mame/ui~%")))
+ #t)))
+ (add-after 'install 'install-desktop-file
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (desktop (string-append out "/share/applications"))
+ (executable (string-append out "/bin/mame")))
+ (mkdir-p desktop)
+ (with-output-to-file (string-append desktop "/mame.desktop")
+ (lambda _
+ (format #t
+ "[Desktop Entry]~@
+ Name=~a~@
+ Comment=Multi-purpose emulation framework~@
+ Exec=~a~@
+ TryExec=~@*~a~@
+ Terminal=false~@
+ Type=Application~@
+ Categories=Game;Emulator;~@
+ Keywords=Game;Emulator;Arcade;~%"
+ ,name executable)))
+ #t))))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("pugixml" ,pugixml)
+ ("python-sphinx" ,python-sphinx)
+ ("texinfo" ,texinfo)))
+ (inputs
+ `(("alsa-lib" ,alsa-lib)
+ ("asio" ,asio)
+ ("expat" ,expat)
+ ("flac" ,flac)
+ ("fontconfig" ,fontconfig)
+ ("glm" ,glm)
+ ("libjpeg" ,libjpeg-8) ;jpeg_read_header argument error in libjpeg-9
+ ("libxinerama" ,libxinerama)
+ ("lua" ,lua)
+ ("portaudio" ,portaudio)
+ ("portmidi" ,portmidi)
+ ("python-wrapper" ,python-wrapper)
+ ("qtbase" ,qtbase)
+ ("rapidjson" ,rapidjson)
+ ("sdl" ,(sdl-union (list sdl2 sdl2-ttf)))
+ ("sqlite" ,sqlite)
+ ("utf8proc" ,utf8proc)
+ ("zlib" ,zlib)))
+ (home-page "http://mamedev.org/")
+ (synopsis "Multi-purpose emulation framework")
+ (description "MAME's purpose is to preserve decades of software
+history. As electronic technology continues to rush forward, MAME
+prevents this important @emph{vintage} software from being lost and
+forgotten. This is achieved by documenting the hardware and how it
+functions. The source code to MAME serves as this documentation.")
+ ;; The MAME project as a whole is distributed under the terms of GPL2+.
+ ;; However, over 90% of the files are under Expat license. Also, artwork,
+ ;; keymaps, languages and samples are under CC0.
+ (license (list license:gpl2+ license:expat license:cc0))))
--
2.17.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [bug#31672] [PATCH 0/2] Add Mame
2018-06-02 17:21 ` Nicolas Goaziou
@ 2018-06-02 17:57 ` Nicolas Goaziou
2018-06-03 22:22 ` Nicolas Goaziou
0 siblings, 1 reply; 12+ messages in thread
From: Nicolas Goaziou @ 2018-06-02 17:57 UTC (permalink / raw)
To: Rutger Helling; +Cc: 31672
Correcting myself,
Nicolas Goaziou <mail@nicolasgoaziou.fr> writes:
> + ;; Create "mame" executable. MAME expects to be called from
> + ;; the directory where the "mame64" directory lives. Since we
> + ;; cannot afford to do that, we start a sub-shell in the
> + ;; appropriate directory.
> + (let* ((bin (string-append out "/bin"))
> + (script (string-append bin "/mame")))
> + (mkdir-p bin)
> + (with-output-to-file script
> + (lambda _
> + (format #t
> + "#!~a\n~a/mame64 -inipath ~a/mame \"$@\"~%"
> + (which "sh") share share)))
Oops. Wrong patch. I meant:
(with-output-to-file script
(lambda _
(format #t
"#!~a\n(cd ~a/share/mame && exec ./mame64 \"$@\"~%"
(which "sh") share)))
Anyway, this is not totally satisfactory because one cannot use, e.g.,
"mame -createconfig" and have ini files generated in current directory.
I don't know how to fix that issue.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [bug#31672] [PATCH 0/2] Add Mame
2018-06-02 17:57 ` Nicolas Goaziou
@ 2018-06-03 22:22 ` Nicolas Goaziou
2018-06-04 15:56 ` Rutger Helling
2018-06-08 13:32 ` Ludovic Courtès
0 siblings, 2 replies; 12+ messages in thread
From: Nicolas Goaziou @ 2018-06-03 22:22 UTC (permalink / raw)
To: Rutger Helling; +Cc: 31672
[-- Attachment #1: Type: text/plain, Size: 286 bytes --]
Nicolas Goaziou <mail@nicolasgoaziou.fr> writes:
> Anyway, this is not totally satisfactory because one cannot use, e.g.,
> "mame -createconfig" and have ini files generated in current directory.
>
> I don't know how to fix that issue.
The following may be an acceptable compromise.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Mame (v3) --]
[-- Type: text/x-diff, Size: 11296 bytes --]
From c0c5ec4dcf374f13fc7928053f351f67353e3d6f Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <mail@nicolasgoaziou.fr>
Date: Thu, 31 May 2018 17:08:10 +0200
Subject: [PATCH 2/2] gnu: mame: New variable.
* gnu/packages/emulators.scm (mame): New variable.
---
gnu/packages/emulators.scm | 191 +++++++++++++++++++++++++++++++++++++
1 file changed, 191 insertions(+)
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index c354386bd..7b20e2d0c 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -56,13 +56,19 @@
#:use-module (gnu packages libedit)
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages lua)
+ #:use-module (gnu packages maths)
#:use-module (gnu packages mp3)
+ #:use-module (gnu packages music)
#:use-module (gnu packages ncurses)
+ #:use-module (gnu packages networking)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
#:use-module (gnu packages qt)
#:use-module (gnu packages sdl)
+ #:use-module (gnu packages texinfo)
+ #:use-module (gnu packages textutils)
#:use-module (gnu packages tls)
#:use-module (gnu packages upnp)
#:use-module (gnu packages video)
@@ -72,6 +78,7 @@
#:use-module (gnu packages xiph)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
+ #:use-module (gnu packages web)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu))
@@ -1167,3 +1174,187 @@ already have their data files. The clever part about this: ScummVM
just replaces the executables shipped with the games, allowing you to
play them on systems for which they were never designed!")
(license license:gpl2+)))
+
+(define-public mame
+ (package
+ (name "mame")
+ (version "0.198")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mamedev/mame.git")
+ (commit (apply string-append "mame" (string-split version #\.)))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0kl7qll8d6xlx7bj5920ljs888a6nc1fj2kfw1fz0r8za3m7wiq9"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Remove bundled libraries.
+ '(begin
+ (with-directory-excursion "3rdparty"
+ (for-each delete-file-recursively
+ '("asio" "expat" "glm" "libflac" "libjpeg" "lua"
+ "portaudio" "portmidi" "pugixml" "rapidjson" "SDL2"
+ "SDL2-override" "sqlite3" "utf8proc" "zlib")))
+ #t))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags
+ (cons*
+ (string-append "QT_HOME=" (assoc-ref %build-inputs "qtbase"))
+ (string-append "SDL_INI_PATH="
+ (assoc-ref %outputs "out")
+ "/share/mame/ini")
+ (map (lambda (lib)
+ (string-append "USE_SYSTEM_LIB_" (string-upcase lib) "=1"))
+ '("asio" "expat" "flac" "glm" "jpeg" "lua" "portaudio" "portmidi"
+ "pugixml" "rapidjson" "sqlite3" "utf8proc" "zlib")))
+ #:tests? #f ;no test in regular release
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-after 'build 'build-documentation
+ (lambda _ (invoke "make" "-C" "docs" "man" "info")))
+ (replace 'install
+ ;; Upstream does not provide an installation phase.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (share (string-append out "/share/mame")))
+ ;; Install data.
+ (for-each (lambda (dir)
+ (copy-recursively dir (string-append share "/" dir)))
+ '("artwork" "bgfx" "ctrlr" "hash" "ini" "language"
+ "plugins" "samples"))
+ (let ((keymaps (string-append share "/keymaps")))
+ (for-each (lambda (file) (install-file file keymaps))
+ (find-files "keymaps" ".*LINUX\\.map")))
+ (let ((fonts (string-append share "/fonts")))
+ (install-file "uismall.bdf" fonts))
+ (rename-file "mame64" "mame")
+ (install-file "mame" (string-append out "/bin")))
+ #t))
+ (add-after 'install 'install-documentation
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (man (string-append out "/share/man/man1"))
+ (info (string-append out "/share/info")))
+ (install-file "docs/build/man/MAME.1" man)
+ (install-file "docs/build/texinfo/MAME.info" info))
+ #t))
+ (add-after 'install 'install-ini-file
+ ;; Generate an ini file so as to set some directories (e.g., roms)
+ ;; to a writable location, i.e., "$HOME/.mame/" and "$HOME/mame/".
+ ;;
+ ;; XXX: We need to insert absolute references to the store. It can
+ ;; be an issue if they leak into user's home directory, e.g., with
+ ;; "mame -createconfig" and the package is later GC'ed.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (share (string-append out "/share/mame"))
+ (ini (string-append share "/ini")))
+ (with-output-to-file (string-append ini "/mame.ini")
+ (lambda _
+ (format #t
+ "inipath $HOME/.mame;~a/ini~@
+ homepath $HOME/mame~@
+ rompath $HOME/mame/roms~@
+ samplepath $HOME/mame/samples;~a/samples~@
+ cheatpath $HOME/mame/cheat~@
+ artpath $HOME/mame/artwork;~a/artwork~@
+ crosshairpath $HOME/mame/crosshair~@
+ snapshot_directory $HOME/mame/snapshots~@
+ hashpath ~a/hash~@
+ fontpath $HOME/mame/fonts;~a/fonts~@
+ ctrlrpath $HOME/mame/ctrlr;~a/ctrlr~@
+ bgfx_path ~a/bgfx~@
+ pluginspath $HOME/mame/plugins;~a/plugins~@
+ languagepath ~a/language~@
+ cfg_directory $HOME/.mame/cfg~@
+ nvram_directory $HOME/.mame/nvram~@
+ input_directory $HOME/.mame/inp~@
+ state_directory $HOME/.mame/sta~@
+ diff_directory $HOME/.mame/diff~@
+ comment_directory $HOME/.mame/comments~%"
+ share share share share share share share share
+ share)))
+ (with-output-to-file (string-append ini "/ui.ini")
+ (lambda _
+ (format #t
+ "historypath $HOME/mame/history~@
+ categorypath $HOME/mame/folders~@
+ cabinets_directory $HOME/mame/cabinets~@
+ cpanels_directory $HOME/mame/cpanel~@
+ pcbs_directory $HOME/mame/pcb~@
+ flyers_directory $HOME/mame/flyers~@
+ titles_directory $HOME/mame/titles~@
+ ends_directory $HOME/mame/ends~@
+ marquees_directory $HOME/mame/marquees~@
+ artwork_preview_directory $HOME/mame/artpreview~@
+ bosses_directory $HOME/mame/bosses~@
+ logos_directory $HOME/mame/logo~@
+ scores_directory $HOME/mame/scores~@
+ versus_directory $HOME/mame/versus~@
+ gameover_directory $HOME/mame/gameover~@
+ howto_directory $HOME/mame/howto~@
+ select_directory $HOME/mame/select~@
+ icons_directory $HOME/mame/icons~@
+ covers_directory $HOME/mame/covers~@
+ ui_path $HOME/.mame/ui~%")))
+ #t)))
+ (add-after 'install 'install-desktop-file
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (desktop (string-append out "/share/applications"))
+ (executable (string-append out "/bin/mame")))
+ (mkdir-p desktop)
+ (with-output-to-file (string-append desktop "/mame.desktop")
+ (lambda _
+ (format #t
+ "[Desktop Entry]~@
+ Name=mame~@
+ Comment=Multi-purpose emulation framework~@
+ Exec=~a~@
+ TryExec=~@*~a~@
+ Terminal=false~@
+ Type=Application~@
+ Categories=Game;Emulator;~@
+ Keywords=Game;Emulator;Arcade;~%"
+ executable)))
+ #t))))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("pugixml" ,pugixml)
+ ("python-sphinx" ,python-sphinx)
+ ("texinfo" ,texinfo)))
+ (inputs
+ `(("alsa-lib" ,alsa-lib)
+ ("asio" ,asio)
+ ("expat" ,expat)
+ ("flac" ,flac)
+ ("fontconfig" ,fontconfig)
+ ("glm" ,glm)
+ ("libjpeg" ,libjpeg-8) ;jpeg_read_header argument error in libjpeg-9
+ ("libxinerama" ,libxinerama)
+ ("lua" ,lua)
+ ("portaudio" ,portaudio)
+ ("portmidi" ,portmidi)
+ ("python-wrapper" ,python-wrapper)
+ ("qtbase" ,qtbase)
+ ("rapidjson" ,rapidjson)
+ ("sdl" ,(sdl-union (list sdl2 sdl2-ttf)))
+ ("sqlite" ,sqlite)
+ ("utf8proc" ,utf8proc)
+ ("zlib" ,zlib)))
+ (home-page "http://mamedev.org/")
+ (synopsis "Multi-purpose emulation framework")
+ (description "MAME's purpose is to preserve decades of software
+history. As electronic technology continues to rush forward, MAME
+prevents this important @emph{vintage} software from being lost and
+forgotten. This is achieved by documenting the hardware and how it
+functions. The source code to MAME serves as this documentation.")
+ ;; The MAME project as a whole is distributed under the terms of GPL2+.
+ ;; However, over 90% of the files are under Expat license. Also, artwork,
+ ;; keymaps, languages and samples are under CC0.
+ (license (list license:gpl2+ license:expat license:cc0))))
--
2.17.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [bug#31672] [PATCH 0/2] Add Mame
2018-06-03 22:22 ` Nicolas Goaziou
@ 2018-06-04 15:56 ` Rutger Helling
2018-06-08 13:32 ` Ludovic Courtès
1 sibling, 0 replies; 12+ messages in thread
From: Rutger Helling @ 2018-06-04 15:56 UTC (permalink / raw)
To: Nicolas Goaziou; +Cc: 31672
[-- Attachment #1: Type: text/plain, Size: 514 bytes --]
I can confirm this new version builds fine as well. I think that this is
an acceptable solution too.
On Mon, 04 Jun 2018 00:22:01 +0200
Nicolas Goaziou <mail@nicolasgoaziou.fr> wrote:
> Nicolas Goaziou <mail@nicolasgoaziou.fr> writes:
>
> > Anyway, this is not totally satisfactory because one cannot use,
> > e.g., "mame -createconfig" and have ini files generated in current
> > directory.
> >
> > I don't know how to fix that issue.
>
> The following may be an acceptable compromise.
>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* [bug#31672] [PATCH 0/2] Add Mame
2018-06-03 22:22 ` Nicolas Goaziou
2018-06-04 15:56 ` Rutger Helling
@ 2018-06-08 13:32 ` Ludovic Courtès
2018-06-08 22:28 ` bug#31672: " Nicolas Goaziou
1 sibling, 1 reply; 12+ messages in thread
From: Ludovic Courtès @ 2018-06-08 13:32 UTC (permalink / raw)
To: Nicolas Goaziou; +Cc: Ricardo Wurmus, 31672, Rutger Helling
Hi Nicolas,
Nicolas Goaziou <mail@nicolasgoaziou.fr> skribis:
>>From c0c5ec4dcf374f13fc7928053f351f67353e3d6f Mon Sep 17 00:00:00 2001
> From: Nicolas Goaziou <mail@nicolasgoaziou.fr>
> Date: Thu, 31 May 2018 17:08:10 +0200
> Subject: [PATCH 2/2] gnu: mame: New variable.
>
> * gnu/packages/emulators.scm (mame): New variable.
We had a lengthy and quite unproductive discussion a while back about
MAME. As long as it follows the FSDG, it’s OK to include it.
So please make sure it doesn’t include non-free software and does not
download or point users at sites providing non-free software.
If this is OK, and if it actually works ;-), then you can go ahead
and push!
Thank you,
Ludo’.
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#31672: [PATCH 0/2] Add Mame
2018-06-08 13:32 ` Ludovic Courtès
@ 2018-06-08 22:28 ` Nicolas Goaziou
0 siblings, 0 replies; 12+ messages in thread
From: Nicolas Goaziou @ 2018-06-08 22:28 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: Ricardo Wurmus, 31672-done, Rutger Helling
Hello,
ludo@gnu.org (Ludovic Courtès) writes:
> We had a lengthy and quite unproductive discussion a while back about
> MAME. As long as it follows the FSDG, it’s OK to include it.
>
> So please make sure it doesn’t include non-free software and does not
> download or point users at sites providing non-free software.
I think it is clean.
> If this is OK, and if it actually works ;-), then you can go ahead
> and push!
Pushed as c8b2fd2866c0d68d62c4ce990e0b41a422bd7030. Thank you.
Regards,
--
Nicolas Goaziou 0x80A93738
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2018-06-08 22:29 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-05-31 19:39 [bug#31672] [PATCH 0/2] Add Mame Nicolas Goaziou
2018-05-31 19:44 ` [bug#31672] [PATCH 1/2] gnu: asio: New variable Nicolas Goaziou
2018-05-31 19:44 ` [bug#31672] [PATCH 2/2] gnu: mame: " Nicolas Goaziou
2018-06-01 3:10 ` [bug#31672] [PATCH 0/2] Add Mame Eric Bavier
2018-06-01 22:05 ` Nicolas Goaziou
2018-06-01 11:27 ` Rutger Helling
2018-06-02 17:21 ` Nicolas Goaziou
2018-06-02 17:57 ` Nicolas Goaziou
2018-06-03 22:22 ` Nicolas Goaziou
2018-06-04 15:56 ` Rutger Helling
2018-06-08 13:32 ` Ludovic Courtès
2018-06-08 22:28 ` bug#31672: " Nicolas Goaziou
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.