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/"