Unverified Commit 9588972f authored by Janne Heß's avatar Janne Heß
Browse files

diffutils: 3.9 -> 3.10

Fixes the issue introduced in 3.9 and makes cmp and diff work past Y2K39
parent fe05fe6f
Loading
Loading
Loading
Loading
+6 −15
Original line number Diff line number Diff line
@@ -7,28 +7,16 @@

stdenv.mkDerivation rec {
  pname = "diffutils";
  version = "3.9";
  version = "3.10";

  src = fetchurl {
    url = "mirror://gnu/diffutils/diffutils-${version}.tar.xz";
    hash = "sha256-2A076QogGGjeg9eNrTQTrYgWDMU7zDbrnq98INvwI/E=";
    hash = "sha256-kOXpPMck5OvhLt6A3xY0Bjx6hVaSaFkZv+YLVWyb0J4=";
  };

  patches = [
    # Backport of a fix for 'diff -D' output.
    # TODO: remove when updating to 3.10.
    ./fix-diff-D.patch
  ];

  postPatch = ''
    # avoid the need for help2man
    # TODO: can be removed when fix-diff-D.patch is removed.
    touch man/diff.1
  '';

  outputs = [ "out" "info" ];

  nativeBuildInputs = [ xz.bin ];
  nativeBuildInputs = [ (lib.getBin xz) ];
  /* If no explicit coreutils is given, use the one from stdenv. */
  buildInputs = [ coreutils ];

@@ -38,10 +26,13 @@ stdenv.mkDerivation rec {
    lib.optional (coreutils != null) "PR_PROGRAM=${coreutils}/bin/pr"
    ++ lib.optional (stdenv.buildPlatform != stdenv.hostPlatform) "gl_cv_func_getopt_gnu=yes";

  doCheck = true;

  meta = with lib; {
    homepage = "https://www.gnu.org/software/diffutils/diffutils.html";
    description = "Commands for showing the differences between files (diff, cmp, etc.)";
    license = licenses.gpl3;
    platforms = platforms.unix;
    maintainers = with maintainers; [ das_j ];
  };
}
+0 −15
Original line number Diff line number Diff line
https://git.savannah.gnu.org/cgit/diffutils.git/patch/?id=ba08fbbb0ca5da455bf695236c57bc50e7faed50
https://github.com/NixOS/nixpkgs/pull/213421#issuecomment-1407749912

Fix 'diff -D' regression
--- a/src/diff.c
+++ b/src/diff.c
@@ -416,7 +416,7 @@ main (int argc, char **argv)
 	    char *base = b;
 	    int changes = 0;
 
-	    for (i = 0; i < sizeof sizeof C_ifdef_group_formats; i++)
+	    for (i = 0; i < sizeof C_ifdef_group_formats; i++)
 	      {
 		char ch = C_ifdef_group_formats[i];
 		switch (ch)