]> git.ipfire.org Git - thirdparty/automake.git/commitdiff
ithreads: use runtime (not configure time) detection of perl threads
authorMike Frysinger <vapier@gentoo.org>
Sat, 12 Jan 2013 05:19:40 +0000 (00:19 -0500)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Sat, 12 Jan 2013 10:29:34 +0000 (11:29 +0100)
I can't imagine the runtime checks being a big runtime penalty, so there
shouldn't be a need to do the checks at configure check and hardcode the
result in the generated automake.

With the current system, it means if you change your perl config (build
perl w/threads, build automake, build perl w/out threads), or deploy a
compiled automake package on a different system (build had threads, but
deployed system does not), you get errors when trying to run automake.

So take the logic from configure.ac and move it to the one place where
PERL_THREADS is used (lib/Automake/Config.in) and do the version/config
checking at runtime.

* bootstrap.sh (PERL_THREADS): Delete assignment and use in sed.
* configure.ac (am_cv_prog_PERL_ithreads, PERL_THREADS): Delete all code
related to these two variables.
* lib/Automake/Config.in (perl_threads): Initialize to 0, and only set to
1 if the perl version is at least 5.007_002, and useithreads is in Config.

Copyright-paperwork-exempt: yes
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
bootstrap.sh
configure.ac
lib/Automake/Config.in

index 0a5a290e295b4e150b6e683fd53cf0bf22cf4f36..93bf3fd541547df5d158349f6762ff563e130fdd 100755 (executable)
@@ -35,7 +35,6 @@ export AUTOM4TE  # ditto
 VERSION=`sed -ne '/AC_INIT/s/^[^[]*\[[^[]*\[\([^]]*\)\].*$/\1/p' configure.ac`
 PACKAGE=automake
 datadir=.
-PERL_THREADS=0
 # This should be automatically updated by the 'update-copyright'
 # rule of our Makefile.
 RELEASE_YEAR=2013
@@ -83,7 +82,6 @@ dosubst ()
   sed -e "s%@APIVERSION@%$APIVERSION%g" \
       -e "s%@PACKAGE@%$PACKAGE%g" \
       -e "s%@PERL@%$PERL%g" \
-      -e "s%@PERL_THREADS@%$PERL_THREADS%g" \
       -e "s%@SHELL@%$BOOTSTRAP_SHELL%g" \
       -e "s%@VERSION@%$VERSION%g" \
       -e "s%@datadir@%$datadir%g" \
index 6ef2be7341f039c5e5e463182a424004d247dbed..006a08c2df33ca802605bfb24cc0fa1135a509a7 100644 (file)
@@ -86,32 +86,6 @@ installed, select the one Automake should use using
   ./configure PERL=/path/to/perl])
 }
 
-# We require ithreads support, and version 5.7.2 for CLONE.
-AC_CACHE_CHECK([whether $PERL supports ithreads], [am_cv_prog_PERL_ithreads],
-[if $PERL -e '
-    require 5.007_002;
-    use Config;
-    if ($Config{useithreads})
-      {
-        require threads;
-        import threads;
-        require Thread::Queue;
-        import Thread::Queue;
-        exit 0;
-      }
-    exit 1;' >&AS_MESSAGE_LOG_FD 2>&1
-then
-  am_cv_prog_PERL_ithreads=yes
-else
-  am_cv_prog_PERL_ithreads=no
-fi])
-if test $am_cv_prog_PERL_ithreads = yes; then
-  PERL_THREADS=1;
-else
-  PERL_THREADS=0;
-fi
-AC_SUBST([PERL_THREADS])
-
 # The test suite will skip some tests if tex is absent.
 AC_CHECK_PROG([TEX], [tex], [tex])
 # Save details about the selected TeX program in config.log.
index fe6ef9d29bccd1ecf2b9378bd8fcfdad793f8362..885e74e5d11c5cf9e056f2a6a1000b11c6411b34 100644 (file)
@@ -33,7 +33,14 @@ our $PACKAGE_BUGREPORT = '@PACKAGE_BUGREPORT@';
 our $VERSION = '@VERSION@';
 our $RELEASE_YEAR = '@RELEASE_YEAR@';
 our $libdir = '@datadir@/@PACKAGE@-@APIVERSION@';
-our $perl_threads = @PERL_THREADS@;
+
+our $perl_threads = 0;
+# We need at least this version for CLONE support.
+if (eval { require 5.007_002; })
+  {
+    use Config;
+    $perl_threads = $Config{useithreads};
+  }
 
 1;