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 <br...@clisp.org>
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

Reply via email to