Browse Source

gnu: Add stepmania.

* gnu/packages/games.scm (stepmania):
* gnu/packages/video.scm (ffmpeg-for-stepmania): New variables.
snapper
Nicolas Goaziou 4 years ago
parent
commit
1faf0a0459
No known key found for this signature in database GPG Key ID: DA00B4F048E92F2D
  1. 128
      gnu/packages/games.scm
  2. 28
      gnu/packages/video.scm

128
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,130 @@ 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")))
#t))
(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)))
;; Move documentation in a more usual place, i.e.,
;; "%out/share/doc/stepmania/".
(add-after 'install-desktop 'install-doc
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(share (string-append out "/share")))
(with-directory-excursion share
(mkdir-p "doc")
(symlink "../stepmania/Docs" "doc/stepmania"))
#t))))))
(native-inputs
`(("pkg-config" ,pkg-config)
("yasm" ,yasm)))
(inputs
`(("alsa-lib" ,alsa-lib)
;; Per upstream, StepMania is only guaranteed to work with a very
;; specific FFmpeg version, which is included in the repository as
;; a Git submodule. This particular version requirement usually
;; changes every few years.
("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)))

28
gnu/packages/video.scm

@ -871,6 +871,34 @@ audio/video codec library.")
(base32
"0b59qk5wpc5ksiha76jbhb859g5gxa4w0k6afh3kgvgajiivs73l"))))))
(define-public ffmpeg-for-stepmania
(hidden-package
(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")

Loading…
Cancel
Save