On Wed, 15 Dec 2004, colin_e wrote: > Further to this, I went looking at the specific case of > Apache-CGI-Builder. I was hoping to use the CGI::Builder > framework, and was disappointed to find that the Apache > handler i/f was not available. > > Sure enough, the ActiveState module status list- > > http://ppm.activestate.com/BuildStatus/5.8.html > > shows Apache-CGI-Builder as unavailable. > > Having looked into it, this is a pure perl module and > really should work without problems. The issue is a simple > package dependency on mod_perl. The actual error > ActiveState failed on is- > > failed building Apache-CGI-Builder prerequisite mod_perl > aborting build of Apache-CGI-Builder: failed prerequisites > > Now mod_perl is installed on my machines, but the way Apache sets up > the lib path, mod_perl is not in the default @INC. I.e. it's not in- > C:\Prog\Perl\lib\mod_perl, but in C:\Prog\Perl\lib\Apache2\mod_perl. > > You have to say- > > use Apache2(); > use mod_perl; > > in scripts to select the Apache2 libraries instead of Apache1. > > Is it really this trivial problem that is preventing > Apache-CGI-Builder (and maybe a host of other Apache > packages) from being available as PPMs? > > There is no "make" by default on a vanilla Windoze box, so > without a PPM package the only alternative is a manual > extract/copy operation. I will try this but I will miss > out on documentation etc. > > Ideas on how to fix this? Maybe I am oversimplifying > things, but if, say, changing a dependency from "mod_perl" > to "mod_perl || Apache2/mod_perl" would make a whole bunch > of (at least the pure perl) packages available via PPM > this would be a big gain for little pain.
Due to the large volume of modules on CPAN, ActiveState uses an automated build system for their ppm packages, whereby a package is made available if it builds, against a vanilla ActivePerl, without human interaction and if all its tests (and those of it's prerequisites) pass. mod_perl doesn't build without human interaction (on Win32 or non-Win32), so ActiveState's system doesn't supply ppm packages of modules that depend on mod_perl. However, if you install mod_perl via ppm (from our theoryx5 repository, or elsewhere), ppm will register and see it for subsequent packages that require it - the fact that mp2 is installed in an Apache2/ subdirectory doesn't affect ppm, neither from the user's end nor from ActiveState's side. To use mp2 in a script, you still have to 'use Apache2;' to adjust @INC, but this is a separate issue. As to the problem of there not being that many Apache-* ppm packages available, there's at least three options: - send me a request for a particular package. I have a semi-automated setup for making ppm packages, so it's usually no problem to make one up. I'll look at in particular doing one for Apache::CGI::Builder tonight. Such packages will be available through our repository http://theoryx5.uwinnipeg.ca/ppms/ (for ActivePerl 8xx); you can also access this by setting the repository within the ppm shell to http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer58 - as explained in the ActivePerl Win32 FAQ, you can get a free version of nmake (the 'make' program for Win32 that ActivePerl expects) that will enable you to build your own packages. With nmake, you can then either build, test, and install packages manually, through the usual perl Makefile.PL nmake nmake test nmake install procedure, or you can configure tools like CPAN/CPANPLUS to do this (one advantage of using these tools is that package dependencies are followed automatically). - I have a package, PPM-Make, available as a ppm package in our http://theoryx5.uwinnipeg.ca/ppms/ repository, which enables you to build and install a ppm package from a CPAN distribution. It's not as smart as the CPAN/CPANPLUS tools, especially for complex distributions, but the advantage of using it is that a package installed via ppm will be recognized in the future by ppm in resolving prerequisites. -- best regards, randy -- Report problems: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html List etiquette: http://perl.apache.org/maillist/email-etiquette.html