Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re^2: Declaring a dependency on (and getting it generated)

by diotalevi (Canon)
on Dec 22, 2007 at 15:48 UTC ( #658656=note: print w/replies, xml ) Need Help??

in reply to Re: Declaring a dependency on (and getting it generated)
in thread Declaring a dependency on (and getting it generated)

Perhaps you didn't understand the question. I know of many ways to generate things during module-building. What I don't know about is if there is an existing package which already handles .ph file dependencies. If not, what I don't know about is how to generate this sanely myself. I have a guess but I quickly run directly into shell quoting issues and guessing about what compiler options mean. It gets ugly rather quickly. Or... well... maybe it's possible to write a Module::Build plugin which could handle getting the compiler to find the syscall.h file.


WriteMakefile( ... CC => "$^X bin/fake-cc", # shell quoting matters here! );


#!perl for ( map extract_paths( $_ ), @ARGV ) { # stash this somewhere, I guess. } # etc.

⠤⠤ ⠙⠊⠕⠞⠁⠇⠑⠧⠊

Replies are listed 'Best First'.
Re^3: Declaring a dependency on (and getting it generated)
by eserte (Deacon) on Dec 22, 2007 at 19:24 UTC
    I am not aware of an existing mechanism to detect the .ph files and build them. A simple way could be to add something like this in then Makefile.PL:
    if (!eval { require "sys/"; 1 }) { my $save_pwd = cwd; chdir "/usr/include" or die $!; system("h2ph", "sys/"); chdir $save_pwd or die $!; }

    Of course, this should be only run on Unix systems. But not all Unix systems have include files installed, so one has to be protected from this fact. Also, Makefile.PL is often not run under root permissions, so the above would fail. It's also possible that even "make install" is not run as root, so maybe it should also be possible to install the .ph into some other directory.

    Or maybe it would be safer to not use .ph files at all and move the required stuff into an XS module?

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://658656]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (5)
As of 2021-04-22 21:30 GMT
Find Nodes?
    Voting Booth?

    No recent polls found