about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/tools/build-managers
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/tools/build-managers')
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/bazel/buildtools/default.nix4
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/boot/builder.sh2
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/cmake/001-search-path.diff95
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/cmake/002-application-services.diff39
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/cmake/003-libuv-application-services.diff55
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/cmake/004-cygwin.diff274
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/cmake/005-remove-systemconfiguration-dep.diff67
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/cmake/006-darwin-always-set-runtime-c-flag.diff14
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/cmake/check-pc-files-hook.sh18
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/cmake/default.nix173
-rwxr-xr-xnixpkgs/pkgs/development/tools/build-managers/cmake/setup-hook.sh184
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/meson/boost-Do-not-add-system-paths-on-nix.patch21
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/meson/clear-old-rpath.patch20
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/meson/default.nix148
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/meson/disable-bitcode.patch24
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/meson/emulator-hook.sh5
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/meson/fix-rpath.patch24
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/meson/gir-fallback-path.patch21
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/meson/more-env-vars.patch12
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/meson/setup-hook.sh42
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/scons/3.1.2.nix38
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/scons/4.1.0.nix50
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/scons/4.5.2.nix54
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/scons/common.nix62
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/scons/default.nix20
25 files changed, 145 insertions, 1321 deletions
diff --git a/nixpkgs/pkgs/development/tools/build-managers/bazel/buildtools/default.nix b/nixpkgs/pkgs/development/tools/build-managers/bazel/buildtools/default.nix
index 8c46b2456ee3..f22e7c3c22af 100644
--- a/nixpkgs/pkgs/development/tools/build-managers/bazel/buildtools/default.nix
+++ b/nixpkgs/pkgs/development/tools/build-managers/bazel/buildtools/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "bazel-buildtools";
-  version = "6.3.3";
+  version = "6.4.0";
 
   src = fetchFromGitHub {
     owner = "bazelbuild";
     repo = "buildtools";
     rev = "v${version}";
-    hash = "sha256-eGX1W3Nc26aw31dWm1hvcUzFh1efL4Vd86dK6Hs2BJc=";
+    hash = "sha256-k4qbveJ1BORnwjOIZcJLWIGVMRjCAqVhISggQ/VTzA4=";
   };
 
   vendorHash = "sha256-DigTREfI6I48wxRpGp/bfH1NbUZ4E1B5UTQXpI0LY1A=";
diff --git a/nixpkgs/pkgs/development/tools/build-managers/boot/builder.sh b/nixpkgs/pkgs/development/tools/build-managers/boot/builder.sh
index e007cbac9582..4506e3f0f861 100644
--- a/nixpkgs/pkgs/development/tools/build-managers/boot/builder.sh
+++ b/nixpkgs/pkgs/development/tools/build-managers/boot/builder.sh
@@ -1,4 +1,4 @@
-if [ -e .attrs.sh ]; then source .attrs.sh; fi
+if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi
 source $stdenv/setup
 
 boot_bin=$out/bin/boot
diff --git a/nixpkgs/pkgs/development/tools/build-managers/cmake/001-search-path.diff b/nixpkgs/pkgs/development/tools/build-managers/cmake/001-search-path.diff
deleted file mode 100644
index 04ab0847a707..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/cmake/001-search-path.diff
+++ /dev/null
@@ -1,95 +0,0 @@
-diff --git a/Modules/Platform/UnixPaths.cmake b/Modules/Platform/UnixPaths.cmake
-index b9381c3d7d..5e944640b5 100644
---- a/Modules/Platform/UnixPaths.cmake
-+++ b/Modules/Platform/UnixPaths.cmake
-@@ -26,9 +26,6 @@ get_filename_component(_CMAKE_INSTALL_DIR "${_CMAKE_INSTALL_DIR}" PATH)
- # please make sure to keep Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst
- # synchronized
- list(APPEND CMAKE_SYSTEM_PREFIX_PATH
--  # Standard
--  /usr/local /usr /
--
-   # CMake install location
-   "${_CMAKE_INSTALL_DIR}"
-   )
-@@ -47,48 +44,49 @@ endif()
- 
- # Non "standard" but common install prefixes
- list(APPEND CMAKE_SYSTEM_PREFIX_PATH
--  /usr/X11R6
--  /usr/pkg
--  /opt
-   )
- 
- # List common include file locations not under the common prefixes.
-+if(DEFINED ENV{NIX_CC}
-+  AND IS_DIRECTORY "$ENV{NIX_CC}"
-+  AND EXISTS "$ENV{NIX_CC}/nix-support/orig-libc"
-+  AND EXISTS "$ENV{NIX_CC}/nix-support/orig-libc-dev")
-+  file(STRINGS "$ENV{NIX_CC}/nix-support/orig-libc" _nix_cmake_libc)
-+  file(STRINGS "$ENV{NIX_CC}/nix-support/orig-libc-dev" _nix_cmake_libc_dev)
-+else()
-+  set(_nix_cmake_libc @libc_lib@)
-+  set(_nix_cmake_libc_dev @libc_dev@)
-+endif()
-+
- list(APPEND CMAKE_SYSTEM_INCLUDE_PATH
--  # X11
--  /usr/include/X11
-+  "${_nix_cmake_libc_dev}/include"
-   )
- 
- list(APPEND CMAKE_SYSTEM_LIBRARY_PATH
--  # X11
--  /usr/lib/X11
-+  "${_nix_cmake_libc}/lib"
-   )
- 
- list(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
--  /lib /lib32 /lib64 /usr/lib /usr/lib32 /usr/lib64
-+  "${_nix_cmake_libc}/lib"
-   )
- 
--if(CMAKE_SYSROOT_COMPILE)
--  set(_cmake_sysroot_compile "${CMAKE_SYSROOT_COMPILE}")
--else()
--  set(_cmake_sysroot_compile "${CMAKE_SYSROOT}")
--endif()
--
- # Default per-language values.  These may be later replaced after
- # parsing the implicit directory information from compiler output.
- set(_CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES_INIT
-   ${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}
--  "${_cmake_sysroot_compile}/usr/include"
-+  "${_nix_cmake_libc_dev}/include"
-   )
- set(_CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES_INIT
-   ${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES}
--  "${_cmake_sysroot_compile}/usr/include"
-+  "${_nix_cmake_libc_dev}/include"
-   )
- set(_CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES_INIT
-   ${CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES}
--  "${_cmake_sysroot_compile}/usr/include"
-+  "${_nix_cmake_libc_dev}/include"
-   )
- 
--unset(_cmake_sysroot_compile)
-+unset(_nix_cmake_libc)
-+unset(_nix_cmake_libc_dev)
- 
- # Reminder when adding new locations computed from environment variables
- # please make sure to keep Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst
-diff --git a/Modules/Platform/WindowsPaths.cmake b/Modules/Platform/WindowsPaths.cmake
-index b9e2f17979..ab517cd4a7 100644
---- a/Modules/Platform/WindowsPaths.cmake
-+++ b/Modules/Platform/WindowsPaths.cmake
-@@ -70,7 +70,7 @@ endif()
- 
- if(CMAKE_CROSSCOMPILING AND NOT CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
-   # MinGW (useful when cross compiling from linux with CMAKE_FIND_ROOT_PATH set)
--  list(APPEND CMAKE_SYSTEM_PREFIX_PATH /)
-+  # list(APPEND CMAKE_SYSTEM_PREFIX_PATH /)
- endif()
- 
- list(APPEND CMAKE_SYSTEM_INCLUDE_PATH
diff --git a/nixpkgs/pkgs/development/tools/build-managers/cmake/002-application-services.diff b/nixpkgs/pkgs/development/tools/build-managers/cmake/002-application-services.diff
deleted file mode 100644
index 56f7cd266b7a..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/cmake/002-application-services.diff
+++ /dev/null
@@ -1,39 +0,0 @@
-diff -Naur cmake-3.25.1-old/Source/CMakeLists.txt cmake-3.25.1-new/Source/CMakeLists.txt
---- cmake-3.25.1-old/Source/CMakeLists.txt	2022-11-30 10:57:03.000000000 -0300
-+++ cmake-3.25.1-new/Source/CMakeLists.txt	2022-12-19 01:00:08.412064304 -0300
-@@ -916,7 +916,6 @@
- # On Apple we need CoreFoundation and CoreServices
- if(APPLE)
-   target_link_libraries(CMakeLib PUBLIC "-framework CoreFoundation")
--  target_link_libraries(CMakeLib PUBLIC "-framework CoreServices")
- endif()
- 
- if(WIN32 AND NOT UNIX)
-diff -Naur cmake-3.25.1-old/Source/cmGlobalXCodeGenerator.cxx cmake-3.25.1-new/Source/cmGlobalXCodeGenerator.cxx
---- cmake-3.25.1-old/Source/cmGlobalXCodeGenerator.cxx	2022-11-30 10:57:03.000000000 -0300
-+++ cmake-3.25.1-new/Source/cmGlobalXCodeGenerator.cxx	2022-12-19 01:00:56.065135169 -0300
-@@ -56,10 +56,6 @@
- 
- #if !defined(CMAKE_BOOTSTRAP) && defined(__APPLE__)
- #  include <CoreFoundation/CoreFoundation.h>
--#  if !TARGET_OS_IPHONE
--#    define HAVE_APPLICATION_SERVICES
--#    include <ApplicationServices/ApplicationServices.h>
--#  endif
- #endif
- 
- #if !defined(CMAKE_BOOTSTRAP)
-diff -Naur cmake-3.25.1-old/Utilities/cmlibarchive/CMakeLists.txt cmake-3.25.1-new/Utilities/cmlibarchive/CMakeLists.txt
---- cmake-3.25.1-old/Utilities/cmlibarchive/CMakeLists.txt	2022-11-30 10:57:03.000000000 -0300
-+++ cmake-3.25.1-new/Utilities/cmlibarchive/CMakeLists.txt	2022-12-19 01:01:43.392205981 -0300
-@@ -2041,10 +2041,6 @@
-   ADD_CUSTOM_TARGET(run_all_tests)
- ENDIF(ENABLE_TEST)
- 
--# We need CoreServices on Mac OS.
--IF(APPLE)
--  LIST(APPEND ADDITIONAL_LIBS "-framework CoreServices")
--ENDIF(APPLE)
- 
- add_subdirectory(libarchive)
- IF(0) # CMake does not build libarchive's command-line tools.
diff --git a/nixpkgs/pkgs/development/tools/build-managers/cmake/003-libuv-application-services.diff b/nixpkgs/pkgs/development/tools/build-managers/cmake/003-libuv-application-services.diff
deleted file mode 100644
index 6607a9c6ed1f..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/cmake/003-libuv-application-services.diff
+++ /dev/null
@@ -1,55 +0,0 @@
-diff --git a/Utilities/cmlibuv/CMakeLists.txt b/Utilities/cmlibuv/CMakeLists.txt
-index 7625cf65d9..167903e309 100644
---- a/Utilities/cmlibuv/CMakeLists.txt
-+++ b/Utilities/cmlibuv/CMakeLists.txt
-@@ -193,6 +193,22 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
-     src/unix/kqueue.c
-     src/unix/proctitle.c
-     )
-+
-+  include(CheckIncludeFile)
-+
-+  check_include_file("ApplicationServices/ApplicationServices.h" HAVE_ApplicationServices)
-+  if (HAVE_ApplicationServices)
-+    list(APPEND uv_defines
-+      HAVE_APPLICATIONSERVICES_APPLICATIONSERVICES_H=1
-+      )
-+  endif()
-+
-+  check_include_file("CoreServices/CoreServices.h" HAVE_CoreServices)
-+  if (HAVE_CoreServices)
-+    list(APPEND uv_defines
-+      HAVE_CORESERVICES_CORESERVICES_H=1
-+      )
-+  endif()
- endif()
- 
- if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
-diff --git a/Utilities/cmlibuv/src/unix/fsevents.c b/Utilities/cmlibuv/src/unix/fsevents.c
-index a51f29b3f6..3f6bf01968 100644
---- a/Utilities/cmlibuv/src/unix/fsevents.c
-+++ b/Utilities/cmlibuv/src/unix/fsevents.c
-@@ -21,7 +21,7 @@
- #include "uv.h"
- #include "internal.h"
- 
--#if TARGET_OS_IPHONE || MAC_OS_X_VERSION_MAX_ALLOWED < 1070
-+#if !HAVE_CORESERVICES_CORESERVICES_H || MAC_OS_X_VERSION_MAX_ALLOWED < 1070
- 
- /* iOS (currently) doesn't provide the FSEvents-API (nor CoreServices) */
- /* macOS prior to 10.7 doesn't provide the full FSEvents API so use kqueue */
-@@ -39,7 +39,7 @@ int uv__fsevents_close(uv_fs_event_t* handle) {
- void uv__fsevents_loop_delete(uv_loop_t* loop) {
- }
- 
--#else /* TARGET_OS_IPHONE */
-+#else /* !HAVE_CORESERVICES_CORESERVICES_H */
- 
- #include "darwin-stub.h"
- 
-@@ -920,4 +920,4 @@ int uv__fsevents_close(uv_fs_event_t* handle) {
-   return 0;
- }
- 
--#endif /* TARGET_OS_IPHONE */
-+#endif /* !HAVE_CORESERVICES_CORESERVICES_H */
diff --git a/nixpkgs/pkgs/development/tools/build-managers/cmake/004-cygwin.diff b/nixpkgs/pkgs/development/tools/build-managers/cmake/004-cygwin.diff
deleted file mode 100644
index 982aba17e874..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/cmake/004-cygwin.diff
+++ /dev/null
@@ -1,274 +0,0 @@
---- cmake-3.2.2/Source/cmFileCommand.cxx	2015-04-13 19:09:00.000000000 +0200
-+++ cmake-3.2.2/Source/ccmFileCommand.cxx	2015-06-10 11:02:27.345598700 +0200
-@@ -1179,7 +1179,7 @@
-   MatchProperties CollectMatchProperties(const char* file)
-     {
-     // Match rules are case-insensitive on some platforms.
--#if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__)
-+#if defined(_WIN32) || defined(__APPLE__)
-     std::string lower = cmSystemTools::LowerCase(file);
-     const char* file_to_match = lower.c_str();
- #else
---- cmake-3.2.2/Source/cmInstallCommand.cxx	2015-04-13 19:09:00.000000000 +0200
-+++ cmake-3.2.2/Source/cmInstallCommand.cxx	2015-06-10 11:04:19.257935200 +0200
-@@ -1138,7 +1138,7 @@
-       {
-       literal_args += " REGEX \"";
-     // Match rules are case-insensitive on some platforms.
--#if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__)
-+#if defined(_WIN32) || defined(__APPLE__)
-       std::string regex = cmSystemTools::LowerCase(args[i]);
- #else
-       std::string regex = args[i];
---- cmake-3.2.2/Source/kwsys/Glob.cxx	2015-04-13 19:09:00.000000000 +0200
-+++ cmake-3.2.2/Source/kwsys/Glob.cxx	2015-06-10 11:05:51.602674000 +0200
-@@ -37,7 +37,7 @@
- #include <string.h>
- namespace KWSYS_NAMESPACE
- {
--#if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__)
-+#if defined(_WIN32) || defined(__APPLE__)
- // On Windows and apple, no difference between lower and upper case
- # define KWSYS_GLOB_CASE_INDEPENDENT
- #endif
---- cmake-3.2.2/Source/kwsys/SystemInformation.cxx	2015-04-13 19:09:00.000000000 +0200
-+++ cmake-3.2.2/Source/kwsys/SystemInformation.cxx	2015-06-10 11:13:00.308303500 +0200
-@@ -911,7 +911,7 @@
- // Hide implementation details in an anonymous namespace.
- namespace {
- // *****************************************************************************
--#if defined(__linux) || defined(__APPLE__)
-+#if defined(__linux) || defined(__APPLE__) || defined(__CYGWIN__)
- int LoadLines(
-       FILE *file,
-       kwsys_stl::vector<kwsys_stl::string> &lines)
-@@ -947,7 +947,7 @@
-   return nRead;
- }
- 
--# if defined(__linux)
-+# if defined(__linux) || defined(__CYGWIN__)
- // *****************************************************************************
- int LoadLines(
-       const char *fileName,
-@@ -986,7 +986,7 @@
- }
- #endif
- 
--#if defined(__linux)
-+#if defined(__linux) || defined(__CYGWIN__)
- // ****************************************************************************
- template<typename T>
- int GetFieldsFromFile(
-@@ -3132,7 +3132,6 @@
-     pos = buffer.find("processor\t",pos+1);
-     }
- 
--#ifdef __linux
-   // Find the largest physical id.
-   int maxId = -1;
-   kwsys_stl::string idc =
-@@ -3165,14 +3164,6 @@
-             atoi(this->ExtractValueFromCpuInfoFile(buffer,"ncpus active").c_str());
-     }
- 
--#else // __CYGWIN__
--  // does not have "physical id" entries, neither "cpu cores"
--  // this has to be fixed for hyper-threading.
--  kwsys_stl::string cpucount =
--    this->ExtractValueFromCpuInfoFile(buffer,"cpu count");
--  this->NumberOfPhysicalCPU=
--    this->NumberOfLogicalCPU = atoi(cpucount.c_str());
--#endif
-   // gotta have one, and if this is 0 then we get a / by 0n
-   // better to have a bad answer than a crash
-   if(this->NumberOfPhysicalCPU <= 0)
-@@ -3370,7 +3361,7 @@
-   GlobalMemoryStatusEx(&statex);
-   return statex.ullTotalPhys/1024;
- # endif
--#elif defined(__linux)
-+#elif defined(__linux) || defined(__CYGWIN__)
-   SystemInformation::LongLong memTotal=0;
-   int ierr=GetFieldFromFile("/proc/meminfo","MemTotal:",memTotal);
-   if (ierr)
-@@ -3501,7 +3492,7 @@
-   GlobalMemoryStatusEx(&statex);
-   return (statex.ullTotalPhys - statex.ullAvailPhys)/1024;
- # endif
--#elif defined(__linux)
-+#elif defined(__linux) || defined(__CYGWIN__)
-   const char *names[3]={"MemTotal:","MemFree:",NULL};
-   SystemInformation::LongLong values[2]={SystemInformation::LongLong(0)};
-   int ierr=GetFieldsFromFile("/proc/meminfo",names,values);
-@@ -3560,7 +3551,7 @@
-     return -2;
-     }
-   return pmc.WorkingSetSize/1024;
--#elif defined(__linux)
-+#elif defined(__linux) || defined(__CYGWIN__)
-   SystemInformation::LongLong memUsed=0;
-   int ierr=GetFieldFromFile("/proc/self/status","VmRSS:",memUsed);
-   if (ierr)
-@@ -3612,7 +3603,7 @@
- {
- #if defined(_WIN32)
-   return GetCurrentProcessId();
--#elif defined(__linux) || defined(__APPLE__)
-+#elif defined(__linux) || defined(__APPLE__) || defined(__CYGWIN__)
-   return getpid();
- #else
-   return -1;
---- cmake-3.2.2/Source/kwsys/SystemTools.cxx	2015-04-13 19:09:00.000000000 +0200
-+++ cmake-3.2.2/Source/kwsys/SystemTools.cxx	2015-06-10 11:21:58.980443200 +0200
-@@ -93,19 +93,12 @@
- # if defined(_MSC_VER) && _MSC_VER >= 1800
- #  define KWSYS_WINDOWS_DEPRECATED_GetVersionEx
- # endif
--#elif defined (__CYGWIN__)
--# include <windows.h>
--# undef _WIN32
- #endif
- 
- #if !KWSYS_CXX_HAS_ENVIRON_IN_STDLIB_H
- extern char **environ;
- #endif
- 
--#ifdef __CYGWIN__
--# include <sys/cygwin.h>
--#endif
--
- // getpwnam doesn't exist on Windows and Cray Xt3/Catamount
- // same for TIOCGWINSZ
- #if defined(_WIN32) || defined (__LIBCATAMOUNT__)
-@@ -1148,15 +1141,7 @@
-     {
-     return false;
-     }
--#if defined(__CYGWIN__)
--  // Convert filename to native windows path if possible.
--  char winpath[MAX_PATH];
--  if(SystemTools::PathCygwinToWin32(filename.c_str(), winpath))
--    {
--    return (GetFileAttributesA(winpath) != INVALID_FILE_ATTRIBUTES);
--    }
--  return access(filename.c_str(), R_OK) == 0;
--#elif defined(_WIN32)
-+#if defined(_WIN32)
-   return (GetFileAttributesW(
-             SystemTools::ConvertToWindowsExtendedPath(filename).c_str())
-           != INVALID_FILE_ATTRIBUTES);
-@@ -1190,28 +1175,6 @@
- }
- 
- //----------------------------------------------------------------------------
--#ifdef __CYGWIN__
--bool SystemTools::PathCygwinToWin32(const char *path, char *win32_path)
--{
--  SystemToolsTranslationMap::iterator i =
--    SystemTools::Cyg2Win32Map->find(path);
--
--  if (i != SystemTools::Cyg2Win32Map->end())
--    {
--    strncpy(win32_path, i->second.c_str(), MAX_PATH);
--    }
--  else
--    {
--    if(cygwin_conv_path(CCP_POSIX_TO_WIN_A, path, win32_path, MAX_PATH) != 0)
--      {
--      win32_path[0] = 0;
--      }
--    SystemToolsTranslationMap::value_type entry(path, win32_path);
--    SystemTools::Cyg2Win32Map->insert(entry);
--    }
--  return win32_path[0] != 0;
--}
--#endif
- 
- bool SystemTools::Touch(const kwsys_stl::string& filename, bool create)
- {
-@@ -4307,7 +4270,7 @@
- 
- bool SystemTools::FileIsFullPath(const char* in_name, size_t len)
- {
--#if defined(_WIN32) || defined(__CYGWIN__)
-+#if defined(_WIN32)
-   // On Windows, the name must be at least two characters long.
-   if(len < 2)
-     {
-@@ -5078,9 +5041,6 @@
- static unsigned int SystemToolsManagerCount;
- SystemToolsTranslationMap *SystemTools::TranslationMap;
- SystemToolsTranslationMap *SystemTools::LongPathMap;
--#ifdef __CYGWIN__
--SystemToolsTranslationMap *SystemTools::Cyg2Win32Map;
--#endif
- 
- // SystemToolsManager manages the SystemTools singleton.
- // SystemToolsManager should be included in any translation unit
-@@ -5126,9 +5086,6 @@
-   // Allocate the translation map first.
-   SystemTools::TranslationMap = new SystemToolsTranslationMap;
-   SystemTools::LongPathMap = new SystemToolsTranslationMap;
--#ifdef __CYGWIN__
--  SystemTools::Cyg2Win32Map = new SystemToolsTranslationMap;
--#endif
- 
-   // Add some special translation paths for unix.  These are not added
-   // for windows because drive letters need to be maintained.  Also,
-@@ -5183,9 +5140,6 @@
- {
-   delete SystemTools::TranslationMap;
-   delete SystemTools::LongPathMap;
--#ifdef __CYGWIN__
--  delete SystemTools::Cyg2Win32Map;
--#endif
- }
- 
- 
---- cmake-3.2.2/Source/kwsys/SystemTools.hxx.in	2015-04-13 19:09:00.000000000 +0200
-+++ cmake-3.2.2/Source/kwsys/SystemTools.hxx.in	2015-06-10 11:24:24.271286600 +0200
-@@ -298,15 +298,6 @@
-   static bool FileExists(const kwsys_stl::string& filename);
- 
-   /**
--   * Converts Cygwin path to Win32 path. Uses dictionary container for
--   * caching and calls to cygwin_conv_to_win32_path from Cygwin dll
--   * for actual translation.  Returns true on success, else false.
--   */
--#ifdef __CYGWIN__
--  static bool PathCygwinToWin32(const char *path, char *win32_path);
--#endif
--
--  /**
-    * Return file length
-    */
-   static unsigned long FileLength(const kwsys_stl::string& filename);
-@@ -942,9 +933,6 @@
-    */
-   static SystemToolsTranslationMap *TranslationMap;
-   static SystemToolsTranslationMap *LongPathMap;
--#ifdef __CYGWIN__
--  static SystemToolsTranslationMap *Cyg2Win32Map;
--#endif
-   friend class SystemToolsManager;
- };
- 
---- cmake-3.2.2/Modules/FindCurses.cmake	2015-04-13 19:09:00.000000000 +0200
-+++ cmake-3.2.2/Modules/FindCurses.cmake	2015-06-10 12:10:19.682030300 +0200
-@@ -60,15 +60,6 @@
- if(CURSES_NCURSES_LIBRARY  AND ((NOT CURSES_CURSES_LIBRARY) OR CURSES_NEED_NCURSES))
-   set(CURSES_USE_NCURSES TRUE)
- endif()
--# http://cygwin.com/ml/cygwin-announce/2010-01/msg00002.html
--# cygwin ncurses stopped providing curses.h symlinks see above
--# message.  Cygwin is an ncurses package, so force ncurses on
--# cygwin if the curses.h is missing
--if(CYGWIN)
--  if(NOT EXISTS /usr/include/curses.h)
--    set(CURSES_USE_NCURSES TRUE)
--  endif()
--endif()
- 
- 
- # Not sure the logic is correct here.
diff --git a/nixpkgs/pkgs/development/tools/build-managers/cmake/005-remove-systemconfiguration-dep.diff b/nixpkgs/pkgs/development/tools/build-managers/cmake/005-remove-systemconfiguration-dep.diff
deleted file mode 100644
index 76aa91cff92c..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/cmake/005-remove-systemconfiguration-dep.diff
+++ /dev/null
@@ -1,67 +0,0 @@
---- a/Utilities/cmcurl/CMakeLists.txt
-+++ b/Utilities/cmcurl/CMakeLists.txt
-@@ -391,13 +391,6 @@ if(ENABLE_IPV6 AND NOT WIN32)
- 
-   if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND NOT ENABLE_ARES)
-     set(use_core_foundation ON)
--
--    find_library(SYSTEMCONFIGURATION_FRAMEWORK "SystemConfiguration")
--    if(NOT SYSTEMCONFIGURATION_FRAMEWORK)
--      message(FATAL_ERROR "SystemConfiguration framework not found")
--    endif()
--
--    list(APPEND CURL_LIBS "-framework SystemConfiguration")
-   endif()
- endif()
- 
---- a/Utilities/cmcurl/lib/curl_setup.h
-+++ b/Utilities/cmcurl/lib/curl_setup.h
-@@ -257,11 +257,7 @@
-  * performing this task will result in a synthesized IPv6 address.
-  */
- #if defined(__APPLE__) && !defined(USE_ARES)
--#include <TargetConditionals.h>
- #define USE_RESOLVE_ON_IPS 1
--#  if defined(TARGET_OS_OSX) && TARGET_OS_OSX
--#    define CURL_OSX_CALL_COPYPROXIES 1
--#  endif
- #endif
- 
- #ifdef USE_LWIPSOCK
---- a/Utilities/cmcurl/lib/hostip.c
-+++ b/Utilities/cmcurl/lib/hostip.c
-@@ -68,10 +68,6 @@
- #include "curl_memory.h"
- #include "memdebug.h"
- 
--#if defined(ENABLE_IPV6) && defined(CURL_OSX_CALL_COPYPROXIES)
--#include <SystemConfiguration/SCDynamicStoreCopySpecific.h>
--#endif
--
- #if defined(CURLRES_SYNCH) && \
-     defined(HAVE_ALARM) && defined(SIGALRM) && defined(HAVE_SIGSETJMP)
- /* alarm-based timeouts can only be used with all the dependencies satisfied */
-@@ -661,23 +657,6 @@ enum resolve_t Curl_resolv(struct Curl_easy *data,
-         return CURLRESOLV_ERROR;
-     }
- 
--#if defined(ENABLE_IPV6) && defined(CURL_OSX_CALL_COPYPROXIES)
--    {
--      /*
--       * The automagic conversion from IPv4 literals to IPv6 literals only
--       * works if the SCDynamicStoreCopyProxies system function gets called
--       * first. As Curl currently doesn't support system-wide HTTP proxies, we
--       * therefore don't use any value this function might return.
--       *
--       * This function is only available on a macOS and is not needed for
--       * IPv4-only builds, hence the conditions above.
--       */
--      CFDictionaryRef dict = SCDynamicStoreCopyProxies(NULL);
--      if(dict)
--        CFRelease(dict);
--    }
--#endif
--
- #ifndef USE_RESOLVE_ON_IPS
-     /* First check if this is an IPv4 address string */
-     if(Curl_inet_pton(AF_INET, hostname, &in) > 0)
diff --git a/nixpkgs/pkgs/development/tools/build-managers/cmake/006-darwin-always-set-runtime-c-flag.diff b/nixpkgs/pkgs/development/tools/build-managers/cmake/006-darwin-always-set-runtime-c-flag.diff
deleted file mode 100644
index dc10e6b34231..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/cmake/006-darwin-always-set-runtime-c-flag.diff
+++ /dev/null
@@ -1,14 +0,0 @@
-Revert of commit 1af23c4de2c7d58c06171d70b37794b5c860d5f4.
---- b/Modules/Platform/Darwin.cmake
-+++ a/Modules/Platform/Darwin.cmake
-@@ -47,9 +47,7 @@
- set(CMAKE_SHARED_MODULE_SUFFIX ".so")
- set(CMAKE_MODULE_EXISTS 1)
- set(CMAKE_DL_LIBS "")
-+set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
--if(NOT "${_CURRENT_OSX_VERSION}" VERSION_LESS "10.5")
--  set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
--endif()
- 
- foreach(lang C CXX OBJC OBJCXX)
-   set(CMAKE_${lang}_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ")
diff --git a/nixpkgs/pkgs/development/tools/build-managers/cmake/check-pc-files-hook.sh b/nixpkgs/pkgs/development/tools/build-managers/cmake/check-pc-files-hook.sh
deleted file mode 100644
index 94d1b7b53556..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/cmake/check-pc-files-hook.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-cmakePcfileCheckPhase() {
-    while IFS= read -rd $'\0' file; do
-        grepout=$(grep --line-number '}//nix/store' "$file" || true)
-        if [ -n "$grepout" ]; then
-            {
-            echo "Broken paths found in a .pc file! $file"
-            echo "The following lines have issues (specifically '//' in paths)."
-            echo "$grepout"
-            echo "It is very likely that paths are being joined improperly."
-            echo 'ex: "${prefix}/@CMAKE_INSTALL_LIBDIR@" should be "@CMAKE_INSTALL_FULL_LIBDIR@"'
-            echo "Please see https://github.com/NixOS/nixpkgs/issues/144170 for more details."
-            exit 1
-            } 1>&2
-        fi
-    done < <(find "${!outputDev}" -iname "*.pc" -print0)
-}
-
-postFixupHooks+=(cmakePcfileCheckPhase)
diff --git a/nixpkgs/pkgs/development/tools/build-managers/cmake/default.nix b/nixpkgs/pkgs/development/tools/build-managers/cmake/default.nix
deleted file mode 100644
index 00715130a000..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/cmake/default.nix
+++ /dev/null
@@ -1,173 +0,0 @@
-{ lib
-, stdenv
-, fetchurl
-, buildPackages
-, bzip2
-, curlMinimal
-, expat
-, libarchive
-, libuv
-, ncurses
-, openssl
-, pkg-config
-, ps
-, rhash
-, sphinx
-, texinfo
-, xz
-, zlib
-, isBootstrap ? false
-, useOpenSSL ? !isBootstrap
-, useSharedLibraries ? (!isBootstrap && !stdenv.isCygwin)
-, uiToolkits ? [] # can contain "ncurses" and/or "qt5"
-, buildDocs ? !(isBootstrap || (uiToolkits == []))
-, darwin
-, libsForQt5
-}:
-
-let
-  inherit (darwin.apple_sdk.frameworks) SystemConfiguration;
-  inherit (libsForQt5) qtbase wrapQtAppsHook;
-  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 == [];
-# Minimal, bootstrap cmake does not have toolkits
-assert isBootstrap -> (uiToolkits == []);
-stdenv.mkDerivation (finalAttrs: {
-  pname = "cmake"
-    + lib.optionalString isBootstrap "-boot"
-    + lib.optionalString cursesUI "-cursesUI"
-    + lib.optionalString qt5UI "-qt5UI";
-  version = "3.26.4";
-
-  src = fetchurl {
-    url = "https://cmake.org/files/v${lib.versions.majorMinor finalAttrs.version}/cmake-${finalAttrs.version}.tar.gz";
-    hash = "sha256-MTtogMKRvU/jHAqlHW5iZZKCpSHmlfMNXMDSWrvVwgg=";
-  };
-
-  patches = [
-    # Don't search in non-Nix locations such as /usr, but do search in our libc.
-    ./001-search-path.diff
-    # Don't depend on frameworks.
-    ./002-application-services.diff
-    # Derived from https://github.com/libuv/libuv/commit/1a5d4f08238dd532c3718e210078de1186a5920d
-    ./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) ./005-remove-systemconfiguration-dep.diff
-  # On Darwin, always set CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG.
-  ++ lib.optional stdenv.isDarwin ./006-darwin-always-set-runtime-c-flag.diff;
-
-  outputs = [ "out" ] ++ lib.optionals buildDocs [ "man" "info" ];
-  setOutputFlags = false;
-
-  setupHooks = [
-    ./setup-hook.sh
-    ./check-pc-files-hook.sh
-  ];
-
-  depsBuildBuild = [ buildPackages.stdenv.cc ];
-
-  nativeBuildInputs = finalAttrs.setupHooks ++ [
-    pkg-config
-  ]
-  ++ lib.optionals buildDocs [ texinfo ]
-  ++ lib.optionals qt5UI [ wrapQtAppsHook ];
-
-  buildInputs = lib.optionals useSharedLibraries [
-    bzip2
-    curlMinimal
-    expat
-    libarchive
-    xz
-    zlib
-    libuv
-    rhash
-  ]
-  ++ lib.optional useOpenSSL openssl
-  ++ lib.optional cursesUI ncurses
-  ++ lib.optional qt5UI qtbase
-  ++ lib.optional (stdenv.isDarwin && !isBootstrap) SystemConfiguration;
-
-  propagatedBuildInputs = lib.optional stdenv.isDarwin ps;
-
-  preConfigure = ''
-    fixCmakeFiles .
-    substituteInPlace Modules/Platform/UnixPaths.cmake \
-      --subst-var-by libc_bin ${lib.getBin stdenv.cc.libc} \
-      --subst-var-by libc_dev ${lib.getDev stdenv.cc.libc} \
-      --subst-var-by libc_lib ${lib.getLib stdenv.cc.libc}
-    # CC_FOR_BUILD and CXX_FOR_BUILD are used to bootstrap cmake
-    configureFlags="--parallel=''${NIX_BUILD_CORES:-1} CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD $configureFlags"
-  '';
-
-  configureFlags = [
-    "CXXFLAGS=-Wno-elaborated-enum-base"
-    "--docdir=share/doc/${finalAttrs.pname}-${finalAttrs.version}"
-  ] ++ (if useSharedLibraries
-        then [ "--no-system-jsoncpp" "--system-libs" ]
-        else [ "--no-system-libs" ]) # FIXME: cleanup
-  ++ lib.optional qt5UI "--qt-gui"
-  ++ lib.optionals buildDocs [
-    "--sphinx-build=${sphinx}/bin/sphinx-build"
-    "--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
-    #
-    # Unfortunately cmake seems to expect absolute paths for ar, ranlib, and
-    # strip. Otherwise they are taken to be relative to the source root of the
-    # package being built.
-    "-DCMAKE_CXX_COMPILER=${stdenv.cc.targetPrefix}c++"
-    "-DCMAKE_C_COMPILER=${stdenv.cc.targetPrefix}cc"
-    "-DCMAKE_AR=${lib.getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}ar"
-    "-DCMAKE_RANLIB=${lib.getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}ranlib"
-    "-DCMAKE_STRIP=${lib.getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}strip"
-
-    "-DCMAKE_USE_OPENSSL=${if useOpenSSL then "ON" else "OFF"}"
-    # Avoid depending on frameworks.
-    "-DBUILD_CursesDialog=${if cursesUI then "ON" else "OFF"}"
-  ];
-
-  # make install attempts to use the just-built cmake
-  preInstall = lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
-    sed -i 's|bin/cmake|${buildPackages.cmakeMinimal}/bin/cmake|g' Makefile
-  '';
-
-  dontUseCmakeConfigure = true;
-  enableParallelBuilding = true;
-
-  # This isn't an autoconf configure script; triples are passed via
-  # CMAKE_SYSTEM_NAME, etc.
-  configurePlatforms = [ ];
-
-  doCheck = false; # fails
-
-  meta = {
-    homepage = "https://cmake.org/";
-    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
-      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.
-    '';
-    changelog = "https://cmake.org/cmake/help/v${lib.versions.majorMinor finalAttrs.version}/release/${lib.versions.majorMinor finalAttrs.version}.html";
-    license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ ttuegel lnl7 AndersonTorres ];
-    platforms = lib.platforms.all;
-    broken = (qt5UI && stdenv.isDarwin);
-  };
-})
diff --git a/nixpkgs/pkgs/development/tools/build-managers/cmake/setup-hook.sh b/nixpkgs/pkgs/development/tools/build-managers/cmake/setup-hook.sh
deleted file mode 100755
index b28ed42b6896..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/cmake/setup-hook.sh
+++ /dev/null
@@ -1,184 +0,0 @@
-addCMakeParams() {
-    addToSearchPath CMAKE_PREFIX_PATH $1
-}
-
-fixCmakeFiles() {
-    # Replace occurences of /usr and /opt by /var/empty.
-    echo "fixing cmake files..."
-    find "$1" \( -type f -name "*.cmake" -o -name "*.cmake.in" -o -name CMakeLists.txt \) -print |
-        while read fn; do
-            sed -e 's^/usr\([ /]\|$\)^/var/empty\1^g' -e 's^/opt\([ /]\|$\)^/var/empty\1^g' < "$fn" > "$fn.tmp"
-            mv "$fn.tmp" "$fn"
-        done
-}
-
-cmakeConfigurePhase() {
-    runHook preConfigure
-
-    # default to CMake defaults if unset
-    : ${cmakeBuildDir:=build}
-
-    export CTEST_OUTPUT_ON_FAILURE=1
-    if [ -n "${enableParallelChecking-1}" ]; then
-        export CTEST_PARALLEL_LEVEL=$NIX_BUILD_CORES
-    fi
-
-    if [ -z "${dontFixCmake-}" ]; then
-        fixCmakeFiles .
-    fi
-
-    if [ -z "${dontUseCmakeBuildDir-}" ]; then
-        mkdir -p "$cmakeBuildDir"
-        cd "$cmakeBuildDir"
-        : ${cmakeDir:=..}
-    else
-        : ${cmakeDir:=.}
-    fi
-
-    if [ -z "${dontAddPrefix-}" ]; then
-        cmakeFlags="-DCMAKE_INSTALL_PREFIX=$prefix $cmakeFlags"
-    fi
-
-    # We should set the proper `CMAKE_SYSTEM_NAME`.
-    # http://www.cmake.org/Wiki/CMake_Cross_Compiling
-    #
-    # Unfortunately cmake seems to expect absolute paths for ar, ranlib, and
-    # strip. Otherwise they are taken to be relative to the source root of the
-    # package being built.
-    cmakeFlags="-DCMAKE_CXX_COMPILER=$CXX $cmakeFlags"
-    cmakeFlags="-DCMAKE_C_COMPILER=$CC $cmakeFlags"
-    cmakeFlags="-DCMAKE_AR=$(command -v $AR) $cmakeFlags"
-    cmakeFlags="-DCMAKE_RANLIB=$(command -v $RANLIB) $cmakeFlags"
-    cmakeFlags="-DCMAKE_STRIP=$(command -v $STRIP) $cmakeFlags"
-
-    # on macOS we want to prefer Unix-style headers to Frameworks
-    # because we usually do not package the framework
-    cmakeFlags="-DCMAKE_FIND_FRAMEWORK=LAST $cmakeFlags"
-
-    # we never want to use the global macOS SDK
-    cmakeFlags="-DCMAKE_OSX_SYSROOT= $cmakeFlags"
-
-    # correctly detect our clang compiler
-    cmakeFlags="-DCMAKE_POLICY_DEFAULT_CMP0025=NEW $cmakeFlags"
-
-    # This installs shared libraries with a fully-specified install
-    # name. By default, cmake installs shared libraries with just the
-    # basename as the install name, which means that, on Darwin, they
-    # can only be found by an executable at runtime if the shared
-    # libraries are in a system path or in the same directory as the
-    # executable. This flag makes the shared library accessible from its
-    # nix/store directory.
-    cmakeFlags="-DCMAKE_INSTALL_NAME_DIR=${!outputLib}/lib $cmakeFlags"
-
-    # The docdir flag needs to include PROJECT_NAME as per GNU guidelines,
-    # try to extract it from CMakeLists.txt.
-    if [[ -z "$shareDocName" ]]; then
-        local cmakeLists="${cmakeDir}/CMakeLists.txt"
-        if [[ -f "$cmakeLists" ]]; then
-            local shareDocName="$(grep --only-matching --perl-regexp --ignore-case '\bproject\s*\(\s*"?\K([^[:space:]")]+)' < "$cmakeLists" | head -n1)"
-        fi
-        # The argument sometimes contains garbage or variable interpolation.
-        # When that is the case, let’s fall back to the derivation name.
-        if [[ -z "$shareDocName" ]] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_+-]'; then
-            if [[ -n "${pname-}" ]]; then
-                shareDocName="$pname"
-            else
-                shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')"
-            fi
-        fi
-    fi
-
-    # This ensures correct paths with multiple output derivations
-    # It requires the project to use variables from GNUInstallDirs module
-    # https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html
-    cmakeFlags="-DCMAKE_INSTALL_BINDIR=${!outputBin}/bin $cmakeFlags"
-    cmakeFlags="-DCMAKE_INSTALL_SBINDIR=${!outputBin}/sbin $cmakeFlags"
-    cmakeFlags="-DCMAKE_INSTALL_INCLUDEDIR=${!outputInclude}/include $cmakeFlags"
-    cmakeFlags="-DCMAKE_INSTALL_OLDINCLUDEDIR=${!outputInclude}/include $cmakeFlags"
-    cmakeFlags="-DCMAKE_INSTALL_MANDIR=${!outputMan}/share/man $cmakeFlags"
-    cmakeFlags="-DCMAKE_INSTALL_INFODIR=${!outputInfo}/share/info $cmakeFlags"
-    cmakeFlags="-DCMAKE_INSTALL_DOCDIR=${!outputDoc}/share/doc/${shareDocName} $cmakeFlags"
-    cmakeFlags="-DCMAKE_INSTALL_LIBDIR=${!outputLib}/lib $cmakeFlags"
-    cmakeFlags="-DCMAKE_INSTALL_LIBEXECDIR=${!outputLib}/libexec $cmakeFlags"
-    cmakeFlags="-DCMAKE_INSTALL_LOCALEDIR=${!outputLib}/share/locale $cmakeFlags"
-
-    # Don’t build tests when doCheck = false
-    if [ -z "${doCheck-}" ]; then
-        cmakeFlags="-DBUILD_TESTING=OFF $cmakeFlags"
-    fi
-
-    # Always build Release, to ensure optimisation flags
-    cmakeFlags="-DCMAKE_BUILD_TYPE=${cmakeBuildType:-Release} $cmakeFlags"
-
-    # Disable user package registry to avoid potential side effects
-    # and unecessary attempts to access non-existent home folder
-    # https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html#disabling-the-package-registry
-    cmakeFlags="-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON $cmakeFlags"
-    cmakeFlags="-DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF $cmakeFlags"
-    cmakeFlags="-DCMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY=OFF $cmakeFlags"
-
-    if [ "${buildPhase-}" = ninjaBuildPhase ]; then
-        cmakeFlags="-GNinja $cmakeFlags"
-    fi
-
-    echo "cmake flags: $cmakeFlags ${cmakeFlagsArray[@]}"
-
-    cmake "$cmakeDir" $cmakeFlags "${cmakeFlagsArray[@]}"
-
-    if ! [[ -v enableParallelBuilding ]]; then
-        enableParallelBuilding=1
-        echo "cmake: enabled parallel building"
-    fi
-
-    if ! [[ -v enableParallelInstalling ]]; then
-        enableParallelInstalling=1
-        echo "cmake: enabled parallel installing"
-    fi
-
-    runHook postConfigure
-}
-
-if [ -z "${dontUseCmakeConfigure-}" -a -z "${configurePhase-}" ]; then
-    setOutputFlags=
-    configurePhase=cmakeConfigurePhase
-fi
-
-addEnvHooks "$targetOffset" addCMakeParams
-
-makeCmakeFindLibs(){
-  isystem_seen=
-  iframework_seen=
-  for flag in ${NIX_CFLAGS_COMPILE-} ${NIX_LDFLAGS-}; do
-    if test -n "$isystem_seen" && test -d "$flag"; then
-      isystem_seen=
-      export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH-}${CMAKE_INCLUDE_PATH:+:}${flag}"
-    elif test -n "$iframework_seen" && test -d "$flag"; then
-      iframework_seen=
-      export CMAKE_FRAMEWORK_PATH="${CMAKE_FRAMEWORK_PATH-}${CMAKE_FRAMEWORK_PATH:+:}${flag}"
-    else
-      isystem_seen=
-      iframework_seen=
-      case $flag in
-        -I*)
-          export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH-}${CMAKE_INCLUDE_PATH:+:}${flag:2}"
-          ;;
-        -L*)
-          export CMAKE_LIBRARY_PATH="${CMAKE_LIBRARY_PATH-}${CMAKE_LIBRARY_PATH:+:}${flag:2}"
-          ;;
-        -F*)
-          export CMAKE_FRAMEWORK_PATH="${CMAKE_FRAMEWORK_PATH-}${CMAKE_FRAMEWORK_PATH:+:}${flag:2}"
-          ;;
-        -isystem)
-          isystem_seen=1
-          ;;
-        -iframework)
-          iframework_seen=1
-          ;;
-      esac
-    fi
-  done
-}
-
-# not using setupHook, because it could be a setupHook adding additional
-# include flags to NIX_CFLAGS_COMPILE
-postHooks+=(makeCmakeFindLibs)
diff --git a/nixpkgs/pkgs/development/tools/build-managers/meson/boost-Do-not-add-system-paths-on-nix.patch b/nixpkgs/pkgs/development/tools/build-managers/meson/boost-Do-not-add-system-paths-on-nix.patch
deleted file mode 100644
index 0a2eda9de9ac..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/meson/boost-Do-not-add-system-paths-on-nix.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -Naur meson-0.60.2-old/mesonbuild/dependencies/boost.py meson-0.60.2-new/mesonbuild/dependencies/boost.py
---- meson-0.60.2-old/mesonbuild/dependencies/boost.py	2021-11-02 16:58:07.000000000 -0300
-+++ meson-0.60.2-new/mesonbuild/dependencies/boost.py	2021-12-12 19:21:27.895705897 -0300
-@@ -682,16 +682,7 @@
-         else:
-             tmp = []  # type: T.List[Path]
- 
--            # Add some default system paths
--            tmp += [Path('/opt/local')]
--            tmp += [Path('/usr/local/opt/boost')]
--            tmp += [Path('/usr/local')]
--            tmp += [Path('/usr')]
--
--            # Cleanup paths
--            tmp = [x for x in tmp if x.is_dir()]
--            tmp = [x.resolve() for x in tmp]
--            roots += tmp
-+            # Remove such spurious, non-explicit "system" paths for Nix&Nixpkgs
- 
-         self.check_and_set_roots(roots, use_system=True)
- 
diff --git a/nixpkgs/pkgs/development/tools/build-managers/meson/clear-old-rpath.patch b/nixpkgs/pkgs/development/tools/build-managers/meson/clear-old-rpath.patch
deleted file mode 100644
index f1e3c76e8b53..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/meson/clear-old-rpath.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff --git a/mesonbuild/scripts/depfixer.py b/mesonbuild/scripts/depfixer.py
-index 4176b9a03..faaabf616 100644
---- a/mesonbuild/scripts/depfixer.py
-+++ b/mesonbuild/scripts/depfixer.py
-@@ -336,6 +336,15 @@ class Elf(DataSizes):
-         if not new_rpath:
-             self.remove_rpath_entry(entrynum)
-         else:
-+            # Clear old rpath to avoid stale references,
-+            # not heeding the warning above about de-duplication
-+            # since it does not seem to cause issues for us
-+            # and not doing so trips up Nix’s reference checker.
-+            # See https://github.com/NixOS/nixpkgs/pull/46020
-+            # and https://github.com/NixOS/nixpkgs/issues/95163
-+            self.bf.seek(rp_off)
-+            self.bf.write(b'\0'*len(old_rpath))
-+
-             self.bf.seek(rp_off)
-             self.bf.write(new_rpath)
-             self.bf.write(b'\0')
diff --git a/nixpkgs/pkgs/development/tools/build-managers/meson/default.nix b/nixpkgs/pkgs/development/tools/build-managers/meson/default.nix
deleted file mode 100644
index 8758afea8211..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/meson/default.nix
+++ /dev/null
@@ -1,148 +0,0 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, fetchpatch
-, installShellFiles
-, ninja
-, pkg-config
-, python3
-, zlib
-, coreutils
-, substituteAll
-, Foundation
-, OpenGL
-, AppKit
-, Cocoa
-, libxcrypt
-}:
-
-python3.pkgs.buildPythonApplication rec {
-  pname = "meson";
-  version = "1.2.1";
-
-  src = fetchFromGitHub {
-    owner = "mesonbuild";
-    repo = "meson";
-    rev = "refs/tags/${version}";
-    hash = "sha256-x2VN/6Kg/n6BW5S4nLKfG67dYrSR/G+Aowf6d2Vbc+0=";
-  };
-
-  patches = [
-    # Meson is currently inspecting fewer variables than autoconf does, which
-    # makes it harder for us to use setup hooks, etc.  Taken from
-    # https://github.com/mesonbuild/meson/pull/6827
-    ./more-env-vars.patch
-
-    # Unlike libtool, vanilla Meson does not pass any information
-    # about the path library will be installed to to g-ir-scanner,
-    # breaking the GIR when path other than ${!outputLib}/lib is used.
-    # We patch Meson to add a --fallback-library-path argument with
-    # library install_dir to g-ir-scanner.
-    ./gir-fallback-path.patch
-
-    # In common distributions, RPATH is only needed for internal libraries so
-    # meson removes everything else. With Nix, the locations of libraries
-    # are not as predictable, therefore we need to keep them in the RPATH.
-    # At the moment we are keeping the paths starting with /nix/store.
-    # https://github.com/NixOS/nixpkgs/issues/31222#issuecomment-365811634
-    (substituteAll {
-      src = ./fix-rpath.patch;
-      inherit (builtins) storeDir;
-    })
-
-    # When Meson removes build_rpath from DT_RUNPATH entry, it just writes
-    # the shorter NUL-terminated new rpath over the old one to reduce
-    # the risk of potentially breaking the ELF files.
-    # But this can cause much bigger problem for Nix as it can produce
-    # cut-in-half-by-\0 store path references.
-    # Let’s just clear the whole rpath and hope for the best.
-    ./clear-old-rpath.patch
-
-    # Patch out default boost search paths to avoid impure builds on
-    # unsandboxed non-NixOS builds, see:
-    # https://github.com/NixOS/nixpkgs/issues/86131#issuecomment-711051774
-    ./boost-Do-not-add-system-paths-on-nix.patch
-
-    # Nixpkgs cctools does not have bitcode support.
-    ./disable-bitcode.patch
-
-    # Fix passing multiple --define-variable arguments to pkg-config.
-    # https://github.com/mesonbuild/meson/pull/10670
-    (fetchpatch {
-      url = "https://github.com/mesonbuild/meson/commit/d5252c5d4cf1c1931fef0c1c98dd66c000891d21.patch";
-      sha256 = "GiUNVul1N5Fl8mfqM7vA/r1FdKqImiDYLXMVDt77gvw=";
-      excludes = [
-        "docs/yaml/objects/dep.yaml"
-      ];
-    })
-  ];
-
-  setupHook = ./setup-hook.sh;
-
-  nativeCheckInputs = [ ninja pkg-config ];
-  checkInputs = [ zlib ]
-    ++ lib.optionals stdenv.isDarwin [ Foundation OpenGL AppKit Cocoa ];
-  checkPhase = ''
-    runHook preCheck
-
-    patchShebangs 'test cases'
-    substituteInPlace 'test cases/native/8 external program shebang parsing/script.int.in' \
-      --replace /usr/bin/env ${coreutils}/bin/env
-    # requires git, creating cyclic dependency
-    rm -r 'test cases/common/66 vcstag'
-    # requires glib, creating cyclic dependency
-    rm -r 'test cases/linuxlike/6 subdir include order'
-    rm -r 'test cases/linuxlike/9 compiler checks with dependencies'
-    # requires static zlib, see #66461
-    rm -r 'test cases/linuxlike/14 static dynamic linkage'
-    # Nixpkgs cctools does not have bitcode support.
-    rm -r 'test cases/osx/7 bitcode'
-    HOME="$TMPDIR" python ./run_project_tests.py
-
-    runHook postCheck
-  '';
-
-  postFixup = ''
-    pushd $out/bin
-    # undo shell wrapper as meson tools are called with python
-    for i in *; do
-      mv ".$i-wrapped" "$i"
-    done
-    popd
-
-    # Do not propagate Python
-    rm $out/nix-support/propagated-build-inputs
-
-    substituteInPlace "$out/share/bash-completion/completions/meson" \
-      --replace "python3 -c " "${python3.interpreter} -c "
-  '';
-
-  buildInputs = lib.optionals (python3.pythonOlder "3.9") [
-    libxcrypt
-  ];
-
-  nativeBuildInputs = [ installShellFiles ];
-
-  postInstall = ''
-    installShellCompletion --zsh data/shell-completions/zsh/_meson
-    installShellCompletion --bash data/shell-completions/bash/meson
-  '';
-
-  meta = with lib; {
-    homepage = "https://mesonbuild.com";
-    description = "An open source, fast and friendly build system made in Python";
-    longDescription = ''
-      Meson is an open source build system meant to be both extremely fast, and,
-      even more importantly, as user friendly as possible.
-
-      The main design point of Meson is that every moment a developer spends
-      writing or debugging build definitions is a second wasted. So is every
-      second spent waiting for the build system to actually start compiling
-      code.
-    '';
-    license = licenses.asl20;
-    maintainers = with maintainers; [ mbe AndersonTorres ];
-    inherit (python3.meta) platforms;
-  };
-}
-# TODO: a more Nixpkgs-tailoired test suite
diff --git a/nixpkgs/pkgs/development/tools/build-managers/meson/disable-bitcode.patch b/nixpkgs/pkgs/development/tools/build-managers/meson/disable-bitcode.patch
deleted file mode 100644
index a72997c10439..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/meson/disable-bitcode.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- a/mesonbuild/compilers/mixins/clang.py
-+++ b/mesonbuild/compilers/mixins/clang.py
-@@ -56,10 +56,6 @@ class ClangCompiler(GnuLikeCompiler):
-             {OptionKey('b_colorout'), OptionKey('b_lto_threads'), OptionKey('b_lto_mode'), OptionKey('b_thinlto_cache'),
-              OptionKey('b_thinlto_cache_dir')})
- 
--        # TODO: this really should be part of the linker base_options, but
--        # linkers don't have base_options.
--        if isinstance(self.linker, AppleDynamicLinker):
--            self.base_options.add(OptionKey('b_bitcode'))
-         # All Clang backends can also do LLVM IR
-         self.can_compile_suffixes.add('ll')
- 
---- a/mesonbuild/linkers/linkers.py
-+++ b/mesonbuild/linkers/linkers.py
-@@ -785,7 +785,7 @@ class AppleDynamicLinker(PosixDynamicLinkerMixin, DynamicLinker):
-         return self._apply_prefix('-headerpad_max_install_names')
- 
-     def bitcode_args(self) -> T.List[str]:
--        return self._apply_prefix('-bitcode_bundle')
-+        raise MesonException('Nixpkgs cctools does not support bitcode bundles')
- 
-     def fatal_warnings(self) -> T.List[str]:
-         return self._apply_prefix('-fatal_warnings')
diff --git a/nixpkgs/pkgs/development/tools/build-managers/meson/emulator-hook.sh b/nixpkgs/pkgs/development/tools/build-managers/meson/emulator-hook.sh
deleted file mode 100644
index 4f08087cf5f5..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/meson/emulator-hook.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-add_meson_exe_wrapper_cross_flag() {
-  mesonFlagsArray+=(--cross-file=@crossFile@)
-}
-
-preConfigureHooks+=(add_meson_exe_wrapper_cross_flag)
diff --git a/nixpkgs/pkgs/development/tools/build-managers/meson/fix-rpath.patch b/nixpkgs/pkgs/development/tools/build-managers/meson/fix-rpath.patch
deleted file mode 100644
index 29bec7903ca9..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/meson/fix-rpath.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- a/mesonbuild/backend/backends.py
-+++ b/mesonbuild/backend/backends.py
-@@ -723,6 +723,21 @@
-     @staticmethod
-     def get_rpath_dirs_from_link_args(args: T.List[str]) -> T.Set[str]:
-         dirs: T.Set[str] = set()
-+
-+        nix_ldflags = os.environ.get('NIX_LDFLAGS', '').split()
-+        next_is_path = False
-+        # Try to add rpaths set by user or ld-wrapper so that they are not removed.
-+        # Based on https://github.com/NixOS/nixpkgs/blob/69711a2f5ffe8cda208163be5258266172ff527f/pkgs/build-support/bintools-wrapper/ld-wrapper.sh#L148-L177
-+        for flag in nix_ldflags:
-+            if flag == '-rpath' or flag == '-L':
-+                next_is_path = True
-+            elif next_is_path or flag.startswith('-L/'):
-+                if flag.startswith('-L/'):
-+                    flag = flag[2:]
-+                if flag.startswith('@storeDir@'):
-+                    dirs.add(flag)
-+                next_is_path = False
-+
-         # Match rpath formats:
-         # -Wl,-rpath=
-         # -Wl,-rpath,
diff --git a/nixpkgs/pkgs/development/tools/build-managers/meson/gir-fallback-path.patch b/nixpkgs/pkgs/development/tools/build-managers/meson/gir-fallback-path.patch
deleted file mode 100644
index e6d740265277..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/meson/gir-fallback-path.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
-index 1c6952df7..9466a0b7d 100644
---- a/mesonbuild/modules/gnome.py
-+++ b/mesonbuild/modules/gnome.py
-@@ -923,6 +923,16 @@ class GnomeModule(ExtensionModule):
-         if fatal_warnings:
-             scan_command.append('--warn-error')
-
-+        if len(set(girtarget.get_custom_install_dir()[0] for girtarget in girtargets if girtarget.get_custom_install_dir())) > 1:
-+            raise MesonException('generate_gir tries to build multiple libraries with different install_dir at once: {}'.format(','.join([str(girtarget) for girtarget in girtargets])))
-+
-+        if girtargets[0].get_custom_install_dir():
-+            fallback_libpath = girtargets[0].get_custom_install_dir()[0]
-+        else:
-+            fallback_libpath = None
-+        if fallback_libpath is not None and isinstance(fallback_libpath, str) and len(fallback_libpath) > 0 and fallback_libpath[0] == "/":
-+            scan_command += ['--fallback-library-path=' + fallback_libpath]
-+
-         generated_files = [f for f in libsources if isinstance(f, (GeneratedList, CustomTarget, CustomTargetIndex))]
- 
-         scan_target = self._make_gir_target(state, girfile, scan_command, generated_files, depends, kwargs)
diff --git a/nixpkgs/pkgs/development/tools/build-managers/meson/more-env-vars.patch b/nixpkgs/pkgs/development/tools/build-managers/meson/more-env-vars.patch
deleted file mode 100644
index e4ad43550423..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/meson/more-env-vars.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur meson-0.60.2-old/mesonbuild/environment.py meson-0.60.2-new/mesonbuild/environment.py
---- meson-0.60.2-old/mesonbuild/environment.py	2021-11-02 16:58:13.000000000 -0300
-+++ meson-0.60.2-new/mesonbuild/environment.py	2021-12-12 17:44:00.350499307 -0300
-@@ -68,7 +68,7 @@
-         # compiling we fall back on the unprefixed host version. This
-         # allows native builds to never need to worry about the 'BUILD_*'
-         # ones.
--        ([var_name + '_FOR_BUILD'] if is_cross else [var_name]),
-+        [var_name + '_FOR_BUILD'] + ([] if is_cross else [var_name]),
-         # Always just the unprefixed host versions
-         [var_name]
-     )[for_machine]
diff --git a/nixpkgs/pkgs/development/tools/build-managers/meson/setup-hook.sh b/nixpkgs/pkgs/development/tools/build-managers/meson/setup-hook.sh
deleted file mode 100644
index 6305a405af21..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/meson/setup-hook.sh
+++ /dev/null
@@ -1,42 +0,0 @@
-mesonConfigurePhase() {
-    runHook preConfigure
-
-    if [ -z "${dontAddPrefix-}" ]; then
-        mesonFlags="--prefix=$prefix $mesonFlags"
-    fi
-
-    # See multiple-outputs.sh and meson’s coredata.py
-    mesonFlags="\
-        --libdir=${!outputLib}/lib --libexecdir=${!outputLib}/libexec \
-        --bindir=${!outputBin}/bin --sbindir=${!outputBin}/sbin \
-        --includedir=${!outputInclude}/include \
-        --mandir=${!outputMan}/share/man --infodir=${!outputInfo}/share/info \
-        --localedir=${!outputLib}/share/locale \
-        -Dauto_features=${mesonAutoFeatures:-enabled} \
-        -Dwrap_mode=${mesonWrapMode:-nodownload} \
-        $mesonFlags"
-
-    mesonFlags="${crossMesonFlags+$crossMesonFlags }--buildtype=${mesonBuildType:-plain} $mesonFlags"
-
-    echo "meson flags: $mesonFlags ${mesonFlagsArray[@]}"
-
-    meson setup build $mesonFlags "${mesonFlagsArray[@]}"
-    cd build
-
-    if ! [[ -v enableParallelBuilding ]]; then
-        enableParallelBuilding=1
-        echo "meson: enabled parallel building"
-    fi
-
-    if ! [[ -v enableParallelInstalling ]]; then
-        enableParallelInstalling=1
-        echo "meson: enabled parallel installing"
-    fi
-
-    runHook postConfigure
-}
-
-if [ -z "${dontUseMesonConfigure-}" -a -z "${configurePhase-}" ]; then
-    setOutputFlags=
-    configurePhase=mesonConfigurePhase
-fi
diff --git a/nixpkgs/pkgs/development/tools/build-managers/scons/3.1.2.nix b/nixpkgs/pkgs/development/tools/build-managers/scons/3.1.2.nix
new file mode 100644
index 000000000000..097a8ffd519e
--- /dev/null
+++ b/nixpkgs/pkgs/development/tools/build-managers/scons/3.1.2.nix
@@ -0,0 +1,38 @@
+{ lib, fetchurl, python3 }:
+
+let
+  pname = "scons";
+  version = "3.1.2";
+  src = fetchurl {
+    url = "mirror://sourceforge/scons/scons-${version}.tar.gz";
+    hash = "sha256-eAHz9i9lRSjict94C+EMDpM36JdlC2Ldzunzn94T+Ps=";
+  };
+in
+python3.pkgs.buildPythonApplication {
+  inherit pname version src;
+
+  setupHook = ./setup-hook.sh;
+
+  doCheck = true;
+
+  passthru = {
+    # expose the used python version so tools using this (and extensing scos
+    # with other python modules) can use the exact same python version.
+    inherit python3;
+    python = python3;
+  };
+
+  meta = {
+    description = "An improved, cross-platform substitute for Make";
+    longDescription = ''
+      SCons is an Open Source software construction tool. Think of SCons as an
+      improved, cross-platform substitute for the classic Make utility with
+      integrated functionality similar to autoconf/automake and compiler caches
+      such as ccache. In short, SCons is an easier, more reliable and faster way
+      to build software.
+    '';
+    homepage = "https://scons.org/";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ AndersonTorres ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/tools/build-managers/scons/4.1.0.nix b/nixpkgs/pkgs/development/tools/build-managers/scons/4.1.0.nix
new file mode 100644
index 000000000000..65499280c2c4
--- /dev/null
+++ b/nixpkgs/pkgs/development/tools/build-managers/scons/4.1.0.nix
@@ -0,0 +1,50 @@
+{ lib, fetchurl, python3 }:
+
+let
+  pname = "scons";
+  version = "4.1.0";
+  src = fetchurl {
+    url = "mirror://sourceforge/scons/scons-${version}.tar.gz";
+    hash = "sha256-ctKNdi4hJnh/Fz49WeCJI5+LL06e8xFNV/ELEgaYXYU=";
+  };
+in
+python3.pkgs.buildPythonApplication {
+  inherit pname version src;
+
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "build/dist" "dist" \
+      --replace "build/doc/man/" ""
+  '';
+
+  postInstall = ''
+    mkdir -p "$out/share/man/man1"
+    mv "$out/"*.1 "$out/share/man/man1/"
+  '';
+
+  setupHook = ./setup-hook.sh;
+
+  # The release tarballs don't contain any tests (runtest.py and test/*):
+  doCheck = false;
+
+  passthru = {
+    # expose the used python version so tools using this (and extensing scos
+    # with other python modules) can use the exact same python version.
+    inherit python3;
+    python = python3;
+  };
+
+  meta = {
+    description = "An improved, cross-platform substitute for Make";
+    longDescription = ''
+      SCons is an Open Source software construction tool. Think of SCons as an
+      improved, cross-platform substitute for the classic Make utility with
+      integrated functionality similar to autoconf/automake and compiler caches
+      such as ccache. In short, SCons is an easier, more reliable and faster way
+      to build software.
+    '';
+    homepage = "https://scons.org/";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ AndersonTorres ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/tools/build-managers/scons/4.5.2.nix b/nixpkgs/pkgs/development/tools/build-managers/scons/4.5.2.nix
new file mode 100644
index 000000000000..61d1719642e0
--- /dev/null
+++ b/nixpkgs/pkgs/development/tools/build-managers/scons/4.5.2.nix
@@ -0,0 +1,54 @@
+{ lib, fetchurl, python3 }:
+
+let
+  pname = "scons";
+  version = "4.5.2";
+  src = fetchurl {
+    url = "mirror://sourceforge/project/scons/scons/${version}/SCons-${version}.tar.gz";
+    hash = "sha256-ziaqyV01CnmkGSGWsL6sPLJPTMq84BI+so0zcPV28HI=";
+  };
+in
+python3.pkgs.buildPythonApplication {
+  inherit pname version src;
+
+  patches = [
+    ./env.patch
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "build/dist" "dist" \
+      --replace "build/doc/man/" ""
+  '';
+
+  postInstall = ''
+    mkdir -p "$out/share/man/man1"
+    mv "$out/"*.1 "$out/share/man/man1/"
+  '';
+
+  setupHook = ./setup-hook.sh;
+
+  # The release tarballs don't contain any tests (runtest.py and test/*):
+  doCheck = false;
+
+  passthru = {
+    # expose the used python version so tools using this (and extensing scos
+    # with other python modules) can use the exact same python version.
+    inherit python3;
+    python = python3;
+  };
+
+  meta = {
+    description = "An improved, cross-platform substitute for Make";
+    longDescription = ''
+      SCons is an Open Source software construction tool. Think of SCons as an
+      improved, cross-platform substitute for the classic Make utility with
+      integrated functionality similar to autoconf/automake and compiler caches
+      such as ccache. In short, SCons is an easier, more reliable and faster way
+      to build software.
+    '';
+    homepage = "https://scons.org/";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ AndersonTorres ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/tools/build-managers/scons/common.nix b/nixpkgs/pkgs/development/tools/build-managers/scons/common.nix
deleted file mode 100644
index 64890d12cea9..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/scons/common.nix
+++ /dev/null
@@ -1,62 +0,0 @@
-{ version, sha256 }:
-
-{ fetchurl, python, lib }:
-
-python.pkgs.buildPythonApplication rec {
-  pname = "scons";
-  inherit version;
-
-  src = fetchurl {
-    url =
-      if lib.versionAtLeast version "4.3.0" then
-        "mirror://sourceforge/project/scons/scons/${version}/SCons-${version}.tar.gz"
-      else
-        "mirror://sourceforge/scons/scons-${version}.tar.gz";
-    inherit sha256;
-  };
-
-  setupHook = ./setup-hook.sh;
-
-  patches = lib.optionals (lib.versionAtLeast version "4.3.0") [
-    ./env.patch
-  ];
-
-  postPatch = lib.optionalString (lib.versionAtLeast version "4.0.0") ''
-    substituteInPlace setup.cfg \
-      --replace "build/dist" "dist"
-  '' + lib.optionalString (lib.versionAtLeast version "4.1.0") ''
-    substituteInPlace setup.cfg \
-      --replace "build/doc/man/" ""
-  '';
-
-  # The release tarballs don't contain any tests (runtest.py and test/*):
-  doCheck = lib.versionOlder version "4.0.0";
-
-  postInstall = lib.optionalString (lib.versionAtLeast version "4.1.0") ''
-    mkdir -p "$out/share/man/man1"
-    mv "$out/"*.1 "$out/share/man/man1/"
-  '';
-
-  passthru = {
-    # expose the used python version so tools using this (and extensing scos with other python modules)
-    # can use the exact same python version.
-    inherit python;
-  };
-
-  meta = with lib; {
-    description = "An improved, cross-platform substitute for Make";
-    longDescription = ''
-      SCons is an Open Source software construction tool. Think of
-      SCons as an improved, cross-platform substitute for the classic
-      Make utility with integrated functionality similar to
-      autoconf/automake and compiler caches such as ccache. In short,
-      SCons is an easier, more reliable and faster way to build
-      software.
-    '';
-    homepage = "https://scons.org/";
-    changelog = "https://raw.githubusercontent.com/SConsProject/scons/rel_${version}/src/CHANGES.txt";
-    license = licenses.mit;
-    platforms = platforms.all;
-    maintainers = with lib.maintainers; [ AndersonTorres ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/tools/build-managers/scons/default.nix b/nixpkgs/pkgs/development/tools/build-managers/scons/default.nix
deleted file mode 100644
index f338d346a701..000000000000
--- a/nixpkgs/pkgs/development/tools/build-managers/scons/default.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ callPackage, python2, python3 }:
-
-let
-  mkScons = args: callPackage (import ./common.nix args) {
-    python = python3;
-  };
-in {
-  scons_3_1_2 = (mkScons {
-    version = "3.1.2";
-    sha256 = "1yzq2gg9zwz9rvfn42v5jzl3g4qf1khhny6zfbi2hib55zvg60bq";
-  });
-  scons_4_1_0 = mkScons {
-    version = "4.1.0";
-    sha256 = "11axk03142ziax6i3wwy9qpqp7r3i7h5jg9y2xzph9i15rv8vlkj";
-  };
-  scons_latest = mkScons {
-    version = "4.5.2";
-    sha256 = "sha256-ziaqyV01CnmkGSGWsL6sPLJPTMq84BI+so0zcPV28HI=";
-  };
-}