The CPAN clients (cpan/cpanp/cpanm) take the following steps:
- Download distribution
- Extract distribution
- Does a META.yml or META.json file exist? Okay, parse and look for configure_requires, resolve all the requirements listed there
- Execute Makefile.PL or Build.PL
- If there is a MYMETA.yml or MYMETA.json, parse and look for build and runtime requirements, resolve these
- No, MYMETA files, okay, if there is a Makefile parse that to resolve requirements
- Oh, its a Module::Build based dist, try running 'Build prereq_data' action, if that fails, poke around in _build/ directory to find the requirements
- Resolve requirements
- Execute 'make' for EUMM or './Build' for M::B
- Execute 'make test' for EUMM or './Build test' for M::B
- Execute 'make install' for EUMM or './Build install' for M::B