Skip to content

Commit

Permalink
Merge pull request #91421 from SCOTT-HAMILTON/SuperTuxKart
Browse files Browse the repository at this point in the history
SuperTuxKart: Replaced some bundled libraries with system ones
  • Loading branch information
teto authored Jun 27, 2020
2 parents cfb9d04 + b2b28fc commit 91c9127
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 19 deletions.
67 changes: 48 additions & 19 deletions pkgs/games/super-tux-kart/default.nix
Original file line number Diff line number Diff line change
@@ -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 {
Expand All @@ -11,44 +12,72 @@ 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
preFixup = ''
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,
Expand Down
2 changes: 2 additions & 0 deletions pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -7701,6 +7701,8 @@ in

whsniff = callPackage ../applications/networking/sniffers/whsniff { };

wiiuse = callPackage ../development/libraries/wiiuse { };

woeusb = callPackage ../tools/misc/woeusb { };

chase = callPackage ../tools/system/chase { };
Expand Down

0 comments on commit 91c9127

Please sign in to comment.