Unverified Commit add885ec authored by Ben Siraphob's avatar Ben Siraphob Committed by GitHub
Browse files

stdenv: add uutils-coreutils stdenv (#116274)

parents 2bde778c bace9f32
Loading
Loading
Loading
Loading
+13 −7
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@
  python3Packages,
  versionCheckHook,
  nix-update-script,

  withDocs ? true,
  prefix ? "uutils-",
  buildMulticallBinary ? true,
}:
@@ -23,16 +23,19 @@ stdenv.mkDerivation (finalAttrs: {
    hash = "sha256-OZ9AsCJmQmn271OzEmqSZtt1OPn7zHTScQiiqvPhqB0=";
  };

  postPatch = ''
    # don't enforce the building of the man page
    substituteInPlace GNUmakefile \
      --replace 'install: build' 'install:'
  '';

  cargoDeps = rustPlatform.fetchCargoVendor {
    inherit (finalAttrs) src;
    name = "uutils-coreutils-${finalAttrs.version}";
    hash = "sha256-DsVLp2Y15k+KQI7S6A4hylOhJN016MEdEWx9VQIQEgQ=";
  };

  nativeBuildInputs = [
    rustPlatform.cargoSetupHook
    python3Packages.sphinx
  ];
  nativeBuildInputs = [ rustPlatform.cargoSetupHook ] ++ lib.optional withDocs python3Packages.sphinx;

  makeFlags =
    [
@@ -42,7 +45,11 @@ stdenv.mkDerivation (finalAttrs: {
      "INSTALLDIR_MAN=${placeholder "out"}/share/man/man1"
    ]
    ++ lib.optionals (prefix != null) [ "PROG_PREFIX=${prefix}" ]
    ++ lib.optionals buildMulticallBinary [ "MULTICALL=y" ];
    ++ lib.optionals buildMulticallBinary [ "MULTICALL=y" ]
    ++ lib.optionals (!withDocs) [
      "build-coreutils"
      "build-pkgs"
    ];

  # too many impure/platform-dependent tests
  doCheck = false;
@@ -69,7 +76,6 @@ stdenv.mkDerivation (finalAttrs: {
      CLI utils in Rust. This repo is to aggregate the GNU coreutils rewrites.
    '';
    homepage = "https://github.com/uutils/coreutils";
    changelog = "https://github.com/uutils/coreutils/releases/tag/${finalAttrs.version}";
    maintainers = with lib.maintainers; [ siraben ];
    license = lib.licenses.mit;
    platforms = lib.platforms.unix;
+4 −0
Original line number Diff line number Diff line
@@ -25,6 +25,10 @@ stdenv.mkDerivation rec {
    hash = "sha256-uohcExlXjWyU1G6bDc60AUyq/iSQ5Deg28o/JwoiP1o=";
  };

  patches = [
    ./uutils-mkdirp.patch
  ];

  strictDeps = true;
  nativeBuildInputs = [
    m4
+14 −0
Original line number Diff line number Diff line
diff --git a/lib/autoconf/programs.m4 b/lib/autoconf/programs.m4
index 8226a7c..3b231b9 100644
--- a/lib/autoconf/programs.m4
+++ b/lib/autoconf/programs.m4
@@ -701,7 +701,8 @@ if test -z "$MKDIR_P"; then
 	   case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #(
 	     'mkdir ('*'coreutils) '* | \
 	     *'BusyBox '* | \
-	     'mkdir (fileutils) '4.1*)
+	     'mkdir (fileutils) '4.1* | \
+       'mkdir 0.0.'*)
 	       ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext
 	       break 3;;
 	   esac
+44 −4
Original line number Diff line number Diff line
@@ -91,6 +91,36 @@ with pkgs;
  gccStdenvNoLibs = mkStdenvNoLibs gccStdenv;
  clangStdenvNoLibs = mkStdenvNoLibs clangStdenv;
  stdenvUutilsCoreutils =
    let
      uutils-coreutils = pkgs.uutils-coreutils-minimal;
      bintools = wrapBintoolsWith {
        bintools = stdenv.cc.bintools.bintools;
        coreutils = uutils-coreutils;
      };
    in
    stdenv.override {
      cc = stdenv.cc.override {
        coreutils = uutils-coreutils;
        inherit bintools;
      };
      initialPath = (lib.remove coreutils stdenv.initialPath) ++ [ uutils-coreutils ];
      allowedRequisites = lib.mapNullable (
        rs:
        (lib.remove [
          bintools
          expand-response-params
          coreutils
        ] rs)
        ++ [
          bintools
          expand-response-params
          uutils-coreutils
        ]
      ) (stdenv.allowedRequisites or null);
    };
  # For convenience, allow callers to get the path to Nixpkgs.
  path = ../..;
@@ -2720,13 +2750,15 @@ with pkgs;
    llvmPackages = llvmPackages_13;
  };
  coreutils = callPackage ../tools/misc/coreutils { };
  coreutils =
    if stdenv.hostPlatform.useUutilsCoreutils or false then uutils-coreutils else gnu-coreutils;
  gnu-coreutils = callPackage ../tools/misc/coreutils { };
  # The coreutils above are built with dependencies from
  # bootstrapping. We cannot override it here, because that pulls in
  # openssl from the previous stage as well.
  coreutils-full = callPackage ../tools/misc/coreutils { minimal = false; };
  coreutils-prefixed = coreutils.override {
  coreutils-full = gnu-coreutils.override { minimal = false; };
  coreutils-prefixed = gnu-coreutils.override {
    withPrefix = true;
    singleBinary = false;
  };
@@ -2888,6 +2920,11 @@ with pkgs;
  uutils-coreutils-noprefix = uutils-coreutils.override { prefix = null; };
  uutils-coreutils-minimal = pkgs.uutils-coreutils.override {
    prefix = null;
    withDocs = false;
  };
  vorta = qt6Packages.callPackage ../applications/backup/vorta { };
  xkcdpass = with python3Packages; toPythonApplication xkcdpass;
@@ -2988,7 +3025,10 @@ with pkgs;
    inherit (windows) libgnurx;
  };
  findutils = callPackage ../tools/misc/findutils { };
  findutils = callPackage ../tools/misc/findutils {
    coreutils =
      if stdenv.hostPlatform.useUutilsCoreutils or false then uutils-coreutils-minimal else gnu-coreutils;
  };
  bsd-fingerd = bsd-finger.override {
    buildProduct = "daemon";
+15 −0
Original line number Diff line number Diff line
@@ -285,6 +285,21 @@ let
      else
        throw "Musl libc only supports 64-bit Linux systems.";

    pkgsUutils =
      if stdenv.hostPlatform.isLinux && stdenv.buildPlatform.is64bit then
        nixpkgsFun {
          overlays = [
            (self': super': {
              pkgsUutils = super';
            })
          ] ++ overlays;
          ${if stdenv.hostPlatform == stdenv.buildPlatform then "localSystem" else "crossSystem"} = {
            config = lib.systems.parse.tripleFromSystem (makeMuslParsedPlatform stdenv.hostPlatform.parsed);
          };
        }
      else
        throw "uutils only supports 64-bit Linux systems.";

    # All packages built for i686 Linux.
    # Used by wine, firefox with debugging version of Flash, ...
    pkgsi686Linux =