prereqs should be involved for dependency resolving
authorZhang Qiang <qiang.z.zhang@intel.com>
Tue, 7 May 2013 04:36:02 +0000 (12:36 +0800)
committerZhang Qiang <qiang.z.zhang@intel.com>
Tue, 7 May 2013 06:11:17 +0000 (14:11 +0800)
Pre-requires: Requirespre/Requirespost/PreReq should be considerred for
dependency resolving

Example:
  fake.spec contails:
    Requires(post):   systemd
    Requires(preun):  systemd
    Requires(postun): systemd

If systemd does not available in remote repo and localrepo, depanneur
should report expansion error, instead of executing building

Change-Id: Ice4dfae9a45325ef19d21e38378a2083ceafdb56

depanneur

index 12c62818607c653c27f0026e098d586d1e1039b6..d887652f5ba24cf406a570b54a2259824b49bae8 100755 (executable)
--- a/depanneur
+++ b/depanneur
@@ -807,6 +807,10 @@ sub expand_deps {
       $packvers = $d->{'version'};
       $subpacks = $d->{'subpacks'};
       @packdeps = @{$d->{'deps'} || []};
+      if ($d->{'prereqs'}) {
+        my %deps = map {$_ => 1} (@packdeps, @{$d->{'subpacks'} || []});
+        push @packdeps, grep {!$deps{$_} && !/^%/} @{$d->{'prereqs'}};
+      }
     }
 
     Build::readdeps($config, undef, \%repo);
@@ -830,6 +834,10 @@ sub get_deps {
     @ndeps = grep {/^-/} @deps;
     my %ndeps = map {$_ => 1} @ndeps;
     @deps = grep {!$ndeps{$_}} @deps;
+    if ($d->{'prereqs'}) {
+        my %deps = map {$_ => 1} (@deps, @{$d->{'subpacks'} || []});
+        push @deps, grep {!$deps{$_} && !/^%/} @{$d->{'prereqs'}};
+    }
     # TBD: Do we need enable this
     # push @deps, @{$config->{'required'}};
     @deps = Build::do_subst($config, @deps);