[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#649451: hard-coded gzip-only support in apt-cdrom



On Mon, Nov 21, 2011 at 01:03:08PM +0100, David Kalnischkies wrote:
> On Mon, Nov 21, 2011 at 01:26, Steve McIntyre <steve@einval.com> wrote:
> > I've just added support for translated description files into
> > debian-cd, creating Translation-$LANG.bz2 on CDs to match the
> > archive. A problem report from a user shortly afterwards described
> > apt-cdrom issues using a DVD generated with this new code. [1] I've
> > dug through the code in cdrom.cc and tagfile.cc and I've found that
> > apt simply does not support .bz2 versions of the Translation files
> > *from CD*. AFAICS it *does* support them in the main archive via HTTP
> > etc. That's a bit of a surprise, to say the least.
> 
> I am not that surprised, given that apt-cdrom is touched only once
> in a blue moon - last serious change is from 2009 (udev), the one
> before that is adding Translation support in 2007, the 2005 change
> is imported from the previous vcs… You get the pattern.
> All in all its properly save to say that the code you looked at mostly
> comes straight from the last millennium (literally speaking!)…
> 
> My personal excuse is that i haven't used it a single time, so i am
> properly not the best one to hack on it, but i fear the rest of the
> (lets count optimistic) trio seems to have the same excuse…

Yes, definitely the same here. I don't even have a single Debian
CD/DVD/Blu-Ray disc. I exclusively install systems via network,
and do not use optical discs at all.

It would be great if someone who actually needs it takes a look
at it. That said, I have pushed out the following patch to
the debian-experimental2 branch, please test it (I didn't
test it, but it compiles and looks logically right).

------------------------------------------------------------
revno: 2190
revision-id: jak@debian.org-20111121175329-4kynotjqxk6oehsa
parent: michael.vogt@ubuntu.com-20111110151055-gkbk6bfx6biids40
fixes bug(s): http://bugs.debian.org/649451
committer: Julian Andres Klode <jak@debian.org>
branch nick: debian-experimental2
timestamp: Mon 2011-11-21 18:53:29 +0100
message:
  apt-pkg/cdrom.cc: Accept .bz2, .xz files in addition to .gz files (Closes: #649451)
diff:
=== modified file 'apt-pkg/cdrom.cc'
--- apt-pkg/cdrom.cc	2011-09-19 17:14:19 +0000
+++ apt-pkg/cdrom.cc	2011-11-21 17:53:29 +0000
@@ -81,7 +81,8 @@
    /* Aha! We found some package files. We assume that everything under 
       this dir is controlled by those package files so we don't look down
       anymore */
-   if (stat("Packages",&Buf) == 0 || stat("Packages.gz",&Buf) == 0)
+   if (stat("Packages",&Buf) == 0 || stat("Packages.gz",&Buf) == 0 ||
+       stat("Packages.bz2",&Buf) == 0 || stat("Packages.xz",&Buf) == 0)
    {
       List.push_back(CD);
       
@@ -89,7 +90,8 @@
       if (_config->FindB("APT::CDROM::Thorough",false) == false)
 	 return true;
    }
-   if (stat("Sources.gz",&Buf) == 0 || stat("Sources",&Buf) == 0)
+   if (stat("Sources.xz",&Buf) == 0 || stat("Sources.bz2",&Buf) == 0 ||
+       stat("Sources.gz",&Buf) == 0 || stat("Sources",&Buf) == 0)
    {
       SList.push_back(CD);
       
@@ -109,8 +111,11 @@
 	    if (_config->FindB("Debug::aptcdrom",false) == true)
 	       std::clog << "found translations: " << Dir->d_name << "\n";
 	    string file = Dir->d_name;
-	    if(file.substr(file.size()-3,file.size()) == ".gz")
+	    if(file.substr(file.size()-3,file.size()) == ".gz" ||
+	       file.substr(file.size()-3,file.size()) == ".xz")
 	       file = file.substr(0,file.size()-3);
+	    if(file.substr(file.size()-4,file.size()) == ".bz2")
+	       file = file.substr(0,file.size()-4);
 	    TransList.push_back(CD+"i18n/"+ file);
 	 }
       }
@@ -258,7 +263,9 @@
    {
       struct stat Buf;
       if (stat((List[I] + Name).c_str(),&Buf) != 0 &&
-	  stat((List[I] + Name + ".gz").c_str(),&Buf) != 0)
+	  stat((List[I] + Name + ".gz").c_str(),&Buf) != 0 && 
+	  stat((List[I] + Name + ".bz2").c_str(),&Buf) != 0 && 
+	  stat((List[I] + Name + ".xz").c_str(),&Buf) != 0)
 	 _error->Errno("stat","Failed to stat %s%s",List[I].c_str(),
 		       Name);
       Inodes[I] = Buf.st_ino;

=== modified file 'debian/changelog'
--- debian/changelog	2011-11-03 14:41:14 +0000
+++ debian/changelog	2011-11-21 17:53:29 +0000
@@ -1,3 +1,10 @@
+apt (0.8.16~exp9) UNRELEASED; urgency=low
+
+  * apt-pkg/cdrom.cc:
+    - Accept .bz2, .xz files in addition to .gz files (Closes: #649451)
+
+ -- Julian Andres Klode <jak@debian.org>  Mon, 21 Nov 2011 18:46:36 +0100
+
 apt (0.8.16~exp8) experimental; urgency=low
 
   [ David Kalnischkies ]

-- 
Julian Andres Klode  - Debian Developer, Ubuntu Member

See http://wiki.debian.org/JulianAndresKlode and http://jak-linux.org/.

Attachment: pgprXntFyGFD8.pgp
Description: PGP signature


Reply to: