Subject: bug#70411: [bug] install(1) fails to read /dev/stdin on Darwin

From: Pádraig Brady <[email-masked]>
Date: Tue, 16 Apr 2024 12:33:44 +0100

On 16/04/2024 01:19, Alejandro Colomar wrote:
> Hi!
> 
> I don't own a Darwin system, so I can't help much reproduce.  However,
> I've received a bug report to the Linux man-pages, that our build
> system (GNUmakefile-based), which ends up calling
> 
> 	... | install /dev/stdin $@
> 
> doesn't work on Darwin.  Here's the original bug report:
> <https://github.com/NixOS/nixpkgs/pull/300797>.
> 
> Here are the reported error messages:
> 
> ...
> INSTALL         /nix/store/3s28l9ijlkmsq8256zdxjvl173gkn37c-man-pages-6.7/share/man/man3/addseverity.3
> INSTALL         /nix/store/3s28l9ijlkmsq8256zdxjvl173gkn37c-man-pages-6.7/share/man/man3/adjtime.3
> install: skipping file '/dev/stdin', as it was replaced while being copied
> make: *** [share/mk/install/man.mk:54: /nix/store/3s28l9ijlkmsq8256zdxjvl173gkn37c-man-pages-6.7/share/man/man3/addmntent.3] Error 1
> make: *** Waiting for unfinished jobs....
> install: skipping file '/dev/stdin', as it was replaced while being copied
> make: *** [share/mk/install/man.mk:54: /nix/store/3s28l9ijlkmsq8256zdxjvl173gkn37c-man-pages-6.7/share/man/man3/acosh.3] Error 1
> install: skipping file '/dev/stdin', as it was replaced while being copied
> install: skipping file '/dev/stdin', as it was replaced while being copied
> install: skipping file '/dev/stdin', as it was replaced while being copied
> ...
> 
> I don't see why install(1) should fail to read /dev/stdin under any
> POSIX system

What version of darwin is this? I can't repro on Darwin 21.6.0 (MacOSX 12.6).
The issue seems to be that /dev/stdin returns a varying inode which install(1) doesn't like currently

cheers,
Pádraig