summary refs log tree commit diff
path: root/pkgs/games/super-tux-kart
diff options
context:
space:
mode:
authorSCOTT-HAMILTON <sgn.hamilton@protonmail.com>2020-06-24 18:54:22 +0200
committerSCOTT-HAMILTON <sgn.hamilton@protonmail.com>2020-06-27 18:45:18 +0200
commitb2b28fcad3d80bb27f2e0dc8790197f072a17508 (patch)
treea866cf0791c3552ea1a5a639da4997c5fdc2cd9a /pkgs/games/super-tux-kart
parent344dd8d19399a24b665b1240c280dd55a36c8cee (diff)
downloadnixpkgs-b2b28fcad3d80bb27f2e0dc8790197f072a17508.tar
nixpkgs-b2b28fcad3d80bb27f2e0dc8790197f072a17508.tar.gz
nixpkgs-b2b28fcad3d80bb27f2e0dc8790197f072a17508.tar.bz2
nixpkgs-b2b28fcad3d80bb27f2e0dc8790197f072a17508.tar.lz
nixpkgs-b2b28fcad3d80bb27f2e0dc8790197f072a17508.tar.xz
nixpkgs-b2b28fcad3d80bb27f2e0dc8790197f072a17508.tar.zst
nixpkgs-b2b28fcad3d80bb27f2e0dc8790197f072a17508.zip
SuperTuxKart: Replaced some bundled libraries with system ones
Diffstat (limited to 'pkgs/games/super-tux-kart')
-rw-r--r--pkgs/games/super-tux-kart/default.nix67
1 files changed, 48 insertions, 19 deletions
diff --git a/pkgs/games/super-tux-kart/default.nix b/pkgs/games/super-tux-kart/default.nix
index 70c5657508b..b3a7966071a 100644
--- a/pkgs/games/super-tux-kart/default.nix
+++ b/pkgs/games/super-tux-kart/default.nix
@@ -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,