]> git.saurik.com Git - apt.git/commitdiff
* apt-pkg/cdrom.cc:
authorDavid Kalnischkies <kalnischkies@gmail.com>
Sun, 11 Dec 2011 00:30:45 +0000 (01:30 +0100)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Sun, 11 Dec 2011 00:30:45 +0000 (01:30 +0100)
  - support InRelease files on cdrom

apt-pkg/cdrom.cc
apt-pkg/indexcopy.cc
debian/changelog

index f5c19a4d600e0301eac09aa8c20ba2b347da92f9..d9ecdf4f6dfe07a3b528dd0c571eaf40423badd3 100644 (file)
@@ -68,12 +68,11 @@ bool pkgCdrom::FindPackages(string CD,
    if (RealFileExists(".aptignr") == true)
       return true;
 
-
    /* Check _first_ for a signature file as apt-cdrom assumes that all files
       under a Packages/Source file are in control of that file and stops 
       the scanning
    */
-   if (RealFileExists("Release.gpg") == true)
+   if (RealFileExists("Release.gpg") == true || RealFileExists("InRelease") == true)
    {
       SigList.push_back(CD);
    }
@@ -718,6 +717,7 @@ bool pkgCdrom::Add(pkgCdromStatus *log)                                     /*{{{*/
    DropRepeats(List,"Packages");
    DropRepeats(SourceList,"Sources");
    DropRepeats(SigList,"Release.gpg");
+   DropRepeats(SigList,"InRelease");
    DropRepeats(TransList,"");
    if(log != NULL) {
       msg.str("");
index e38fe3e45942e96d820d5a2b14f99a7446a360d4..f6457aa394e77641a2b7fbcb01c4bbe2afc5af42 100644 (file)
@@ -638,13 +638,19 @@ bool SigVerify::CopyAndVerify(string CDROM,string Name,vector<string> &SigList,
 
       string const releasegpg = *I+"Release.gpg";
       string const release = *I+"Release";
+      string const inrelease = *I+"InRelease";
+      bool useInRelease = true;
 
       // a Release.gpg without a Release should never happen
-      if(RealFileExists(release) == false)
+      if (RealFileExists(inrelease) == true)
+        ;
+      else if(RealFileExists(release) == false || RealFileExists(releasegpg) == false)
       {
         delete MetaIndex;
         continue;
       }
+      else
+        useInRelease = false;
 
       pid_t pid = ExecFork();
       if(pid < 0) {
@@ -652,11 +658,16 @@ bool SigVerify::CopyAndVerify(string CDROM,string Name,vector<string> &SigList,
         return false;
       }
       if(pid == 0)
-        RunGPGV(release, releasegpg);
+      {
+        if (useInRelease == true)
+           RunGPGV(inrelease, inrelease);
+        else
+           RunGPGV(release, releasegpg);
+      }
 
       if(!ExecWait(pid, "gpgv")) {
         _error->Warning("Signature verification failed for: %s",
-                        releasegpg.c_str());
+                        (useInRelease ? inrelease.c_str() : releasegpg.c_str()));
         // something went wrong, don't copy the Release.gpg
         // FIXME: delete any existing gpg file?
         continue;
@@ -686,8 +697,13 @@ bool SigVerify::CopyAndVerify(string CDROM,string Name,vector<string> &SigList,
       delete MetaIndex;
    
       // everything was fine, copy the Release and Release.gpg file
-      CopyMetaIndex(CDROM, Name, prefix, "Release");
-      CopyMetaIndex(CDROM, Name, prefix, "Release.gpg");
+      if (useInRelease == true)
+        CopyMetaIndex(CDROM, Name, prefix, "InRelease");
+      else
+      {
+        CopyMetaIndex(CDROM, Name, prefix, "Release");
+        CopyMetaIndex(CDROM, Name, prefix, "Release.gpg");
+      }
    }   
 
    return true;
index a401d61a0ae54f86b61d444ae96fb617508b9bab..3e4a8fa3cbd47f09bf9de704c69064cd56dea50d 100644 (file)
@@ -31,8 +31,10 @@ apt (0.8.16~exp9) UNRELEASED; urgency=low
     - dump the APT::Compressor settings correctly and completely
   * apt-pkg/contrib/fileutl.{h,cc}:
     - implement a ModificationTime method for FileFd
+  * apt-pkg/cdrom.cc:
+    - support InRelease files on cdrom
 
- -- David Kalnischkies <kalnischkies@gmail.com>  Sat, 10 Dec 2011 20:02:29 +0100
+ -- David Kalnischkies <kalnischkies@gmail.com>  Sun, 11 Dec 2011 01:30:12 +0100
 
 apt (0.8.16~exp8) experimental; urgency=low