How to build complex dists?

cwest on 2004-01-22T20:40:06

I have a project. I'm going to use a basic web project as an example. This project is called Website. I could create one huge distribution called Website and put all my modules inside the lib/ directory such that I've got something like this:

Website/Changes
Website/lib/
Website/lib/Website/
Website/lib/Website/Article.pm
Website/lib/Website/Article/
Website/lib/Website/Article/...
Website/lib/Website/Template.pm
Website/lib/Website/Template/
Website/lib/Website/Template/...
Website/lib/Website/User.pm
Website/lib/Website/User/
Website/lib/Website/User/...
Website/Makefile.PL
Website/README

In this example I've made one distribution and put everything under it. I don't want to do that, though, because it requires that I build all the subcomponents when I might have only made a change to the Website::User code. What I want are sub-distributions. Is this reasonable?

I suspect it might look something like this.

Website/Changes
Website/lib/
Website/lib/Website-Article/
Website/lib/Website-Article/lib/
Website/lib/Website-Article/lib/...
Website/lib/Website-Article/Makefile.PL
Website/lib/Website-Template/
Website/lib/Website-Template/lib/
Website/lib/Website-Template/lib/...
Website/lib/Website-Template/Makefile.PL
Website/lib/Website-User/
Website/lib/Website-User/lib/
Website/lib/Website-User/lib/...
Website/lib/Website-User/Makefile.PL
Website/Makefile.PL
Website/README

With something like this, I could rebuild part of the project libraries, the Website-User code, for example. At the same time I could rebuild the whole project if I felt like it. What do you think?

Other options might be to go with a structure like what h2xs used to give you. Every module has a Makefile.PL. Is that too far in the other direction?

Opinions solicited, thanks!

Posted from caseywest.com, comment here.