mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-01 20:20:10 +00:00
Meta.pm: add inheritance marking
git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@19072 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
4ea49d65cc
commit
1cba3f6b01
142
FHEM/Meta.pm
142
FHEM/Meta.pm
@ -19,7 +19,6 @@ use warnings;
|
|||||||
use GPUtils qw(GP_Import);
|
use GPUtils qw(GP_Import);
|
||||||
use File::stat;
|
use File::stat;
|
||||||
use Encode;
|
use Encode;
|
||||||
use Data::Dumper;
|
|
||||||
|
|
||||||
# Run before module compilation
|
# Run before module compilation
|
||||||
BEGIN {
|
BEGIN {
|
||||||
@ -1565,22 +1564,142 @@ m/(^#\s+(?:\d{1,2}\.\d{1,2}\.(?:\d{2}|\d{4})\s+)?[^v\d]*(v?(?:\d{1,3}\.\d{1,3}(?
|
|||||||
%{ $pkgMeta->{prereqs}{runtime}{$pkgIreq} }
|
%{ $pkgMeta->{prereqs}{runtime}{$pkgIreq} }
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
$modMeta->{prereqs}{runtime}{$pkgIreq}
|
my $isPerlPragma =
|
||||||
{$pkgI} =
|
FHEM::Meta::ModuleIsPerlPragma($pkgI);
|
||||||
$pkgMeta->{prereqs}{runtime}{$pkgIreq}
|
my $isPerlCore =
|
||||||
{$pkgI}
|
$isPerlPragma
|
||||||
if (
|
? 0
|
||||||
|
: FHEM::Meta::ModuleIsPerlCore($pkgI);
|
||||||
|
next
|
||||||
|
if ( $isPerlPragma
|
||||||
|
|| ( $isPerlCore && $pkgI ne 'perl' ) );
|
||||||
|
|
||||||
|
# Do not inherit perl scanner if the author
|
||||||
|
# has provided META.json
|
||||||
|
next
|
||||||
|
if ( $pkg eq 'Meta'
|
||||||
|
&& $pkgI eq
|
||||||
|
'Perl::PrereqScanner::NotQuiteLite'
|
||||||
|
&& defined( $modMeta->{x_prereqs_src} )
|
||||||
|
&& $modMeta->{x_prereqs_src} eq
|
||||||
|
'META.json' );
|
||||||
|
|
||||||
|
my $prio = $pkgIreq;
|
||||||
|
|
||||||
|
# avoid duplicates due to already
|
||||||
|
# existing dependency w/ different prio
|
||||||
|
my $inh = 0;
|
||||||
|
my $v;
|
||||||
|
if ( $pkgIreq eq 'requires' ) {
|
||||||
|
if (
|
||||||
|
exists(
|
||||||
|
$modMeta->{prereqs}{runtime}
|
||||||
|
{recommends}{$pkgI}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
# keep version info
|
||||||
|
$v =
|
||||||
|
$modMeta->{prereqs}{runtime}
|
||||||
|
{recommends}{$pkgI};
|
||||||
|
|
||||||
|
delete $modMeta->{prereqs}{runtime}
|
||||||
|
{recommends}{$pkgI};
|
||||||
|
}
|
||||||
|
elsif (
|
||||||
|
exists(
|
||||||
|
$modMeta->{prereqs}{runtime}
|
||||||
|
{suggests}{$pkgI}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
# keep version info
|
||||||
|
$v =
|
||||||
|
$modMeta->{prereqs}{runtime}
|
||||||
|
{suggests}{$pkgI};
|
||||||
|
|
||||||
|
delete $modMeta->{prereqs}{runtime}
|
||||||
|
{suggests}{$pkgI};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elsif ( $pkgIreq eq 'recommends' ) {
|
||||||
|
if (
|
||||||
|
exists(
|
||||||
|
$modMeta->{prereqs}{runtime}
|
||||||
|
{requires}{$pkgI}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
# higher prio
|
||||||
|
$prio = 'requires';
|
||||||
|
}
|
||||||
|
elsif (
|
||||||
|
exists(
|
||||||
|
$modMeta->{prereqs}{runtime}
|
||||||
|
{suggests}{$pkgI}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
# keep version info
|
||||||
|
$v =
|
||||||
|
$modMeta->{prereqs}{runtime}
|
||||||
|
{suggests}{$pkgI};
|
||||||
|
|
||||||
|
delete $modMeta->{prereqs}{runtime}
|
||||||
|
{suggests}{$pkgI};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elsif ( $pkgIreq eq 'suggests' ) {
|
||||||
|
if (
|
||||||
|
exists(
|
||||||
|
$modMeta->{prereqs}{runtime}
|
||||||
|
{requires}{$pkgI}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
# higher prio
|
||||||
|
$prio = 'requires';
|
||||||
|
}
|
||||||
|
elsif (
|
||||||
|
exists(
|
||||||
|
$modMeta->{prereqs}{runtime}
|
||||||
|
{recommends}{$pkgI}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
# higher prio
|
||||||
|
$prio = 'recommends';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$v =
|
||||||
|
$v
|
||||||
|
&& $v > $pkgMeta->{prereqs}{runtime}
|
||||||
|
{$pkgIreq}{$pkgI}
|
||||||
|
? $v
|
||||||
|
: $pkgMeta->{prereqs}{runtime}
|
||||||
|
{$pkgIreq}{$pkgI};
|
||||||
|
|
||||||
|
if (
|
||||||
!exists(
|
!exists(
|
||||||
$modMeta->{prereqs}{runtime}
|
$modMeta->{prereqs}{runtime}
|
||||||
{$pkgIreq}{$pkgI}
|
{$prio}{$pkgI}
|
||||||
)
|
)
|
||||||
|| ( $pkgMeta->{prereqs}{runtime}
|
|| ( $pkgMeta->{prereqs}{runtime}
|
||||||
{$pkgIreq}{$pkgI} ne '0'
|
{$pkgIreq}{$pkgI} ne '0'
|
||||||
&& $modMeta->{prereqs}{runtime}
|
&& $modMeta->{prereqs}{runtime}
|
||||||
{$pkgIreq}{$pkgI} ne
|
{$prio}{$pkgI} < $v )
|
||||||
$pkgMeta->{prereqs}{runtime}
|
)
|
||||||
{$pkgIreq}{$pkgI} )
|
{
|
||||||
);
|
$modMeta->{prereqs}{runtime}{$prio}
|
||||||
|
{$pkgI} = $v;
|
||||||
|
|
||||||
|
# remember this was inherited from
|
||||||
|
# another package
|
||||||
|
push @{ $modMeta->{prereqs}{runtime}
|
||||||
|
{x_inherited}{$pkgI} },
|
||||||
|
$pkg;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2982,7 +3101,6 @@ sub __SetXVersion {
|
|||||||
"perl": 5.014,
|
"perl": 5.014,
|
||||||
"GPUtils": 0,
|
"GPUtils": 0,
|
||||||
"File::stat": 0,
|
"File::stat": 0,
|
||||||
"Data::Dumper": 0,
|
|
||||||
"Encode": 0,
|
"Encode": 0,
|
||||||
"version": 0
|
"version": 0
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user