- deltarpms now work
authorJan Kupec <jkupec@suse.cz>
Mon, 19 May 2008 19:10:33 +0000 (19:10 +0000)
committerJan Kupec <jkupec@suse.cz>
Mon, 19 May 2008 19:10:33 +0000 (19:10 +0000)
- repository is now associated with each delta individually, a delta
  from any repo can be applied

devel/devel.jkupec/deltarpm.cc
zypp/repo/DeltaCandidates.cc
zypp/repo/PackageDelta.cc
zypp/repo/PackageDelta.h
zypp/repo/PackageProvider.cc

index 5dae10e..fcaaea4 100644 (file)
@@ -90,20 +90,16 @@ int main (int argc, const char ** argv)
           cout << IdString(di.kv.id);
           break;
         }
-        /*
         case DELTA_PACKAGE_EVR:
         {
-          if (di.key->type == REPOKEY_TYPE_STR)
-            cout << di.kv.str;
-          else
-            cout << "...";
+          cout << IdString(di.kv.id);
           break;
         }
         case DELTA_PACKAGE_ARCH:
         {
+          cout << IdString(di.kv.id);
           break;
         }
-        */
         case DELTA_LOCATION_DIR:
         {
           cout << IdString(di.kv.id);
index eb9d4f6..e02f86f 100644 (file)
@@ -95,8 +95,6 @@ namespace zypp
     {
       std::list<DeltaRpm> candidates;
 
-#warning deltaRpms are not completely implemented
-
       // query all repos
       for ( std::list<Repository>::const_iterator it = _pimpl->repos.begin();
             it != _pimpl->repos.end(); ++it )
@@ -114,11 +112,13 @@ namespace zypp
           {
             DeltaRpm delta(*it, di.solvid);
             DBG << "got delta: " << delta << endl;
+            DBG << "package: " << package << endl;
             if ( ! package
                 || (    package->name()    == delta.name()
                      && package->edition() == delta.edition()
                      && package->arch()    == delta.arch() ) )
             {
+              DBG << "got delta candidate: " << delta << endl;
               candidates.push_back( delta );
             }
           }
index 1108566..b0cb2cf 100644 (file)
@@ -43,6 +43,7 @@ namespace zypp
     }
 
     DeltaRpm::DeltaRpm(const Repository & repo, sat::detail::IdType extraid)
+      : _repo(repo)
     {
       MIL << "creating deltarpm from repo " << repo.name() << ", id " << extraid << endl;
       ::Dataiterator di;
@@ -69,18 +70,16 @@ namespace zypp
             setName(IdString(di.kv.id).asString());
             break;
           }
-          /* \todo add this to the deltainfo parser in sat
           case DELTA_PACKAGE_EVR:
           {
-            setEdition(Edition(di.kv.str));
+            setEdition(Edition(IdString(di.kv.id).asString()));
             break;
           }
           case DELTA_PACKAGE_ARCH:
           {
-            setArch(Arch(di.kv.str));
+            setArch(Arch(IdString(di.kv.id).asString()));
             break;
           }
-          */
           case DELTA_LOCATION_DIR:
           {
             locdir = IdString(di.kv.id).asString();
index fde7bdd..4a7985d 100644 (file)
@@ -123,6 +123,7 @@ namespace zypp
       const OnMediaLocation & location()     const { return _location; }
       const BaseVersion &     baseversion()  const { return _baseversion; }
       //const Date &            buildtime()    const { return _buildtime;}
+      const Repository &      repository()   const { return _repo; }
 
     public:
       DeltaRpm & setName( const std::string & val_r )         { _name = val_r; return *this; }
@@ -139,6 +140,7 @@ namespace zypp
       OnMediaLocation _location;
       BaseVersion     _baseversion;
       //Date            _buildtime;
+      Repository      _repo;
     };
 
     /** \relates DeltaRpm Stream output. */
index e94a50d..8733ed4 100644 (file)
@@ -218,7 +218,7 @@ namespace zypp
         {
           ProvideFilePolicy policy;
           policy.progressCB( bind( &PackageProvider::progressDeltaDownload, this, _1 ) );
-          delta = _access.provideFile( _package->repoInfo(), delta_r.location(), policy );
+          delta = _access.provideFile( delta_r.repository().info(), delta_r.location(), policy );
         }
       catch ( const Exception & excpt )
         {