Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Packaging conundrum

by tlm (Prior)
on Oct 04, 2005 at 00:52 UTC ( #497100=perlquestion: print w/replies, xml ) Need Help??
tlm has asked for the wisdom of the Perl Monks concerning the following question:

Dear monks,

Once more I seek your wisdom. Some months ago I wrote a small extension for Math::Pari, and I've been using this extension a fair bit in my work. This extension just makes available some functions and variables in the PARI library that were not already made available by Math::Pari. To achieve this, I had to configure Inline::C like this:

use Inline C => Config => MYEXTLIB => '/path/to/auto/Math/Pari/', INC => '-I/path/to/include/pari', TYPEMAPS => '/path/to/Math-Pari-build-dir/typemap';
Butt-ugly indeed, yet serviceable.

Now some collaborators have asked to borrow some of my code, which relies on the module mentioned above, so I'm trying to figure the most reasonable way to package this software. The INC and TYPEMAPS entries of the Inline::C configuration are the problem, because even if the user has installed Math::Pari there's no reason to expect that the pari include files and the Math::Pari typemap file are available.

Of course, I can always punt and let them worry about this, but I expect that in the near future I will receive more requests for this code, so the easier I make this installation now the fewer headaches I'll have in the future.

I'm also curious, in general, about how one goes about packaging a module that has non-standard dependencies like these.

Do you know of any CPAN module that has had to solve this sort of packaging problem, and that could serve as a model for me to learn from?

I look forward to reading your thoughts on this.

the lowliest monk

Replies are listed 'Best First'.
Re: Packaging conundrum
by Moron (Curate) on Oct 04, 2005 at 08:31 UTC
    In the absence of any loop-hole (I don't have my own machine to test such ideas out), you could write an installation script with a configuration dialogue that controls the generation of a tiny user-specific module called say ConfPari (must be used early in your main code), that configures Inline C at runtime based on the installation-time dialogue.


    Free your mind

Re: Packaging conundrum
by zentara (Archbishop) on Oct 04, 2005 at 12:59 UTC
    The 'perl.inline' group at would be a good place to ask this.

    I'm not really a human, but I play one on earth. flash japh

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://497100]
Approved by GrandFather
Front-paged by jbrugger
[Corion]: LanX: The command is always in the history if you typed it in before. If you didn't type the command into the command line, it will not be there. I think there is doskey which can stuff command lines into the history
LanX damns the cult of CB ;-)
[LanX]: please forget my last 3 posts
[LanX]: Yeah option a doesn't go into history
[LanX]: probably I need to teach the app to restart after C-c Kill
[Corion]: LanX: Maybe have an infinite-loop cmd file? Much easier than trying to manage that from within Perl IMO
[Corion]: Alternatively, relaunch the application from cron (or a Windows cron) every minute
[LanX]: will try infinite loop ...
[Corion]: :START ... goto START

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (12)
As of 2017-03-27 15:52 GMT
Find Nodes?
    Voting Booth?
    Should Pluto Get Its Planethood Back?

    Results (320 votes). Check out past polls.