git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 1/4] configure: Add test for Perl

From
DSDennis Stosberg <dennis@stosberg.net>
Date
Jul 7, 2006, 16:26 UTC
Message-ID
<20060707162637.25746.84757.stgit@leonov.stosberg.net>
In-Reply-To
<20060707162513.25746.57374.stgit@leonov.stosberg.net>
From: Dennis Stosberg <dennis@stosberg.net>

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.

The user can override the auto-detection with the --perl parameter or with the PERL environment variable.

The path_find() function was written by Timo Hirvonen as a replacement for "which", which cannot be used portably.

Signed-off-by: Dennis Stosberg <dennis@stosberg.net>
---
 config-lib.sh |   38 +++++++++++++++++++++++++++++++++++++-
 1 files changed, 37 insertions(+), 1 deletions(-)
diff --git a/config-lib.sh b/config-lib.sh
index 68fecc5..34dfc05 100755
--- a/config-lib.sh
+++ b/config-lib.sh
@@ -117,6 +117,22 @@ alpha() {
 	esac
 }
 
+# replacement for "which", which cannot be used portably
+path_find()
+{
+        _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
+}
+
 # not boolean test: implement the posix shell "!" operator for a
 # non-posix /bin/sh.
 #   usage:  not {command}
@@ -240,6 +256,9 @@ process_params() {
 	_cc=cc
 	test "$CC" && _cc="$CC"
 
+	_perl=
+	test "$PERL" && _perl="$PERL"
+
 	for ac_option do
 		case "$ac_option" in
 		--help|-help|-h)
@@ -262,6 +281,7 @@ Installation directories:
 
 Miscellaneous options:
   --cc=COMPILER          use this C compiler to build MPlayer [gcc]
+  --perl=PATH            path to perl binary [autodetect]
   --target=PLATFORM      target platform (i386-linux, arm-linux, etc)
   --with-install=PATH    use a custom install program (useful if your OS uses
                          a GNU-incompatible install utility by default and
@@ -296,6 +316,8 @@ EOF
 
 		--cc=*)
 			_cc=`echo $ac_option | cut -d '=' -f 2` ;;
+		--perl=*)
+			_perl=`echo $ac_option | cut -d '=' -f 2` ;;
 		--target=*)
 			_target=`echo $ac_option | cut -d '=' -f 2` ;;
 		--with-install=*)
@@ -409,8 +431,21 @@ int main(void) { return 0; }
 EOF
 	{ cc_check && tmp_run; } || die "unusable compiler or produced binary"
 	echores yes
-}
 
+	echocheck "for perl"
+	if test -z "$_perl" ; then
+		_perl=`path_find perl`
+		test "$_perl" || die "cannot find path to perl"
+	fi
+	echores "$_perl"
+
+	echocheck "perl version"
+	_perl_version=`"$_perl" -e 'eval{require 5.6.0; printf "%vd", $^V}'`
+	if test -z "$_perl_version" ; then
+		die "your perl is too old. Perl 5.6.0 or newer is required."
+	fi
+	echores "$_perl_version"
+}
 
 write_config() {
 	echo "Creating config.mak.autogen"
@@ -420,6 +455,7 @@ write_config() {
 # -------- Generated by configure -----------
 
 CC = $_cc
+PERL_PATH = $_perl
 INSTALL = $_install
 
 EOF
Previous: Dennis StosbergNext: Dennis Stosberg
Message 2 of 6 in “More tests for hand-written configure (resend)”
  1. 0/4 More tests for hand-written configure (resend)Dennis Stosberg, Jul 7, 2006
  2. 1/4 configure: Add test for PerlDennis Stosberg, Jul 7, 2006
  3. 2/4 configure: Add test for PythonDennis Stosberg, Jul 7, 2006
  4. 3/4 configure: Try to figure out compiler optionsDennis Stosberg, Jul 7, 2006
  5. 4/4 configure: Fixes for SolarisDennis Stosberg, Jul 7, 2006
  6. Junio C HamanoJul 7, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.