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

6 messages from 2016-07-20 to 2016-07-21. Participants: Eric Wong, Johannes Schindelin, Junio C Hamano, brian m. carlson.
Thread: https://gitlist.dev/t/42887

## Eric Wong, 2016-07-20 02:56

Subject: [PATCH] config.mak.uname: set PERL_PATH for FreeBSD 5.0+
Message-ID: <20160720025630.GA71874@plume>
URL: https://gitlist.dev/e/20160720025630.GA71874%40plume

```
Perl has not been part of the base system since FreeBSD 5.0:

	https://www.freebsd.org/releases/5.0R/relnotes-i386.html

Signed-off-by: Eric Wong <e@80x24.org>
---
  Does anybody still run git on FreeBSD 4.x or earlier?
  4.11 was released a few months before git in 2005:

	https://www.freebsd.org/releases/

 config.mak.uname | 5 +++++
 1 file changed, 5 insertions(+)

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
 	PYTHON_PATH = /usr/local/bin/python
 	HAVE_PATHS_H = YesPlease
 	GMTIME_UNRELIABLE_ERRORS = UnfortunatelyYes
-- 
EW

```

## Johannes Schindelin, 2016-07-20 11:25

Subject: Re: [PATCH] config.mak.uname: set PERL_PATH for FreeBSD 5.0+
Message-ID: <alpine.DEB.2.20.1607201322350.14111@virtualbox>
URL: https://gitlist.dev/e/alpine.DEB.2.20.1607201322350.14111%40virtualbox
In-Reply-To: <20160720025630.GA71874@plume>

```
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?

Ciao,
Dscho

```

## Eric Wong, 2016-07-20 18:07

Subject: Re: [PATCH] config.mak.uname: set PERL_PATH for FreeBSD 5.0+
Message-ID: <20160720180702.GA13404@starla>
URL: https://gitlist.dev/e/20160720180702.GA13404%40starla
In-Reply-To: <alpine.DEB.2.20.1607201322350.14111@virtualbox>

```
Johannes Schindelin <Johannes.Schindelin@gmx.de> 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)

```

## Junio C Hamano, 2016-07-20 18:10

Subject: Re: [PATCH] config.mak.uname: set PERL_PATH for FreeBSD 5.0+
Message-ID: <CAPc5daXuZZuhaTW-hb6FOo6p+gzvrd-rx-FDvo4VzCOH+HpSJg@mail.gmail.com>
URL: https://gitlist.dev/e/CAPc5daXuZZuhaTW-hb6FOo6p%2Bgzvrd-rx-FDvo4VzCOH%2BHpSJg%40mail.gmail.com
In-Reply-To: <20160720180702.GA13404@starla>

```
On Wed, Jul 20, 2016 at 11:07 AM, Eric Wong <e@80x24.org> wrote:
> 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:

Because historically output from "which" was not meant to be
machine parseable (some implementation said 'perl is /usr/bin/perl')

```

## brian m. carlson, 2016-07-21 01:02

Subject: Re: [PATCH] config.mak.uname: set PERL_PATH for FreeBSD 5.0+
Message-ID: <20160721010206.GA215655@vauxhall.crustytoothpaste.net>
URL: https://gitlist.dev/e/20160721010206.GA215655%40vauxhall.crustytoothpaste.net
In-Reply-To: <CAPc5daXuZZuhaTW-hb6FOo6p+gzvrd-rx-FDvo4VzCOH+HpSJg@mail.gmail.com>

```
On Wed, Jul 20, 2016 at 11:10:40AM -0700, Junio C Hamano wrote:
> On Wed, Jul 20, 2016 at 11:07 AM, Eric Wong <e@80x24.org> wrote:
> > 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:
> 
> Because historically output from "which" was not meant to be
> machine parseable (some implementation said 'perl is /usr/bin/perl')

The POSIXy way to write which is "command -v", which may or may not be
more portable.  It does have the desired output, though.
-- 
brian m. carlson / brian with sandals: Houston, Texas, US
+1 832 623 2791 | https://www.crustytoothpaste.net/~bmc | My opinion only
OpenPGP: https://keybase.io/bk2204

```

## Johannes Schindelin, 2016-07-21 15:17

Subject: Re: [PATCH] config.mak.uname: set PERL_PATH for FreeBSD 5.0+
Message-ID: <alpine.DEB.2.20.1607211716100.14111@virtualbox>
URL: https://gitlist.dev/e/alpine.DEB.2.20.1607211716100.14111%40virtualbox
In-Reply-To: <20160720180702.GA13404@starla>

```
Hi Eric,

On Wed, 20 Jul 2016, Eric Wong wrote:

> Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> > 
> > 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.

I never use `expr`, so I had to go and see the surrounding code to
determine what the code style is.

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

That is a very theoretical concern ;-)

Ciao,
Dscho

```
