summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2005-06-28 12:31:17 +0000
committerMichael Vogt <michael.vogt@ubuntu.com>2005-06-28 12:31:17 +0000
commit254ce4b0cc0336de5a9b46c693673ef68d5628b6 (patch)
tree180d7b122cc5ab1b8a9625ed873f83e7fdb104f4
parentbe65f52793235fa0419af5bb6c867da28506c227 (diff)
parent29ba053e05b1a496500036dbd667002d1b8b5ec2 (diff)
* merged with apt--ubuntu--0
Patches applied: * apt@packages.debian.org/apt--ubuntu--0--base-0 tag of apt@packages.debian.org/apt--main--0--patch-88 * apt@packages.debian.org/apt--ubuntu--0--patch-1 Merge from Debian branch * apt@packages.debian.org/apt--ubuntu--0--patch-2 0.6.38ubuntu1 * apt@packages.debian.org/apt--ubuntu--0--patch-3 Merge with mainline * apt@packages.debian.org/apt--ubuntu--0--patch-4 Improved arch-build rule * apt@packages.debian.org/apt--ubuntu--0--patch-5 Merge with mainline * apt@packages.debian.org/apt--ubuntu--0--patch-6 Merge with mvo * michael.vogt@ubuntu.com--2005/apt--bts225947--0--base-0 tag of apt@packages.debian.org/apt--main--0--patch-79 * michael.vogt@ubuntu.com--2005/apt--bts225947--0--patch-1 * merged with mainline and apt--fixes--0 * michael.vogt@ubuntu.com--2005/apt--bts225947--0--patch-2 * patch from aj (slighly modified to use auto_ptr<>) applied * michael.vogt@ubuntu.com--2005/apt--bts225947--0--patch-3 * changelog updated * michael.vogt@ubuntu.com--2005/apt--bts225947--0--patch-4 * work for arch=all packages too now * michael.vogt@ubuntu.com--2005/apt--sane-handle-timeout--0--base-0 tag of apt@packages.debian.org/apt--main--0--patch-87 * michael.vogt@ubuntu.com--2005/apt--sane-handle-timeout--0--patch-1 * report timeouts (from Connect) and fail if they happen in pkgAcqMetaSig * michael.vogt@ubuntu.com--2005/apt--sane-handle-timeout--0--patch-2 * merged with the fixes branch to make it build again * michael.vogt@ubuntu.com--2005/apt--ubuntu--0--patch-1 tag of apt@packages.debian.org/apt--main--0--patch-88 * michael.vogt@ubuntu.com--2005/apt--ubuntu--0--patch-2 * merged apt--mvo (to make pining on components work again) * michael.vogt@ubuntu.com--2005/apt--ubuntu--0--patch-3 * merged with apt--fixes--0 (to make the building of the french manpages work and to fix a incorrect man-page example * michael.vogt@ubuntu.com--2005/apt--ubuntu--0--patch-4 * merged with the bts225947 code * michael.vogt@ubuntu.com--2005/apt--ubuntu--0--patch-5 * merged the imporoved timoeut handling patch * michael.vogt@ubuntu.com--2005/apt--ubuntu--0--patch-6 * merged with matt * michael.vogt@ubuntu.com--2005/apt--ubuntu--0--patch-7 * removed another conflict with apt--main
-rw-r--r--apt-pkg/acquire-item.cc6
-rw-r--r--configure.in2
-rw-r--r--debian/changelog35
-rwxr-xr-xdebian/rules2
-rw-r--r--ftparchive/apt-ftparchive.cc7
-rw-r--r--ftparchive/override.cc38
-rw-r--r--ftparchive/override.h9
-rw-r--r--ftparchive/writer.cc55
-rw-r--r--ftparchive/writer.h7
-rw-r--r--methods/connect.cc4
-rw-r--r--share/debian-archive.gpgbin1303 -> 0 bytes
11 files changed, 130 insertions, 35 deletions
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc
index b2f896627..14acad85a 100644
--- a/apt-pkg/acquire-item.cc
+++ b/apt-pkg/acquire-item.cc
@@ -400,6 +400,12 @@ void pkgAcqMetaSig::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
string Final = _config->FindDir("Dir::State::lists") + URItoFileName(RealURI);
unlink(Final.c_str());
+ // if we get a timeout if fail
+ if(LookupTag(Message,"FailReason") == "Timeout") {
+ Item::Failed(Message,Cnf);
+ return;
+ }
+
// queue a pkgAcqMetaIndex with no sigfile
new pkgAcqMetaIndex(Owner, MetaIndexURI, MetaIndexURIDesc, MetaIndexShortDesc,
"", IndexTargets, MetaIndexParser);
diff --git a/configure.in b/configure.in
index fd3eac884..f78ce1d1e 100644
--- a/configure.in
+++ b/configure.in
@@ -18,7 +18,7 @@ AC_CONFIG_AUX_DIR(buildlib)
AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
dnl -- SET THIS TO THE RELEASE VERSION --
-AC_DEFINE_UNQUOTED(VERSION,"0.6.39")
+AC_DEFINE_UNQUOTED(VERSION,"0.6.38ubuntu1mvo1")
PACKAGE="apt"
AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
AC_SUBST(PACKAGE)
diff --git a/debian/changelog b/debian/changelog
index ad775c230..78559fd56 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-apt (0.6.39) unstable; urgency=low
+apt (0.6.38ubuntu1mvo1) unstable; urgency=low
* Welsh translation update: daf@muse.19inch.net--2005/apt--main--0--patch-6
* Merge mvo's changes from 0.6.36ubuntu1:
@@ -6,8 +6,38 @@ apt (0.6.39) unstable; urgency=low
* Merge aggregated translation updates:
bubulle@debian.org--2005/apt--main--0
* Update priority of apt-utils to important, to match the override file
+ * Michael Vogt
+ - Change debian/bugscript to use #!/bin/bash (Closes: #313402)
+ - Fix a incorrect example in the man-page (closes: #282918)
+ - Support architecture-specific extra overrides
+ (closes: #225947). Thanks to Anthony Towns for idea and
+ the patch, thanks to Colin Watson for testing it.
+ - better report network timeouts from the methods to the acuire code,
+ only timeout once per sources.list line
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 28 Jun 2005 11:18:24 +0200
+
+apt (0.6.38ubuntu1) breezy; urgency=low
+
+ * First release from Ubuntu branch
+ * Merge with --main--0, switch back to Ubuntu keyring
+
+ -- Matt Zimmerman <mdz@ubuntu.com> Sat, 25 Jun 2005 16:52:41 -0700
- --
+apt (0.6.38) unstable; urgency=low
+
+ * Merge michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-6, a workaround
+ for the French man pages' failure to build
+ * Branch Debian and Ubuntu
+ - apt.postinst, apt-key: use the appropriate keyring
+ - debian/rules: install all keyrings
+ * Add the current Debian archive signing key (4F368D5D) to
+ debian-archive.gpg
+ * make pinning on the "component" work again (using the section of the
+ archive, we don't use per-section Release files anymore with apt-0.6)
+ (closes ubuntu #9935)
+
+ -- Matt Zimmerman <mdz@debian.org> Sat, 25 Jun 2005 09:51:00 -0700
apt (0.6.38) unstable; urgency=low
@@ -24,6 +54,7 @@ apt (0.6.38) unstable; urgency=low
-- Matt Zimmerman <mdz@debian.org> Sat, 25 Jun 2005 09:51:00 -0700
+>>>>>>> MERGE-SOURCE
apt (0.6.37) breezy; urgency=low
* Merge bubulle@debian.org--2005/apt--main--0 up to patch-81
diff --git a/debian/rules b/debian/rules
index d6ae540ee..ee02baeb6 100755
--- a/debian/rules
+++ b/debian/rules
@@ -336,4 +336,4 @@ arch-build:
mkdir -p debian/arch-build/apt-$(APT_DEBVER)
baz inventory -s | xargs cp -a --parents --target=debian/arch-build/apt-$(APT_DEBVER)
$(MAKE) -C debian/arch-build/apt-$(APT_DEBVER) startup doc
- (cd debian/arch-build/apt-$(APT_DEBVER); $(DEB_BUILD_PROG))
+ (cd debian/arch-build/apt-$(APT_DEBVER); $(DEB_BUILD_PROG); dpkg-genchanges -S > ../apt_$(APT_DEBVER)_source.changes)
diff --git a/ftparchive/apt-ftparchive.cc b/ftparchive/apt-ftparchive.cc
index 31ff8d600..0e2be8a00 100644
--- a/ftparchive/apt-ftparchive.cc
+++ b/ftparchive/apt-ftparchive.cc
@@ -56,6 +56,9 @@ struct PackageMap
string BinCacheDB;
string BinOverride;
string ExtraOverride;
+
+ // We generate for this given arch
+ string Arch;
// Stuff for the Source File
string SrcFile;
@@ -158,7 +161,8 @@ bool PackageMap::GenPackages(Configuration &Setup,struct CacheDB::Stats &Stats)
// Create a package writer object.
PackagesWriter Packages(flCombine(CacheDir,BinCacheDB),
flCombine(OverrideDir,BinOverride),
- flCombine(OverrideDir,ExtraOverride));
+ flCombine(OverrideDir,ExtraOverride),
+ Arch);
if (PkgExt.empty() == false && Packages.SetExts(PkgExt) == false)
return _error->Error(_("Package extension list is too long"));
if (_error->PendingError() == true)
@@ -489,6 +493,7 @@ void LoadTree(vector<PackageMap> &PkgList,Configuration &Setup)
Itm.BaseDir = SubstVar(Block.Find("Directory",DDir.c_str()),Vars);
Itm.PkgFile = SubstVar(Block.Find("Packages",DPkg.c_str()),Vars);
Itm.Tag = SubstVar("$(DIST)/$(SECTION)/$(ARCH)",Vars);
+ Itm.Arch = Arch;
Itm.Contents = SubstVar(Block.Find("Contents",DContents.c_str()),Vars);
Itm.ContentsHead = SubstVar(Block.Find("Contents::Header",DContentsH.c_str()),Vars);
Itm.FLFile = SubstVar(Block.Find("FileList",DFLFile.c_str()),Vars);
diff --git a/ftparchive/override.cc b/ftparchive/override.cc
index 669ce25bf..b8b94843f 100644
--- a/ftparchive/override.cc
+++ b/ftparchive/override.cc
@@ -207,6 +207,44 @@ bool Override::ReadExtraOverride(string File,bool Source)
return true;
}
/*}}}*/
+
+// Override::GetItem - Get a architecture specific item /*{{{*/
+// ---------------------------------------------------------------------
+/* Returns a override item for the given package and the given architecture.
+ * Treats "all" special
+ */
+Override::Item* Override::GetItem(string Package, string Architecture)
+{
+ map<string,Item>::iterator I = Mapping.find(Package);
+ map<string,Item>::iterator J = Mapping.find(Package + "/" + Architecture);
+
+ if (I == Mapping.end() && J == Mapping.end())
+ {
+ return 0;
+ }
+
+ Item *result = new Item;
+ if (I == Mapping.end()) *result = J->second;
+ else
+ {
+ *result = I->second;
+ if (J != Mapping.end())
+ {
+ Item *R = &J->second;
+ if (R->Priority != "") result->Priority = R->Priority;
+ if (R->OldMaint != "") result->OldMaint = R->OldMaint;
+ if (R->NewMaint != "") result->NewMaint = R->NewMaint;
+ for (map<string,string>::iterator foI = R->FieldOverride.begin();
+ foI != R->FieldOverride.end(); foI++)
+ {
+ result->FieldOverride[foI->first] = foI->second;
+ }
+ }
+ }
+ return result;
+};
+
+
// Override::Item::SwapMaint - Swap the maintainer field if necessary /*{{{*/
// ---------------------------------------------------------------------
/* Returns the new maintainer string after evaluating the rewriting rule. If
diff --git a/ftparchive/override.h b/ftparchive/override.h
index 2d6a4e27c..e64641776 100644
--- a/ftparchive/override.h
+++ b/ftparchive/override.h
@@ -34,17 +34,16 @@ class Override
map<string,string> FieldOverride;
string SwapMaint(string Orig,bool &Failed);
+ ~Item() {};
};
map<string,Item> Mapping;
inline Item *GetItem(string Package)
{
- map<string,Item>::iterator I = Mapping.find(Package);
- if (I == Mapping.end())
- return 0;
- return &I->second;
- };
+ return GetItem(Package, "");
+ }
+ Item *GetItem(string Package, string Architecture);
bool ReadOverride(string File,bool Source = false);
bool ReadExtraOverride(string File,bool Source = false);
diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc
index 35a23a3d7..0b68d0bbf 100644
--- a/ftparchive/writer.cc
+++ b/ftparchive/writer.cc
@@ -36,7 +36,6 @@
#include "apt-ftparchive.h"
#include "multicompress.h"
/*}}}*/
-
using namespace std;
FTWScanner *FTWScanner::Owner;
@@ -285,8 +284,9 @@ bool FTWScanner::Delink(string &FileName,const char *OriginalPath,
// PackagesWriter::PackagesWriter - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
-PackagesWriter::PackagesWriter(string DB,string Overrides,string ExtOverrides) :
- Db(DB),Stats(Db.Stats)
+PackagesWriter::PackagesWriter(string DB,string Overrides,string ExtOverrides,
+ string aArch) :
+ Db(DB),Stats(Db.Stats), Arch(aArch)
{
Output = stdout;
SetExts(".deb .udeb .foo .bar .baz");
@@ -371,14 +371,22 @@ bool PackagesWriter::DoPackage(string FileName)
// Lookup the overide information
pkgTagSection &Tags = Db.Control.Section;
string Package = Tags.FindS("Package");
- Override::Item Tmp;
- Override::Item *OverItem = Over.GetItem(Package);
+ string Architecture;
+ // if we generate a Packages file for a given arch, we use it to
+ // look for overrides. if we run in "simple" mode without the
+ // "Architecures" variable in the config we use the architecure value
+ // from the deb file
+ if(Arch != "")
+ Architecture = Arch;
+ else
+ Architecture = Tags.FindS("Architecture");
+ auto_ptr<Override::Item> OverItem(Over.GetItem(Package,Architecture));
if (Package.empty() == true)
return _error->Error(_("Archive had no package field"));
-
+
// If we need to do any rewriting of the header do it now..
- if (OverItem == 0)
+ if (OverItem.get() == 0)
{
if (NoOverride == false)
{
@@ -386,9 +394,9 @@ bool PackagesWriter::DoPackage(string FileName)
ioprintf(c1out, _(" %s has no override entry\n"), Package.c_str());
}
- OverItem = &Tmp;
- Tmp.FieldOverride["Section"] = Tags.FindS("Section");
- Tmp.Priority = Tags.FindS("Priority");
+ OverItem = auto_ptr<Override::Item>(new Override::Item);
+ OverItem->FieldOverride["Section"] = Tags.FindS("Section");
+ OverItem->Priority = Tags.FindS("Priority");
}
char Size[40];
@@ -557,7 +565,7 @@ bool SourcesWriter::DoPackage(string FileName)
string BestPrio;
string Bins = Tags.FindS("Binary");
char Buffer[Bins.length() + 1];
- Override::Item *OverItem = 0;
+ auto_ptr<Override::Item> OverItem(0);
if (Bins.empty() == false)
{
strcpy(Buffer,Bins.c_str());
@@ -570,10 +578,10 @@ bool SourcesWriter::DoPackage(string FileName)
unsigned char BestPrioV = pkgCache::State::Extra;
for (unsigned I = 0; BinList[I] != 0; I++)
{
- Override::Item *Itm = BOver.GetItem(BinList[I]);
- if (Itm == 0)
+ auto_ptr<Override::Item> Itm(BOver.GetItem(BinList[I]));
+ if (Itm.get() == 0)
continue;
- if (OverItem == 0)
+ if (OverItem.get() == 0)
OverItem = Itm;
unsigned char NewPrioV = debListParser::GetPrio(Itm->Priority);
@@ -586,8 +594,7 @@ bool SourcesWriter::DoPackage(string FileName)
}
// If we need to do any rewriting of the header do it now..
- Override::Item Tmp;
- if (OverItem == 0)
+ if (OverItem.get() == 0)
{
if (NoOverride == false)
{
@@ -595,15 +602,19 @@ bool SourcesWriter::DoPackage(string FileName)
ioprintf(c1out, _(" %s has no override entry\n"), Tags.FindS("Source").c_str());
}
- OverItem = &Tmp;
+ OverItem = auto_ptr<Override::Item>(new Override::Item);
}
- Override::Item *SOverItem = SOver.GetItem(Tags.FindS("Source"));
- if (SOverItem == 0)
+ auto_ptr<Override::Item> SOverItem(SOver.GetItem(Tags.FindS("Source")));
+ const auto_ptr<Override::Item> autoSOverItem(SOverItem);
+ if (SOverItem.get() == 0)
{
- SOverItem = BOver.GetItem(Tags.FindS("Source"));
- if (SOverItem == 0)
- SOverItem = OverItem;
+ SOverItem = auto_ptr<Override::Item>(BOver.GetItem(Tags.FindS("Source")));
+ if (SOverItem.get() == 0)
+ {
+ SOverItem = auto_ptr<Override::Item>(new Override::Item);
+ *SOverItem = *OverItem;
+ }
}
// Add the dsc to the files hash list
diff --git a/ftparchive/writer.h b/ftparchive/writer.h
index ce4c947a9..16d014ef8 100644
--- a/ftparchive/writer.h
+++ b/ftparchive/writer.h
@@ -92,13 +92,15 @@ class PackagesWriter : public FTWScanner
string DirStrip;
FILE *Output;
struct CacheDB::Stats &Stats;
-
+ string Arch;
+
inline bool ReadOverride(string File) {return Over.ReadOverride(File);};
inline bool ReadExtraOverride(string File)
{return Over.ReadExtraOverride(File);};
virtual bool DoPackage(string FileName);
- PackagesWriter(string DB,string Overrides,string ExtOverrides=string());
+ PackagesWriter(string DB,string Overrides,string ExtOverrides=string(),
+ string Arch=string());
virtual ~PackagesWriter() {};
};
@@ -170,6 +172,7 @@ protected:
string SHA1;
// Limited by FileFd::Size()
unsigned long size;
+ ~CheckSum() {};
};
map<string,struct CheckSum> CheckSums;
};
diff --git a/methods/connect.cc b/methods/connect.cc
index 981ac1371..b85df6887 100644
--- a/methods/connect.cc
+++ b/methods/connect.cc
@@ -88,9 +88,11 @@ static bool DoConnect(struct addrinfo *Addr,string Host,
/* This implements a timeout for connect by opening the connection
nonblocking */
- if (WaitFd(Fd,true,TimeOut) == false)
+ if (WaitFd(Fd,true,TimeOut) == false) {
+ Owner->SetFailExtraMsg("\nFailReason: Timeout");
return _error->Error(_("Could not connect to %s:%s (%s), "
"connection timed out"),Host.c_str(),Service,Name);
+ }
// Check the socket for an error condition
unsigned int Err;
diff --git a/share/debian-archive.gpg b/share/debian-archive.gpg
deleted file mode 100644
index c391d8fa1..000000000
--- a/share/debian-archive.gpg
+++ /dev/null
Binary files differ