On 17 July 2014 23:24, demerphq <[email protected]> wrote:
> On 17 July 2014 14:22, <[email protected]> wrote:
>
>>
>> From: demerphq
>> Sent: Thursday, July 17, 2014 7:25 PM
>> To: Sisyphus
>> Cc: [email protected]
>>
>>
>> When I moved the scripts out of a perl build tree it started behaving
>>> properly. IMO that issue can be left at "so dont do that". :-)
>>>
>>
>> AFAICT, the only difference between building in /git_tree/perl/Porting
>> and /somewhere/else is that instead of doing:
>>
>> cc -c -I"/git_tree/perl/Porting" -D_REENTRANT [...] FOO_1ef8.c
>> the build will do:
>> cc -c -I"/somewhere/else" -D_REENTRANT [...] FOO_1ef8.c
>>
>> All other commands that get run would be the same. (You could check this
>> by comparing the BUILD_NOISY outputs for both situations.)
>>
>> So I'm wondering whether, in the running of the above command, something
>> was found in "/git_tree/perl/Porting" that really ought not have been found
>> and loaded.
>>
>
> Below is output from it failing and it suceeding (this is perlbrew 5.14.4):
>
> Starting "make" Stage
> /home/yorton/perl5/perlbrew/perls/perl-5.14.4/bin/perl
> /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/xsubpp
> -typemap
> "/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap"
> test_inline_pl_21ea2.xs > test_inline_pl_21ea2.xsc && mv
> test_inline_pl_21ea2.xsc test_inline_pl_21ea2.c
> make: *** No rule to make target `../../../../fakethr.h', needed by
> `test_inline_pl_21ea2.o'. Stop.
>
>
The above shows what goes wrong. Makemaker decides that PERL_LIB is
"../../../../" instead of
"/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4"
below is the diff of the two Makefiles, but the relevant part is as follows:
-PERL_LIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4
-PERL_ARCHLIB =
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/x86_64-linux
+PERL_LIB = ../../../../lib
+PERL_ARCHLIB = ../../../../lib
I am guessing that MakerMaker decides that is being used as part of
building perl, and that it should use it as the location for its header
files. I know there is special logic in MakeMaker for this kind of purpose.
In fact I have patched related logic in the perl build process. If this
were happening in a later perl I might even think this was my fault. :-)
Anyway, my bet is this isnt an Inline bug, but an unfortunate mis-feature
in MakeMaker.
$ diff -wu ~/git_tree/hashy/_Inline/build/test_inline_pl_21ea/Makefile
~/git_tree/perl/Porting/_Inline/build/test_inline_pl_21ea2/Makefile
--- /home/yorton/git_tree/hashy/_Inline/build/test_inline_pl_21ea/Makefile
2014-07-17
23:21:20.113236687 +0200
+++ ~/git_tree/perl/Porting/_Inline/build/test_inline_pl_21ea2/Makefile
2014-07-17
23:19:52.913732019 +0200
@@ -1,4 +1,4 @@
-# This Makefile is for the test_inline_pl_21ea extension to perl.
+# This Makefile is for the test_inline_pl_21ea2 extension to perl.
#
# It was generated automatically by MakeMaker version
# 6.57_05 (Revision: 65705) from the contents of
@@ -12,8 +12,8 @@
# MakeMaker Parameters:
# BUILD_REQUIRES => { }
-# INC => q[-I"/git_tree/hashy"]
-# NAME => q[test_inline_pl_21ea]
+# INC => q[-I"/git_tree/perl/Porting"]
+# NAME => q[test_inline_pl_21ea2]
# PREREQ_PM => { }
# TYPEMAPS =>
[q[/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap]]
# VERSION => q[0.00]
@@ -53,8 +53,8 @@
AR_STATIC_ARGS = cr
DIRFILESEP = /
DFSEP = $(DIRFILESEP)
-NAME = test_inline_pl_21ea
-NAME_SYM = test_inline_pl_21ea
+NAME = test_inline_pl_21ea2
+NAME_SYM = test_inline_pl_21ea2
VERSION = 0.00
VERSION_MACRO = VERSION
VERSION_SYM = 0_00
@@ -78,13 +78,13 @@
VENDORPREFIX =
INSTALLPRIVLIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4
DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
-INSTALLSITELIB = /git_tree/hashy/_Inline/lib
+INSTALLSITELIB = /git_tree/perl/Porting/_Inline/lib
DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
INSTALLVENDORLIB =
DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
INSTALLARCHLIB =
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/x86_64-linux
DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
-INSTALLSITEARCH = /git_tree/hashy/_Inline/lib
+INSTALLSITEARCH = /git_tree/perl/Porting/_Inline/lib
DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
INSTALLVENDORARCH =
DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
@@ -112,14 +112,15 @@
DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
INSTALLVENDORMAN3DIR =
DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
-PERL_LIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4
-PERL_ARCHLIB =
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/x86_64-linux
+PERL_LIB = ../../../../lib
+PERL_ARCHLIB = ../../../../lib
LIBPERL_A = libperl.a
FIRST_MAKEFILE = Makefile
MAKEFILE_OLD = Makefile.old
MAKE_APERL_FILE = Makefile.aperl
PERLMAINCC = $(CC)
-PERL_INC =
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/x86_64-linux/CORE
+PERL_SRC = ../../../..
+PERL_INC = ../../../..
PERL = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/bin/perl
FULLPERL = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/bin/perl
ABSPERL = $(PERL)
@@ -143,21 +144,21 @@
# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
# DLBASE = Basename part of dynamic library. May be just equal BASEEXT.
MAKE = make
-FULLEXT = test_inline_pl_21ea
-BASEEXT = test_inline_pl_21ea
+FULLEXT = test_inline_pl_21ea2
+BASEEXT = test_inline_pl_21ea2
PARENT_NAME =
DLBASE = $(BASEEXT)
VERSION_FROM =
-INC = -I"/git_tree/hashy"
+INC = -I"/git_tree/perl/Porting"
OBJECT = $(BASEEXT)$(OBJ_EXT)
LDFROM = $(OBJECT)
LINKTYPE = dynamic
BOOTDEP =
# Handy lists of source code files:
-XS_FILES = test_inline_pl_21ea.xs
-C_FILES = test_inline_pl_21ea.c
-O_FILES = test_inline_pl_21ea.o
+XS_FILES = test_inline_pl_21ea2.xs
+C_FILES = test_inline_pl_21ea2.c
+O_FILES = test_inline_pl_21ea2.o
H_FILES = INLINE.h
MAN1PODS =
MAN3PODS =
@@ -204,7 +205,7 @@
XSUBPP = $(XSUBPPDIR)$(DFSEP)xsubpp
XSUBPPRUN = $(PERLRUN) $(XSUBPP)
XSPROTOARG =
-XSUBPPDEPS =
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap
$(XSUBPP)
+XSUBPPDEPS = ../../../../lib/ExtUtils/typemap
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap
$(XSUBPP)
XSUBPPARGS = -typemap
"/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap"
XSUBPP_EXTRA_ARGS =
@@ -260,8 +261,8 @@
RCS_LABEL = rcs -Nv$(VERSION_SYM): -q
DIST_CP = best
DIST_DEFAULT = tardist
-DISTNAME = test_inline_pl_21ea
-DISTVNAME = test_inline_pl_21ea-0.00
+DISTNAME = test_inline_pl_21ea2
+DISTVNAME = test_inline_pl_21ea2-0.00
# --- MakeMaker macro section:
@@ -280,7 +281,7 @@
# --- MakeMaker const_loadlibs section:
-# test_inline_pl_21ea might depend on some other libraries:
+# test_inline_pl_21ea2 might depend on some other libraries:
# See ExtUtils::Liblist for details
#
@@ -527,14 +528,14 @@
core.[0-9] $(INST_ARCHAUTODIR)/extralibs.all \
core.[0-9][0-9] $(BASEEXT).bso \
pm_to_blib.ts core.[0-9][0-9][0-9][0-9] \
- MYMETA.yml $(BASEEXT).x \
- $(BOOTSTRAP) perl$(EXE_EXT) \
- tmon.out *$(OBJ_EXT) \
- pm_to_blib $(INST_ARCHAUTODIR)/extralibs.ld \
- blibdirs.ts core.[0-9][0-9][0-9][0-9][0-9] \
- *perl.core core.*perl.*.? \
- $(MAKE_APERL_FILE) $(BASEEXT).def \
- test_inline_pl_21ea.c perl \
+ test_inline_pl_21ea2.c MYMETA.yml \
+ $(BASEEXT).x $(BOOTSTRAP) \
+ perl$(EXE_EXT) tmon.out \
+ *$(OBJ_EXT) pm_to_blib \
+ $(INST_ARCHAUTODIR)/extralibs.ld blibdirs.ts \
+ core.[0-9][0-9][0-9][0-9][0-9] *perl.core \
+ core.*perl.*.? $(MAKE_APERL_FILE) \
+ $(BASEEXT).def perl \
core.[0-9][0-9][0-9] mon.out \
lib$(BASEEXT).def perlmain.c \
perl.exe so_locations \
@@ -563,7 +564,7 @@
metafile : create_distdir
$(NOECHO) $(ECHO) Generating META.yml
$(NOECHO) $(ECHO) '--- #YAML:1.0' > META_new.yml
- $(NOECHO) $(ECHO) 'name: test_inline_pl_21ea' >>
META_new.yml
+ $(NOECHO) $(ECHO) 'name: test_inline_pl_21ea2' >>
META_new.yml
$(NOECHO) $(ECHO) 'version: 0.00' >> META_new.yml
$(NOECHO) $(ECHO) 'abstract: ~' >> META_new.yml
$(NOECHO) $(ECHO) 'author: []' >> META_new.yml
@@ -806,6 +807,16 @@
# --- MakeMaker perldepend section:
+# Check for unpropogated config.sh changes. Should never happen.
+# We do NOT just update config.h because that is not sufficient.
+# An out of date config.h is not fatal but complains loudly!
+$(PERL_INC)/config.h: $(PERL_SRC)/config.sh
+ -$(NOECHO) $(ECHO) "Warning: $(PERL_INC)/config.h out of date with
$(PERL_SRC)/config.sh"; $(FALSE)
+
+$(PERL_ARCHLIB)/Config.pm: $(PERL_SRC)/config.sh
+ $(NOECHO) $(ECHO) "Warning: $(PERL_ARCHLIB)/Config.pm may be out of date
with $(PERL_SRC)/config.sh"
+ cd $(PERL_SRC) && $(MAKE) lib/Config.pm
+
PERL_HDRS = \
$(PERL_INC)/EXTERN.h \
@@ -851,7 +862,7 @@
$(OBJECT) : $(PERL_HDRS)
-test_inline_pl_21ea.c : $(XSUBPPDEPS)
+test_inline_pl_21ea2.c : $(XSUBPPDEPS)
# --- MakeMaker makefile section:
--
perl -Mre=debug -e "/just|another|perl|hacker/"