From c64ebc8adf8b7ac846afbd18335bd51663c70fb1 Mon Sep 17 00:00:00 2001 From: Francesco Gazzetta Date: Mon, 11 Dec 2023 15:36:18 +0100 Subject: [PATCH] minetest: 5.7.0 -> 5.8.0, cleanup * Inline the generic builder, since we don't build multiple versions anymore * Remove unused patches, flags, and overrides * Remove minetest_game, it has been debundled * Use finalAttrs * Use lib.cmake* * Add a top-level attribute for the touch variant * Define the server- and client-only variants through overrides in all-packages.nix * Move the *_5 aliases to top-level/aliases.nix * General cleanup Closes #273207 --- pkgs/games/minetest/default.nix | 189 ++++++++++++++++---------------- pkgs/top-level/aliases.nix | 2 + pkgs/top-level/all-packages.nix | 12 +- 3 files changed, 99 insertions(+), 104 deletions(-) diff --git a/pkgs/games/minetest/default.nix b/pkgs/games/minetest/default.nix index 550f088e8af0..fcea007ff598 100644 --- a/pkgs/games/minetest/default.nix +++ b/pkgs/games/minetest/default.nix @@ -38,106 +38,101 @@ , Carbon , Cocoa , withTouchSupport ? false +, buildClient ? true +, buildServer ? true }: -with lib; +stdenv.mkDerivation (finalAttrs: { + pname = "minetest"; + version = "5.8.0"; -let - boolToCMake = b: if b then "ON" else "OFF"; - - irrlichtmtInput = irrlichtmt.override { inherit withTouchSupport; }; - - generic = { version, rev ? version, sha256, dataRev ? version, dataSha256, buildClient ? true, buildServer ? false }: let - sources = { - src = fetchFromGitHub { - owner = "minetest"; - repo = "minetest"; - inherit rev sha256; - }; - data = fetchFromGitHub { - owner = "minetest"; - repo = "minetest_game"; - rev = dataRev; - sha256 = dataSha256; - }; - }; - in stdenv.mkDerivation { - pname = "minetest"; - inherit version; - - src = sources.src; - - cmakeFlags = [ - "-G Ninja" - "-DBUILD_CLIENT=${boolToCMake buildClient}" - "-DBUILD_SERVER=${boolToCMake buildServer}" - "-DENABLE_GETTEXT=1" - "-DENABLE_SPATIAL=1" - "-DENABLE_SYSTEM_JSONCPP=1" - - # Remove when https://github.com/NixOS/nixpkgs/issues/144170 is fixed - "-DCMAKE_INSTALL_BINDIR=bin" - "-DCMAKE_INSTALL_DATADIR=share" - "-DCMAKE_INSTALL_DOCDIR=share/doc" - "-DCMAKE_INSTALL_DOCDIR=share/doc" - "-DCMAKE_INSTALL_MANDIR=share/man" - "-DCMAKE_INSTALL_LOCALEDIR=share/locale" - - ] ++ optionals buildServer [ - "-DENABLE_PROMETHEUS=1" - ] ++ optionals withTouchSupport [ - "-DENABLE_TOUCH=TRUE" - ]; - - env.NIX_CFLAGS_COMPILE = "-DluaL_reg=luaL_Reg"; # needed since luajit-2.1.0-beta3 - - nativeBuildInputs = [ cmake doxygen graphviz ninja ]; - - buildInputs = [ - irrlichtmtInput jsoncpp gettext freetype sqlite curl bzip2 ncurses - gmp libspatialindex - ] ++ [ (if lib.meta.availableOn stdenv.hostPlatform luajit then luajit else lua5_1) ] ++ [ - ] ++ optionals stdenv.isDarwin [ - libiconv OpenGL OpenAL Carbon Cocoa - ] ++ optionals buildClient [ - libpng libjpeg libGLU openal libogg libvorbis xorg.libX11 - ] ++ optionals buildServer [ - leveldb postgresql hiredis prometheus-cpp - ]; - - postPatch = '' - substituteInPlace src/filesys.cpp --replace "/bin/rm" "${coreutils}/bin/rm" - '' + lib.optionalString stdenv.isDarwin '' - sed -i '/pagezero_size/d;/fixup_bundle/d' src/CMakeLists.txt - ''; - - postInstall = lib.optionalString stdenv.isLinux '' - mkdir -pv $out/share/minetest/games/minetest_game/ - cp -rv ${sources.data}/* $out/share/minetest/games/minetest_game/ - patchShebangs $out - '' + lib.optionalString stdenv.isDarwin '' - mkdir -p $out/Applications - mv $out/minetest.app $out/Applications - ''; - - meta = with lib; { - homepage = "http://minetest.net/"; - description = "Infinite-world block sandbox game"; - license = licenses.lgpl21Plus; - platforms = platforms.linux ++ platforms.darwin; - maintainers = with maintainers; [ pyrolagus fpletz fgaz ]; - }; + src = fetchFromGitHub { + owner = "minetest"; + repo = "minetest"; + rev = finalAttrs.version; + hash = "sha256-Oct8nQORSH8PjYs+gHU9QrKObMfapjAlGvycj+AJnOs="; }; - v5 = { - version = "5.7.0"; - sha256 = "sha256-9AL6gTmy05yTeYfCq3EMK4gqpBWdHwvJ5Flpzj8hFAE="; - dataSha256 = "sha256-wWgeO8513N5jQdWvZrq357fPpAU5ik06mgZraWCQawo="; - }; + cmakeFlags = [ + (lib.cmakeBool "BUILD_CLIENT" buildClient) + (lib.cmakeBool "BUILD_SERVER" buildServer) + (lib.cmakeBool "ENABLE_PROMETHEUS" buildServer) + (lib.cmakeBool "ENABLE_TOUCH" withTouchSupport) + # Ensure we use system libraries + (lib.cmakeBool "ENABLE_SYSTEM_GMP" true) + (lib.cmakeBool "ENABLE_SYSTEM_JSONCPP" true) + # Updates are handled by nix anyway + (lib.cmakeBool "ENABLE_UPDATE_CHECKER" false) + # ...but make it clear that this is a nix package + (lib.cmakeFeature "VERSION_EXTRA" "NixOS") - mkClient = version: generic (version // { buildClient = true; buildServer = false; }); - mkServer = version: generic (version // { buildClient = false; buildServer = true; }); -in { - minetestclient_5 = mkClient v5; - minetestserver_5 = mkServer v5; -} + # Remove when https://github.com/NixOS/nixpkgs/issues/144170 is fixed + (lib.cmakeFeature "CMAKE_INSTALL_BINDIR" "bin") + (lib.cmakeFeature "CMAKE_INSTALL_DATADIR" "share") + (lib.cmakeFeature "CMAKE_INSTALL_DOCDIR" "share/doc/minetest") + (lib.cmakeFeature "CMAKE_INSTALL_MANDIR" "share/man") + (lib.cmakeFeature "CMAKE_INSTALL_LOCALEDIR" "share/locale") + + ]; + + nativeBuildInputs = [ + cmake + doxygen + graphviz + ninja + ]; + + buildInputs = [ + irrlichtmt + jsoncpp + gettext + freetype + sqlite + curl + bzip2 + ncurses + gmp + libspatialindex + ] ++ lib.optional (lib.meta.availableOn stdenv.hostPlatform luajit) luajit + ++ lib.optionals stdenv.isDarwin [ + libiconv + OpenGL + OpenAL + Carbon + Cocoa + ] ++ lib.optionals buildClient [ + libpng + libjpeg + libGLU + openal + libogg + libvorbis + xorg.libX11 + ] ++ lib.optionals buildServer [ + leveldb + postgresql + hiredis + prometheus-cpp + ]; + + postPatch = '' + substituteInPlace src/filesys.cpp --replace "/bin/rm" "${coreutils}/bin/rm" + '' + lib.optionalString stdenv.isDarwin '' + sed -i '/pagezero_size/d;/fixup_bundle/d' src/CMakeLists.txt + ''; + + postInstall = lib.optionalString stdenv.isLinux '' + patchShebangs $out + '' + lib.optionalString stdenv.isDarwin '' + mkdir -p $out/Applications + mv $out/minetest.app $out/Applications + ''; + + meta = with lib; { + homepage = "https://minetest.net/"; + description = "Infinite-world block sandbox game"; + license = licenses.lgpl21Plus; + platforms = platforms.linux ++ platforms.darwin; + maintainers = with maintainers; [ pyrolagus fpletz fgaz ]; + }; +}) diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 016c8a655020..c96b37b1362e 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -598,6 +598,8 @@ mapAliases ({ miopen-hip = throw "'miopen-hip' has been replaced with 'rocmPackages.miopen-hip'"; # Added 2023-10-08 miopen-opencl = throw "'miopen-opencl' has been replaced with 'rocmPackages.miopen-opencl'"; # Added 2023-10-08 mime-types = mailcap; # Added 2022-01-21 + minetestclient_5 = minetestclient; # Added 2023-12-11 + minetestserver_5 = minetestserver; # Added 2023-12-11 minizip2 = pkgs.minizip-ng; # Added 2022-12-28 mirage-im = throw "'mirage-im' has been removed, as it was broken and unmaintained"; # Added 2023-11-26 monero = monero-cli; # Added 2021-11-28 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 14e01dbed619..a43a1789428c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -38029,14 +38029,12 @@ with pkgs; moon-buggy = callPackage ../games/moon-buggy { }; - inherit (callPackages ../games/minetest { + minetest = callPackage ../games/minetest { inherit (darwin.apple_sdk.frameworks) OpenGL OpenAL Carbon Cocoa; - }) - minetestclient_5 minetestserver_5; - - minetest = minetestclient; - minetestclient = minetestclient_5; - minetestserver = minetestserver_5; + }; + minetestclient = minetest.override { buildServer = false; }; + minetest-touch = minetest.override { buildServer = false; withTouchSupport = true; }; + minetestserver = minetest.override { buildClient = false; }; mnemosyne = callPackage ../games/mnemosyne { python = python3;