in reply to Re^3: XML::LibXSLT on OS X install problem
in thread XML::LibXSLT on OS X install problem

Thanks for the information, graff, much appreciated.

It turns out that 'perldoc prove' doesn't return any documentation. Is it part of Test::Harness? I've got version 2.29 of Test::Harness, but I notice that the version on CPAN is 2.56.

I do have XML::LibXML and XML::LibXML::Common installed (1.58 and 0.13 respectively), so hopefully the dependencies are satisfied there.

I took your advice and descended into .cpan/build/XML-LibXSLT-1.58/ and ran 'make clean'. Here's the output:

make: *** No rule to make target `clean'. Stop.
I also decided to run 'perl Makefile.PL'. Here's the output:
running xslt-config... ok looking for -lxslt... no libxslt not found Try setting LIBS and INC values on the command line Or get libxslt and libxml2 from http://www.libxml.org/ If you install via RPMs, make sure you also install the -devel RPMs, as this is where the headers (.h files) are.
I had to do something similar for LibXML, using a cpan config option called 'makepl_arg', but I tried using the same args and it didn't work (the error message said something like 'unknown argument').

I know where libxslt is installed (fink puts it in a non-standard place, apparently), so if I can figure out what arguments to pass Makefile.PL (and how), I think I can get this working.

Any advice is greatly appreciated.

AH

----------
Using perl 5.8.1-RC3 unless otherwise noted. Apache/1.3.33 (Darwin) unless otherwise noted. Mac OS X 10.3.9 unless otherwise noted.

Replies are listed 'Best First'.
Re^5: XML::LibXSLT on OS X install problem
by graff (Chancellor) on Feb 07, 2006 at 02:30 UTC
    ... if I can figure out what arguments to pass Makefile.PL (and how), I think I can get this working.

    I know exactly what that's like. This really clever, handy install tool says "Try setting LIBS and INC values on the command line", and... okay, how is that done, exactly? Um...

    Well, I did find it -- it's tucked away in some nook of Makefile.PL, in a code block that you somehow failed to trigger. Given that you know where the library (libxml*) and include files (*.h) are, you do this in the build directory:

    perl Makefile.PL LIBS='-L/path/to/lib' INC='-I/path/to/include'
    That should do it. (I hope)

      graff, thanks very much for all your help.

      Here's the makefile command, with args for the correct paths:

      perl Makefile.PL LIBS='-L/sw/lib' INC='-I/sw/include'
      And here's the output (which I believe indicates success):
      running xslt-config... ok looking for -lxslt... yes looking for -lexslt... yes Writing Makefile for XML::LibXSLT
      Now here's the bad news. I ran 'make', and got some seriously ugly output. The problem (I think) stems from some initial error messages like this:
      In file included from LibXSLT.xs:7: /sw/include/libxslt/xslt.h:13:25: libxml/tree.h: No such file or direc +tory
      Now, I've got tree.h (and related headers) on my system in two places: /sw/include/libxml2/libxml/tree.h and /sw/include/gnome-xml/tree.h

      The question is, which one and how to get it in the Makefile? Also, I'd like to say here that this question has basically left the domain of perl and veered into make, so if you don't have time for this hand-holding, I completely understand. I recognize that I really need to pick up a book on make and learn wtf I'm doing. ;-)

      The full output from make follows:

      ----------
      Using perl 5.8.1-RC3 unless otherwise noted. Apache/1.3.33 (Darwin) unless otherwise noted. Mac OS X 10.3.9 unless otherwise noted.
        Now, I've got tree.h (and related headers) on my system in two places: /sw/include/libxml2/libxml/tree.h and /sw/include/gnome-xml/tree.h

        The question is, which one and how to get it in the Makefile?

        I'd say the build wants the libxml/tree.h, but it looks like you have one more directory layer under /sw/include than the build is expecting. Is it the case that "/sw/include/libxml/" does not exist? (If it does exist, what is that?)

        If there currently is no "/sw/include/libxml" directory on your machine, then the next thing to try (using the unix shell) is:

        cd /sw/include ln -s libxml2/libxml libxml
        That creates a symbolic link whose absolute path is "/sw/include/libxml", and whose target (the absolute path that it links to) is "/sw/include/libxml2/libxml". Once that is done, go back to build directory and try again (maybe starting with just "make" will suffice). The build should (I hope) be able to find the header files it's looking for now.

        (It's not a "make" thing, it's a path thing. You can go ahead and learn more about "make" anyway, but don't expect it to be a quick study.)