about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/version-management/rcs/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/version-management/rcs/default.nix')
-rw-r--r--nixpkgs/pkgs/applications/version-management/rcs/default.nix45
1 files changed, 43 insertions, 2 deletions
diff --git a/nixpkgs/pkgs/applications/version-management/rcs/default.nix b/nixpkgs/pkgs/applications/version-management/rcs/default.nix
index df1739aea572..862b9eacd628 100644
--- a/nixpkgs/pkgs/applications/version-management/rcs/default.nix
+++ b/nixpkgs/pkgs/applications/version-management/rcs/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ed }:
+{ stdenv, fetchurl, fetchpatch, ed }:
 
 stdenv.mkDerivation rec {
   name = "rcs-5.9.4";
@@ -10,10 +10,51 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ ed ];
 
+  patches = stdenv.lib.optionals stdenv.isDarwin [
+    # This failure appears unrelated to the subject of the test. This
+    # test seems to rely on a bash bug where `test $x -nt $y` ignores
+    # subsecond values in timetamps. This bug has been fixed in Bash
+    # 5, and seemingly doesn't affect Darwin.
+    ./disable-t810.patch
+
+    (fetchpatch {
+      url = "https://raw.githubusercontent.com/macports/macports-ports/b76d1e48dac/editors/nano/files/secure_snprintf.patch";
+      extraPrefix = "";
+      sha256 = "1wy9pjw3vvp8fv8a7pmkqmiapgacfx54qj9fvsc5gwry0vv7vnc3";
+    })
+
+    # Expected to appear in the next release
+    (fetchpatch {
+      url = "https://raw.githubusercontent.com/Homebrew/formula-patches/3fff7c990b8df4174045834b9c1210e7736ff5a4/rcs/noreturn.patch";
+      sha256 = "10zniqrd6xagf3q03i1vksl0vd9nla3qcj0840n3m8z6jd4aypcx";
+    })
+  ];
+
   doCheck = true;
 
+  checkFlags = [ "VERBOSE=1" ];
+
+  checkPhase = ''
+    # If neither LOGNAME or USER are set, rcs will default to
+    # getlogin(), which is unreliable on macOS. It will often return
+    # things like `_spotlight`, or `_mbsetupuser`. macOS sets both
+    # environment variables in user sessions, so this is unlikely to
+    # affect regular usage.
+
+    export LOGNAME=$(id -un)
+
+    print_logs_and_fail() {
+      grep -nH -e . -r tests/*.d/{out,err}
+      return 1
+    }
+
+    make $checkFlags check || print_logs_and_fail
+  '';
+
   NIX_CFLAGS_COMPILE = [ "-std=c99" ];
 
+  hardeningDisable = stdenv.lib.optional stdenv.cc.isClang "format";
+
   meta = {
     homepage = https://www.gnu.org/software/rcs/;
     description = "Revision control system";
@@ -27,6 +68,6 @@ stdenv.mkDerivation rec {
 
     license = stdenv.lib.licenses.gpl3Plus;
     maintainers = with stdenv.lib.maintainers; [ eelco ];
-    platforms = stdenv.lib.platforms.linux;
+    platforms = stdenv.lib.platforms.unix;
   };
 }