Your message dated Sat, 05 Sep 2015 14:31:07 +0100
with message-id <[email protected]>
and subject line Closing p-u bugs for 8.2
has caused the Debian Bug report #787067,
regarding jessie-pu: package apt/1.0.9.8
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
787067: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=787067
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: release.debian.org
User: [email protected]
Usertags: pu
Tags: jessie
Severity: normal
Dear stable release managers,
I would like to ask for a p-u upload for apt. The following
bugs will be fixed with that upload:
* parse specific-arch dependencies correctly on single-arch systems
(Closes: 777760)
* remove "first package seen is native package" assumption.
Thanks to Axel Beckert for testing (Closes: 782777)
* Fix endless loop in apt-get update that can cause disk
fillup (LP: #1445239)
The code diff is attached. The fixes were also uploaded to sid some
days ago.
Thanks for your consideration,
David & Michael
-- System Information:
Debian Release: jessie/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
diff -Nru apt-1.0.9.8/apt-pkg/pkgcache.cc apt-1.0.9.8.1/apt-pkg/pkgcache.cc
--- apt-1.0.9.8/apt-pkg/pkgcache.cc 2015-04-13 07:25:06.000000000 +0200
+++ apt-1.0.9.8.1/apt-pkg/pkgcache.cc 2015-05-28 11:08:42.000000000 +0200
@@ -230,12 +230,7 @@
pkgCache::PkgIterator pkgCache::FindPkg(const string &Name) {
size_t const found = Name.find(':');
if (found == string::npos)
- {
- if (MultiArchCache() == false)
- return SingleArchFindPkg(Name);
- else
- return FindPkg(Name, "native");
- }
+ return FindPkg(Name, "native");
string const Arch = Name.substr(found+1);
/* Beware: This is specialcased to handle pkg:any in dependencies as
these are linked to virtual pkg:any named packages with all archs.
@@ -249,13 +244,6 @@
// ---------------------------------------------------------------------
/* Returns 0 on error, pointer to the package otherwise */
pkgCache::PkgIterator pkgCache::FindPkg(const string &Name, string const
&Arch) {
- if (MultiArchCache() == false && Arch != "none") {
- if (Arch == "native" || Arch == "all" || Arch == "any" ||
- Arch == NativeArch())
- return SingleArchFindPkg(Name);
- else
- return PkgIterator(*this,0);
- }
/* We make a detour via the GrpIterator here as
on a multi-arch environment a group is easier to
find than a package (less entries in the buckets) */
diff -Nru apt-1.0.9.8/apt-pkg/pkgcache.h apt-1.0.9.8.1/apt-pkg/pkgcache.h
--- apt-1.0.9.8/apt-pkg/pkgcache.h 2015-04-13 07:25:06.000000000 +0200
+++ apt-1.0.9.8.1/apt-pkg/pkgcache.h 2015-05-28 11:08:42.000000000 +0200
@@ -218,7 +218,7 @@
private:
bool MultiArchEnabled;
- PkgIterator SingleArchFindPkg(const std::string &Name);
+ APT_DEPRECATED PkgIterator SingleArchFindPkg(const std::string &Name);
};
/*}}}*/
// Header structure /*{{{*/
diff -Nru apt-1.0.9.8/configure apt-1.0.9.8.1/configure
--- apt-1.0.9.8/configure 2015-04-13 18:47:50.000000000 +0200
+++ apt-1.0.9.8.1/configure 2015-05-28 11:10:56.000000000 +0200
@@ -2436,7 +2436,7 @@
PACKAGE="apt"
-PACKAGE_VERSION="1.0.9.8"
+PACKAGE_VERSION="1.0.9.8.1"
PACKAGE_MAIL="APT Development Team <[email protected]>"
cat >>confdefs.h <<_ACEOF
#define PACKAGE "$PACKAGE"
diff -Nru apt-1.0.9.8/configure.ac apt-1.0.9.8.1/configure.ac
--- apt-1.0.9.8/configure.ac 2015-04-13 18:47:48.000000000 +0200
+++ apt-1.0.9.8.1/configure.ac 2015-05-28 11:10:55.000000000 +0200
@@ -18,7 +18,7 @@
AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in
include/apti18n.h:buildlib/apti18n.h.in)
PACKAGE="apt"
-PACKAGE_VERSION="1.0.9.8"
+PACKAGE_VERSION="1.0.9.8.1"
PACKAGE_MAIL="APT Development Team <[email protected]>"
AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
AC_DEFINE_UNQUOTED(PACKAGE_VERSION,"$PACKAGE_VERSION")
diff -Nru apt-1.0.9.8/debian/changelog apt-1.0.9.8.1/debian/changelog
--- apt-1.0.9.8/debian/changelog 2015-04-13 07:25:06.000000000 +0200
+++ apt-1.0.9.8.1/debian/changelog 2015-05-28 11:08:42.000000000 +0200
@@ -1,3 +1,16 @@
+apt (1.0.9.8.1) stable; urgency=medium
+
+ [ Michael Vogt ]
+ * Fix endless loop in apt-get update that can cause disk fillup (LP:
#1445239)
+
+ [ David Kalnischkies ]
+ * parse specific-arch dependencies correctly on single-arch systems
+ (Closes: 777760)
+ * remove "first package seen is native package" assumption.
+ Thanks to Axel Beckert for testing (Closes: 782777)
+
+ -- Michael Vogt <[email protected]> Thu, 28 May 2015 11:07:45 +0200
+
apt (1.0.9.8) unstable; urgency=medium
[ David Kalnischkies ]
diff -Nru apt-1.0.9.8/debian/gbp.conf apt-1.0.9.8.1/debian/gbp.conf
--- apt-1.0.9.8/debian/gbp.conf 2015-04-13 07:25:06.000000000 +0200
+++ apt-1.0.9.8.1/debian/gbp.conf 2015-05-28 11:08:42.000000000 +0200
@@ -1,7 +1,7 @@
[DEFAULT]
prebuild = ./prepare-release pre-export
postbuild = ./prepare-release post-build
-debian-branch = debian/sid
+debian-branch = debian/jessie
debian-tag = %(version)s
export-dir = ../build-area
-sign-tags = True
\ No newline at end of file
+sign-tags = True
diff -Nru apt-1.0.9.8/doc/apt-verbatim.ent apt-1.0.9.8.1/doc/apt-verbatim.ent
--- apt-1.0.9.8/doc/apt-verbatim.ent 2015-04-13 18:47:48.000000000 +0200
+++ apt-1.0.9.8.1/doc/apt-verbatim.ent 2015-05-28 11:10:55.000000000 +0200
@@ -225,7 +225,7 @@
">
<!-- this will be updated by 'prepare-release' -->
-<!ENTITY apt-product-version "1.0.9.8">
+<!ENTITY apt-product-version "1.0.9.8.1">
<!-- (Code)names for various things used all over the place -->
<!ENTITY oldstable-codename "wheezy">
diff -Nru apt-1.0.9.8/methods/http.cc apt-1.0.9.8.1/methods/http.cc
--- apt-1.0.9.8/methods/http.cc 2015-04-13 07:25:06.000000000 +0200
+++ apt-1.0.9.8.1/methods/http.cc 2015-05-28 11:08:42.000000000 +0200
@@ -443,7 +443,7 @@
else if (JunkSize != 0)
In.Limit(JunkSize);
else
- In.Limit(Size - StartPos);
+ In.Limit(DownloadSize);
// Just transfer the whole block.
do
diff -Nru apt-1.0.9.8/methods/server.cc apt-1.0.9.8.1/methods/server.cc
--- apt-1.0.9.8/methods/server.cc 2015-04-13 07:25:06.000000000 +0200
+++ apt-1.0.9.8.1/methods/server.cc 2015-05-28 11:08:42.000000000 +0200
@@ -164,15 +164,22 @@
Encoding = Stream;
HaveContent = true;
- unsigned long long * SizePtr = &Size;
+ unsigned long long * DownloadSizePtr = &DownloadSize;
if (Result == 416)
- SizePtr = &JunkSize;
+ DownloadSizePtr = &JunkSize;
- *SizePtr = strtoull(Val.c_str(), NULL, 10);
- if (*SizePtr >= std::numeric_limits<unsigned long long>::max())
+ *DownloadSizePtr = strtoull(Val.c_str(), NULL, 10);
+ if (*DownloadSizePtr >= std::numeric_limits<unsigned long long>::max())
return _error->Errno("HeaderLine", _("The HTTP server sent an invalid
Content-Length header"));
- else if (*SizePtr == 0)
+ else if (*DownloadSizePtr == 0)
HaveContent = false;
+
+ // On partial content (206) the Content-Length less than the real
+ // size, so do not set it here but leave that to the Content-Range
+ // header instead
+ if(Result != 206 && Size == 0)
+ Size = DownloadSize;
+
return true;
}
@@ -193,6 +200,9 @@
return _error->Error(_("The HTTP server sent an invalid Content-Range
header"));
if ((unsigned long long)StartPos > Size)
return _error->Error(_("This HTTP server has broken range support"));
+
+ // figure out what we will download
+ DownloadSize = Size - StartPos;
return true;
}
diff -Nru apt-1.0.9.8/methods/server.h apt-1.0.9.8.1/methods/server.h
--- apt-1.0.9.8/methods/server.h 2015-04-13 07:25:06.000000000 +0200
+++ apt-1.0.9.8.1/methods/server.h 2015-05-28 11:08:42.000000000 +0200
@@ -34,7 +34,8 @@
char Code[360];
// These are some statistics from the last parsed header lines
- unsigned long long Size; // size of the usable content (aka: the file)
+ unsigned long long Size; // total size of the usable content (aka: the file)
+ unsigned long long DownloadSize; // size we actually download (can be
smaller than Size if we have partial content)
unsigned long long JunkSize; // size of junk content (aka: server error
pages)
unsigned long long StartPos;
time_t Date;
diff -Nru apt-1.0.9.8/test/integration/test-bug-782777-single-arch-weirdness
apt-1.0.9.8.1/test/integration/test-bug-782777-single-arch-weirdness
--- apt-1.0.9.8/test/integration/test-bug-782777-single-arch-weirdness
1970-01-01 01:00:00.000000000 +0100
+++ apt-1.0.9.8.1/test/integration/test-bug-782777-single-arch-weirdness
2015-05-28 11:08:42.000000000 +0200
@@ -0,0 +1,72 @@
+#!/bin/sh
+# Ensure that the order in which packages are in the binary cache
+# does not effect if they can be found or not
+set -e
+
+TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'abar' 'i386' '1'
+insertpackage 'unstable' 'foobar' 'i386' '1' 'Depends: abar:amd64, zfoo:amd64'
+insertpackage 'unstable' 'zfoo' 'i386' '1'
+
+setupaptarchive
+
+testrun() {
+ rm -f rootdir/var/lib/apt/extended_states
+
+ testequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ abar zfoo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst abar (1 unstable [i386])
+Inst zfoo (1 unstable [i386])
+Conf abar (1 unstable [i386])
+Conf zfoo (1 unstable [i386])' aptget install abar zfoo -s
+
+ testequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ abar zfoo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst abar (1 unstable [i386])
+Inst zfoo (1 unstable [i386])
+Conf abar (1 unstable [i386])
+Conf zfoo (1 unstable [i386])' aptget install abar:i386 zfoo:i386 -s
+
+ testequal "Reading package lists...
+Building dependency tree...
+Package abar:amd64 is not available, but is referred to by another package.
+This may mean that the package is missing, has been obsoleted, or
+is only available from another source
+
+Package zfoo:amd64 is not available, but is referred to by another package.
+This may mean that the package is missing, has been obsoleted, or
+is only available from another source
+
+E: Package 'abar:amd64' has no installation candidate
+E: Package 'zfoo:amd64' has no installation candidate" aptget install
abar:amd64 zfoo:amd64 -s
+
+ cp -f rootdir/var/lib/dpkg/status status.backup
+ insertinstalledpackage 'abar' 'i386' '1'
+ insertinstalledpackage 'zfoo' 'i386' '1'
+
+ testequal 'abar
+zfoo' aptmark showmanual abar zfoo
+ testequal 'abar set to automatically installed.
+zfoo set to automatically installed.' aptmark auto abar zfoo
+ testempty aptmark showmanual abar zfoo
+ testequal 'abar
+zfoo' aptmark showauto abar zfoo
+
+ mv -f status.backup rootdir/var/lib/dpkg/status
+}
+
+msgmsg 'Single-Arch testrun'
+testrun
+msgmsg 'Multi-Arch testrun'
+configarchitecture 'i386' 'amd64'
+testrun
diff -Nru apt-1.0.9.8/test/integration/test-bug-lp1445239-download-loop
apt-1.0.9.8.1/test/integration/test-bug-lp1445239-download-loop
--- apt-1.0.9.8/test/integration/test-bug-lp1445239-download-loop
1970-01-01 01:00:00.000000000 +0100
+++ apt-1.0.9.8.1/test/integration/test-bug-lp1445239-download-loop
2015-05-28 11:08:42.000000000 +0200
@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+# this is a regression test for LP: #1445239 where a partial download can
+# trigger an endless hang of the download method
+#
+
+set -e
+
+TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+setupenvironment
+configarchitecture 'amd64'
+
+changetowebserver
+webserverconfig 'aptwebserver::support::range' 'true'
+
+TESTFILE='aptarchive/testfile'
+dd if=/dev/zero of=$TESTFILE bs=100k count=1 2>/dev/null
+
+DOWNLOADLOG='rootdir/tmp/testdownloadfile.log'
+
+TARGET=testfile-downloaded
+dd if=/dev/zero of=$TARGET bs=99k count=1 2>/dev/null
+if ! downloadfile http://localhost:8080/testfile "$TARGET" > "$DOWNLOADLOG";
then
+ cat >&2 "$DOWNLOADLOG"
+ msgfail
+else
+ msgpass
+fi
diff -Nru apt-1.0.9.8/test/interactive-helper/aptwebserver.cc
apt-1.0.9.8.1/test/interactive-helper/aptwebserver.cc
--- apt-1.0.9.8/test/interactive-helper/aptwebserver.cc 2015-04-13
07:25:06.000000000 +0200
+++ apt-1.0.9.8.1/test/interactive-helper/aptwebserver.cc 2015-05-28
11:08:42.000000000 +0200
@@ -654,13 +654,15 @@
if (filesize > filestart)
{
data.Skip(filestart);
- std::ostringstream contentlength;
- contentlength << "Content-Length: " << (filesize -
filestart);
- headers.push_back(contentlength.str());
+ // make sure to send content-range before conent-length
+ // as regression test for LP: #1445239
std::ostringstream contentrange;
contentrange << "Content-Range: bytes " << filestart <<
"-"
<< filesize - 1 << "/" << filesize;
headers.push_back(contentrange.str());
+ std::ostringstream contentlength;
+ contentlength << "Content-Length: " << (filesize -
filestart);
+ headers.push_back(contentlength.str());
sendHead(client, 206, headers);
if (sendContent == true)
sendFile(client, headers, data);
--- End Message ---
--- Begin Message ---
Version: 8.2
Hi,
These bugs correspond to updates which were included in the 8.2 point
release.
Regards,
Adam
--- End Message ---