Comments (1)
From [email protected]
Perl currently does not automatically compile extension modules put
under PERL_SRC/ext/ if the module has more than two layers of depth
before the .xs file. For example, Configure does not find
"ext/XML/Parser/Expat" and thus does not compile it. The following
patch should help to fix this.
This patch is against the Configure distributed with 5.00554, but I
assume that it should work against the current version as well. Note
that even with this patch, MakeMaker will still give a spurious error
message. It can safely be ignored, and probably could be fixed most
easily by passing PERL_SRC to ext/util/make_ext in Makefile.SH.
I'm guessing the patch is as portable as the rest of Configure, but if
it is not I suppose one could ditch the recursion and just add another
couple layers of checking by brute force.
Hope this is useful,
--nate
Inline Patch
--- Configure Fri Jun 11 20:59:48 1999
+++ Configure.new Fri Jun 11 21:06:43 1999
@@ -12010,8 +12010,6 @@
echo " "
echo "Looking for extensions..." >&4
-tdir=`pwd`
-cd $rsrc/ext
: If we are using the old config.sh, known_extensions may contain
: old or inaccurate or duplicate values.
known_extensions=''
@@ -12020,30 +12018,33 @@
: We do not just use MANIFEST because the user may have dropped
: some additional extensions into the source tree and expect them
: to be built.
-for xxx in * ; do
- case "$xxx" in
- DynaLoader|dynaload) ;;
- *) if $test -f $xxx/$xxx.xs; then
- known_extensions="$known_extensions $xxx"
- elif $test -f $xxx/Makefile.PL; then
- nonxs_extensions="$nonxs_extensions $xxx"
- else
- if $test -d $xxx; then
- # Look for nested extensions, eg. Devel/Dprof.
- cd $xxx
- for yyy in * ; do
- if $test -f $yyy/$yyy.xs; then
- known_extensions="$known_extensions $xxx/$yyy"
- elif $test -f $yyy/Makefile.PL; then
- nonxs_extensions="$nonxs_extensions $xxx/$yyy"
- fi
- done
- cd ..
- fi
- fi
- ;;
+: function to recursively find available extensions, ignoring DynaLoader
+: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
+find_extensions='
+ for xxx in *; do
+ case "$xxx" in
+ DynaLoader|dynaload) ;;
+ *)
+ if $test -f $xxx/$xxx.xs; then
+ known_extensions="$known_extensions $1$xxx";
+ elif $test -f $xxx/Makefile.PL; then
+ nonxs_extensions="$nonxs_extensions $1$xxx";
+ else
+ if $test -d $xxx -a $# -lt 10; then
+ set $1$xxx/ $*;
+ cd $xxx;
+ eval $find_extensions;
+ cd ..;
+ shift;
+ fi
+ fi
+ ;;
esac
-done
+ done'
+tdir=`pwd`
+cd $rsrc/ext
+set --
+eval $find_extensions
set X $nonxs_extensions
shift
nonxs_extensions="$*"
Perl Info
This perlbug was built using Perl 5.00554 - Mon Apr 5 17:08:35 CDT 1999
It is being executed now by Perl 5.00502 - Fri Oct 23 19:20:09 EDT 1998.
Site configuration information for perl 5.00502:
Configured by nate at Fri Oct 23 19:20:09 EDT 1998.
Summary of my perl5 (5.0 patchlevel 5 subversion 2) configuration:
Platform:
osname=linux, osvers=2.0.35, archname=i586-linux
uname='linux trinkpad 2.0.35 #3 thu oct 22 19:19:19 edt 1998 i586 unknown '
hint=recommended, useposix=true, d_sigaction=define
usethreads=undef useperlio=undef d_sfio=undef
Compiler:
cc='cc', optimize='-O2', gccversion=egcs-2.90.29 980515 (egcs-1.0.3 release)
cppflags='-Dbool=char -DHAS_BOOL -I/usr/local/include'
ccflags ='-Dbool=char -DHAS_BOOL -I/usr/local/include'
stdchar='char', d_stdstdio=define, usevfork=false
intsize=4, longsize=4, ptrsize=4, doublesize=8
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
alignbytes=4, usemymalloc=n, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /shlib /lib /usr/lib
libs=-lndbm -lgdbm -ldbm -ldb -ldl -lm -lc
libc=/lib/libc.so.5.4.44, so=so, useshrplib=false, libperl=libperl.a
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic'
cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib'
Locally applied patches:
@INC for perl 5.00502:
/usr/lib/perl5/5.00502/i586-linux
/usr/lib/perl5/5.00502
/usr/lib/perl5/site_perl/5.005/i586-linux
/usr/lib/perl5/site_perl/5.005
.
Environment for perl 5.00502:
HOME=/home/nate
LANG (unset)
LD_LIBRARY_PATH=/usr/local/qt/lib::/usr/local/rvplayer5.0
LOGDIR (unset)
PATH=/usr/local/qt/bin:/usr/local/qt/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/andrew/bin:/usr/openwin/bin:/usr/games:.:/usr/lib/teTeX/bin:/usr/X11R6/bin:/sbin:/usr/sbin:/usr/local/etc/java/bin:/usr/local/netpbm/bin:/usr/local/insure/bin.linux:/usr/X11R6/bin:/usr/andrew/bin:/usr/openwin/bin:/usr/games:.:/usr/lib/teTeX/bin:/usr/X11R6/bin:/sbin:/usr/sbin:/usr/local/etc/java/bin:/usr/local/netpbm/bin:/usr/local/insure/bin.linux
PERL_BADLANG (unset)
SHELL=/bin/bash
from perl5.
Related Issues (20)
- [doc] join with undef values HOT 7
- The Perl debugger does not honor 'use strict' for expression evaluation HOT 2
- perl5db.pl: handling of undefined watch_expressions in _DB__handle_watch_expressions() HOT 1
- tests fail when building [email protected] with intel oneapi C compiler
- UNIVERSAL.pm docfix HOT 1
- [MSWin] win32/GNUmakefile CFLAGS needs "-Wno-error=implicit-function-declaration" if building perl with gcc-14.1.0 HOT 10
- ExtUtils::CBuilder fails to compile modules with warnings when -Wall is part of Perl's compile time flags HOT 4
- [doc] Don't use two dashes at the top of man pages HOT 1
- [doc] perlsyn doesn't have any "push my ..." examples HOT 10
- feature 'extra_paired_delimiters': Please remove U+0706/U+0707 from the list HOT 2
- B::Deparse: blead incorrectly deparses __LINE__ HOT 5
- perldb requires Term::Rendezvous if the 'noTTY' option is set, but it is unavailable (anywhere?) HOT 2
- perlpolicy supported version updates have been very inconsistent
- makerel should always set --format=ustar
- Perl on Solaris Sparc incorrectly adds -L/usr/lib/sparcv9 into ldflags and lddlflags HOT 4
- Makefiles are missing targets, can't run `make distclean` HOT 15
- [doc] Deëxperimented features are not mentioned in perldelta HOT 1
- `local $h{$k}` doesn't remove previously non-existing key from shared hashes HOT 2
- [doc] use VERSION - "use 5.12;" vs. "use strict;" and "use 5.35.0;" vs. "use warnings;" HOT 3
- `call_argv` fails to call `SAVETMP`/`FREETMP` when creating mortal argument HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from perl5.