Commit 0b41006
committed
Remove non-include paths from INC in pre-build checks
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.1 parent 2ddecfd commit 0b41006
1 file changed
+6
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
7 | 8 | | |
8 | 9 | | |
9 | 10 | | |
| |||
113 | 114 | | |
114 | 115 | | |
115 | 116 | | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
116 | 121 | | |
117 | 122 | | |
118 | 123 | | |
119 | | - | |
| 124 | + | |
120 | 125 | | |
121 | 126 | | |
122 | 127 | | |
| |||
0 commit comments