From: Dennis Stosberg <hidden> Date: 2016-06-15 22:42:32
This patch adds two tests to the configuration script. The first
one tries to find a perl binary in the path. The second one checks
whether the found perl is of a sufficient version.
It also adds a --perl=/path parameter to override the autodetection
of the perl binary.
Signed-off-by: Dennis Stosberg <redacted>
---
config-lib.sh | 19 ++++++++++++++++++-
1 files changed, 18 insertions(+), 1 deletions(-)
@@ -409,8 +412,21 @@ int main(void) { return 0; } EOF{cc_check&&tmp_run;}||die"unusable compiler or produced binary"echoresyes-}+echocheck"for perl"+iftest-z"$_perl";then+_perl=`whichperl`+test"$_perl"||die"cannot find path to perl"+fi+echores"$_perl"++echocheck"perl version"+_perl_version=`"$_perl"-e'require 5.6.0;printf "%vd", $^V'`+iftest-z"$_perl_version";then+die"your perl version is too old"+fi+echores"$_perl_version"+} write_config(){echo"Creating config.mak.autogen"
From: Randal L. Schwartz <hidden> Date: 2016-06-15 22:42:32
quoted
quoted
quoted
quoted
"Dennis" == Dennis Stosberg [off-list ref] writes:
Dennis> + _perl_version=`"$_perl" -e 'require 5.6.0;printf "%vd", $^V'`
perl -V:version gives you the version like:
version='5.8.6';
nice and eval-able. :) But you can just rely on the exit status from
perl -e 'eval { require 5.006; 1 } or exit 1'
which will be good (0) if the perl is new enough, and bad (1) if the perl is
too old. (Perl4 will really barf and give an error as well, but still
be an exit 1.)
--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
[off-list ref] <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
From: Timo Hirvonen <hidden> Date: 2016-06-15 22:42:32
Dennis Stosberg [off-list ref] wrote:
+ echocheck "for perl"
+ if test -z "$_perl" ; then
+ _perl=`which perl`
+ test "$_perl" || die "cannot find path to perl"
+ fi
+ echores "$_perl"
"which" isn't portable. On SunOS 5.9 "which foo" prints error message to
stdout and returns 0. I use this in my own configure scripts:
path_find()
{
if test -x "$1"
then
echo "$1"
return 0
fi
for i in `echo $PATH | sed 's/:/ /g'`
do
if test -x "$i/$1"
then
echo "$i/$1"
return 0
fi
done
return 1
}
--
http://onion.dynserv.net/~timo/
"which" isn't portable. On SunOS 5.9 "which foo" prints error message to
stdout and returns 0. I use this in my own configure scripts:
path_find()
{
if test -x "$1"
then
echo "$1"
return 0
fi
for i in `echo $PATH | sed 's/:/ /g'`
do
if test -x "$i/$1"
then
echo "$i/$1"
return 0
fi
done
return 1
}
This will not work with spaces in $PATH. I'd do something like this if
cut is portable (I have only freebsd and linux to test):
path_find()
{
path="$PATH"
while [ "$path" != "" ]; do
p="`echo $path | cut -d : -f 1`"
if [ "$p" = "$path" ]; then
path=""
else
path="`echo $path | cut -d : -f 2-`"
fi
if [ -x "$p/$1" ]; then
echo "$p/$1"
return 0
fi
done
return 1
}
Is there any reason to check the current directory first? "which"
doesn't do it for me and without ./ in the front it does not work
(without . is not in $PATH).
From: Gerrit Pape <hidden> Date: 2016-06-15 22:42:32
On Thu, Jul 06, 2006 at 03:58:47PM +0200, Matthias Lederhofer wrote:
This will not work with spaces in $PATH. I'd do something like this if
cut is portable (I have only freebsd and linux to test):
This should work with shell/builtins only, no sed/cut:
path=${PATH}:
while test -n "$path"; do
p=${path%%:*}/$1
test ! -x "$p" || { echo "$p"; return 0; }
path=${path#*:}
done
test ! -x "$1" || { echo "$1" && return 0; }
return 1
Regards, Gerrit.
From: Dennis Stosberg <hidden> Date: 2016-06-15 22:42:32
Gerrit Pape wrote:
This should work with shell/builtins only, no sed/cut:
path=${PATH}:
while test -n "$path"; do
p=${path%%:*}/$1
test ! -x "$p" || { echo "$p"; return 0; }
path=${path#*:}
$ exec /bin/sh
$ uname -a
SunOS hostname 5.9 Generic_118558-25 sun4u sparc SUNW,Ultra-5_10 Solaris
$ echo ${PATH%%:*}
bad substitution
$ echo ${PATH#*:}
bad substitution
Regards,
Dennis
From: Timo Hirvonen <hidden> Date: 2016-06-15 22:42:32
Matthias Lederhofer [off-list ref] wrote:
This will not work with spaces in $PATH. I'd do something like this if
cut is portable (I have only freebsd and linux to test):
This works at least with SunOS /bin/sh, dash, posh and bash.
path_find()
{
if test -x "$1"
then
echo "$1"
return 0
fi
_ifs="$IFS"
IFS=:
for i in $PATH
do
if test -x "$i/$1"
then
IFS="$_ifs"
echo "$i/$1"
return 0
fi
done
IFS="$_ifs"
return 1
}
Is there any reason to check the current directory first? "which"
doesn't do it for me and without ./ in the front it does not work
(without . is not in $PATH).
It is not needed but might be useful if PERL is user configurable
variable and can contain either full path or basename. For example this
code
test "$PROG" || PROG=prog
PROG=`path_find "$PROG"`
works with these cases
$ PROG=/usr/bin/program ./configure
$ PROG=program-1.2 ./configure
--
http://onion.dynserv.net/~timo/
From: Dennis Stosberg <hidden> Date: 2016-06-15 22:42:32
Timo Hirvonen wrote:
if test -x "$1"
then
echo "$1"
return 0
fi
When run in the Git source directory, this will find the perl/
subdir. If the user gives an absolute path to the perl binary,
there will be no auto-detection anyway, so I think we don't need it.
It is not needed but might be useful if PERL is user configurable
variable and can contain either full path or basename. For example this
code
test "$PROG" || PROG=prog
PROG=`path_find "$PROG"`
works with these cases
$ PROG=/usr/bin/program ./configure
$ PROG=program-1.2 ./configure
I will add that. For the compiler, the script already checks $CC.
I wonder whether
--with-perl=...
--with-python=...
is more common (more similar to autoconf) than
--perl=
--python=
Regards,
Dennis
From: Petr Baudis <hidden> Date: 2016-06-15 22:42:32
Dear diary, on Thu, Jul 06, 2006 at 03:10:11PM CEST, I got a letter
where Timo Hirvonen [off-list ref] said that...
Dennis Stosberg [off-list ref] wrote:
quoted
+ echocheck "for perl"
+ if test -z "$_perl" ; then
+ _perl=`which perl`
+ test "$_perl" || die "cannot find path to perl"
+ fi
+ echores "$_perl"
"which" isn't portable. On SunOS 5.9 "which foo" prints error message to
stdout and returns 0.
Wait, Git runs on SunOS 5.9?
--
Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
Snow falling on Perl. White noise covering line noise.
Hides all the bugs too. -- J. Putnam
From: Timo Hirvonen <hidden> Date: 2016-06-15 22:42:32
Petr Baudis [off-list ref] wrote:
Dear diary, on Thu, Jul 06, 2006 at 03:10:11PM CEST, I got a letter
where Timo Hirvonen [off-list ref] said that...
quoted
"which" isn't portable. On SunOS 5.9 "which foo" prints error message to
stdout and returns 0.
Wait, Git runs on SunOS 5.9?
I have no idea. I noticed the problem with "which" when I ported my
cmus configure scripts to SunOS.
In the git Makefile there are:
ifeq ($(uname_S),SunOS)
...
ifeq ($(uname_R),5.8)
...
ifeq ($(uname_R),5.9)
so it at least tries to work ;) Oh and that 5.9 is apparently kernel
version, not OS version. Sorry for the confusion.
--
http://onion.dynserv.net/~timo/