Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

Alias (5735)

Alias
  (email not shown publicly)
http://ali.as/

Journal of Alias (5735)

Tuesday November 13, 2007
07:18 PM

Building C modules hurts

[ #34892 ]

Slowly working through the various C elements people have requested.

Compress::Zlib, Compress::Bzip2, XML::LibXML(libxml2+zlib+iconv) are all green. Text::Iconv doesn't build properly, but I'm happy to ignore that for now as I don't think anyone actually needs it specifically, they mostly use iconv via XML::LibXML.

SQLite works, except for the previously mentioned spurious failing test (I need to force the install for it).

Expat is building but doesn't link right at run-time, but I have some other strategies to try still.

LibXSLT is a bust, because pexports crashes trying to extract the .def file. So I'm skipping it for this release. Anyone that wants to look at pexports is welcome to try to get it working for me.

One of the more annoying and depressing things I've noticed is how sad the state of build C libraries is, particularly with regards to having the compiler find header files.

Because I'm in a slightly unusual situation (using one Perl install to build another Perl install) I'm seeing all sorts of hideous behaviours.

For example, Compress::Bzip2 uses ExtUtils::Liblist to search for bzlib2 during Makefile.PL, which pulls the include path from $Config{libpath} and ignores the environment or any Makefile.PL INC param, but then at build time, MakeMaker overwrites the resulting INC provided to WriteMakeFile with the command line Makefile.PL INC param, resulting in the library being unfindable at compile time.

Other modules use the command line INC but ignore the environment, or ignore the command line but use the environment, or overwrite one with the other and so on and so forth.

Not to mention the entire concept of passing important params to Makefile.PL is utterly rediculous, because it effectively prohibits the installation via the CPAN client, because you can only configure the CPAN client to use ONE set of Makefile.PL params for ALL modules.

Which doesn't work either, because some modules ignore command line params.

Worse, I don't know what SHOULD be the correct approach out of %Config + command line + environment, so I can't even be sure who is at fault.

And the whole time I'm thinking, "If only C had a CCAN"...

sigh

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.