Subject: Re: [PATCH] config.mak.uname: set PERL_PATH for FreeBSD 5.0+

From: Eric Wong <[email-masked]>
Date: Wed, 20 Jul 2016 18:07:02 +0000

Johannes Schindelin <[email-masked]> wrote:
> Hi Eric,
> 
> On Wed, 20 Jul 2016, Eric Wong wrote:
> 
> > diff --git a/config.mak.uname b/config.mak.uname
> > index a88f139..6c29545 100644
> > --- a/config.mak.uname
> > +++ b/config.mak.uname
> > @@ -202,6 +202,11 @@ ifeq ($(uname_S),FreeBSD)
> >  		NO_UINTMAX_T = YesPlease
> >  		NO_STRTOUMAX = YesPlease
> >  	endif
> > +	R_MAJOR := $(shell expr "$(uname_R)" : '\([0-9]*\)\.')
> > +
> > +	ifeq ($(shell test "$(R_MAJOR)" -ge 5 && echo 1),1)
> > +		PERL_PATH = /usr/local/bin/perl
> > +	endif
> 
> In keeping with other uname_R usage, should this not read
> 
> 	# Since FreeBSD 5.0, Perl is part of the core
> 	ifneq ($(shell expr "$(uname_R)" : '[1-4]\.'),2)
> 		PERL_PATH = /usr/local/bin/perl
> 	endif
> 
> instead?

That's fine; however I don't use `expr` often, so it required
a little more time to realize the '2' means 2 characters were
matched.

Also, my use of a numeric comparison may be more future-proof
in case FreeBSD decides to have /usr/bin/perl again.

I also wonder why we don't use `which` to search for somewhat
standard path components, instead.  Something like:

  PERL_PATH = $(shell PATH=/bin:/usr/bin:/usr/local/bin which perl)