SuperTuxKart: Replaced some bundled libraries with system ones

gstqt5
SCOTT-HAMILTON 2020-06-24 18:54:22 +02:00
parent 344dd8d193
commit b2b28fcad3
1 changed files with 48 additions and 19 deletions

View File

@ -1,7 +1,8 @@
{ stdenv, fetchFromGitHub, fetchsvn, cmake, pkgconfig, makeWrapper
, openal, freealut, libGLU, libGL, libvorbis, libogg, gettext, curl, freetype
, fribidi, libtool, bluez, libjpeg, libpng, zlib, libX11, libXrandr, enet, harfbuzz }:
{ lib, stdenv, fetchFromGitHub, fetchsvn, cmake, pkgconfig, makeWrapper
, openal, freealut, libGLU, libGL, libvorbis, libogg, gettext, curl, freetype, glew
, fribidi, libtool, bluez, libjpeg, libpng, zlib, libX11, libXrandr, harfbuzz
, mcpp, wiiuse, angelscript
}:
let
dir = "stk-code";
assets = fetchsvn {
@ -11,34 +12,62 @@ let
name = "stk-assets";
};
# List of bundled libraries in stk-code/lib to keep
# Those are the libraries that cannot be replaced
# with system packages.
bundledLibraries = [
# Bullet 2.87 is incompatible (bullet 2.79 needed whereas 2.87 is packaged)
# The api changed in a lot of classes, too much work to adapt
"bullet"
# Upstream Libenet doesn't yet support IPv6,
# So we will use the bundled libenet which
# has been fixed to support it.
"enet"
# Internal library of STK, nothing to do about it
"graphics_utils"
# This irrlicht is bundled with cmake
# whereas upstream irrlicht still uses
# archaic Makefiles, too complicated to switch to.
"irrlicht"
# Not packaged to this date
"libraqm"
# Not packaged to this date
"libsquish"
];
in stdenv.mkDerivation rec {
pname = "supertuxkart";
version = "1.1";
srcs = [
(fetchFromGitHub {
owner = "supertuxkart";
repo = "stk-code";
rev = version;
sha256 = "01vxxl94583ixswzmi4caz8dk64r56pn3zxh7v63zml60yfvxbvp";
name = dir;
})
];
src = fetchFromGitHub {
owner = "supertuxkart";
repo = "stk-code";
rev = version;
sha256 = "01vxxl94583ixswzmi4caz8dk64r56pn3zxh7v63zml60yfvxbvp";
name = dir;
};
# Deletes all bundled libs in stk-code/lib except those
# That couldn't be replaced with system packages
postPatch = ''
find lib -maxdepth 1 -type d | egrep -v "^lib$|${(lib.concatStringsSep "|" bundledLibraries)}" | xargs -n1 -L1 -r -I{} rm -rf {}
'';
nativeBuildInputs = [ cmake gettext libtool pkgconfig makeWrapper ];
buildInputs = [
libX11 libXrandr
openal freealut libGLU libGL libvorbis libogg zlib freetype
curl fribidi bluez libjpeg libpng enet harfbuzz
openal freealut libGLU libGL libvorbis libogg zlib freetype glew
curl fribidi bluez libjpeg libpng harfbuzz
mcpp wiiuse angelscript
];
enableParallelBuilding = true;
cmakeFlags = [
"-DBUILD_RECORDER=OFF" # libopenglrecorder is not in nixpkgs
"-DUSE_SYSTEM_ANGELSCRIPT=OFF" # doesn't work with 2.31.2 or 2.32.0
"-DCHECK_ASSETS=OFF"
"-DUSE_SYSTEM_WIIUSE=ON"
"-DUSE_SYSTEM_ANGELSCRIPT=ON"
];
# Obtain the assets directly from the fetched store path, to avoid duplicating assets across multiple engine builds
@ -46,9 +75,9 @@ in stdenv.mkDerivation rec {
wrapProgram $out/bin/supertuxkart --set-default SUPERTUXKART_ASSETS_DIR "${assets}"
'';
sourceRoot = dir;
enableParallelBuilding = true;
meta = with stdenv.lib; {
meta = with lib; {
description = "A Free 3D kart racing game";
longDescription = ''
SuperTuxKart is a Free 3D kart racing game, with many tracks,