This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
DynaLoader shouldn't use mod2fname when finding .bs files.
authorCraig A. Berry <craigberry@mac.com>
Sat, 13 Feb 2016 22:29:14 +0000 (16:29 -0600)
committerCraig A. Berry <craigberry@mac.com>
Sun, 14 Feb 2016 00:35:07 +0000 (18:35 -0600)
commit907196b2ca1c36611c32cb89c75e791391979005
treea3a7d218c6e08398d1444d91d65d45cb2834cba9
parent7d2d29f684a62da1d3ce84a1267842d35219a6d8
DynaLoader shouldn't use mod2fname when finding .bs files.

Some platforms (probably only VMS and Android at the moment) take
special steps via the function DynaLoader::mod2fname to construct
a dynamic library name that will be unique and (if too long)
truncated.  Then DynaLoader looks for a bootstrap file with the
exact same name as the dynamic library except with a .bs file
extension.

However, ExtUtils::MakeMaker has never produced bootstrap files
that have been run through mod2fname, so while a Foo:Bar extension
would produce a loadable library named PL__Foo_Bar.exe, the
bootstrap would be called Bar.bs. That shouldn't be a problem
since the bootstrap file is just Perl code read by Perl, but
DynaLoader has (apparently forever) been looking for
PL__Foo_Bar.bs and not finding it. So let's look for it by the
name under which it actually exists.

There are no core extensions that produce non-empty bootstrap
files and no existing test coverage, but as-yet-unintegrated
versions of MakeMaker do have such tests.  See, for example,

https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/commit/7f5e9a35addeea7ebfcded28277c85f723e1a5de
ext/DynaLoader/DynaLoader_pm.PL