all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#34086] [PATCH] Add StepMania
@ 2019-01-15 18:10 Nicolas Goaziou
  2019-01-20 18:09 ` Ludovic Courtès
  0 siblings, 1 reply; 9+ messages in thread
From: Nicolas Goaziou @ 2019-01-15 18:10 UTC (permalink / raw)
  To: 34086

[-- Attachment #1: Type: text/plain, Size: 301 bytes --]

Hello,

This patch adds StepMania. 

Note that I had to remove all bundled songs due to a non-commercial
clause, so it's not really usable right out of the box. I also had to
package a dedicated FFmpeg package, since StepMania is very picky about
it.

Feedback welcome.

Regards,

-- 
Nicolas Goaziou

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Add StepMania --]
[-- Type: text/x-diff, Size: 7999 bytes --]

From bfefd4b4217d67f9628682cb76ce2b9015285612 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <mail@nicolasgoaziou.fr>
Date: Sun, 11 Nov 2018 00:43:34 +0100
Subject: [PATCH] gnu: Add stepmania.

* gnu/packages/games.scm (ffmpeg-for-stepmania):
(stepmania): New variables.
---
 gnu/packages/games.scm | 167 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 167 insertions(+)

diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 33dbccf87..c5f855b8f 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -70,6 +70,7 @@
   #:use-module (gnu packages admin)
   #:use-module (gnu packages audio)
   #:use-module (gnu packages avahi)
+  #:use-module (gnu packages assembly)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
@@ -5946,3 +5947,169 @@ order.  You rotate the blocks and move them across the screen to drop them in
 complete lines.  You score by dropping blocks fast and completing lines.  As
 your score gets higher, you level up and the blocks fall faster.")
     (license license:gpl2+)))
+
+(define ffmpeg-for-stepmania
+  (package
+    (name "ffmpeg-for-stepmania")
+    (version "2.1.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/stepmania/ffmpeg.git")
+             (commit "eda6effcabcf9c238e4635eb058d72371336e09b")))
+       (sha256
+        (base32 "1by8rmbva8mfrivdbbkr2gx4kga89zqygkd4cfjl76nr8mdcdamb"))
+       (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f
+       #:configure-flags
+       '("--disable-programs"
+         "--disable-doc"
+         "--disable-debug"
+         "--disable-avdevice"
+         "--disable-swresample"
+         "--disable-postproc"
+         "--disable-avfilter"
+         "--disable-shared"
+         "--enable-static")
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           ;; configure does not work followed by "SHELL=..." and
+           ;; "CONFIG_SHELL=..."; set environment variables instead
+           (lambda* (#:key outputs configure-flags #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "configure"
+                 (("#! /bin/sh") (string-append "#!" (which "sh"))))
+               (setenv "SHELL" (which "bash"))
+               (setenv "CONFIG_SHELL" (which "bash"))
+               (apply invoke
+                      "./configure"
+                      (string-append "--prefix=" out)
+                      ;; Add $libdir to the RUNPATH of all the binaries.
+                      (string-append "--extra-ldflags=-Wl,-rpath="
+                                     out "/lib")
+                      configure-flags)))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("yasm" ,yasm)))
+    (home-page "https://www.ffmpeg.org/")
+    (synopsis "Audio and video framework")
+    (description "FFmpeg is a complete, cross-platform solution to record,
+convert and stream audio and video.  It includes the libavcodec
+audio/video codec library.")
+    (license license:gpl2+)))
+
+(define-public stepmania
+  (package
+    (name "stepmania")
+    (version "5.1.0-b2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/stepmania/stepmania.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove song files, which are licensed under a non-commercial
+           ;; clause, and a course pointing to them.
+           (for-each delete-file-recursively
+                     '("Songs/StepMania 5/Goin' Under"
+                       "Songs/StepMania 5/MechaTribe Assault"
+                       "Songs/StepMania 5/Springtime"))
+           (for-each delete-file '("Courses/Default/Jupiter.crs"
+                                   "Courses/Default/Jupiter.png"))
+           ;; Unbundle libpng.
+           (substitute* "extern/CMakeLists.txt"
+             (("include\\(CMakeProject-png.cmake\\)") ""))
+           (delete-file-recursively "extern/libpng")
+           #t))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ;FIXME: couldn't find how to run tests
+       #:build-type "Release"
+       #:out-of-source? #f              ;for the 'install-desktop' phase
+       #:configure-flags
+       (list "-DWITH_SYSTEM_FFMPEG=1"
+             ;; Configuration cannot find GTK2 without the two following
+             ;; flags.
+             (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"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-install-subdir
+           ;; Installation would be done in "%out/stepmania-X.Y", but we
+           ;; prefer the more common layout "%out/share/stepmania".
+           (lambda _
+             (substitute* "src/CMakeLists.txt"
+               (("\"stepmania-.*?\"") "\"share/stepmania\""))
+             #t))
+         (add-after 'unpack 'unbundle-libpng
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/CMakeLists.txt"
+               (("\\$\\{SM_EXTERN_DIR\\}/libpng/include")
+                (string-append (assoc-ref inputs "libpng") "/include")))))
+         (add-after 'install 'install-executable
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (exe (string-append out "/share/stepmania/stepmania")))
+               (mkdir-p bin)
+               (symlink exe (string-append bin "/stepmania"))
+               #t)))
+         (add-after 'install-executable 'install-desktop
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (share (string-append out "/share"))
+                    (applications (string-append share "/applications"))
+                    (icons (string-append share "/icons")))
+               (install-file "stepmania.desktop" applications)
+               (mkdir-p icons)
+               (copy-recursively "icons" icons)
+               #t))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("yasm" ,yasm)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ;; ("ffmpeg" ,ffmpeg-2.8) ;ffmpeg 3+ unsupported
+       ("ffmpeg" ,ffmpeg-for-stepmania)
+       ("glib" ,glib)
+       ("glew" ,glew)
+       ("gtk+" ,gtk+-2)
+       ("jsoncpp" ,jsoncpp)
+       ("libpng" ,libpng)
+       ("libjpeg" ,libjpeg-8)
+       ("libmad" ,libmad)
+       ("libogg" ,libogg)
+       ("libva" ,libva)
+       ("libvorbis" ,libvorbis)
+       ("libxinerama" ,libxinerama)
+       ("libxrandr" ,libxrandr)
+       ("mesa" ,mesa)
+       ("pcre" ,pcre)
+       ("pulseaudio" ,pulseaudio)
+       ("sdl" ,sdl2)
+       ("udev" ,eudev)
+       ("zlib" ,zlib)))
+    (synopsis "Advanced rhythm game designed for both home and arcade use")
+    (description "StepMania is a dance and rhythm game.  It features 3D
+graphics, keyboard and dance pad support, and an editor for creating your own
+steps.
+
+This package provides the core application, but no song is shipped.  You need
+to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
+    (home-page "https://www.stepmania.com")
+    (license license:expat)))
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#34086] [PATCH] Add StepMania
  2019-01-15 18:10 [bug#34086] [PATCH] Add StepMania Nicolas Goaziou
@ 2019-01-20 18:09 ` Ludovic Courtès
  2019-01-22  8:33   ` Nicolas Goaziou
  0 siblings, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2019-01-20 18:09 UTC (permalink / raw)
  To: Nicolas Goaziou; +Cc: 34086

Hi Nicolas,

Nicolas Goaziou <mail@nicolasgoaziou.fr> skribis:

> Note that I had to remove all bundled songs due to a non-commercial
> clause, so it's not really usable right out of the box. I also had to
> package a dedicated FFmpeg package, since StepMania is very picky about
> it.

Apparently you also tried using ffmpeg 2.8, but that didn’t work either?
Do you have an idea how different their own ffmpeg variant is?

>>From bfefd4b4217d67f9628682cb76ce2b9015285612 Mon Sep 17 00:00:00 2001
> From: Nicolas Goaziou <mail@nicolasgoaziou.fr>
> Date: Sun, 11 Nov 2018 00:43:34 +0100
> Subject: [PATCH] gnu: Add stepmania.
>
> * gnu/packages/games.scm (ffmpeg-for-stepmania):
> (stepmania): New variables.

[...]

> +(define ffmpeg-for-stepmania
> +  (package
> +    (name "ffmpeg-for-stepmania")

Could you move to video.scm, inherit from ‘ffmpeg’, and arrange to
reduce duplication as much as possible?

(Even better would be to avoid it altogether but I’m assuming it won’t
be that simple…)

The rest LGTM, thanks!

Ludo’.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#34086] [PATCH] Add StepMania
  2019-01-20 18:09 ` Ludovic Courtès
@ 2019-01-22  8:33   ` Nicolas Goaziou
  2019-01-22 19:24     ` Leo Famulari
  0 siblings, 1 reply; 9+ messages in thread
From: Nicolas Goaziou @ 2019-01-22  8:33 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 34086

[-- Attachment #1: Type: text/plain, Size: 1187 bytes --]

Hello,

Thank you for the review!

Ludovic Courtès <ludo@gnu.org> writes:

> Apparently you also tried using ffmpeg 2.8, but that didn’t work
> either?

It builds with FFmpeg 2.8, but a StepMania developer told me there was
no guarantee it wouldn't create runtime crashes. They apparently spend
quite some time to find a FFmpeg release that suits them, and use it for
a couple of years.

> Do you have an idea how different their own ffmpeg variant is?

Their variant is older (2.1.3), with some specific build flags. That is
all I can say.

> Could you move to video.scm, inherit from ‘ffmpeg’, and arrange to
> reduce duplication as much as possible?

But then, I have to make it public, and that would pollute namespace,
wouldn't it?

> (Even better would be to avoid it altogether but I’m assuming it won’t
> be that simple…)

There's a build flag to ignore FFmpeg altogether. I believe this would
disable playing background videos. It may be a bit opinionated for
a distributed package.

IMO, the safest way to go it to provide the FFmpeg the package expects.

I'm sending an updated patch. WDYT?

Regards,

-- 
Nicolas Goaziou

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Add StepMania --]
[-- Type: text/x-diff, Size: 7073 bytes --]

From 7e80ada7b842830f10107724286fe194c3c64a43 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <mail@nicolasgoaziou.fr>
Date: Sun, 11 Nov 2018 00:43:34 +0100
Subject: [PATCH] gnu: Add stepmania.

* gnu/packages/games.scm (stepmania):
* gnu/packages/video.scm (ffmpeg-for-stepmania): New variables.
---
 gnu/packages/games.scm | 113 +++++++++++++++++++++++++++++++++++++++++
 gnu/packages/video.scm |  26 ++++++++++
 2 files changed, 139 insertions(+)

diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 317962bf6..b973641fe 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -70,6 +70,7 @@
   #:use-module (gnu packages admin)
   #:use-module (gnu packages audio)
   #:use-module (gnu packages avahi)
+  #:use-module (gnu packages assembly)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
@@ -6011,3 +6012,115 @@ civilized than your own.")
                    license:cc-by-sa3.0
                    license:cc-by-sa4.0
                    license:public-domain))))
+
+(define-public stepmania
+  (package
+    (name "stepmania")
+    (version "5.1.0-b2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/stepmania/stepmania.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove song files, which are licensed under a non-commercial
+           ;; clause, and a course pointing to them.
+           (for-each delete-file-recursively
+                     '("Songs/StepMania 5/Goin' Under"
+                       "Songs/StepMania 5/MechaTribe Assault"
+                       "Songs/StepMania 5/Springtime"))
+           (for-each delete-file '("Courses/Default/Jupiter.crs"
+                                   "Courses/Default/Jupiter.png"))
+           ;; Unbundle libpng.
+           (substitute* "extern/CMakeLists.txt"
+             (("include\\(CMakeProject-png.cmake\\)") ""))
+           (delete-file-recursively "extern/libpng")
+           #t))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ;FIXME: couldn't find how to run tests
+       #:build-type "Release"
+       #:out-of-source? #f              ;for the 'install-desktop' phase
+       #:configure-flags
+       (list "-DWITH_SYSTEM_FFMPEG=1"
+             ;; Configuration cannot find GTK2 without the two following
+             ;; flags.
+             (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"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-install-subdir
+           ;; Installation would be done in "%out/stepmania-X.Y", but we
+           ;; prefer the more common layout "%out/share/stepmania".
+           (lambda _
+             (substitute* "src/CMakeLists.txt"
+               (("\"stepmania-.*?\"") "\"share/stepmania\""))
+             #t))
+         (add-after 'unpack 'unbundle-libpng
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/CMakeLists.txt"
+               (("\\$\\{SM_EXTERN_DIR\\}/libpng/include")
+                (string-append (assoc-ref inputs "libpng") "/include")))))
+         (add-after 'install 'install-executable
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (exe (string-append out "/share/stepmania/stepmania")))
+               (mkdir-p bin)
+               (symlink exe (string-append bin "/stepmania"))
+               #t)))
+         (add-after 'install-executable 'install-desktop
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (share (string-append out "/share"))
+                    (applications (string-append share "/applications"))
+                    (icons (string-append share "/icons")))
+               (install-file "stepmania.desktop" applications)
+               (mkdir-p icons)
+               (copy-recursively "icons" icons)
+               #t))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("yasm" ,yasm)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("ffmpeg" ,ffmpeg-for-stepmania)
+       ("glib" ,glib)
+       ("glew" ,glew)
+       ("gtk+" ,gtk+-2)
+       ("jsoncpp" ,jsoncpp)
+       ("libpng" ,libpng)
+       ("libjpeg" ,libjpeg-8)
+       ("libmad" ,libmad)
+       ("libogg" ,libogg)
+       ("libva" ,libva)
+       ("libvorbis" ,libvorbis)
+       ("libxinerama" ,libxinerama)
+       ("libxrandr" ,libxrandr)
+       ("mesa" ,mesa)
+       ("pcre" ,pcre)
+       ("pulseaudio" ,pulseaudio)
+       ("sdl" ,sdl2)
+       ("udev" ,eudev)
+       ("zlib" ,zlib)))
+    (synopsis "Advanced rhythm game designed for both home and arcade use")
+    (description "StepMania is a dance and rhythm game.  It features 3D
+graphics, keyboard and dance pad support, and an editor for creating your own
+steps.
+
+This package provides the core application, but no song is shipped.  You need
+to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
+    (home-page "https://www.stepmania.com")
+    (license license:expat)))
+
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index fb0da6ae6..a483cb461 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -871,6 +871,32 @@ audio/video codec library.")
               (base32
                "0b59qk5wpc5ksiha76jbhb859g5gxa4w0k6afh3kgvgajiivs73l"))))))
 
+(define-public ffmpeg-for-stepmania
+  (package
+    (inherit ffmpeg)
+    (version "2.1.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/stepmania/ffmpeg.git")
+             (commit "eda6effcabcf9c238e4635eb058d72371336e09b")))
+       (sha256
+        (base32 "1by8rmbva8mfrivdbbkr2gx4kga89zqygkd4cfjl76nr8mdcdamb"))
+       (file-name (git-file-name "ffmpeg" version))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments ffmpeg)
+       ((#:configure-flags flags)
+        '(list "--disable-programs"
+               "--disable-doc"
+               "--disable-debug"
+               "--disable-avdevice"
+               "--disable-swresample"
+               "--disable-postproc"
+               "--disable-avfilter"
+               "--disable-shared"
+               "--enable-static"))))))
+
 (define-public ffmpegthumbnailer
   (package
     (name "ffmpegthumbnailer")
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#34086] [PATCH] Add StepMania
  2019-01-22  8:33   ` Nicolas Goaziou
@ 2019-01-22 19:24     ` Leo Famulari
  2019-01-22 21:42       ` Nicolas Goaziou
  0 siblings, 1 reply; 9+ messages in thread
From: Leo Famulari @ 2019-01-22 19:24 UTC (permalink / raw)
  To: Nicolas Goaziou; +Cc: 34086

[-- Attachment #1: Type: text/plain, Size: 525 bytes --]

On Tue, Jan 22, 2019 at 09:33:00AM +0100, Nicolas Goaziou wrote:
> Ludovic Courtès <ludo@gnu.org> writes:
> > Could you move to video.scm, inherit from ‘ffmpeg’, and arrange to
> > reduce duplication as much as possible?
> 
> But then, I have to make it public, and that would pollute namespace,
> wouldn't it?

I believe you can use the 'hidden-package' procedure instead of
'package' to address the use case of exported packages that should not
appear in the Guix UI (for example, `guix package --search`).

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#34086] [PATCH] Add StepMania
  2019-01-22 19:24     ` Leo Famulari
@ 2019-01-22 21:42       ` Nicolas Goaziou
  2019-01-23  9:40         ` Ludovic Courtès
  2019-01-23 21:34         ` Leo Famulari
  0 siblings, 2 replies; 9+ messages in thread
From: Nicolas Goaziou @ 2019-01-22 21:42 UTC (permalink / raw)
  To: Leo Famulari; +Cc: 34086

[-- Attachment #1: Type: text/plain, Size: 499 bytes --]

Hello,

Leo Famulari <leo@famulari.name> writes:

> I believe you can use the 'hidden-package' procedure instead of
> 'package' to address the use case of exported packages that should not
> appear in the Guix UI (for example, `guix package --search`).

I didn't know about `hidden-package'. I used that instead, and added an
empty `input' field. New patch attached.

Note that `hidden-package' doesn't seem to have the same indentation
rule as `package'.

Thank you.

Regards,

-- 
Nicolas Goaziou

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Add StepMania (take 3) --]
[-- Type: text/x-diff, Size: 7074 bytes --]

From 00196d57d6987ed4e93d5cd51af3a4c2d20cc7f3 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <mail@nicolasgoaziou.fr>
Date: Sun, 11 Nov 2018 00:43:34 +0100
Subject: [PATCH] gnu: Add stepmania.

* gnu/packages/games.scm (stepmania):
* gnu/packages/video.scm (ffmpeg-for-stepmania): New variables.
---
 gnu/packages/games.scm | 113 +++++++++++++++++++++++++++++++++++++++++
 gnu/packages/video.scm |  27 ++++++++++
 2 files changed, 140 insertions(+)

diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 317962bf6..b973641fe 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -70,6 +70,7 @@
   #:use-module (gnu packages admin)
   #:use-module (gnu packages audio)
   #:use-module (gnu packages avahi)
+  #:use-module (gnu packages assembly)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
@@ -6011,3 +6012,115 @@ civilized than your own.")
                    license:cc-by-sa3.0
                    license:cc-by-sa4.0
                    license:public-domain))))
+
+(define-public stepmania
+  (package
+    (name "stepmania")
+    (version "5.1.0-b2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/stepmania/stepmania.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove song files, which are licensed under a non-commercial
+           ;; clause, and a course pointing to them.
+           (for-each delete-file-recursively
+                     '("Songs/StepMania 5/Goin' Under"
+                       "Songs/StepMania 5/MechaTribe Assault"
+                       "Songs/StepMania 5/Springtime"))
+           (for-each delete-file '("Courses/Default/Jupiter.crs"
+                                   "Courses/Default/Jupiter.png"))
+           ;; Unbundle libpng.
+           (substitute* "extern/CMakeLists.txt"
+             (("include\\(CMakeProject-png.cmake\\)") ""))
+           (delete-file-recursively "extern/libpng")
+           #t))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ;FIXME: couldn't find how to run tests
+       #:build-type "Release"
+       #:out-of-source? #f              ;for the 'install-desktop' phase
+       #:configure-flags
+       (list "-DWITH_SYSTEM_FFMPEG=1"
+             ;; Configuration cannot find GTK2 without the two following
+             ;; flags.
+             (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"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-install-subdir
+           ;; Installation would be done in "%out/stepmania-X.Y", but we
+           ;; prefer the more common layout "%out/share/stepmania".
+           (lambda _
+             (substitute* "src/CMakeLists.txt"
+               (("\"stepmania-.*?\"") "\"share/stepmania\""))
+             #t))
+         (add-after 'unpack 'unbundle-libpng
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/CMakeLists.txt"
+               (("\\$\\{SM_EXTERN_DIR\\}/libpng/include")
+                (string-append (assoc-ref inputs "libpng") "/include")))))
+         (add-after 'install 'install-executable
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (exe (string-append out "/share/stepmania/stepmania")))
+               (mkdir-p bin)
+               (symlink exe (string-append bin "/stepmania"))
+               #t)))
+         (add-after 'install-executable 'install-desktop
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (share (string-append out "/share"))
+                    (applications (string-append share "/applications"))
+                    (icons (string-append share "/icons")))
+               (install-file "stepmania.desktop" applications)
+               (mkdir-p icons)
+               (copy-recursively "icons" icons)
+               #t))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("yasm" ,yasm)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("ffmpeg" ,ffmpeg-for-stepmania)
+       ("glib" ,glib)
+       ("glew" ,glew)
+       ("gtk+" ,gtk+-2)
+       ("jsoncpp" ,jsoncpp)
+       ("libpng" ,libpng)
+       ("libjpeg" ,libjpeg-8)
+       ("libmad" ,libmad)
+       ("libogg" ,libogg)
+       ("libva" ,libva)
+       ("libvorbis" ,libvorbis)
+       ("libxinerama" ,libxinerama)
+       ("libxrandr" ,libxrandr)
+       ("mesa" ,mesa)
+       ("pcre" ,pcre)
+       ("pulseaudio" ,pulseaudio)
+       ("sdl" ,sdl2)
+       ("udev" ,eudev)
+       ("zlib" ,zlib)))
+    (synopsis "Advanced rhythm game designed for both home and arcade use")
+    (description "StepMania is a dance and rhythm game.  It features 3D
+graphics, keyboard and dance pad support, and an editor for creating your own
+steps.
+
+This package provides the core application, but no song is shipped.  You need
+to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
+    (home-page "https://www.stepmania.com")
+    (license license:expat)))
+
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index fb0da6ae6..8bf76177b 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -871,6 +871,33 @@ audio/video codec library.")
               (base32
                "0b59qk5wpc5ksiha76jbhb859g5gxa4w0k6afh3kgvgajiivs73l"))))))
 
+(define-public ffmpeg-for-stepmania
+  (hidden-package
+   (inherit ffmpeg)
+   (version "2.1.3")
+   (source
+    (origin
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/stepmania/ffmpeg.git")
+            (commit "eda6effcabcf9c238e4635eb058d72371336e09b")))
+      (sha256
+       (base32 "1by8rmbva8mfrivdbbkr2gx4kga89zqygkd4cfjl76nr8mdcdamb"))
+      (file-name (git-file-name "ffmpeg" version))))
+   (arguments
+    (substitute-keyword-arguments (package-arguments ffmpeg)
+      ((#:configure-flags flags)
+       '(list "--disable-programs"
+              "--disable-doc"
+              "--disable-debug"
+              "--disable-avdevice"
+              "--disable-swresample"
+              "--disable-postproc"
+              "--disable-avfilter"
+              "--disable-shared"
+              "--enable-static"))))
+   (inputs '())))
+
 (define-public ffmpegthumbnailer
   (package
     (name "ffmpegthumbnailer")
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#34086] [PATCH] Add StepMania
  2019-01-22 21:42       ` Nicolas Goaziou
@ 2019-01-23  9:40         ` Ludovic Courtès
  2019-01-25 17:10           ` Nicolas Goaziou
  2019-01-23 21:34         ` Leo Famulari
  1 sibling, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2019-01-23  9:40 UTC (permalink / raw)
  To: Nicolas Goaziou; +Cc: 34086

Hi Nicolas,

Nicolas Goaziou <mail@nicolasgoaziou.fr> skribis:

> From 00196d57d6987ed4e93d5cd51af3a4c2d20cc7f3 Mon Sep 17 00:00:00 2001
> From: Nicolas Goaziou <mail@nicolasgoaziou.fr>
> Date: Sun, 11 Nov 2018 00:43:34 +0100
> Subject: [PATCH] gnu: Add stepmania.
>
> * gnu/packages/games.scm (stepmania):
> * gnu/packages/video.scm (ffmpeg-for-stepmania): New variables.

[...]

> +(define-public ffmpeg-for-stepmania
> +  (hidden-package
> +   (inherit ffmpeg)
> +   (version "2.1.3")

I’m pretty sure this doesn’t evaluate, does it?  :-)

Should be:

  (hidden-package
    (package
      (inherit ffmpeg)
      …))

Apart from that, could you please add the explanation and/or a link to
an upstream discussion summarizing what you described regarding this
choice of a custom FFMpeg variant?

OK with this changes!

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#34086] [PATCH] Add StepMania
  2019-01-22 21:42       ` Nicolas Goaziou
  2019-01-23  9:40         ` Ludovic Courtès
@ 2019-01-23 21:34         ` Leo Famulari
  2019-01-25 17:41           ` bug#34086: " Nicolas Goaziou
  1 sibling, 1 reply; 9+ messages in thread
From: Leo Famulari @ 2019-01-23 21:34 UTC (permalink / raw)
  To: Nicolas Goaziou; +Cc: 34086

[-- Attachment #1: Type: text/plain, Size: 196 bytes --]

On Tue, Jan 22, 2019 at 10:42:58PM +0100, Nicolas Goaziou wrote:
> I didn't know about `hidden-package'. I used that instead, and added an
> empty `input' field. New patch attached.

Great, LGTM!

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#34086] [PATCH] Add StepMania
  2019-01-23  9:40         ` Ludovic Courtès
@ 2019-01-25 17:10           ` Nicolas Goaziou
  0 siblings, 0 replies; 9+ messages in thread
From: Nicolas Goaziou @ 2019-01-25 17:10 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 34086

Hello,

Ludovic Courtès <ludo@gnu.org> writes:

> Nicolas Goaziou <mail@nicolasgoaziou.fr> skribis:
>
>> +(define-public ffmpeg-for-stepmania
>> +  (hidden-package
>> +   (inherit ffmpeg)
>> +   (version "2.1.3")
>
> I’m pretty sure this doesn’t evaluate, does it?  :-)

Indeed. Fixed.

> Should be:
>
>   (hidden-package
>     (package
>       (inherit ffmpeg)
>       …))
>
> Apart from that, could you please add the explanation and/or a link to
> an upstream discussion summarizing what you described regarding this
> choice of a custom FFMpeg variant?

Done.

> OK with this changes!

Pushed. Thank you!

Regards,

-- 
Nicolas Goaziou

^ permalink raw reply	[flat|nested] 9+ messages in thread

* bug#34086: [PATCH] Add StepMania
  2019-01-23 21:34         ` Leo Famulari
@ 2019-01-25 17:41           ` Nicolas Goaziou
  0 siblings, 0 replies; 9+ messages in thread
From: Nicolas Goaziou @ 2019-01-25 17:41 UTC (permalink / raw)
  To: Leo Famulari; +Cc: 34086-done

Hello,

Leo Famulari <leo@famulari.name> writes:

> Great, LGTM!

I pushed it. Thank you :)

Regards,

-- 
Nicolas Goaziou

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2019-01-25 17:42 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-01-15 18:10 [bug#34086] [PATCH] Add StepMania Nicolas Goaziou
2019-01-20 18:09 ` Ludovic Courtès
2019-01-22  8:33   ` Nicolas Goaziou
2019-01-22 19:24     ` Leo Famulari
2019-01-22 21:42       ` Nicolas Goaziou
2019-01-23  9:40         ` Ludovic Courtès
2019-01-25 17:10           ` Nicolas Goaziou
2019-01-23 21:34         ` Leo Famulari
2019-01-25 17:41           ` bug#34086: " 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.