On FreeBSD 14.0 and NetBSD 10.0, a build fails after sources have been modified:
$ touch src/cmp.c
$ ./configure
$ make V=1
...
base=`expr cmp.1 : '\(.*\).1'` && test -x
../src/$base && (echo '[NAME]'
&& sed 's@/\* *@@; s/-/\\-/;s/^GNU //; q'
../src/$base.c) | PATH="../src:$PATH" ./help2man -i -
-i ./$base.x -S 'diffutils 2024-05-21' $base > cmp.1-t && mv cmp.1-t
cmp.1
/bin/sh: ./help2man: not found
*** Error code 127
Stop.
make[1]: stopped in /home/bruno/diffutils-2024-07-21/man
*** Error code 1
The reason is that on FreeBSD, perl is at /usr/local/bin/perl, not
/usr/bin/perl.
Likewise, on NetBSD, perl is at /usr/pkg/bin/perl, not /usr/bin/perl.
And likewise, on Guix, the only binary in /usr/bin is /usr/bin/env.
The attached patch fixes it. "use warnings" instead of option '-w' is
recommended per https://stackoverflow.com/questions/12554179/ ; it avoids
the use of /usr/bin/env's option '-S' which is unportable (not specified
by POSIX).
>From 6cbbef99f9e12b57d4e0df82b2c70f0460d98142 Mon Sep 17 00:00:00 2001
From: Bruno Haible <[email protected]>
Date: Sun, 21 Jul 2024 20:04:26 +0200
Subject: [PATCH] build: Fix use of perl on Guix, FreeBSD, NetBSD
* man/help2man: Search for perl in $PATH.
---
man/help2man | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/man/help2man b/man/help2man
index 7ba1aa6..fc1c991 100755
--- a/man/help2man
+++ b/man/help2man
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!/usr/bin/env perl
# Generate a short man page from --help and --version output.
# Copyright (C) 1997-2005, 2009-2011, 2013, 2015-2024 Free Software Foundation,
@@ -23,6 +23,7 @@
use 5.008;
use strict;
+use warnings;
use Getopt::Long;
use Text::Tabs qw(expand);
use POSIX qw(strftime setlocale LC_ALL);
--
2.34.1