Remove non-include paths from INC in pre-build checks#17
Conversation
|
Hi, thanks for submitting this! Some points I'll do as a "review". |
| my ($code) = @_; | ||
| my $result; | ||
|
|
||
| my @inc = split " ", $plplot_include_path; |
There was a problem hiding this comment.
Please use Text::ParseWords::shellwords for this, not a naive split
There was a problem hiding this comment.
That's a good idea. I'd have never have thought of using Text::ParseWords. Now I know about it. Thanks!
There was a problem hiding this comment.
Requested change applied in force-pushed (with lease) update of PR branch.
| my $result; | ||
|
|
||
| my @inc = split " ", $plplot_include_path; | ||
| @inc = grep {/^-I.*/ } @inc; |
There was a problem hiding this comment.
The .* doesn't add anything, so you can get remove it
There was a problem hiding this comment.
Oh, that's a bad habit on my part. Sorry!
There was a problem hiding this comment.
Requested change applied in force-pushed (with lease) update of PR branch.
|
Hi! Sorry for my late reply. I'll update the code according to your suggestions and will force-push the changes to the branch. |
0d2c167 to
0b41006
Compare
|
Regarding the whole reason for this, that |
Better late than never ;-) |
BTW: that ticket found a problem with |
It was never about the C compiler; EUMM doesn't mind either. It's just an error in Devel::CheckLib. |
While trying to get `PDL::Graphics::PLplot` to install, I found it kept telling me that it needed a plplot library compiled with the `--with-double` option: ``` $ perl Makefile.PL Use of uninitialized value $size in numeric eq (==) at Makefile.PL line 46. Sizeof(PLFLT) must be 8. PLplot must be compiled --with-double (IE ./configure --with-double). Please either: - Install PLplot using your package manager then reinstall Alien::PLplot or - Reinstall Alien::PLplot from CPAN with environment variable ALIEN_INSTALL_TYPE=share. ``` After having tried the advice about reinstalling `Alien::PLplot` and failing, and having checked that `libplplot` had been installed using double precision, I happened to stumble upon the issue that the option `-pthread` was appearing in the `$plplot_include_path` variable. I noticed this by replacing the call to `check_lib` (from `Devel::CheckLib`) with `check_lib_or_exit`. When using this function, the error output was this instead: ``` $ perl Makefile.PL INC argument badly-formed: -pthread ``` Upon reading the docs for `Devel::CheckLib`, it turns out that the `INC` option to both `check_lib` and `check_lib_or_exit` needs to be a space-delimited list of options, all of which start with `-I`. Since `-pthread` doesn't start with `-I` the argument was badly formed, hence the `analyze_binary` callback was never called. Thus no check code was compiled which then resulted in `$size` being set to `undef`. Because `$size` was `undef`, the uninitialized value warning mentioned in the first error message mentione above and the check for a double precision library failed. In other words, because `-pthread` was turning up in the `$plplot_include_path` string, the test for a library compiled with the `--with-double` option was failing and hence `PDL::Graphics::PLplot` failed to install. By filtering only for include paths from the list of options originally found in `$plplot_include_path` (i.e. selecting only options starting with `-I` and hence excluding in this particular instance the `-pthread` option), one avoids the issue of a badly formed INC argument and thus the checks in `Makefile.PL` compile and run. Because all checks run, the `Makefile` is created as per normal and the test suite passes. More background info: I found this issue on Debian version 11.11 with a perlbrewed perl, version 5.32.1.
5c0a937 to
0092c46
Compare
|
Ok, have merged everything. I squashed your suggestion into my original commit so that the bug origin remains in the commit history. Hope that was ok! Anyway, I think this is good to go now. Many thanks for your help and time! |
|
Thank you for your efforts! I'll be releasing an updated version in a few minutes. |
|
Now released to CPAN as 0.842. Please give it a go and open a new issue (or comment here) if there are problems :-) |
|
Sweet! If I find anything, I'll let you know :-) |
While trying to get
PDL::Graphics::PLplotto install, I found it kept telling me that it needed a plplot library compiled with the--with-doubleoption:After having tried the advice about reinstalling
Alien::PLplotand failing, and having checked thatlibplplothad been installed using double precision, I happened to stumble upon the issue that the option-pthreadwas appearing in the$plplot_include_pathvariable. I noticed this by replacing the call tocheck_lib(fromDevel::CheckLib) withcheck_lib_or_exit. When using this function, the error output was this instead:Upon reading the docs for
Devel::CheckLib, it turns out that theINCoption to bothcheck_libandcheck_lib_or_exitneeds to be a space-delimited list of options, all of which start with-I. Since-pthreaddoesn't start with-Ithe argument was badly formed, hence theanalyze_binarycallback was never called. Thus no check code was compiled which then resulted in$sizebeing set toundef. Because$sizewasundef, the uninitialized value warning mentioned in the first error message mentione above and the check for a double precision library failed. In other words, because-pthreadwas turning up in the$plplot_include_pathstring, the test for a library compiled with the--with-doubleoption was failing and hencePDL::Graphics::PLplotfailed to install.By filtering only for include paths from the list of options originally found in
$plplot_include_path(i.e. selecting only options starting with-Iand hence excluding in this particular instance the-pthreadoption), one avoids the issue of a badly formed INC argument and thus the checks inMakefile.PLcompile and run. Because all checks run, theMakefileis created as per normal and the test suite passes.More background info: I found this issue on Debian version 11.11 with a perlbrewed perl, version 5.32.1.
This PR is submitted in the hope that it is useful. If you'd like anything changed, please let me know and I'll update and resubmit as necessary.