Use separate part for each perl package
Rework perl installation to install each package in a separate directory.
Each package install a perl interpreter for each package, which is implemented a shell wrapper setting $PERL5LIB with the path of this package and its dependencies.
To install a perl package, use perl-CPAN-package macro, like in this example for a fictional XXX::YYY package:
[perl-XXX-YYY]
<= perl-CPAN-package
module = XXX/XXX-YYY
version = 1.2.3
md5sum = ab68b329da9893e34099c7d8ad5cb9c940cd123
This will download package from https://www.cpan.org/modules/by-module/XXX/XXX-YYY-1.2.3.tar.gz and install using the usual perl Makefile.PL && make && make install sequence.
To install package with dependencies, use the inc= argument, like in this example for  another fictional package XXX::ZZZ package that would depend on XXX::YYY and XXX::ABC :
[perl-XXX-ZZZ]
<= perl-CPAN-package
module = XXX/XXX-ZZZ
version = 1.2.3
md5sum = 401b30e3b8b5d629635a5c613cdb7919
inc = ${perl-XXX-YYY:site_perl}:${perl-XXX-ABC:site_perl}
The full list of options is described in the macro.
That macro creates an interpreter for each package, but sometimes we need to create an interpreter with multiple packages. The perl-wrapper macro is available for this. It also accepts a inc= argument in the same format. Because this wrapper is implemented using -I argument, it is also suitable for scrips running in perl taint mode, like the w3-validator we are using.
All perl components and perl usages have been updated to this new infrastructure.
Some (apparently) unmaintained components were using an obsolete slapos.recipe.build:cpan recipe. They were used only in mioga2 from unstable, so I moved them inline in mioga2 software.