On 17 July 2014 23:24, demerphq <demer...@gmail.com> wrote:

> On 17 July 2014 14:22, <sisyph...@optusnet.com.au> wrote:
>
>>
>> From: demerphq
>> Sent: Thursday, July 17, 2014 7:25 PM
>> To: Sisyphus
>> Cc: inline@perl.org
>>
>>
>>  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/"

Reply via email to