summary refs log tree commit diff
path: root/pkgs/os-specific/bsd
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2021-04-15 01:29:11 +0000
committerAlyssa Ross <hi@alyssa.is>2021-04-15 02:59:26 +0000
commit3b5b199012236a67d7841a6742b534efccc67621 (patch)
tree784670944cc0b0cc48cf1258b1aadf1a62eaa674 /pkgs/os-specific/bsd
parente7adc44bb8ccccd88e7041b2f90c20b9330bee3a (diff)
downloadnixpkgs-3b5b199012236a67d7841a6742b534efccc67621.tar
nixpkgs-3b5b199012236a67d7841a6742b534efccc67621.tar.gz
nixpkgs-3b5b199012236a67d7841a6742b534efccc67621.tar.bz2
nixpkgs-3b5b199012236a67d7841a6742b534efccc67621.tar.lz
nixpkgs-3b5b199012236a67d7841a6742b534efccc67621.tar.xz
nixpkgs-3b5b199012236a67d7841a6742b534efccc67621.tar.zst
nixpkgs-3b5b199012236a67d7841a6742b534efccc67621.zip
netbsd.statHook: init
This fixes the build of various NetBSD programs on Linux,
e.g. netbsd.statHook.
Diffstat (limited to 'pkgs/os-specific/bsd')
-rw-r--r--pkgs/os-specific/bsd/netbsd/default.nix20
1 files changed, 16 insertions, 4 deletions
diff --git a/pkgs/os-specific/bsd/netbsd/default.nix b/pkgs/os-specific/bsd/netbsd/default.nix
index b86891352f0..2efa775c016 100644
--- a/pkgs/os-specific/bsd/netbsd/default.nix
+++ b/pkgs/os-specific/bsd/netbsd/default.nix
@@ -1,5 +1,5 @@
 { stdenv, stdenvNoCC, fetchcvs, lib, groff, mandoc, zlib, bison, flex
-, writeText, buildPackages, splicePackages, symlinkJoin }:
+, makeSetupHook, writeText, buildPackages, splicePackages, symlinkJoin }:
 
 let
   fetchNetBSD = path: version: sha256: fetchcvs {
@@ -30,7 +30,7 @@ let
 
     extraPaths = [ ];
 
-    nativeBuildInputs = [ makeMinimal install tsort lorder mandoc groff stat ];
+    nativeBuildInputs = [ makeMinimal install tsort lorder mandoc groff statHook ];
     buildInputs = [ compat ];
     # depsBuildBuild = [ buildPackages.stdenv.cc ];
 
@@ -243,6 +243,7 @@ let
     ];
   };
 
+  # Don't add this to nativeBuildInputs directly.  Use statHook instead.
   stat = mkDerivation {
     path = "usr.bin/stat";
     version = "8.0";
@@ -250,6 +251,17 @@ let
     nativeBuildInputs = [ makeMinimal install mandoc groff ];
   };
 
+  # stat isn't in POSIX, and NetBSD stat supports a completely
+  # different range of flags than GNU stat, so including it in PATH
+  # breaks stdenv.  Work around that with a hook that will point
+  # NetBSD's build system and NetBSD stat without including it in
+  # PATH.
+  statHook = makeSetupHook {
+    name = "netbsd-stat-hook";
+  } (writeText "netbsd-stat-hook-impl" ''
+    makeFlagsArray+=(TOOL_STAT=${netbsd.stat}/bin/stat)
+  '');
+
   tsort = mkDerivation {
     path = "usr.bin/tsort";
     version = "8.0";
@@ -563,7 +575,7 @@ let
     sha256 = "0630lbvz6v4ic13bfg8ccwfhqkgcv76bfdw9f36rfsnwfgpxqsmq";
     meta.platforms = lib.platforms.netbsd;
     nativeBuildInputs = [ makeMinimal install mandoc groff flex
-                          bison genassym gencat lorder tsort stat ];
+                          bison genassym gencat lorder tsort statHook ];
     extraPaths = [ sys.src ld_elf_so.src ];
   };
 
@@ -587,7 +599,7 @@ let
                    librpcsvc.src libutil.src librt.src libcrypt.src ];
     buildInputs = [ buildPackages.netbsd.headers csu ];
     nativeBuildInputs = [ makeMinimal install mandoc groff flex
-                          bison genassym gencat lorder tsort stat ];
+                          bison genassym gencat lorder tsort statHook ];
     NIX_CFLAGS_COMPILE = "-B${csu}/lib";
     meta.platforms = lib.platforms.netbsd;
     SHLIBINSTALLDIR = "$(out)/lib";