We install a lot of Perl code, and our current install procedures are pretty crappy. We currently use Imake to generate make rules, and that’s causing several problems:
- Modules are installed one at a time, which is slow and causes problems like:
- We do a simple ‘perl -c’ check before installing, but this doesn’t always work if there are circular dependencies
- Since the -c check is unreliable, we always install, even if it fails
- Every time we add a new module, we have to add a line to an Imakefile, which is tedious and error prone
- Our Imake environment is a one step process; ‘make’ doesn’t do anything, and ‘make install’ copies the file to the installed lib directory. So there is no place to run tests prior to installing.
I’ve been struggling with replacements for a long time. MakeMaker doesn’t really do what I want, since its not properly sensitive to our environments. Also, ‘make clean’ wipes out the Makefile, so I couldn’t integrate this in our automated build environment (make Makefiles;make clean; make; make install).
So I wrote a replacement script for all of this. I don’t really need a general tool, something specific is fine. For now I’m calling it pake; I wrote it this afternoon, and its only 200 lines long. I’ll play with it for a week or so and see if it works ok.