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.
87 lines
2.4 KiB
Nix
87 lines
2.4 KiB
Nix
{ 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 won’t 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 ];
|
||
};
|
||
}
|