about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorWeijia Wang <9713184+wegank@users.noreply.github.com>2023-01-29 06:32:50 +0100
committerGitHub <noreply@github.com>2023-01-29 06:32:50 +0100
commit9562fb479b0b41d153a7bd6001d3fe939326efe6 (patch)
tree6711dbc38a31bf8bd2839864857bb69a5b1c140d /pkgs
parent0d9abb0d7fd0daa3be44423b9123897f51db8ce6 (diff)
parent38cb19ace8a96996956034fcd9c66d74fb8842d2 (diff)
Merge pull request #208826 from Luflosi/teeworlds-macOS
teeworlds: build on macOS
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/games/teeworlds/default.nix43
-rw-r--r--pkgs/games/teeworlds/rename-VERSION-to-VERSION.txt.patch33
-rw-r--r--pkgs/top-level/all-packages.nix4
3 files changed, 74 insertions, 6 deletions
diff --git a/pkgs/games/teeworlds/default.nix b/pkgs/games/teeworlds/default.nix
index b0a49cc77d1fb..e12c19f6cb6a6 100644
--- a/pkgs/games/teeworlds/default.nix
+++ b/pkgs/games/teeworlds/default.nix
@@ -1,6 +1,8 @@
 { fetchFromGitHub, lib, stdenv, cmake, pkg-config, python3, alsa-lib
 , libX11, libGLU, SDL2, lua5_3, zlib, freetype, wavpack, icoutils
 , nixosTests
+, Carbon
+, Cocoa
 }:
 
 stdenv.mkDerivation rec {
@@ -15,26 +17,57 @@ stdenv.mkDerivation rec {
     fetchSubmodules = true;
   };
 
+  patches = [
+    # Can't use fetchpatch or fetchpatch2 because of https://github.com/NixOS/nixpkgs/issues/32084
+    # Using fetchurl instead is also not a good idea, see https://github.com/NixOS/nixpkgs/issues/32084#issuecomment-727223713
+    ./rename-VERSION-to-VERSION.txt.patch
+  ];
+
   postPatch = ''
     # set compiled-in DATA_DIR so resources can be found
     substituteInPlace src/engine/shared/storage.cpp \
       --replace '#define DATA_DIR "data"' \
                 '#define DATA_DIR "${placeholder "out"}/share/teeworlds/data"'
+
+    # Quote nonsense is a workaround for https://github.com/NixOS/nix/issues/661
+    substituteInPlace 'other/bundle/client/Info.plist.in' \
+      --replace ${"'"}''${TARGET_CLIENT}' 'teeworlds' \
+      --replace ${"'"}''${PROJECT_VERSION}' '${version}'
   '';
 
-  nativeBuildInputs = [ cmake pkg-config icoutils ];
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+  ] ++ lib.optionals stdenv.isLinux [
+    icoutils
+  ];
 
   buildInputs = [
-    python3 alsa-lib libX11 libGLU SDL2 lua5_3 zlib freetype wavpack
+    python3 libGLU SDL2 lua5_3 zlib freetype wavpack
+  ] ++ lib.optionals stdenv.isLinux [
+    alsa-lib
+    libX11
+  ] ++ lib.optionals stdenv.isDarwin [
+    Carbon
+    Cocoa
   ];
 
-  postInstall = ''
+  postInstall = lib.optionalString stdenv.isLinux ''
     # Convert and install desktop icon
     mkdir -p $out/share/pixmaps
     icotool --extract --index 1 --output $out/share/pixmaps/teeworlds.png $src/other/icons/teeworlds.ico
 
     # Install menu item
     install -D $src/other/teeworlds.desktop $out/share/applications/teeworlds.desktop
+  '' + lib.optionalString stdenv.isDarwin ''
+    mkdir -p "$out/Applications/teeworlds.app/Contents/MacOS"
+    mkdir -p "$out/Applications/teeworlds.app/Contents/Resources"
+
+    cp '../other/icons/teeworlds.icns' "$out/Applications/teeworlds.app/Contents/Resources/"
+    cp '../other/bundle/client/Info.plist.in' "$out/Applications/teeworlds.app/Contents/Info.plist"
+    cp '../other/bundle/client/PkgInfo' "$out/Applications/teeworlds.app/Contents/"
+    ln -s "$out/bin/teeworlds" "$out/Applications/teeworlds.app/Contents/MacOS/"
+    ln -s "$out/share/teeworlds/data" "$out/Applications/teeworlds.app/Contents/Resources/data"
   '';
 
   passthru.tests.teeworlds = nixosTests.teeworlds;
@@ -51,7 +84,7 @@ stdenv.mkDerivation rec {
 
     homepage = "https://teeworlds.com/";
     license = "BSD-style, see `license.txt'";
-    maintainers = with lib.maintainers; [ astsmtl ];
-    platforms = lib.platforms.linux;
+    maintainers = with lib.maintainers; [ astsmtl Luflosi ];
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/games/teeworlds/rename-VERSION-to-VERSION.txt.patch b/pkgs/games/teeworlds/rename-VERSION-to-VERSION.txt.patch
new file mode 100644
index 0000000000000..4d56286cb40a4
--- /dev/null
+++ b/pkgs/games/teeworlds/rename-VERSION-to-VERSION.txt.patch
@@ -0,0 +1,33 @@
+From 86d6687ef07f7f05457a7f67537b650656b13820 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Robert=20M=C3=BCller?= <robert.mueller@uni-siegen.de>
+Date: Fri, 15 Oct 2021 23:45:50 +0200
+Subject: [PATCH] rename VERSION to VERSION.txt:
+
+Fixes compilation on systems with case insensitive file names where the standard library includes the version file source code.
+---
+ src/engine/external/json-parser/{VERSION => VERSION.txt} | 0
+ src/engine/external/pnglite/{VERSION => VERSION.txt}     | 0
+ src/engine/external/wavpack/{VERSION => VERSION.txt}     | 0
+ src/engine/external/zlib/{VERSION => VERSION.txt}        | 0
+ 4 files changed, 0 insertions(+), 0 deletions(-)
+ rename src/engine/external/json-parser/{VERSION => VERSION.txt} (100%)
+ rename src/engine/external/pnglite/{VERSION => VERSION.txt} (100%)
+ rename src/engine/external/wavpack/{VERSION => VERSION.txt} (100%)
+ rename src/engine/external/zlib/{VERSION => VERSION.txt} (100%)
+
+diff --git a/src/engine/external/json-parser/VERSION b/src/engine/external/json-parser/VERSION.txt
+similarity index 100%
+rename from src/engine/external/json-parser/VERSION
+rename to src/engine/external/json-parser/VERSION.txt
+diff --git a/src/engine/external/pnglite/VERSION b/src/engine/external/pnglite/VERSION.txt
+similarity index 100%
+rename from src/engine/external/pnglite/VERSION
+rename to src/engine/external/pnglite/VERSION.txt
+diff --git a/src/engine/external/wavpack/VERSION b/src/engine/external/wavpack/VERSION.txt
+similarity index 100%
+rename from src/engine/external/wavpack/VERSION
+rename to src/engine/external/wavpack/VERSION.txt
+diff --git a/src/engine/external/zlib/VERSION b/src/engine/external/zlib/VERSION.txt
+similarity index 100%
+rename from src/engine/external/zlib/VERSION
+rename to src/engine/external/zlib/VERSION.txt
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 6c1486ebeca25..84588a3fb207a 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -35514,7 +35514,9 @@ with pkgs;
 
   teetertorture = callPackage ../games/teetertorture { };
 
-  teeworlds = callPackage ../games/teeworlds { };
+  teeworlds = callPackage ../games/teeworlds {
+    inherit (darwin.apple_sdk.frameworks) Carbon Cocoa;
+  };
 
   tengine = callPackage ../servers/http/tengine {
     openssl = openssl_1_1;