gnu: Add stepmania.
* gnu/packages/games.scm (stepmania): * gnu/packages/video.scm (ffmpeg-for-stepmania): New variables.
This commit is contained in:
parent
81cf0174b5
commit
1faf0a0459
@ -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)))
|
||||
|
||||
|
@ -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…
Reference in New Issue
Block a user