Merge pull request #123289 from OPNA2608/fix/supertuxkart-darwin/21.05

superTuxKart: Build on Darwin
This commit is contained in:
Michael Raskin 2021-05-16 22:59:10 +00:00 committed by GitHub
commit 5e9437ef57
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 58 additions and 28 deletions

View File

@ -1,4 +1,4 @@
{lib, stdenv, fetchurl, unzip}: { lib, stdenv, fetchurl, unzip, cmake }:
let let
s = # Generated upstream information s = # Generated upstream information
rec { rec {
@ -12,25 +12,32 @@ let
in in
stdenv.mkDerivation { stdenv.mkDerivation {
inherit (s) name version; inherit (s) name version;
nativeBuildInputs = [ unzip ];
src = fetchurl { src = fetchurl {
inherit (s) url sha256; inherit (s) url sha256;
}; };
nativeBuildInputs = [ unzip cmake ];
preConfigure = '' preConfigure = ''
cd angelscript/projects/gnuc export ROOT=$PWD
export makeFlags="$makeFlags PREFIX=$out" cd angelscript/projects/cmake
''; '';
cmakeFlags = [ "-DBUILD_SHARED_LIBS=ON" ];
postInstall = '' postInstall = ''
mkdir -p "$out/share/docs/angelscript" mkdir -p "$out/share/docs/angelscript"
cp -r ../../../docs/* "$out/share/docs/angelscript" cp -r $ROOT/docs/* "$out/share/docs/angelscript"
''; '';
meta = {
meta = with lib; {
inherit (s) version; inherit (s) version;
description = "Light-weight scripting library"; description = "Light-weight scripting library";
license = lib.licenses.zlib ; license = licenses.zlib;
maintainers = [lib.maintainers.raskin]; maintainers = with maintainers; [ raskin ];
platforms = lib.platforms.linux; platforms = platforms.all;
downloadPage = "http://www.angelcode.com/angelscript/downloads.html"; downloadPage = "https://www.angelcode.com/angelscript/downloads.html";
homepage="http://www.angelcode.com/angelscript/"; homepage = "https://www.angelcode.com/angelscript/";
}; };
} }

View File

@ -2,8 +2,10 @@
, stdenv , stdenv
, fetchFromGitHub , fetchFromGitHub
, cmake , cmake
, pkg-config
, bluez , bluez
, libobjc
, Foundation
, IOBluetooth
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
@ -19,15 +21,18 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
buildInputs = [ (lib.getDev bluez) ]; buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ bluez ]
++ lib.optionals stdenv.hostPlatform.isDarwin [ libobjc Foundation IOBluetooth ];
cmakeFlags = [ "-DBUILD_EXAMPLE_SDL=NO" ]; propagatedBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ bluez ];
cmakeFlags = [ "-DBUILD_EXAMPLE_SDL=OFF" ];
meta = with lib; { meta = with lib; {
description = "Feature complete cross-platform Wii Remote access library"; description = "Feature complete cross-platform Wii Remote access library";
license = licenses.gpl3; license = licenses.gpl3Plus;
homepage = "https://github.com/wiiuse/wiiuse"; homepage = "https://github.com/wiiuse/wiiuse";
maintainers = with maintainers; [ shamilton ]; maintainers = with maintainers; [ shamilton ];
platforms = with platforms; linux; platforms = with platforms; unix;
}; };
} }

View File

@ -9,18 +9,19 @@
, SDL2 , SDL2
, glew , glew
, openal , openal
, OpenAL
, libvorbis , libvorbis
, libogg , libogg
, curl , curl
, freetype , freetype
, bluez
, libjpeg , libjpeg
, libpng , libpng
, enet
, harfbuzz , harfbuzz
, mcpp , mcpp
, wiiuse , wiiuse
, angelscript , angelscript
, Cocoa
, IOKit
}: }:
let let
dir = "stk-code"; dir = "stk-code";
@ -82,10 +83,14 @@ stdenv.mkDerivation rec {
}) })
]; ];
# Deletes all bundled libs in stk-code/lib except those
# That couldn't be replaced with system packages
postPatch = '' postPatch = ''
# Deletes all bundled libs in stk-code/lib except those
# That couldn't be replaced with system packages
find lib -maxdepth 1 -type d | egrep -v "^lib$|${(lib.concatStringsSep "|" bundledLibraries)}" | xargs -n1 -L1 -r -I{} rm -rf {} find lib -maxdepth 1 -type d | egrep -v "^lib$|${(lib.concatStringsSep "|" bundledLibraries)}" | xargs -n1 -L1 -r -I{} rm -rf {}
# Allow building with system-installed wiiuse on Darwin
substituteInPlace CMakeLists.txt \
--replace 'NOT (APPLE OR HAIKU)) AND USE_SYSTEM_WIIUSE' 'NOT (HAIKU)) AND USE_SYSTEM_WIIUSE'
''; '';
nativeBuildInputs = [ cmake pkg-config makeWrapper ]; nativeBuildInputs = [ cmake pkg-config makeWrapper ];
@ -93,20 +98,19 @@ stdenv.mkDerivation rec {
buildInputs = [ buildInputs = [
SDL2 SDL2
glew glew
openal
libvorbis libvorbis
libogg libogg
freetype freetype
curl curl
bluez
libjpeg libjpeg
libpng libpng
enet
harfbuzz harfbuzz
mcpp mcpp
wiiuse wiiuse
] ]
++ lib.optional (!stdenv.hostPlatform.isAarch64) angelscript; ++ lib.optional (!stdenv.hostPlatform.isAarch64) angelscript
++ lib.optional stdenv.hostPlatform.isLinux openal
++ lib.optionals stdenv.hostPlatform.isDarwin [ OpenAL IOKit Cocoa ];
cmakeFlags = [ cmakeFlags = [
"-DBUILD_RECORDER=OFF" # libopenglrecorder is not in nixpkgs "-DBUILD_RECORDER=OFF" # libopenglrecorder is not in nixpkgs
@ -117,9 +121,18 @@ stdenv.mkDerivation rec {
"-DOpenGL_GL_PREFERENCE=GLVND" "-DOpenGL_GL_PREFERENCE=GLVND"
]; ];
# Extract binary from built app bundle
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
mkdir $out/bin
mv $out/{supertuxkart.app/Contents/MacOS,bin}/supertuxkart
rm -rf $out/supertuxkart.app
'';
# Obtain the assets directly from the fetched store path, to avoid duplicating assets across multiple engine builds # Obtain the assets directly from the fetched store path, to avoid duplicating assets across multiple engine builds
preFixup = '' preFixup = ''
wrapProgram $out/bin/supertuxkart --set-default SUPERTUXKART_ASSETS_DIR "${assets}" wrapProgram $out/bin/supertuxkart \
--set-default SUPERTUXKART_ASSETS_DIR "${assets}" \
--set-default SUPERTUXKART_DATADIR "$out/share/supertuxkart" \
''; '';
meta = with lib; { meta = with lib; {
@ -132,7 +145,7 @@ stdenv.mkDerivation rec {
homepage = "https://supertuxkart.net/"; homepage = "https://supertuxkart.net/";
license = licenses.gpl2Plus; license = licenses.gpl2Plus;
maintainers = with maintainers; [ pyrolagus peterhoeg ]; maintainers = with maintainers; [ pyrolagus peterhoeg ];
platforms = with platforms; linux; platforms = with platforms; unix;
changelog = "https://github.com/supertuxkart/stk-code/blob/${version}/CHANGELOG.md"; changelog = "https://github.com/supertuxkart/stk-code/blob/${version}/CHANGELOG.md";
}; };
} }

View File

@ -9682,7 +9682,10 @@ in
whsniff = callPackage ../applications/networking/sniffers/whsniff { }; whsniff = callPackage ../applications/networking/sniffers/whsniff { };
wiiuse = callPackage ../development/libraries/wiiuse { }; wiiuse = callPackage ../development/libraries/wiiuse {
inherit (darwin) libobjc;
inherit (darwin.apple_sdk.frameworks) Foundation IOBluetooth;
};
woeusb = callPackage ../tools/misc/woeusb { }; woeusb = callPackage ../tools/misc/woeusb { };
@ -28503,7 +28506,9 @@ in
superTux = callPackage ../games/supertux { }; superTux = callPackage ../games/supertux { };
superTuxKart = callPackage ../games/super-tux-kart { }; superTuxKart = callPackage ../games/super-tux-kart {
inherit (darwin.apple_sdk.frameworks) Cocoa IOKit OpenAL;
};
synthv1 = libsForQt5.callPackage ../applications/audio/synthv1 { }; synthv1 = libsForQt5.callPackage ../applications/audio/synthv1 { };