nixpkgs/pkgs/games/ultrastardx/default.nix
Profpatsch d7cfce0e47 ultrastardx: 2020.4.0 -> 2021-04-03
Not a lot has changed since last update, a few fixes were pushed to
the master tree.
We take the liberty to update to master for now.

This updates the ffmpeg version from 2.x to 4.x, which seems to be
supported upstream when we bend the minor version restriction a
little.
A simple karaoke song played just fine in my test.
2021-05-18 09:04:32 +02:00

87 lines
2.4 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ lib, stdenv
, autoreconfHook
, fetchFromGitHub
, fetchpatch
, pkg-config
, lua
, fpc
, pcre
, portaudio
, freetype
, libpng
, SDL2
, SDL2_image
, SDL2_gfx
, SDL2_mixer
, SDL2_net, SDL2_ttf
, ffmpeg_3
, sqlite
, zlib
, libX11
, libGLU
, libGL
}:
let
sharedLibs = [
pcre portaudio freetype
SDL2 SDL2_image SDL2_gfx SDL2_mixer SDL2_net SDL2_ttf
sqlite lua zlib libX11 libGLU libGL ffmpeg_3
];
in stdenv.mkDerivation rec {
pname = "ultrastardx";
version = "2021-04-03";
src = fetchFromGitHub {
owner = "UltraStar-Deluxe";
repo = "USDX";
rev = "d49e916705092f3d765d85d276b283b9e7e232a6";
sha256 = "0sdcz2vc8i2z50nj7zbkdpxx2mvx0m0927lfsj7d7qr0p8vkm0wa";
};
nativeBuildInputs = [ pkg-config autoreconfHook ];
buildInputs = [ fpc libpng ] ++ sharedLibs;
postPatch = ''
substituteInPlace src/config.inc.in \
--subst-var-by libpcre_LIBNAME libpcre.so.1
# ultrastardx binds to libffmpeg (and sublibs), specifying a very restrictive
# upper bounds on the minor versions of .so files.
# We can assume ffmpeg wont break any major ABI compatibility, since their
# patch version seems to always stay at 100,
# and their minor version changes quite frequently.
sed \
-e 's/^ LIBAVCODEC_MAX_VERSION_MINOR.*$/ LIBAVCODEC_MAX_VERSION_MINOR = 1000;/' \
-i src/lib/ffmpeg-4.0/avcodec.pas
sed \
-e 's/^ LIBAVFORMAT_MAX_VERSION_MINOR.*$/ LIBAVFORMAT_MAX_VERSION_MINOR = 1000;/' \
-i src/lib/ffmpeg-4.0/avformat.pas
sed \
-e 's/^ LIBAVUTIL_MAX_VERSION_MINOR.*$/ LIBAVUTIL_MAX_VERSION_MINOR = 1000;/' \
-i src/lib/ffmpeg-4.0/avutil.pas
sed \
-e 's/^ LIBSWRESAMPLE_MAX_VERSION_MINOR.*$/ LIBSWRESAMPLE_MAX_VERSION_MINOR = 1000;/' \
-i src/lib/ffmpeg-4.0/swresample.pas
sed \
-e 's/^ LIBSWSCALE_MAX_VERSION_MINOR.*$/ LIBSWSCALE_MAX_VERSION_MINOR = 1000;/' \
-i src/lib/ffmpeg-4.0/swscale.pas
'';
preBuild = with lib;
let items = concatMapStringsSep " " (x: "-rpath ${getLib x}/lib") sharedLibs;
in ''
export NIX_LDFLAGS="$NIX_LDFLAGS ${items}"
'';
# dlopened libgcc requires the rpath not to be shrinked
dontPatchELF = true;
meta = with lib; {
homepage = "http://ultrastardx.sourceforge.net/";
description = "Free and open source karaoke game";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ Profpatsch ];
};
}