develooper Front page | perl.perl5.porters | Postings from November 2013

Re: Option to use and create "unique" library names

Thread Previous | Thread Next
From:
Leon Timmermans
Date:
November 27, 2013 00:21
Subject:
Re: Option to use and create "unique" library names
Message ID:
CAHhgV8jLpuNP9u9hko9F2Ko=k7W7bfG_9tcSgJ9PDpz8YfnFgQ@mail.gmail.com
On Wed, Nov 20, 2013 at 4:04 PM, Craig A. Berry <craig.a.berry@gmail.com>wrote:

> We've done this since forever on VMS; the actual shareable image
> (dynamic library) names come out as PL_HASH__UTIL.EXE and
> PL_LIST__UTIL.EXE.  There is a function called DynaLoader::mod2fname
> that gets called from XSLoader::load.  Here's what it does:
>
> $ perl -MDynaLoader -e "@a=('Module','SubModule','SubSubModule');
> print DynaLoader::mod2fname(\@a);"
> PL_Module__SubModule__SubSubModule
>
> So I think you can get what you want by simply implementing a
> mod2fname function (ours is in vms/vms.c, but dl_xxx.xs might be a
> better place for a new one).  And I think there's a good chance you
> wouldn't need any MakeMaker modifications as mod2fname, if it exists,
> is already called from MM_Unix::init_main().
>
> Plus it seems less than optimal to introduce an entirely new mechanism
> to do something for which there is already an existing mechanism.
>

Actually, it seems ExtUtils::CBuilder is currently not doing this correctly
(it only passes the basename to mod2fname). Module::Build contains a
workaround that does do the right thing, which is why no one noticed this
before.

I *really* hate how just about any feature in ExtUtils::CBuilder that isn't
used by Module::Build can be assumed to be broken or unusable on some
non-Linux-like platform (unless someone fixed it in the past couple of
years), if not all of them.

Leon

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About