NAME
Config::Model::Debian::Dependency - Checks Debian dependency declarations
VERSION
version 1.249
SYNOPSIS
use Config::Model ;
use Log::Log4perl qw(:easy) ;
use Data::Dumper ;
Log::Log4perl->easy_init($WARN);
# define configuration tree object
my $model = Config::Model->new ;
$model ->create_config_class (
name => "MyClass",
element => [
Depends => {
'type' => 'leaf',
'value_type' => 'uniline',
class => 'Config::Model::Debian::Dependency',
},
],
) ;
my $inst = $model->instance(root_class_name => 'MyClass' );
my $root = $inst->config_root ;
$root->load( 'Depends="libc6 ( >= 1.0 )"') ;
# Connecting to qa.debian.org to check libc6 versions. Please wait ...
# Warning in 'Depends' value 'libc6 ( >= 1.0 )': unnecessary
# versioned dependency: >= 1.0. Debian has lenny-security ->
# 2.7-18lenny6; lenny -> 2.7-18lenny7; squeeze-security ->
# 2.11.2-6+squeeze1; squeeze -> 2.11.2-10; wheezy -> 2.11.2-10; sid
# -> 2.11.2-10; sid -> 2.11.2-11;
DESCRIPTION
This class is derived from Config::Model::Value. Its purpose is to check the value of a Debian package dependency for the following:
syntax as described in http://www.debian.org/doc/debian-policy/ch-relationships.html
Whether the version specified with
>
or>=
is necessary. This module will check with Debian server whether older versions can be found in Debian old-stable or not. If no older version can be found, a warning will be issued. Note a warning will also be sent if the package is not found on madison and if the package is not virtual.Whether a Perl library is dual life. In this case the dependency is checked according to Debian Perl policy. Because Debian auto-build systems (buildd) will use the first available alternative, the dependency should be in the form :
perl (>= 5.10.1) | libtest-simple-perl (>= 0.88)
when the required perl version is available in sid. ".libcpan-meta-perl | perl (>= 5.13.10)
when the Perl version is not available in sid
Cache
Queries to Debian server are cached in ~/.config_model_depend_cache
for about one month.
BUGS
Virtual package names are found scanning local apt cache. Hence an unknown package on your system may a virtual package on another system.
More advanced checks can probably be implemented. The author is open to new ideas. He's even more open to patches (with tests).
AUTHOR
Dominique Dumont, ddumont [AT] cpan [DOT] org
SEE ALSO
Config::Model, Config::Model::Value, Memoize, Memoize::Expire