summary refs log tree commit diff
path: root/pkgs/os-specific/darwin/apple-source-releases/system_cmds
diff options
context:
space:
mode:
authorRandy Eckenrode <randy@largeandhighquality.com>2023-05-31 22:30:43 -0400
committerRandy Eckenrode <randy@largeandhighquality.com>2023-06-10 17:15:08 -0400
commitcd4ab1d9fd9f921451625bc131f8e2d07922ed64 (patch)
tree144d4a393dd5e64e137ed36ce82c0a65243b5421 /pkgs/os-specific/darwin/apple-source-releases/system_cmds
parent323e9a44c251f87da3b77087b9e1f6f36eb719f8 (diff)
downloadnixpkgs-cd4ab1d9fd9f921451625bc131f8e2d07922ed64.tar
nixpkgs-cd4ab1d9fd9f921451625bc131f8e2d07922ed64.tar.gz
nixpkgs-cd4ab1d9fd9f921451625bc131f8e2d07922ed64.tar.bz2
nixpkgs-cd4ab1d9fd9f921451625bc131f8e2d07922ed64.tar.lz
nixpkgs-cd4ab1d9fd9f921451625bc131f8e2d07922ed64.tar.xz
nixpkgs-cd4ab1d9fd9f921451625bc131f8e2d07922ed64.tar.zst
nixpkgs-cd4ab1d9fd9f921451625bc131f8e2d07922ed64.zip
darwin.system_cmds: fix build with clang 16
Clang 16 makes implicit declarations an error by default. The headers
are available, so include them.

`getline` was renamed to `get_line` to avoid a name clash. `util.h`
includes `stdio.h`, which defines `getline`.
Diffstat (limited to 'pkgs/os-specific/darwin/apple-source-releases/system_cmds')
-rw-r--r--pkgs/os-specific/darwin/apple-source-releases/system_cmds/default.nix7
-rw-r--r--pkgs/os-specific/darwin/apple-source-releases/system_cmds/fix-implicit-declarations.patch48
2 files changed, 54 insertions, 1 deletions
diff --git a/pkgs/os-specific/darwin/apple-source-releases/system_cmds/default.nix b/pkgs/os-specific/darwin/apple-source-releases/system_cmds/default.nix
index 0c40bc3b186..f708d774090 100644
--- a/pkgs/os-specific/darwin/apple-source-releases/system_cmds/default.nix
+++ b/pkgs/os-specific/darwin/apple-source-releases/system_cmds/default.nix
@@ -30,7 +30,12 @@ appleDerivation {
                          "-DAU_SESSION_FLAG_HAS_AUTHENTICATED=0x4000"
                        ] ++ lib.optional (!stdenv.isLinux) " -D__FreeBSD__ ");
 
-  patchPhase = ''
+  patches = [
+    # Fix implicit declarations that cause builds to fail when built with clang 16.
+    ./fix-implicit-declarations.patch
+  ];
+
+  postPatch = ''
     substituteInPlace login.tproj/login.c \
       --replace bsm/audit_session.h bsm/audit.h
     substituteInPlace login.tproj/login_audit.c \
diff --git a/pkgs/os-specific/darwin/apple-source-releases/system_cmds/fix-implicit-declarations.patch b/pkgs/os-specific/darwin/apple-source-releases/system_cmds/fix-implicit-declarations.patch
new file mode 100644
index 00000000000..b08f5404572
--- /dev/null
+++ b/pkgs/os-specific/darwin/apple-source-releases/system_cmds/fix-implicit-declarations.patch
@@ -0,0 +1,48 @@
+diff -ur a/getty.tproj/main.c b/getty.tproj/main.c
+--- a/getty.tproj/main.c	2008-06-10 14:50:19.000000000 -0400
++++ b/getty.tproj/main.c	2023-05-31 18:06:40.121028558 -0400
+@@ -67,6 +67,7 @@
+ #include <syslog.h>
+ #include <termios.h>
+ #include <time.h>
++#include <util.h>
+ #include <unistd.h>
+ 
+ #ifdef __APPLE__
+@@ -152,7 +153,7 @@
+ static void	putpad(const char *);
+ static void	puts(const char *);
+ static void	timeoverrun(int);
+-static char	*getline(int);
++static char	*get_line(int);
+ static void	setttymode(int);
+ static int	opentty(const char *, int);
+ 
+@@ -352,7 +353,7 @@
+ 			if ((fd = open(IF, O_RDONLY)) != -1) {
+ 				char * cp;
+ 
+-				while ((cp = getline(fd)) != NULL) {
++				while ((cp = get_line(fd)) != NULL) {
+ 					  putf(cp);
+ 				}
+ 				close(fd);
+@@ -744,7 +745,7 @@
+ 
+ 
+ static char *
+-getline(int fd)
++get_line(int fd)
+ {
+ 	int i = 0;
+ 	static char linebuf[512];
+--- a/newgrp.tproj/newgrp.c	2021-10-06 01:38:52.000000000 -0400
++++ b/newgrp.tproj/newgrp.c	2023-05-31 22:26:50.656157841 -0400
+@@ -47,6 +47,7 @@
+ #include <string.h>
+ #include <unistd.h>
+ #ifdef __APPLE__
++#include <membership.h>
+ #include <paths.h>
+ #endif /* __APPLE__ */
+ static void	 addgroup(const char *grpname);