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.