From 033cfacaf25a640404103904922d3532a037445e Mon Sep 17 00:00:00 2001 From: AndersonTorres Date: Tue, 21 Jun 2022 02:03:11 -0300 Subject: [PATCH 1/6] cmake: reformat expression --- .../tools/build-managers/cmake/default.nix | 87 ++++++++++++------- 1 file changed, 58 insertions(+), 29 deletions(-) diff --git a/pkgs/development/tools/build-managers/cmake/default.nix b/pkgs/development/tools/build-managers/cmake/default.nix index f7fab1c01765..a63e79464752 100644 --- a/pkgs/development/tools/build-managers/cmake/default.nix +++ b/pkgs/development/tools/build-managers/cmake/default.nix @@ -1,15 +1,30 @@ -{ stdenv, lib, fetchurl, pkg-config -, bzip2, curlMinimal, expat, libarchive, xz, zlib, libuv, rhash +{ lib +, stdenv , buildPackages -# darwin attributes +, bzip2 +, curlMinimal +, expat +, fetchurl +, libarchive +, libuv +, ncurses +, openssl +, pkg-config +, qtbase +, rhash +, sphinx +, texinfo +, wrapQtAppsHook +, xz +, zlib , SystemConfiguration , ps , isBootstrap ? false +, useNcurses ? false +, useOpenSSL ? !isBootstrap , useSharedLibraries ? (!isBootstrap && !stdenv.isCygwin) -, useOpenSSL ? !isBootstrap, openssl -, useNcurses ? false, ncurses -, withQt5 ? false, qtbase, wrapQtAppsHook -, buildDocs ? (!isBootstrap && (useNcurses || withQt5)), sphinx, texinfo +, withQt5 ? false +, buildDocs ? (!isBootstrap && (useNcurses || withQt5)) }: stdenv.mkDerivation rec { @@ -40,23 +55,34 @@ stdenv.mkDerivation rec { # On Darwin, always set CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG. ++ lib.optional stdenv.isDarwin ./darwin-always-set-runtime-c-flag.patch; - outputs = [ "out" ] - ++ lib.optionals buildDocs [ "man" "info" ]; + outputs = [ "out" ] ++ lib.optionals buildDocs [ "man" "info" ]; setOutputFlags = false; setupHook = ./setup-hook.sh; depsBuildBuild = [ buildPackages.stdenv.cc ]; - nativeBuildInputs = [ setupHook pkg-config ] - ++ lib.optionals buildDocs [ texinfo ] - ++ lib.optionals withQt5 [ wrapQtAppsHook ]; + nativeBuildInputs = [ + pkg-config + setupHook + ] + ++ lib.optionals buildDocs [ texinfo ] + ++ lib.optionals withQt5 [ wrapQtAppsHook ]; - buildInputs = lib.optionals useSharedLibraries [ bzip2 curlMinimal expat libarchive xz zlib libuv rhash ] - ++ lib.optional useOpenSSL openssl - ++ lib.optional useNcurses ncurses - ++ lib.optional withQt5 qtbase - ++ lib.optional (stdenv.isDarwin && !isBootstrap) SystemConfiguration; + buildInputs = lib.optionals useSharedLibraries [ + bzip2 + curlMinimal + expat + libarchive + xz + zlib + libuv + rhash + ] + ++ lib.optional useOpenSSL openssl + ++ lib.optional useNcurses ncurses + ++ lib.optional withQt5 qtbase + ++ lib.optional (stdenv.isDarwin && !isBootstrap) SystemConfiguration; propagatedBuildInputs = lib.optional stdenv.isDarwin ps; @@ -73,18 +99,21 @@ stdenv.mkDerivation rec { configureFlags = [ "CXXFLAGS=-Wno-elaborated-enum-base" "--docdir=share/doc/${pname}${version}" - ] ++ (if useSharedLibraries then [ "--no-system-jsoncpp" "--system-libs" ] else [ "--no-system-libs" ]) # FIXME: cleanup + ] ++ (if useSharedLibraries + then [ "--no-system-jsoncpp" "--system-libs" ] + else [ "--no-system-libs" ]) # FIXME: cleanup ++ lib.optional withQt5 "--qt-gui" ++ lib.optionals buildDocs [ "--sphinx-build=${sphinx}/bin/sphinx-build" - "--sphinx-man" "--sphinx-info" + "--sphinx-man" ] # Workaround https://gitlab.kitware.com/cmake/cmake/-/issues/20568 ++ lib.optionals stdenv.hostPlatform.is32bit [ "CFLAGS=-D_FILE_OFFSET_BITS=64" "CXXFLAGS=-D_FILE_OFFSET_BITS=64" - ] ++ [ + ] + ++ [ "--" # We should set the proper `CMAKE_SYSTEM_NAME`. # http://www.cmake.org/Wiki/CMake_Cross_Compiling @@ -118,19 +147,19 @@ stdenv.mkDerivation rec { doCheck = false; # fails meta = with lib; { - broken = (withQt5 && stdenv.isDarwin); homepage = "https://cmake.org/"; - changelog = "https://cmake.org/cmake/help/v${lib.versions.majorMinor version}/release/${lib.versions.majorMinor version}.html"; - description = "Cross-Platform Makefile Generator"; + description = "Cross-platform, open-source build system generator"; longDescription = '' - CMake is an open-source, cross-platform family of tools designed to - build, test and package software. CMake is used to control the software + CMake is an open-source, cross-platform family of tools designed to build, + test and package software. CMake is used to control the software compilation process using simple platform and compiler independent - configuration files, and generate native makefiles and workspaces that - can be used in the compiler environment of your choice. + configuration files, and generate native makefiles and workspaces that can + be used in the compiler environment of your choice. ''; - platforms = platforms.all; - maintainers = with maintainers; [ ttuegel lnl7 ]; + changelog = "https://cmake.org/cmake/help/v${lib.versions.majorMinor version}/release/${lib.versions.majorMinor version}.html"; license = licenses.bsd3; + maintainers = with maintainers; [ ttuegel lnl7 ]; + platforms = platforms.all; + broken = (withQt5 && stdenv.isDarwin); }; } From d6f12ab2f64aa8b1523e9d02d4b1e92bfde8432f Mon Sep 17 00:00:00 2001 From: AndersonTorres Date: Tue, 21 Jun 2022 02:10:08 -0300 Subject: [PATCH 2/6] cmake: use a list of suitable uiToolkits instead of Boolean values Also, aborts when the list contains anything besides the acceptable options. --- .../tools/build-managers/cmake/default.nix | 27 +++++++++++-------- pkgs/top-level/all-packages.nix | 8 ++++-- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/pkgs/development/tools/build-managers/cmake/default.nix b/pkgs/development/tools/build-managers/cmake/default.nix index a63e79464752..4ed7006d77b8 100644 --- a/pkgs/development/tools/build-managers/cmake/default.nix +++ b/pkgs/development/tools/build-managers/cmake/default.nix @@ -20,18 +20,23 @@ , SystemConfiguration , ps , isBootstrap ? false -, useNcurses ? false , useOpenSSL ? !isBootstrap , useSharedLibraries ? (!isBootstrap && !stdenv.isCygwin) -, withQt5 ? false -, buildDocs ? (!isBootstrap && (useNcurses || withQt5)) +, uiToolkits ? [] # can contain "ncurses" and/or "qt5" +, buildDocs ? !(isBootstrap || (uiToolkits == [])) }: +let + cursesUI = lib.elem "ncurses" uiToolkits; + qt5UI = lib.elem "qt5" uiToolkits; +in +# Accepts only "ncurses" and "qt5" as possible uiToolkits +assert lib.subtractLists [ "ncurses" "qt5" ] uiToolkits == []; stdenv.mkDerivation rec { pname = "cmake" + lib.optionalString isBootstrap "-boot" - + lib.optionalString useNcurses "-cursesUI" - + lib.optionalString withQt5 "-qt5UI"; + + lib.optionalString cursesUI "-cursesUI" + + lib.optionalString qt5UI "-qt5UI"; version = "3.22.3"; src = fetchurl { @@ -67,7 +72,7 @@ stdenv.mkDerivation rec { setupHook ] ++ lib.optionals buildDocs [ texinfo ] - ++ lib.optionals withQt5 [ wrapQtAppsHook ]; + ++ lib.optionals qt5UI [ wrapQtAppsHook ]; buildInputs = lib.optionals useSharedLibraries [ bzip2 @@ -80,8 +85,8 @@ stdenv.mkDerivation rec { rhash ] ++ lib.optional useOpenSSL openssl - ++ lib.optional useNcurses ncurses - ++ lib.optional withQt5 qtbase + ++ lib.optional cursesUI ncurses + ++ lib.optional qt5UI qtbase ++ lib.optional (stdenv.isDarwin && !isBootstrap) SystemConfiguration; propagatedBuildInputs = lib.optional stdenv.isDarwin ps; @@ -102,7 +107,7 @@ stdenv.mkDerivation rec { ] ++ (if useSharedLibraries then [ "--no-system-jsoncpp" "--system-libs" ] else [ "--no-system-libs" ]) # FIXME: cleanup - ++ lib.optional withQt5 "--qt-gui" + ++ lib.optional qt5UI "--qt-gui" ++ lib.optionals buildDocs [ "--sphinx-build=${sphinx}/bin/sphinx-build" "--sphinx-info" @@ -129,7 +134,7 @@ stdenv.mkDerivation rec { "-DCMAKE_USE_OPENSSL=${if useOpenSSL then "ON" else "OFF"}" # Avoid depending on frameworks. - "-DBUILD_CursesDialog=${if useNcurses then "ON" else "OFF"}" + "-DBUILD_CursesDialog=${if cursesUI then "ON" else "OFF"}" ]; # make install attempts to use the just-built cmake @@ -160,6 +165,6 @@ stdenv.mkDerivation rec { license = licenses.bsd3; maintainers = with maintainers; [ ttuegel lnl7 ]; platforms = platforms.all; - broken = (withQt5 && stdenv.isDarwin); + broken = (qt5UI && stdenv.isDarwin); }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 26a59d4cbdd6..2147f7c0a922 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15388,9 +15388,13 @@ with pkgs; SystemConfiguration = null; }; - cmakeCurses = cmake.override { useNcurses = true; }; + cmakeCurses = cmake.override { + uiToolkits = [ "ncurses" ]; + }; - cmakeWithGui = cmakeCurses.override { withQt5 = true; }; + cmakeWithGui = cmake.override { + uiToolkits = [ "ncurses" "qt5" ]; + }; cmake-format = python3Packages.callPackage ../development/tools/cmake-format { }; From 02155ca9164e4649f5633f6466840dd685e876de Mon Sep 17 00:00:00 2001 From: AndersonTorres Date: Wed, 22 Jun 2022 22:11:09 -0300 Subject: [PATCH 3/6] cmake: rename patches Because it is easier to look at them as a block, not polluting the directory listing so much. --- .../{search-path.patch => 001-search-path.diff} | 0 ...vices.patch => 002-application-services.diff} | 0 ...patch => 003-libuv-application-services.diff} | 0 .../{3.2.2-cygwin.patch => 004-cygwin.diff} | 0 ...h => 005-remove-systemconfiguration-dep.diff} | 0 ...=> 006-darwin-always-set-runtime-c-flag.diff} | 0 .../tools/build-managers/cmake/default.nix | 16 +++++++--------- 7 files changed, 7 insertions(+), 9 deletions(-) rename pkgs/development/tools/build-managers/cmake/{search-path.patch => 001-search-path.diff} (100%) rename pkgs/development/tools/build-managers/cmake/{application-services.patch => 002-application-services.diff} (100%) rename pkgs/development/tools/build-managers/cmake/{libuv-application-services.patch => 003-libuv-application-services.diff} (100%) rename pkgs/development/tools/build-managers/cmake/{3.2.2-cygwin.patch => 004-cygwin.diff} (100%) rename pkgs/development/tools/build-managers/cmake/{remove-systemconfiguration-dep.patch => 005-remove-systemconfiguration-dep.diff} (100%) rename pkgs/development/tools/build-managers/cmake/{darwin-always-set-runtime-c-flag.patch => 006-darwin-always-set-runtime-c-flag.diff} (100%) diff --git a/pkgs/development/tools/build-managers/cmake/search-path.patch b/pkgs/development/tools/build-managers/cmake/001-search-path.diff similarity index 100% rename from pkgs/development/tools/build-managers/cmake/search-path.patch rename to pkgs/development/tools/build-managers/cmake/001-search-path.diff diff --git a/pkgs/development/tools/build-managers/cmake/application-services.patch b/pkgs/development/tools/build-managers/cmake/002-application-services.diff similarity index 100% rename from pkgs/development/tools/build-managers/cmake/application-services.patch rename to pkgs/development/tools/build-managers/cmake/002-application-services.diff diff --git a/pkgs/development/tools/build-managers/cmake/libuv-application-services.patch b/pkgs/development/tools/build-managers/cmake/003-libuv-application-services.diff similarity index 100% rename from pkgs/development/tools/build-managers/cmake/libuv-application-services.patch rename to pkgs/development/tools/build-managers/cmake/003-libuv-application-services.diff diff --git a/pkgs/development/tools/build-managers/cmake/3.2.2-cygwin.patch b/pkgs/development/tools/build-managers/cmake/004-cygwin.diff similarity index 100% rename from pkgs/development/tools/build-managers/cmake/3.2.2-cygwin.patch rename to pkgs/development/tools/build-managers/cmake/004-cygwin.diff diff --git a/pkgs/development/tools/build-managers/cmake/remove-systemconfiguration-dep.patch b/pkgs/development/tools/build-managers/cmake/005-remove-systemconfiguration-dep.diff similarity index 100% rename from pkgs/development/tools/build-managers/cmake/remove-systemconfiguration-dep.patch rename to pkgs/development/tools/build-managers/cmake/005-remove-systemconfiguration-dep.diff diff --git a/pkgs/development/tools/build-managers/cmake/darwin-always-set-runtime-c-flag.patch b/pkgs/development/tools/build-managers/cmake/006-darwin-always-set-runtime-c-flag.diff similarity index 100% rename from pkgs/development/tools/build-managers/cmake/darwin-always-set-runtime-c-flag.patch rename to pkgs/development/tools/build-managers/cmake/006-darwin-always-set-runtime-c-flag.diff diff --git a/pkgs/development/tools/build-managers/cmake/default.nix b/pkgs/development/tools/build-managers/cmake/default.nix index 4ed7006d77b8..84264fda4705 100644 --- a/pkgs/development/tools/build-managers/cmake/default.nix +++ b/pkgs/development/tools/build-managers/cmake/default.nix @@ -46,19 +46,17 @@ stdenv.mkDerivation rec { patches = [ # Don't search in non-Nix locations such as /usr, but do search in our libc. - ./search-path.patch - + ./001-search-path.diff # Don't depend on frameworks. - ./application-services.patch - + ./002-application-services.diff # Derived from https://github.com/libuv/libuv/commit/1a5d4f08238dd532c3718e210078de1186a5920d - ./libuv-application-services.patch - - ] ++ lib.optional stdenv.isCygwin ./3.2.2-cygwin.patch + ./003-libuv-application-services.diff + ] + ++ lib.optional stdenv.isCygwin ./004-cygwin.diff # Derived from https://github.com/curl/curl/commit/31f631a142d855f069242f3e0c643beec25d1b51 - ++ lib.optional (stdenv.isDarwin && isBootstrap) ./remove-systemconfiguration-dep.patch + ++ lib.optional (stdenv.isDarwin && isBootstrap) ./005-remove-systemconfiguration-dep.diff # On Darwin, always set CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG. - ++ lib.optional stdenv.isDarwin ./darwin-always-set-runtime-c-flag.patch; + ++ lib.optional stdenv.isDarwin ./006-darwin-always-set-runtime-c-flag.diff; outputs = [ "out" ] ++ lib.optionals buildDocs [ "man" "info" ]; setOutputFlags = false; From cd39674dc035c5c46208e4a058e650d349069aff Mon Sep 17 00:00:00 2001 From: AndersonTorres Date: Tue, 21 Jun 2022 02:20:12 -0300 Subject: [PATCH 4/6] cmake: add myself as maintainer --- pkgs/development/tools/build-managers/cmake/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/tools/build-managers/cmake/default.nix b/pkgs/development/tools/build-managers/cmake/default.nix index 84264fda4705..5c0ef260c786 100644 --- a/pkgs/development/tools/build-managers/cmake/default.nix +++ b/pkgs/development/tools/build-managers/cmake/default.nix @@ -161,7 +161,7 @@ stdenv.mkDerivation rec { ''; changelog = "https://cmake.org/cmake/help/v${lib.versions.majorMinor version}/release/${lib.versions.majorMinor version}.html"; license = licenses.bsd3; - maintainers = with maintainers; [ ttuegel lnl7 ]; + maintainers = with maintainers; [ ttuegel lnl7 AndersonTorres ]; platforms = platforms.all; broken = (qt5UI && stdenv.isDarwin); }; From d867d91690208c8dbe4fb8c98100c18a1f64ac16 Mon Sep 17 00:00:00 2001 From: AndersonTorres Date: Tue, 21 Jun 2022 02:40:22 -0300 Subject: [PATCH 5/6] cmake: use callPackage instead of libsForQt5.callPackage Following the trend of enhanced composability, and further because it is unusual a build tool using libsForQt5 as scope. --- pkgs/top-level/all-packages.nix | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2147f7c0a922..5abb737cc4f1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15377,12 +15377,15 @@ with pkgs; ctmg = callPackage ../tools/security/ctmg { }; - cmake = libsForQt5.callPackage ../development/tools/build-managers/cmake { + cmake = callPackage ../development/tools/build-managers/cmake { inherit (darwin.apple_sdk.frameworks) SystemConfiguration; + inherit (libsForQt5) qtbase wrapQtAppsHook; }; - cmakeMinimal = libsForQt5.callPackage ../development/tools/build-managers/cmake { + cmakeMinimal = callPackage ../development/tools/build-managers/cmake { isBootstrap = true; + qtbase = null; + wrapQtAppsHook = null; # There is no SystemConfiguration in bootstrapTools, so this version gets # patched to remove that dependency. SystemConfiguration = null; From fc881d3a4b269c89415ade8ce8ef4041f0813395 Mon Sep 17 00:00:00 2001 From: AndersonTorres Date: Tue, 21 Jun 2022 02:18:54 -0300 Subject: [PATCH 6/6] cmake: 3.22.3 -> 3.23.2 --- pkgs/development/tools/build-managers/cmake/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/tools/build-managers/cmake/default.nix b/pkgs/development/tools/build-managers/cmake/default.nix index 5c0ef260c786..7752db352fd3 100644 --- a/pkgs/development/tools/build-managers/cmake/default.nix +++ b/pkgs/development/tools/build-managers/cmake/default.nix @@ -37,11 +37,11 @@ stdenv.mkDerivation rec { + lib.optionalString isBootstrap "-boot" + lib.optionalString cursesUI "-cursesUI" + lib.optionalString qt5UI "-qt5UI"; - version = "3.22.3"; + version = "3.23.2"; src = fetchurl { url = "https://cmake.org/files/v${lib.versions.majorMinor version}/cmake-${version}.tar.gz"; - sha256 = "sha256-n4RpFm+UVTtpeKFu4pIn7Emi61zrYIJ13sQNiuDRtaA="; + sha256 = "sha256-8xa0AFNGb5pBat+YHv2kGxYMqFnpf2pIS0R+opn/Jqo="; }; patches = [