Imported Upstream version 17.0.0
[platform/upstream/libzypp.git] / zypp / target / CommitPackageCache.cc
index 07a51c4..5763c6b 100644 (file)
@@ -80,20 +80,26 @@ namespace zypp
     RepoProvidePackage::~RepoProvidePackage()
     {}
 
-    ManagedFile RepoProvidePackage::operator()( const PoolItem & pi, bool fromCache_r )
+    ManagedFile RepoProvidePackage::operator()( const PoolItem & pi_r, bool fromCache_r )
     {
-      Package::constPtr p = asKind<Package>(pi.resolvable());
+      ManagedFile ret;
       if ( fromCache_r )
       {
-       repo::PackageProvider pkgProvider( _impl->_access, p, repo::DeltaCandidates(), _impl->_packageProviderPolicy );
-       return pkgProvider.providePackageFromCache();
+       repo::PackageProvider pkgProvider( _impl->_access, pi_r, _impl->_packageProviderPolicy );
+       ret = pkgProvider.providePackageFromCache();
       }
-      else
+      else if ( pi_r.isKind<Package>() )       // may make use of deltas
+      {
+       repo::DeltaCandidates deltas( _impl->_repos, pi_r.name() );
+       repo::PackageProvider pkgProvider( _impl->_access, pi_r, deltas, _impl->_packageProviderPolicy );
+       return pkgProvider.providePackage();
+      }
+      else     // SrcPackage or throws
       {
-       repo::DeltaCandidates deltas( _impl->_repos, p->name() );
-       repo::PackageProvider pkgProvider( _impl->_access, p, deltas, _impl->_packageProviderPolicy );
+       repo::PackageProvider pkgProvider( _impl->_access, pi_r, _impl->_packageProviderPolicy );
        return pkgProvider.providePackage();
       }
+      return ret;
     }
 
     ///////////////////////////////////////////////////////////////////
@@ -108,8 +114,7 @@ namespace zypp
       assert( _pimpl );
     }
 
-    CommitPackageCache::CommitPackageCache( const Pathname &        rootDir_r,
-                                            const PackageProvider & packageProvider_r )
+    CommitPackageCache::CommitPackageCache( const PackageProvider & packageProvider_r )
     {
       if ( getenv("ZYPP_COMMIT_NO_PACKAGE_CACHE") )
         {
@@ -118,12 +123,17 @@ namespace zypp
         }
       else
         {
-          _pimpl.reset( new CommitPackageCacheReadAhead( rootDir_r, packageProvider_r ) );
+          _pimpl.reset( new CommitPackageCacheReadAhead( packageProvider_r ) );
         }
       assert( _pimpl );
     }
 
-    CommitPackageCache::~CommitPackageCache()
+    CommitPackageCache::CommitPackageCache( const Pathname &        /*rootDir_r*/,
+                                            const PackageProvider & packageProvider_r )
+    : CommitPackageCache( packageProvider_r )
+    {}
+
+   CommitPackageCache::~CommitPackageCache()
     {}
 
     void CommitPackageCache::setCommitList( std::vector<sat::Solvable> commitList_r )