From 37254316e0b1c3b0c067cf1962d0882d70a38c12 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 12 Feb 2011 13:43:32 +0100 Subject: * methods/rred.cc: - read patch into MMap only if we work on uncompressed patches --- methods/rred.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'methods') diff --git a/methods/rred.cc b/methods/rred.cc index 1a18a381c..80cd14986 100644 --- a/methods/rred.cc +++ b/methods/rred.cc @@ -252,13 +252,15 @@ struct EdCommand { /*{{{*/ RredMethod::State RredMethod::patchMMap(FileFd &Patch, FileFd &From, /*{{{*/ FileFd &out_file, Hashes *hash) const { #ifdef _POSIX_MAPPED_FILES - MMap ed_cmds(Patch, MMap::ReadOnly); + MMap ed_cmds(MMap::ReadOnly); if (Patch.gzFd() != NULL) { unsigned long mapSize = Patch.Size(); DynamicMMap dyn(0, mapSize, 0); gzread(Patch.gzFd(), dyn.Data(), mapSize); ed_cmds = dyn; - } + } else + ed_cmds = MMap(Patch, MMap::ReadOnly); + MMap in_file(From, MMap::ReadOnly); if (ed_cmds.Size() == 0 || in_file.Size() == 0) -- cgit v1.2.3-70-g09d2 From 005428387832e79e314bb8f2605f7e6c69708d14 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sun, 13 Feb 2011 11:37:22 +0100 Subject: update size of dynamic MMap as we write in from the outside --- apt-pkg/contrib/mmap.h | 1 + debian/changelog | 3 ++- methods/rred.cc | 11 ++++++++--- 3 files changed, 11 insertions(+), 4 deletions(-) (limited to 'methods') diff --git a/apt-pkg/contrib/mmap.h b/apt-pkg/contrib/mmap.h index 5ca951204..e9baa9339 100644 --- a/apt-pkg/contrib/mmap.h +++ b/apt-pkg/contrib/mmap.h @@ -61,6 +61,7 @@ class MMap inline operator void *() {return Base;}; inline void *Data() {return Base;}; inline unsigned long Size() {return iSize;}; + inline void AddSize(unsigned long const size) {iSize += size;}; // File manipulators bool Sync(); diff --git a/debian/changelog b/debian/changelog index f8d29abde..86d31d856 100644 --- a/debian/changelog +++ b/debian/changelog @@ -9,10 +9,11 @@ apt (0.8.12) unstable; urgency=low marker could be lost later by the removal of rdepends (Closes: #612557) * methods/rred.cc: - read patch into MMap only if we work on uncompressed patches + - update size of dynamic MMap as we write in from the outside * apt-pkg/contrib/mmap.cc: - do not try to free the mapping if its is unset - -- David Kalnischkies Sat, 12 Feb 2011 19:39:25 +0100 + -- David Kalnischkies Sun, 13 Feb 2011 11:36:11 +0100 apt (0.8.11.1) unstable; urgency=low diff --git a/methods/rred.cc b/methods/rred.cc index 80cd14986..9ad0e4464 100644 --- a/methods/rred.cc +++ b/methods/rred.cc @@ -255,9 +255,14 @@ RredMethod::State RredMethod::patchMMap(FileFd &Patch, FileFd &From, /*{{{*/ MMap ed_cmds(MMap::ReadOnly); if (Patch.gzFd() != NULL) { unsigned long mapSize = Patch.Size(); - DynamicMMap dyn(0, mapSize, 0); - gzread(Patch.gzFd(), dyn.Data(), mapSize); - ed_cmds = dyn; + DynamicMMap* dyn = new DynamicMMap(0, mapSize, 0); + if (dyn->Data() == 0) { + delete dyn; + return MMAP_FAILED; + } + dyn->AddSize(mapSize); + gzread(Patch.gzFd(), dyn->Data(), mapSize); + ed_cmds = *dyn; } else ed_cmds = MMap(Patch, MMap::ReadOnly); -- cgit v1.2.3-70-g09d2 From 2a79d5b560398427f5538865099b6777128d8bed Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 14 Feb 2011 17:03:35 +0100 Subject: * apt-pkg/contrib/fileutl.cc: - really detect bigendian machines by including config.h, so we can really (Closes: #612986) * apt-pkg/contrib/mmap.cc: - Base has as 'valid' failure states 0 and -1 so add a simple validData method to check for failure states --- apt-pkg/contrib/fileutl.cc | 3 ++- apt-pkg/contrib/mmap.cc | 4 ++-- apt-pkg/contrib/mmap.h | 1 + debian/changelog | 12 ++++++++++++ methods/rred.cc | 2 +- 5 files changed, 18 insertions(+), 4 deletions(-) (limited to 'methods') diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc index 24e3f08d9..767951daf 100644 --- a/apt-pkg/contrib/fileutl.cc +++ b/apt-pkg/contrib/fileutl.cc @@ -43,7 +43,8 @@ #include #include -#ifndef WORDS_BIGENDIAN +#include +#ifdef WORDS_BIGENDIAN #include #endif /*}}}*/ diff --git a/apt-pkg/contrib/mmap.cc b/apt-pkg/contrib/mmap.cc index 4978446d2..9945b1606 100644 --- a/apt-pkg/contrib/mmap.cc +++ b/apt-pkg/contrib/mmap.cc @@ -106,7 +106,7 @@ bool MMap::Map(FileFd &Fd) /* */ bool MMap::Close(bool DoSync) { - if ((Flags & UnMapped) == UnMapped || Base == 0 || iSize == 0) + if ((Flags & UnMapped) == UnMapped || validData() == false || iSize == 0) return true; if (DoSync == true) @@ -266,7 +266,7 @@ DynamicMMap::~DynamicMMap() { if (Fd == 0) { - if (Base == 0) + if (validData() == false) return; #ifdef _POSIX_MAPPED_FILES munmap(Base, WorkSpace); diff --git a/apt-pkg/contrib/mmap.h b/apt-pkg/contrib/mmap.h index e9baa9339..2bf2c1540 100644 --- a/apt-pkg/contrib/mmap.h +++ b/apt-pkg/contrib/mmap.h @@ -62,6 +62,7 @@ class MMap inline void *Data() {return Base;}; inline unsigned long Size() {return iSize;}; inline void AddSize(unsigned long const size) {iSize += size;}; + inline bool validData() const { return Base != (void *)-1 && Base != 0; }; // File manipulators bool Sync(); diff --git a/debian/changelog b/debian/changelog index 8e05f1220..99eb47858 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,15 @@ +apt (0.8.11.3) UNRELEASED; urgency=low + + [ David Kalnischkies ] + * apt-pkg/contrib/fileutl.cc: + - really detect bigendian machines by including config.h, + so we can really (Closes: #612986) + * apt-pkg/contrib/mmap.cc: + - Base has as 'valid' failure states 0 and -1 so add a simple + validData method to check for failure states + + -- David Kalnischkies Mon, 14 Feb 2011 16:58:03 +0100 + apt (0.8.11.2) unstable; urgency=low [ Michael Vogt ] diff --git a/methods/rred.cc b/methods/rred.cc index 9ad0e4464..849973e1a 100644 --- a/methods/rred.cc +++ b/methods/rred.cc @@ -256,7 +256,7 @@ RredMethod::State RredMethod::patchMMap(FileFd &Patch, FileFd &From, /*{{{*/ if (Patch.gzFd() != NULL) { unsigned long mapSize = Patch.Size(); DynamicMMap* dyn = new DynamicMMap(0, mapSize, 0); - if (dyn->Data() == 0) { + if (dyn->validData() == false) { delete dyn; return MMAP_FAILED; } -- cgit v1.2.3-70-g09d2 From b2430e6d1713e26d461f08873ac872918eb28283 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 22 Feb 2011 18:11:10 +0100 Subject: * apt-pkg/aptconfiguration.cc: - support download of xz-compressed indexes files --- apt-pkg/aptconfiguration.cc | 2 ++ debian/changelog | 4 +++- methods/makefile | 10 ++++++++-- 3 files changed, 13 insertions(+), 3 deletions(-) (limited to 'methods') diff --git a/apt-pkg/aptconfiguration.cc b/apt-pkg/aptconfiguration.cc index 3cf4d2429..9ded431e8 100644 --- a/apt-pkg/aptconfiguration.cc +++ b/apt-pkg/aptconfiguration.cc @@ -38,11 +38,13 @@ const Configuration::getCompressionTypes(bool const &Cached) { // setup the defaults for the compressiontypes => method mapping _config->CndSet("Acquire::CompressionTypes::bz2","bzip2"); + _config->CndSet("Acquire::CompressionTypes::xz","xz"); _config->CndSet("Acquire::CompressionTypes::lzma","lzma"); _config->CndSet("Acquire::CompressionTypes::gz","gzip"); // Set default application paths to check for optional compression types _config->CndSet("Dir::Bin::lzma", "/usr/bin/lzma"); + _config->CndSet("Dir::Bin::xz", "/usr/bin/xz"); _config->CndSet("Dir::Bin::bzip2", "/bin/bzip2"); // accept non-list order as override setting for config settings on commandline diff --git a/debian/changelog b/debian/changelog index 92ae058c5..f0f0d342a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,8 +13,10 @@ apt (0.8.11.6) UNRELEASED; urgency=low - ensure that Date and Valid-Until time strings are not localised - add options to disable specific checksums for Indexes - include xz-compressed Packages and Sources files in Release file + * apt-pkg/aptconfiguration.cc: + - support download of xz-compressed indexes files - -- David Kalnischkies Tue, 22 Feb 2011 14:59:51 +0100 + -- David Kalnischkies Tue, 22 Feb 2011 18:10:30 +0100 apt (0.8.11.5) unstable; urgency=low diff --git a/methods/makefile b/methods/makefile index 4ee356cec..6ba51058e 100644 --- a/methods/makefile +++ b/methods/makefile @@ -94,8 +94,8 @@ SOURCE = bzip2.cc include $(PROGRAM_H) # SSH and lzma method symlink -binary: $(BIN)/ssh $(BIN)/lzma -veryclean: clean-$(BIN)/ssh clean-$(BIN)/lzma +binary: $(BIN)/ssh $(BIN)/lzma $(BIN)/xz +veryclean: clean-$(BIN)/ssh clean-$(BIN)/lzma clean-$(BIN)/xz $(BIN)/ssh: echo "Installing ssh method link" @@ -108,3 +108,9 @@ $(BIN)/lzma: ln -fs bzip2 $(BIN)/lzma clean-$(BIN)/lzma: -rm $(BIN)/lzma + +$(BIN)/xz: + echo "Installing xz method link" + ln -fs bzip2 $(BIN)/xz +clean-$(BIN)/xz: + -rm $(BIN)/xz -- cgit v1.2.3-70-g09d2