Subject: | XML:LibXSLT needs small fix work with PAR::Packer |
There is "special" fix in XML::LibXSLT which makes it not work with PAR::Packer. One always
seems to get "can't load dynamic module" error as it seems LibXSLT.pm can't find its XS .dll.
This is because on Windows, XML::LibXSLT renames its XS .dll to "LibXSLT.xs.dll" instead of
the usual "LibXSLT.dll". For some reason, this works fine in strawberry perl but when pp packs
XML::LibXSLT, it doesn't work. You can't rename the library and pack that - doesn't work
either as the module is built to expect the alternative name. It does this because usually, the
library which XML::LibXSLT depends on is "libxslt.dll" which, on a case-insensitive filesystem
conflicts with the XS library name. So, the "fix" is a good idea in general. However, it's not
needed with strawberry perl as this comes with its own libxslt.dll usually called something
like "libxslt-1_.dll" so there is no name conflict. So, you can make things work by
downloading the latest XML::LibXSLT distribution from CPAN, editing Makefile.PL to take out
the windows "special fix" by changing the line (around line 195) from
<code>
$config{DLEXT} = 'xs.dll' if ($is_Win32);
</code>
to
<code>
$config{DLEXT} = 'dll' if ($is_Win32);
</code>
and then building/installing. This is a workaround as this installs in site/, overriding the
strawberry vendor/ version but it would be nice to do this for the vendor/ version that comes
with strawberry as it doesn't need the "fix" since its libxslt isn't called vanilla "libxslt.dll", so
the XS dll can be called the usual "LibXSLT.dll" and then everything works with PAR::Packer.
It's not clear why PAR::Packer has issues with the special XS dll name but since strawberry
doesn't need the special name anyway, seems useful to fix it there.