summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2012-01-20 10:27:03 +0100
committerMichael Vogt <michael.vogt@ubuntu.com>2012-01-20 10:27:03 +0100
commit2c384bb626cbaa682c20b94beb14589611847191 (patch)
tree5a0afc2503e334bebdc13ce80ab832d88e289281
parenta7025171ea8bb49975f98dd4c3c6c7d89335cd30 (diff)
parent809cf6d22a9bb72061aedf2670c78b57d9da6999 (diff)
merged from bzr+ssh://bazaar.launchpad.net/~donkult/apt/experimental/
-rw-r--r--apt-pkg/packagemanager.cc19
-rw-r--r--cmdline/apt-get.cc2
-rw-r--r--debian/changelog26
-rw-r--r--debian/control24
-rwxr-xr-xdebian/rules4
-rw-r--r--methods/gpgv.cc12
-rw-r--r--methods/https.cc10
-rw-r--r--methods/rred.cc7
-rw-r--r--test/libapt/globalerror_test.cc7
-rwxr-xr-xtest/libapt/run-tests4
10 files changed, 79 insertions, 36 deletions
diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc
index 349adbe40..a370f15a3 100644
--- a/apt-pkg/packagemanager.cc
+++ b/apt-pkg/packagemanager.cc
@@ -322,22 +322,22 @@ bool pkgPackageManager::ConfigureAll()
only shown when debuging*/
bool pkgPackageManager::SmartConfigure(PkgIterator Pkg, int const Depth)
{
- // If this is true, only check and correct and dependancies without the Loop flag
+ // If this is true, only check and correct and dependencies without the Loop flag
bool PkgLoop = List->IsFlag(Pkg,pkgOrderList::Loop);
if (Debug) {
VerIterator InstallVer = VerIterator(Cache,Cache[Pkg].InstallVer);
clog << OutputInDepth(Depth) << "SmartConfigure " << Pkg.Name() << " (" << InstallVer.VerStr() << ")";
if (PkgLoop)
- clog << " (Only Correct Dependancies)";
+ clog << " (Only Correct Dependencies)";
clog << endl;
}
VerIterator const instVer = Cache[Pkg].InstVerIter(Cache);
- /* Because of the ordered list, most dependancies should be unpacked,
+ /* Because of the ordered list, most dependencies should be unpacked,
however if there is a loop (A depends on B, B depends on A) this will not
- be the case, so check for dependancies before configuring. */
+ be the case, so check for dependencies before configuring. */
bool Bad = false;
for (DepIterator D = instVer.DependsList();
D.end() == false; )
@@ -424,7 +424,7 @@ bool pkgPackageManager::SmartConfigure(PkgIterator Pkg, int const Depth)
if (Start==End) {
if (Bad && Debug && List->IsFlag(DepPkg,pkgOrderList::Loop) == false)
- std::clog << OutputInDepth(Depth) << "Could not satisfy dependancies for " << Pkg.Name() << std::endl;
+ std::clog << OutputInDepth(Depth) << "Could not satisfy dependencies for " << Pkg.Name() << std::endl;
break;
} else {
Start++;
@@ -529,7 +529,6 @@ bool pkgPackageManager::SmartRemove(PkgIterator Pkg)
List->Flag(Pkg,pkgOrderList::Configured,pkgOrderList::States);
return Remove(Pkg,(Cache[Pkg].iFlags & pkgDepCache::Purge) == pkgDepCache::Purge);
- return true;
}
/*}}}*/
// PM::SmartUnPack - Install helper /*{{{*/
@@ -682,7 +681,13 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate, int c
VerIterator Ver(Cache,*I);
PkgIterator BrokenPkg = Ver.ParentPkg();
VerIterator InstallVer(Cache,Cache[BrokenPkg].InstallVer);
-
+ if (BrokenPkg.CurrentVer() != Ver)
+ {
+ if (Debug)
+ std::clog << OutputInDepth(Depth) << " Ignore not-installed version " << Ver.VerStr() << " of " << Pkg.FullName() << " for " << End << std::endl;
+ continue;
+ }
+
// Check if it needs to be unpacked
if (List->IsFlag(BrokenPkg,pkgOrderList::InList) && Cache[BrokenPkg].Delete() == false &&
List->IsNow(BrokenPkg)) {
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc
index 85ae1cd7e..2d0554e21 100644
--- a/cmdline/apt-get.cc
+++ b/cmdline/apt-get.cc
@@ -1730,7 +1730,7 @@ bool DoAutomaticRemove(CacheFile &Cache)
Pkg != tooMuch.end() && Changed == false; ++Pkg)
{
APT::PackageSet too;
- too.insert(Pkg);
+ too.insert(*Pkg);
for (pkgCache::PrvIterator Prv = Cache[Pkg].CandidateVerIter(Cache).ProvidesList();
Prv.end() == false; ++Prv)
too.insert(Prv.ParentPkg());
diff --git a/debian/changelog b/debian/changelog
index 838b14ef1..9484063bb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -7,8 +7,30 @@ apt (0.8.16~exp12) experimental; urgency=low
[ David Kalnischkies ]
* apt-pkg/cacheiterators.h:
- return the correct version arch for all+foreign, too
-
- -- David Kalnischkies <kalnischkies@gmail.com> Thu, 19 Jan 2012 18:38:33 +0100
+ * apt-pkg/packagemanager.cc:
+ - ignore breaks on not-installed versions while searching for
+ breakage loops as we don't have to avoid them
+ * debian/control:
+ - remove APT from the short descriptions as lintian doesn't like it
+ and it doesn't transport any information for a reader anyway
+ - apply typofixes by Pascal De Vuyst, thanks! (Closes: #652834, #652835)
+ * debian/rules:
+ - apply patch to enable usage of hardning CPPFLAGS and LDFLAGS by
+ Moritz Muehlenhoff, thanks! (Closes: #653504)
+ * methods/https.cc:
+ - use curls list append instead of appending Range and If-Range by hand
+ which generates malformed requests, thanks Mel Collins for the hint!
+ (Closes: #646381)
+ * test/libapt/run-tests:
+ - hurd doesn't have dmesg yet and we don't really need it either,
+ so use with $0 a more stable data source for hashsumming
+
+ [ Pino Toscano ]
+ * test/libapt/globalerror_test.cc:
+ - errno 0 has a different strerror on hurd, so generate the expected
+ message dynamically instead of hardcoding 'Success' (Closes: #656530)
+
+ -- David Kalnischkies <kalnischkies@gmail.com> Fri, 20 Jan 2012 01:43:07 +0100
apt (0.8.16~exp11) experimental; urgency=low
diff --git a/debian/control b/debian/control
index 03d74c51f..311346b0f 100644
--- a/debian/control
+++ b/debian/control
@@ -7,8 +7,8 @@ Uploaders: Michael Vogt <mvo@debian.org>, Otavio Salvador <otavio@debian.org>,
Julian Andres Klode <jak@debian.org>
Standards-Version: 3.9.2
Build-Depends: dpkg-dev (>= 1.15.8), debhelper (>= 8.1.3~), libdb-dev,
- gettext (>= 0.12), libcurl4-gnutls-dev (>= 7.19.0),
- zlib1g-dev | libz-dev, debiandoc-sgml, xsltproc, docbook-xsl, docbook-xml,
+ gettext (>= 0.12), libcurl4-gnutls-dev (>= 7.19.0),
+ zlib1g-dev | libz-dev, debiandoc-sgml, xsltproc, docbook-xsl, docbook-xml,
po4a (>= 0.34-2), autotools-dev, autoconf, automake, doxygen
Build-Conflicts: autoconf2.13, automake1.4
Vcs-Bzr: http://bzr.debian.org/apt/debian-sid/
@@ -20,7 +20,7 @@ Depends: ${shlibs:Depends}, ${misc:Depends}, debian-archive-keyring, gnupg
Replaces: manpages-pl (<< 20060617-3~)
Conflicts: python-apt (<< 0.7.93.2~)
Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt
-Description: APT's commandline package manager
+Description: commandline package manager
This package provides commandline tools for searching and
managing as well as querying information about packages
as a low-level access to all features of the libapt-pkg library.
@@ -40,7 +40,7 @@ Architecture: any
Multi-Arch: same
Pre-Depends: ${misc:Pre-Depends}
Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: APT's package managment runtime library
+Description: package managment runtime library
This library provides the common functionality for searching and
managing packages as well as information about packages.
Higher-level package managers can depend upon this library.
@@ -61,8 +61,8 @@ Architecture: any
Multi-Arch: same
Pre-Depends: ${misc:Pre-Depends}
Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: APT's deb package format runtime library
- This library provides methods to query and extract information
+Description: deb package format runtime library
+ This library provides methods to query and extract information
from deb packages. This includes the control data and the package
file content.
@@ -71,7 +71,7 @@ Architecture: all
Priority: optional
Depends: ${misc:Depends}
Section: doc
-Description: Documentation for APT
+Description: documentation for APT
This package contains the user guide and offline guide for various
APT tools which are provided in a html and a text-only version.
@@ -82,7 +82,7 @@ Priority: optional
Pre-Depends: ${misc:Pre-Depends}
Depends: ${libapt-pkg-name} (= ${binary:Version}), ${libapt-inst-name} (= ${binary:Version}), ${misc:Depends}, zlib1g-dev | zlib-dev
Section: libdevel
-Description: Development files for APT's libapt-pkg and libapt-inst
+Description: development files for APT's libapt-pkg and libapt-inst
This package contains the header files and libraries for
developing with APT's libapt-pkg Debian package manipulation
library and the libapt-inst deb/tar/ar library.
@@ -92,7 +92,7 @@ Architecture: all
Priority: optional
Depends: ${misc:Depends}
Section: doc
-Description: Documentation for APT development
+Description: documentation for APT development
This package contains documentation for development of the APT
Debian package manipulation program and its libraries.
.
@@ -102,7 +102,7 @@ Description: Documentation for APT development
Package: apt-utils
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: APT utility programs
+Description: package managment related utility programs
This package contains some less used commandline utilities related
to package managment with APT.
.
@@ -120,7 +120,7 @@ Description: https download transport for APT
This package enables the usage of 'deb https://foo distro main' lines
in the /etc/apt/sources.list so that all package managers using the
libapt-pkg library can access metadata and packages available in sources
- accessable over https (Hypertext Transfer Protocol Secure).
+ accessible over https (Hypertext Transfer Protocol Secure).
.
- This transport supports server as well as client authenification
+ This transport supports server as well as client authentication
with certificates.
diff --git a/debian/rules b/debian/rules
index 4ef5bb47a..9eda3a8fa 100755
--- a/debian/rules
+++ b/debian/rules
@@ -19,6 +19,8 @@ endif
ifneq (,$(shell which dpkg-buildflags))
export CXXFLAGS = $(shell dpkg-buildflags --get CXXFLAGS)
+ export LDFLAGS = $(shell dpkg-buildflags --get LDFLAGS)
+ export CPPFLAGS = $(shell dpkg-buildflags --get CPPFLAGS)
else
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
export CXXFLAGS = -O0 -g -Wall
@@ -92,7 +94,7 @@ build/configure-stamp: configure
dh_testdir
-mkdir build
cp COPYING debian/copyright
- cd build && CXXFLAGS="$(CXXFLAGS)" ../configure $(confflags)
+ cd build && CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" CPPFLAGS="$(CPPFLAGS)" ../configure $(confflags)
touch $@
build/build-stamp: build/configure-stamp
diff --git a/methods/gpgv.cc b/methods/gpgv.cc
index 2b2aba017..25ba0d063 100644
--- a/methods/gpgv.cc
+++ b/methods/gpgv.cc
@@ -98,8 +98,16 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
// Read a line. Sigh.
while ((c = getc(pipein)) != EOF && c != '\n')
{
- if (bufferoff == buffersize)
- buffer = (char *) realloc(buffer, buffersize *= 2);
+ if (bufferoff == buffersize)
+ {
+ char* newBuffer = (char *) realloc(buffer, buffersize *= 2);
+ if (newBuffer == NULL)
+ {
+ free(buffer);
+ return "Couldn't allocate a buffer big enough for reading";
+ }
+ buffer = newBuffer;
+ }
*(buffer+bufferoff) = c;
bufferoff++;
}
diff --git a/methods/https.cc b/methods/https.cc
index 317c8a587..6de18b8e0 100644
--- a/methods/https.cc
+++ b/methods/https.cc
@@ -100,7 +100,6 @@ void HttpsMethod::SetupProxy() /*{{{*/
depth. */
bool HttpsMethod::Fetch(FetchItem *Itm)
{
- stringstream ss;
struct stat SBuf;
struct curl_slist *headers=NULL;
char curl_errorstr[CURL_ERROR_SIZE];
@@ -199,6 +198,7 @@ bool HttpsMethod::Fetch(FetchItem *Itm)
if (_config->FindB("Acquire::https::No-Store",
_config->FindB("Acquire::http::No-Store",false)) == true)
headers = curl_slist_append(headers,"Cache-Control: no-store");
+ stringstream ss;
ioprintf(ss, "Cache-Control: max-age=%u", _config->FindI("Acquire::https::Max-Age",
_config->FindI("Acquire::http::Max-Age",0)));
headers = curl_slist_append(headers, ss.str().c_str());
@@ -246,11 +246,11 @@ bool HttpsMethod::Fetch(FetchItem *Itm)
if (stat(Itm->DestFile.c_str(),&SBuf) >= 0 && SBuf.st_size > 0)
{
char Buf[1000];
- sprintf(Buf,"Range: bytes=%li-\r\nIf-Range: %s\r\n",
- (long)SBuf.st_size - 1,
- TimeRFC1123(SBuf.st_mtime).c_str());
+ sprintf(Buf, "Range: bytes=%li-", (long) SBuf.st_size - 1);
headers = curl_slist_append(headers, Buf);
- }
+ sprintf(Buf, "If-Range: %s", TimeRFC1123(SBuf.st_mtime).c_str());
+ headers = curl_slist_append(headers, Buf);
+ }
else if(Itm->LastModified > 0)
{
curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
diff --git a/methods/rred.cc b/methods/rred.cc
index e37a12ed9..1e352d0e7 100644
--- a/methods/rred.cc
+++ b/methods/rred.cc
@@ -333,7 +333,12 @@ RredMethod::State RredMethod::patchMMap(FileFd &Patch, FileFd &From, /*{{{*/
}
if(command_count == command_alloc) {
command_alloc = (command_alloc + 64) * 3 / 2;
- commands = (EdCommand*) realloc(commands, command_alloc * sizeof(EdCommand));
+ EdCommand* newCommands = (EdCommand*) realloc(commands, command_alloc * sizeof(EdCommand));
+ if (newCommands == NULL) {
+ free(commands);
+ return MMAP_FAILED;
+ }
+ commands = newCommands;
}
commands[command_count++] = cmd;
}
diff --git a/test/libapt/globalerror_test.cc b/test/libapt/globalerror_test.cc
index 5d27414f9..72044d493 100644
--- a/test/libapt/globalerror_test.cc
+++ b/test/libapt/globalerror_test.cc
@@ -3,9 +3,12 @@
#include "assert.h"
#include <string>
#include <errno.h>
+#include <string.h>
int main(int argc,char *argv[])
{
+ std::string const textOfErrnoZero(strerror(0));
+
equals(_error->empty(), true);
equals(_error->PendingError(), false);
equals(_error->Notice("%s Notice", "A"), false);
@@ -80,7 +83,7 @@ int main(int argc,char *argv[])
equals(_error->PendingError(), true);
equals(_error->PopMessage(text), true);
equals(_error->PendingError(), false);
- equals(text, "Something horrible happend 2 times - errno (0: Success)");
+ equals(text, std::string("Something horrible happend 2 times - errno (0: ").append(textOfErrnoZero).append(")"));
equals(_error->empty(), true);
std::string longText;
@@ -92,7 +95,7 @@ int main(int argc,char *argv[])
equals(_error->Errno("errno", "%s horrible %s %d times", longText.c_str(), "happend", 2), false);
equals(_error->PopMessage(text), true);
- equals(text, std::string(longText).append(" horrible happend 2 times - errno (0: Success)"));
+ equals(text, std::string(longText).append(" horrible happend 2 times - errno (0: ").append(textOfErrnoZero).append(")"));
equals(_error->Warning("Репозиторий не обновлён и будут %d %s", 4, "test"), false);
equals(_error->PopMessage(text), false);
diff --git a/test/libapt/run-tests b/test/libapt/run-tests
index 5fff4ecca..d4341412d 100755
--- a/test/libapt/run-tests
+++ b/test/libapt/run-tests
@@ -67,11 +67,9 @@ do
"${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-st.bak" \
"${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-ast_DE"
elif [ $name = "HashSums${EXT}" ]; then
- TMP="$(mktemp)"
- dmesg > $TMP
+ TMP="$(readlink -f "./${0}")"
echo -n "Testing with \033[1;35m${name}\033[0m ... "
LD_LIBRARY_PATH=${LDPATH} ${testapp} $TMP $(md5sum $TMP | cut -d' ' -f 1) $(sha1sum $TMP | cut -d' ' -f 1) $(sha256sum $TMP | cut -d' ' -f 1) $(sha512sum $TMP | cut -d' ' -f 1) && echo "\033[1;32mOKAY\033[0m" || echo "\033[1;31mFAILED\033[0m"
- rm $TMP
continue
elif [ $name = "CompareVersion${EXT}" ]; then
tmppath="${DIR}/versions.lst"