Pārlūkot izejas kodu

ensure state-dir exists before coyping cdrom files

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 …)
David Kalnischkies 13 gadi atpakaļ
vecāks
revīzija
b2ea1a4753

+ 8 - 0
apt-pkg/cdrom.cc

@@ -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;

+ 1 - 0
debian/changelog

@@ -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
 

+ 5 - 3
test/integration/framework

@@ -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() {

+ 1 - 1
test/integration/test-apt-cdrom

@@ -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'