NAME Gentoo::Util::VirtualDepend - Hard-coded replacements for perl-core/ dependencies and dependencies with odd names in Gentoo VERSION version 0.001000 SYNOPSIS use Gentoo::Util::VirtualDepend; my $v = Gentoo::Util::VirtualDepend->new(); # somewhere in complex dependency resolution my $cpan_module = spooky_function(); my $gentoo_dependency; if ( $v->has_module_override( $cpan_module ) ) { $gentoo_dependency = $v->get_module_override( $cpan_module ); } else { # do it the hard way. } If you're trying to be defensive and you're going to map the modules to distributions the hard way ( trust me, the code is really ugly ), then you may instead want if ( $v->has_dist_override( $cpan_dist ) ) { $gentoo_dependency = $v->get_dist_override( $cpan_dist ); } else { # fallback to using dev-perl/Foo-Bar } Which basically serves as a distribution name translator. WHY YOU WANT TO DO THAT Well ... { requires => { Foo => 1.0 }} Foo is in Bar Foo 1.0 could have been shipped in in Bar-1.0, Bar-0.5, or Bar-2.0 for all you know. That's the unfortunate reality of "CPAN" dependencies. So if you naively map Foo-1.0 → >=dev-lang/Bar-1.0 You might get breakage if "Foo 1.0" didn't ship till "Bar-2.0", and the user has "Bar-1.0" → Shower of sparks. DESCRIPTION This module serves as a low level glue layer for the handful of manual mappings that are needed in Gentoo due to things not strictly tracking upstream. "CPANPLUS::Dist::Gentoo" has similar logic to this, but not as simple ( or for that matter, usable without "CPANPLUS" ) This module is not intended to be used entirely on its own, but as a short-circuit before calling complicated "MetaCPAN" code. METHODS has_module_override $v->has_module_override( $module ) Returns true if there is a known mapping for $module in "Gentoo" that is unusual and may require translation. Will return true for anything that is either a "virtual" or has an unusual name translation separating it from "CPAN". get_module_override $v->get_module_override( $module ) Returns a "Gentoo" dependency atom corresponding to $module if there is a known mapping for $module. For instance, $v->get_module_override('ExtUtils::MakeMaker') Emits: virtual/perl-ExtUtilsMakeMaker If "ExtUtils::MakeMaker" is one day de-cored (Hah!, dreams are free) then "has_module_override" will return false, and that instructs you to go back to assuming it is in "dev-perl/" has_dist_override $v->has_dist_override( $distname ) Similar to "has_module_override" but closer to the dependency spec. Will return true for anything that is either a "virtual" or has an unusual name translation separating it from "CPAN". get_dist_override $v->get_dist_override( $distname ) Similar to "get_module_override" but closer to the dependency spec. For instance: $v->get_dist_override('PathTools') Emits: virtual/perl-File-Spec Because "Gentoo" is quirky like that. AUTHOR Kent Fredric COPYRIGHT AND LICENSE This software is copyright (c) 2014 by Kent Fredric . This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.