Front page | perl.perl5.porters |
Postings from July 2012
[perl #113940] make ignores XS version changes
Thread Next
From:
Father Chrysostomos
Date:
July 1, 2012 14:40
Subject:
[perl #113940] make ignores XS version changes
Message ID:
rt-3.6.HEAD-28836-1341178816-1949.113940-75-0@perl.org
# New Ticket Created by Father Chrysostomos
# Please include the string: [perl #113940]
# in the subject line of all future correspondence about this issue.
# <URL: https://rt.perl.org:443/rt3/Ticket/Display.html?id=113940 >
Every time an XS module’s version number changes, one has to do a complete clean to get things to build properly again. Otherwise we get that nasty error message about the XS version number not matching the module number. Actually, through experimentation, I found that deleting the Makefile and re-running make is sufficient.
Since version numbers are changing all the time, this is tedious. ‘make’ should be able to detect that something changed and update things accordingly. That’s what it’s for, right?
Since Makefile.PL gets the version number from the .pm file and writes it to the Makefile, strictly speaking the Makefile should depend on the .pm file.
ExtUtils::MakeMaker says this in its documentation:
The file named in VERSION_FROM is not added as a dependency to
Makefile. This is not really correct, but it would be a major pain
during development to have to rewrite the Makefile for any smallish
change in that file. If you want to make sure that the Makefile
contains the correct VERSION macro after any change of the file, you
would have to do something like
depend => { Makefile => '$(VERSION_FROM)' }
So it violates pedantic correctness for the sake of avoiding a ‘major pain’. But for the perl core it causes a major pain.
What is the best way to fix this?
1. Should ExtUtils::MakeMaker do things differently when PERL_CORE is defined?
2. Should make_ext.pl add an explicit dependency to its generated Makefiles.PL? Makefiles.PL that are not generated would have to be modified.
3. Or should make_ext.pl detect a version change and regenerate the Makefile?
The last option is a bit of a hack, but I think it would be the simplest solution. It would also follow the spirit of what ExtUtils::MakeMaker does, avoiding a regeneration of the Makefile due to a smallish (non-version-related) change in the .pm file.
---
Flags:
category=install
severity=low
---
Site configuration information for perl 5.17.2:
Configured by sprout at Mon Jun 25 13:28:03 PDT 2012.
Summary of my perl5 (revision 5 version 17 subversion 2) configuration:
Snapshot of: 49f4c4e423fa15e3da8c813a7526bb78740f9018
Platform:
osname=darwin, osvers=10.5.0, archname=darwin-2level
uname='darwin pint.local 10.5.0 darwin kernel version 10.5.0: fri nov 5 23:20:39 pdt 2010; root:xnu-1504.9.17~1release_i386 i386 '
config_args='-de -DDEBUGGING -Dusedevel'
hint=recommended, useposix=true, d_sigaction=define
useithreads=undef, usemultiplicity=undef
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=undef, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-fno-common -DPERL_DARWIN -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include',
optimize='-O3 -g',
cppflags='-fno-common -DPERL_DARWIN -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
ccversion='', gccversion='4.2.1 (Apple Inc. build 5664)', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags =' -fstack-protector -L/usr/local/lib'
libpth=/usr/local/lib /usr/lib
libs=-ldbm -ldl -lm -lutil -lc
perllibs=-ldl -lm -lutil -lc
libc=, so=dylib, useshrplib=false, libperl=libperl.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/local/lib -fstack-protector'
Locally applied patches:
---
@INC for perl 5.17.2:
/usr/local/lib/perl5/site_perl/5.17.2/darwin-2level
/usr/local/lib/perl5/site_perl/5.17.2
/usr/local/lib/perl5/5.17.2/darwin-2level
/usr/local/lib/perl5/5.17.2
/usr/local/lib/perl5/site_perl
.
---
Environment for perl 5.17.2:
DYLD_LIBRARY_PATH (unset)
HOME=/Users/sprout
LANG=en_US.UTF-8
LANGUAGE (unset)
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/bin
PERL_BADLANG (unset)
SHELL=/bin/bash
Thread Next
-
[perl #113940] make ignores XS version changes
by Father Chrysostomos