Closed nieder closed 2 years ago
Could you try this with earlier versions of EUMM (possibly bisecting) and see at what point it goes from working to not working?
I tried a couple other EU::MM that I have access to. Down to 7.44, they fail like 7.62 above. With 7.06, 7.24, 7.30, and 7.36, the failures are like this (completely clean build tree for every test):
perl5.28.2 -I`pwd`/blib/lib t/27inline_maker.t
pwd
ok 1 - /sw/build.build/inline-c-pm5282-0.81-1/Inline-C-0.81/example/modules/Math-Simple-1.23 Makefile creation
not ok 2 - make test
# Failed test 'make test'
# at t/27inline_maker.t line 61.
# cp Simple.pm blib/lib/Math/Simple.pm
# "/sw/bin/perl5.28.2" -Mblib -MInline=NOISY,_INSTALL_ -MMath::Simple -e"my %A = (modinlname => 'Math-Simple.inl', module => 'Math::Simple'); my %S = (API => \%A); Inline::satisfy_makefile_dep(\%S);" 1.23 blib/arch
# Error. You have specified 'C' as an Inline programming language.
#
# I currently only know about the following languages:
# Foo, foo
#
# If you have installed a support module for this language, try deleting the
# config-darwin-thread-multi-2level-5.028002 file from the following Inline DIRECTORY, and run again:
#
# /sw/build.build/inline-c-pm5282-0.81-1/Inline-C-0.81/_Inline_27inline_maker.1220/src dir/_Inline
#
# (And if that works, please file a bug report.)
#
# at -e line 0.
# INIT failed--call queue aborted.
# make: *** [Makefile:902: Math-Simple.inl] Error 255
Thank you. Are you by any chance using parallel make (e.g. setting MAKEFLAGS
EDIT spell var right)? That (together with an Inline bug of not specifying its dependencies) would explain it failing to load Math::Simple despite the output appearing to show it copying that to blib
. However, https://github.com/ingydotnet/inline-pm/blob/master/lib/Inline/MakeMaker.pm (note, in a different distro) looks like it depends on pm_to_blib
, so that shouldn't be a problem.
Could you also say what version of Inline you have installed? That is probably the root of things here. In any case, I can't see a way for this distro to influence the workings of Inline::MakeMaker (which is in the Inline distro), so the issue may need transferring over.
MAKEFLAGS
is explicitly set to -j1
during our build. And MAKE_FLAGS
is not set.
I have inline-0.86 installed.
Thanks, I did indeed get the env-var name wrong.
Re-reading the error from the older EUMM versions, I am now wondering if -Mblib
isn't operating right for this scenario. It searches in the dir it's running in, followed by upwards from there, to find a blib
directory, and if found uses that. This will work fine if the example distros are built in a location under the place where the Inline
distro is extracted, but not if they're built elsewhere. If I'm right, this is the same problem as solved by #92. Since that has been merged but not yet released, could you please try the master
version of Inline
and see if the behaviour is any different?
I tried the master version of inline-c (both git clone and zip download from github) and they didn't have Makefile.PL. So I tried to 1) patch inline-c-0.81 directly with the change from #92, or 2) download inline-c-0.81_001 from CPAN. In both cases, t/27inline_maker.t continued to fail.
One thing I noticed is that the command being run by the test has a space in the temporary test path: _Inline_27inline_maker.39164/src dir/blib/arch
. I don't know if that space is supposed to be escaped or it's automagically parsed correctly. When the tests finish, the temporary path is destroyed, so I can't do anything to test it. @INC
output after the failure shows the path with the space, but I don't know if it's treating that as a single directory, or as separate directories (which would explain the failure).
$ /sw/bin/perl5.28.2 -Iblib/lib t/27inline_maker.t ok 1 - /sw/build.build/inline-c-pm5282-0.81.001-1.2/Inline-C-0.81_001/example/modules/Math-Simple-1.23 Makefile creation not ok 2 - make test # Failed test 'make test' # at t/27inline_maker.t line 61. # cp Simple.pm blib/lib/Math/Simple.pm # "/sw/bin/perl5.28.2" -Mblib -MInline=NOISY,INSTALL -MMath::Simple -e"my %A = (modinlname => 'Math-Simple.inl', module => 'Math::Simple'); my %S = (API => \%A); Inline::satisfy_makefile_dep(\%S);" 1.23 /sw/build.build/inline-c-pm5282-0.81.001-1.2/Inline-C-0.81_001/_Inline_27inline_maker.39164/src dir/blib/arch # Can't locate Math/Simple.pm in @INC (you may need to install the Math::Simple module) (@INC contains: /sw/build.build/inline-c-pm5282-0.81.001-1.2/Inline-C-0.81_001/_Inline_27inline_maker.39164/src dir/../../blib/arch /sw/build.build/inline-c-pm5282-0.81.001-1.2/Inline-C-0.81_001/_Inline_27inline_maker.39164/src dir/../../blib/lib /sw/lib/perl5/5.28.2/darwin-thread-multi-2level /sw/lib/perl5/5.28.2 /sw/lib/perl5/darwin-thread-multi-2level /sw/lib/perl5 /sw/lib/perl5/darwin /sw/lib/perl5/site_perl/5.28.2/darwin-thread-multi-2level /sw/lib/perl5/site_perl/5.28.2 /sw/lib/perl5-core/5.28.2/darwin-thread-multi-2level /sw/lib/perl5-core/5.28.2). # BEGIN failed--compilation aborted.
I edited t/27inline_maker.t to remove the spaces in src dir
and inst dir
t/27inline_maker.t now fails like this:
$ /sw/bin/perl5.28.2 -Iblib/lib t/27inline_maker.t
ok 1 - /sw/build.build/inline-c-pm5282-0.81.001-1.2/Inline-C-0.81_001/example/modules/Math-Simple-1.23 Makefile creation
not ok 2 - make test
# Failed test 'make test'
# at t/27inline_maker.t line 59.
# cp Simple.pm blib/lib/Math/Simple.pm
# "/sw/bin/perl5.28.2" -Mblib -MInline=NOISY,_INSTALL_ -MMath::Simple -e"my %A = (modinlname => 'Math-Simple.inl', module => 'Math::Simple'); my %S = (API => \%A); Inline::satisfy_makefile_dep(\%S);" 1.23 /sw/build.build/inline-c-pm5282-0.81.001-1.2/Inline-C-0.81_001/_Inline_27inline_maker.40162/src_dir/blib/arch
# Error. You have specified 'C' as an Inline programming language.
#
# I currently only know about the following languages:
# Foo, foo
#
# If you have installed a support module for this language, try deleting the
# config-darwin-thread-multi-2level-5.028002 file from the following Inline DIRECTORY, and run again:
#
# /sw/build.build/inline-c-pm5282-0.81.001-1.2/Inline-C-0.81_001/_Inline_27inline_maker.40162/src_dir/_Inline
#
# (And if that works, please file a bug report.)
#
# at -e line 0.
# INIT failed--call queue aborted.
# make: *** [Makefile:902: Math-Simple.inl] Error 255
This suggests it found the files but is breaking differently, no?
The space in the directory name is deliberate, to test that functionality. The "breaking differently" is the same as identified above, and my prediction of why has not changed. You can prevent the cleanup by editing the $CLEANUP
var here (which is what it's for): https://github.com/ingydotnet/inline-c-pm/blob/master/test/27inline_maker.t#L15
I belatedly believe this is actually the problem fixed in #92, as just released to CPAN. @nieder Could you please try the latest Inline::C and see if the problem is still there?
I believe this issue is fixed in Inline::C 0.82. Please reopen if this is not the case!
0.82 unfortunately still fails. I tried changing $CLEANUP to '0', but the temp directory was either never created or still being removed after the failure (I also commented out the rmtree lines further down). The only copy of the file "Simple.pm" is in example/modules/Math-Simple-1.23/Simple.pm
.
ETA: If I ctrl-c halfway during the test, I'm left with
$ find . -name Simple.pm
./example/modules/Math-Simple-1.23/Simple.pm
./_Inline_27inline_maker.41693/src dir/blib/lib/Math/Simple.pm
./_Inline_27inline_maker.41693/src dir/Simple.pm
So the temp directory and file are being created, but neither of those directories are in @INC
:
# Can't locate Math/Simple.pm in
@INC
(you may need to install the Math::Simple module) (@INC
contains: /sw/build.build/inline-c-pm5282-0.82-1.2/Inline-C-0.82/_Inline_27inline_maker.41693/src dir/../../blib/arch /sw/build.build/inline-c-pm5282-0.82-1.2/Inline-C-0.82/_Inline_27inline_maker.41693/src dir/../../blib/lib /sw/lib/perl5/5.28.2/darwin-thread-multi-2level /sw/lib/perl5/5.28.2 /sw/lib/perl5/darwin-thread-multi-2level /sw/lib/perl5 /sw/lib/perl5/darwin /sw/lib/perl5/site_perl/5.28.2/darwin-thread-multi-2level /sw/lib/perl5/site_perl/5.28.2 /sw/lib/perl5-core/5.28.2/darwin-thread-multi-2level /sw/lib/perl5-core/5.28.2).
Can you help me understand why you are running this at all?
/sw/bin/perl5.28.2 -I`pwd`/blib/lib t/27inline_maker.t
I've realised I'm not clear on whether you've tried installing this using e.g. cpanm
. I ask because we have successful test reports from MacOS, so there isn't a general problem with the module. Basically, I don't know what problem you're really having, or what you're trying to achieve.
I'm seeing this same failure with inline-c-0.81, perl5.28.2 and extutils-makemaker-7.62 (macOS 10.14.6). Also fails with system-perl-5.18.4 (and EU::MM-7.62).
Looks like the same problem from #51 but now with a much newer EU::MM.