ensure state-dir exists before coyping cdrom files
authorDavid Kalnischkies <kalnischkies@gmail.com>
Sun, 9 Jun 2013 16:58:34 +0000 (18:58 +0200)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Sun, 9 Jun 2013 17:06:12 +0000 (19:06 +0200)
We do the same in the acquire system which handles the 'normal'
downloads, so do it here as well even though its unlikely anyone
will ever notice (beside testcases of course …)

apt-pkg/cdrom.cc
debian/changelog
test/integration/framework
test/integration/test-apt-cdrom

index 9a9a854..a5668a5 100644 (file)
@@ -829,6 +829,14 @@ bool pkgCdrom::Add(pkgCdromStatus *log)                                    /*{{{*/
       log->Update(msg.str());
       log->Update(_("Copying package lists..."), STEP_COPY);
    }
+
+   // check for existence and possibly create state directory for copying
+   string const listDir = _config->FindDir("Dir::State::lists");
+   string const partialListDir = listDir + "partial/";
+   if (CreateAPTDirectoryIfNeeded(_config->FindDir("Dir::State"), partialListDir) == false &&
+       CreateAPTDirectoryIfNeeded(listDir, partialListDir) == false)
+      return _error->Errno("cdrom", _("List directory %spartial is missing."), listDir.c_str());
+
    // take care of the signatures and copy them if they are ok
    // (we do this before PackageCopy as it modifies "List" and "SourceList")
    SigVerify SignVerify;
index cde0aba..7582b4f 100644 (file)
@@ -14,6 +14,7 @@ apt (0.9.8.3) UNRELEASED; urgency=low
   * don't explicitly init ExtractTar InFd with invalid fd
   * OpenDescriptor should autoclose fd always on error (Closes: #704608)
   * fail in CopyFile if the FileFds have error flag set
+  * ensure state-dir exists before coyping cdrom files
 
  -- David Kalnischkies <kalnischkies@gmail.com>  Sun, 09 Jun 2013 15:06:24 +0200
 
index 7c2aed5..5c50498 100644 (file)
@@ -692,9 +692,11 @@ setupaptarchive() {
                setupflataptarchive
        fi
        signreleasefiles
-       msgninfo "\tSync APT's cache with the archive… "
-       aptget update -qq
-       msgdone "info"
+       if [ "$1" != '--no-update' ]; then
+               msgninfo "\tSync APT's cache with the archive… "
+               aptget update -qq
+               msgdone "info"
+       fi
 }
 
 signreleasefiles() {
index 3394aa5..6e35331 100755 (executable)
@@ -7,7 +7,7 @@ setupenvironment
 configarchitecture 'amd64' 'i386'
 
 buildsimplenativepackage 'testing' 'amd64,i386' '0.8.15' 'stable'
-setupaptarchive
+setupaptarchive --no-update
 
 changetocdrom 'Debian APT Testdisk 0.8.15'