From: Michael Vogt Date: Thu, 30 Jul 2009 15:34:48 +0000 (+0200) Subject: merged from debian X-Git-Tag: 0.7.24ubuntu1~12 X-Git-Url: https://git.saurik.com/apt.git/commitdiff_plain/55fb35e87a1ff550cbb3010c5a03064f0a2b10be?hp=-c merged from debian --- 55fb35e87a1ff550cbb3010c5a03064f0a2b10be diff --combined apt-pkg/acquire-item.cc index 91f3d0605,39ae327cb..a65630afd --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@@ -63,7 -63,6 +63,7 @@@ void pkgAcquire::Item::Failed(string Me { Status = StatIdle; ErrorText = LookupTag(Message,"Message"); + UsedMirror = LookupTag(Message,"UsedMirror"); if (QueueCounter <= 1) { /* This indicates that the file is not available right now but might @@@ -76,17 -75,10 +76,17 @@@ Dequeue(); return; } - + Status = StatError; Dequeue(); } + + // report mirror failure back to LP if we actually use a mirror + string FailReason = LookupTag(Message, "FailReason"); + if(FailReason.size() != 0) + ReportMirrorFailure(FailReason); + else + ReportMirrorFailure(ErrorText); } /*}}}*/ // Acquire::Item::Start - Item has begun to download /*{{{*/ @@@ -108,7 -100,7 +108,7 @@@ void pkgAcquire::Item::Done(string Mess { // We just downloaded something.. string FileName = LookupTag(Message,"Filename"); - // we only inform the Log class if it was actually not a local thing + UsedMirror = LookupTag(Message,"UsedMirror"); if (Complete == false && !Local && FileName == DestFile) { if (Owner->Log != 0) @@@ -117,6 -109,7 +117,6 @@@ if (FileSize == 0) FileSize= Size; - Status = StatDone; ErrorText = string(); Owner->Dequeue(this); @@@ -138,52 -131,7 +138,50 @@@ void pkgAcquire::Item::Rename(string Fr } } /*}}}*/ + +void pkgAcquire::Item::ReportMirrorFailure(string FailCode) +{ + // we only act if a mirror was used at all + if(UsedMirror.empty()) + return; +#if 0 + std::cerr << "\nReportMirrorFailure: " + << UsedMirror + << " Uri: " << DescURI() + << " FailCode: " + << FailCode << std::endl; +#endif + const char *Args[40]; + unsigned int i = 0; + string report = _config->Find("Methods::Mirror::ProblemReporting", + "/usr/lib/apt/apt-report-mirror-failure"); + if(!FileExists(report)) + return; + Args[i++] = report.c_str(); + Args[i++] = UsedMirror.c_str(); + Args[i++] = DescURI().c_str(); + Args[i++] = FailCode.c_str(); + Args[i++] = NULL; + pid_t pid = ExecFork(); + if(pid < 0) + { + _error->Error("ReportMirrorFailure Fork failed"); + return; + } + else if(pid == 0) + { + execvp(Args[0], (char**)Args); + std::cerr << "Could not exec " << Args[0] << std::endl; + _exit(100); + } + if(!ExecWait(pid, "report-mirror-failure")) + { + _error->Warning("Couldn't report problem to '%s'", + _config->Find("Methods::Mirror::ProblemReporting").c_str()); + } +} + - - - // AcqDiffIndex::AcqDiffIndex - Constructor + // AcqDiffIndex::AcqDiffIndex - Constructor /*{{{*/ // --------------------------------------------------------------------- /* Get the DiffIndex file first and see if there are patches availabe * If so, create a pkgAcqIndexDiffs fetcher that will get and apply the @@@ -234,7 -182,7 +232,7 @@@ pkgAcqDiffIndex::pkgAcqDiffIndex(pkgAcq QueueURI(Desc); } - + /*}}}*/ // AcqIndex::Custom600Headers - Insert custom request headers /*{{{*/ // --------------------------------------------------------------------- /* The only header we use is the last-modified header. */ @@@ -252,9 -200,8 +250,8 @@@ string pkgAcqDiffIndex::Custom600Header return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime); } - - - bool pkgAcqDiffIndex::ParseDiffIndex(string IndexDiffFile) + /*}}}*/ + bool pkgAcqDiffIndex::ParseDiffIndex(string IndexDiffFile) /*{{{*/ { if(Debug) std::clog << "pkgAcqIndexDiffs::ParseIndexDiff() " << IndexDiffFile @@@ -341,8 -288,8 +338,8 @@@ std::clog << "Can't find a patch in the index file" << std::endl; return false; } - - void pkgAcqDiffIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) + /*}}}*/ + void pkgAcqDiffIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) /*{{{*/ { if(Debug) std::clog << "pkgAcqDiffIndex failed: " << Desc.URI << std::endl @@@ -355,8 -302,8 +352,8 @@@ Status = StatDone; Dequeue(); } - - void pkgAcqDiffIndex::Done(string Message,unsigned long Size,string Md5Hash, + /*}}}*/ + void pkgAcqDiffIndex::Done(string Message,unsigned long Size,string Md5Hash, /*{{{*/ pkgAcquire::MethodConfig *Cnf) { if(Debug) @@@ -385,10 -332,8 +382,8 @@@ Dequeue(); return; } - - - - // AcqIndexDiffs::AcqIndexDiffs - Constructor + /*}}}*/ + // AcqIndexDiffs::AcqIndexDiffs - Constructor /*{{{*/ // --------------------------------------------------------------------- /* The package diff is added to the queue. one object is constructed * for each diff and the index @@@ -422,9 -367,8 +417,8 @@@ pkgAcqIndexDiffs::pkgAcqIndexDiffs(pkgA QueueNextDiff(); } } - - - void pkgAcqIndexDiffs::Failed(string Message,pkgAcquire::MethodConfig *Cnf) + /*}}}*/ + void pkgAcqIndexDiffs::Failed(string Message,pkgAcquire::MethodConfig *Cnf) /*{{{*/ { if(Debug) std::clog << "pkgAcqIndexDiffs failed: " << Desc.URI << std::endl @@@ -433,9 -377,8 +427,8 @@@ ExpectedHash); Finish(); } - - - // helper that cleans the item out of the fetcher queue + /*}}}*/ + // Finish - helper that cleans the item out of the fetcher queue /*{{{*/ void pkgAcqIndexDiffs::Finish(bool allDone) { // we restore the original name, this is required, otherwise @@@ -470,10 -413,8 +463,8 @@@ Dequeue(); return; } - - - - bool pkgAcqIndexDiffs::QueueNextDiff() + /*}}}*/ + bool pkgAcqIndexDiffs::QueueNextDiff() /*{{{*/ { // calc sha1 of the just patched file @@@ -519,10 -460,8 +510,8 @@@ return true; } - - - - void pkgAcqIndexDiffs::Done(string Message,unsigned long Size,string Md5Hash, + /*}}}*/ + void pkgAcqIndexDiffs::Done(string Message,unsigned long Size,string Md5Hash, /*{{{*/ pkgAcquire::MethodConfig *Cnf) { if(Debug) @@@ -593,8 -532,7 +582,7 @@@ return Finish(true); } } - - + /*}}}*/ // AcqIndex::AcqIndex - Constructor /*{{{*/ // --------------------------------------------------------------------- /* The package file is added to the queue and a second class is @@@ -640,11 -578,11 +628,10 @@@ string pkgAcqIndex::Custom600Headers( struct stat Buf; if (stat(Final.c_str(),&Buf) != 0) return "\nIndex-File: true"; - return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime); } /*}}}*/ - - void pkgAcqIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) + void pkgAcqIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) /*{{{*/ { bool descChanged = false; // no .bz2 found, retry with .gz @@@ -679,8 -617,7 +666,7 @@@ Item::Failed(Message,Cnf); } - - + /*}}}*/ // AcqIndex::Done - Finished a fetch /*{{{*/ // --------------------------------------------------------------------- /* This goes through a number of states.. On the initial fetch the @@@ -706,7 -643,6 +692,7 @@@ void pkgAcqIndex::Done(string Message,u Status = StatAuthError; ErrorText = _("Hash Sum mismatch"); Rename(DestFile,DestFile + ".FAILED"); + ReportMirrorFailure("HashChecksumFailure"); return; } // Done, move it into position @@@ -785,7 -721,7 +771,7 @@@ QueueURI(Desc); Mode = decompProg; } - + /*}}}*/ // AcqIndexTrans::pkgAcqIndexTrans - Constructor /*{{{*/ // --------------------------------------------------------------------- /* The Translation file is added to the queue */ @@@ -794,7 -730,6 +780,6 @@@ pkgAcqIndexTrans::pkgAcqIndexTrans(pkgA : pkgAcqIndex(Owner, URI, URIDesc, ShortDesc, HashString(), "") { } - /*}}}*/ // AcqIndexTrans::Failed - Silence failure messages for missing files /*{{{*/ // --------------------------------------------------------------------- @@@ -814,8 -749,7 +799,7 @@@ void pkgAcqIndexTrans::Failed(string Me Item::Failed(Message,Cnf); } /*}}}*/ - - pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire *Owner, + pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire *Owner, /*{{{*/ string URI,string URIDesc,string ShortDesc, string MetaIndexURI, string MetaIndexURIDesc, string MetaIndexShortDesc, @@@ -899,13 -833,12 +883,13 @@@ void pkgAcqMetaSig::Done(string Message Rename(LastGoodSig, DestFile); // queue a pkgAcqMetaIndex to be verified against the sig we just retrieved - new pkgAcqMetaIndex(Owner, MetaIndexURI, MetaIndexURIDesc, MetaIndexShortDesc, - DestFile, IndexTargets, MetaIndexParser); + new pkgAcqMetaIndex(Owner, MetaIndexURI, MetaIndexURIDesc, + MetaIndexShortDesc, DestFile, IndexTargets, + MetaIndexParser); } /*}}}*/ - void pkgAcqMetaSig::Failed(string Message,pkgAcquire::MethodConfig *Cnf) + void pkgAcqMetaSig::Failed(string Message,pkgAcquire::MethodConfig *Cnf)/*{{{*/ { string Final = _config->FindDir("Dir::State::lists") + URItoFileName(RealURI); @@@ -914,7 -847,7 +898,7 @@@ { Item::Failed(Message,Cnf); // move the sigfile back on transient network failures - if(FileExists(DestFile)) + if(FileExists(LastGoodSig)) Rename(LastGoodSig,Final); // set the status back to , Item::Failed likes to reset it @@@ -941,8 -874,8 +925,8 @@@ Item::Failed(Message,Cnf); } - - pkgAcqMetaIndex::pkgAcqMetaIndex(pkgAcquire *Owner, + /*}}}*/ + pkgAcqMetaIndex::pkgAcqMetaIndex(pkgAcquire *Owner, /*{{{*/ string URI,string URIDesc,string ShortDesc, string SigFile, const vector* IndexTargets, @@@ -961,7 -894,6 +945,6 @@@ QueueURI(Desc); } - /*}}}*/ // pkgAcqMetaIndex::Custom600Headers - Insert custom request headers /*{{{*/ // --------------------------------------------------------------------- @@@ -977,8 -909,8 +960,8 @@@ string pkgAcqMetaIndex::Custom600Header return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime); } - - void pkgAcqMetaIndex::Done(string Message,unsigned long Size,string Hash, + /*}}}*/ + void pkgAcqMetaIndex::Done(string Message,unsigned long Size,string Hash, /*{{{*/ pkgAcquire::MethodConfig *Cfg) { Item::Done(Message,Size,Hash,Cfg); @@@ -990,15 -922,6 +973,15 @@@ if (AuthPass == true) { AuthDone(Message); + + // all cool, move Release file into place + Complete = true; + + string FinalFile = _config->FindDir("Dir::State::lists"); + FinalFile += URItoFileName(RealURI); + Rename(DestFile,FinalFile); + chmod(FinalFile.c_str(),0644); + DestFile = FinalFile; } else { @@@ -1028,8 -951,8 +1011,8 @@@ } } } - - void pkgAcqMetaIndex::RetrievalDone(string Message) + /*}}}*/ + void pkgAcqMetaIndex::RetrievalDone(string Message) /*{{{*/ { // We have just finished downloading a Release file (it is not // verified yet) @@@ -1050,18 -973,25 +1033,18 @@@ return; } - // see if the download was a IMSHit + // make sure to verify against the right file on I-M-S hit IMSHit = StringToBool(LookupTag(Message,"IMS-Hit"),false); + if(IMSHit) + { + string FinalFile = _config->FindDir("Dir::State::lists"); + FinalFile += URItoFileName(RealURI); + DestFile = FinalFile; + } Complete = true; - - string FinalFile = _config->FindDir("Dir::State::lists"); - FinalFile += URItoFileName(RealURI); - - // If we get a IMS hit we can remove the empty file in partial - // othersie we move the file in place - if (IMSHit) - unlink(DestFile.c_str()); - else - Rename(DestFile,FinalFile); - - chmod(FinalFile.c_str(),0644); - DestFile = FinalFile; } - - void pkgAcqMetaIndex::AuthDone(string Message) + /*}}}*/ + void pkgAcqMetaIndex::AuthDone(string Message) /*{{{*/ { // At this point, the gpgv method has succeeded, so there is a // valid signature from a key in the trusted keyring. We @@@ -1088,13 -1018,14 +1071,13 @@@ QueueIndexes(true); // Done, move signature file into position - string VerifiedSigFile = _config->FindDir("Dir::State::lists") + URItoFileName(RealURI) + ".gpg"; Rename(SigFile,VerifiedSigFile); chmod(VerifiedSigFile.c_str(),0644); } - - void pkgAcqMetaIndex::QueueIndexes(bool verify) + /*}}}*/ + void pkgAcqMetaIndex::QueueIndexes(bool verify) /*{{{*/ { for (vector ::const_iterator Target = IndexTargets->begin(); Target != IndexTargets->end(); @@@ -1128,7 -1059,7 +1111,7 @@@ // Queue Packages file (either diff or full packages files, depending // on the users option) - if(_config->FindB("Acquire::PDiffs",true) == true) + if(_config->FindB("Acquire::PDiffs",false) == true) new pkgAcqDiffIndex(Owner, (*Target)->URI, (*Target)->Description, (*Target)->ShortDesc, ExpectedIndexHash); else @@@ -1136,8 -1067,8 +1119,8 @@@ (*Target)->ShortDesc, ExpectedIndexHash); } } - - bool pkgAcqMetaIndex::VerifyVendor(string Message) + /*}}}*/ + bool pkgAcqMetaIndex::VerifyVendor(string Message) /*{{{*/ { // // Maybe this should be made available from above so we don't have // // to read and parse it every time? @@@ -1223,48 -1154,45 +1206,45 @@@ return true; } - /*}}}*/ - // pkgAcqMetaIndex::Failed - no Release file present or no signature - // file present /*{{{*/ + /*}}}*/ + // pkgAcqMetaIndex::Failed - no Release file present or no signature file present /*{{{*/ // --------------------------------------------------------------------- /* */ void pkgAcqMetaIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) { if (AuthPass == true) { - // if we fail the authentication but got the file via a IMS-Hit - // this means that the file wasn't downloaded and that it might be - // just stale (server problem, proxy etc). we delete what we have - // queue it again without i-m-s - // alternatively we could just unlink the file and let the user try again - if (IMSHit) + // gpgv method failed, if we have a good signature + string LastGoodSigFile = _config->FindDir("Dir::State::lists") + + "partial/" + URItoFileName(RealURI) + ".gpg.reverify"; + if(FileExists(LastGoodSigFile)) { - Complete = false; - Local = false; - AuthPass = false; - unlink(DestFile.c_str()); - - DestFile = _config->FindDir("Dir::State::lists") + "partial/"; - DestFile += URItoFileName(RealURI); - Desc.URI = RealURI; - QueueURI(Desc); + string VerifiedSigFile = _config->FindDir("Dir::State::lists") + + URItoFileName(RealURI) + ".gpg"; + Rename(LastGoodSigFile,VerifiedSigFile); + Status = StatTransientNetworkError; + _error->Warning(_("A error occurred during the signature " + "verification. The repository is not updated " + "and the previous index files will be used." + "GPG error: %s: %s\n"), + Desc.Description.c_str(), + LookupTag(Message,"Message").c_str()); + RunScripts("APT::Update::Auth-Failure"); return; + } else { + _error->Warning(_("GPG error: %s: %s"), + Desc.Description.c_str(), + LookupTag(Message,"Message").c_str()); } - // gpgv method failed - _error->Warning("GPG error: %s: %s", - Desc.Description.c_str(), - LookupTag(Message,"Message").c_str()); - + ReportMirrorFailure("GPGFailure"); } // No Release file was present, or verification failed, so fall // back to queueing Packages files without verification QueueIndexes(false); } - /*}}}*/ - // AcqArchive::AcqArchive - Constructor /*{{{*/ // --------------------------------------------------------------------- /* This just sets up the initial fetch environment and queues the first @@@ -1547,14 -1475,13 +1527,13 @@@ void pkgAcqArchive::Failed(string Messa } } /*}}}*/ - // AcqArchive::IsTrusted - Determine whether this archive comes from a - // trusted source /*{{{*/ + // AcqArchive::IsTrusted - Determine whether this archive comes from a trusted source /*{{{*/ // --------------------------------------------------------------------- bool pkgAcqArchive::IsTrusted() { return Trusted; } - + /*}}}*/ // AcqArchive::Finished - Fetching has finished, tidy up /*{{{*/ // --------------------------------------------------------------------- /* */ @@@ -1566,7 -1493,6 +1545,6 @@@ void pkgAcqArchive::Finished( StoreFilename = string(); } /*}}}*/ - // AcqFile::pkgAcqFile - Constructor /*{{{*/ // --------------------------------------------------------------------- /* The file is added to the queue */ diff --combined apt-pkg/acquire-item.h index af0b2d888,36a926a0f..de657ecc4 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@@ -34,7 -34,7 +34,7 @@@ * \file acquire-item.h */ - /** \brief Represents the process by which a pkgAcquire object should + /** \brief Represents the process by which a pkgAcquire object should {{{ * retrieve a file or a collection of files. * * By convention, Item subclasses should insert themselves into the @@@ -142,7 -142,6 +142,7 @@@ class pkgAcquire::Ite * download progress indicator's overall statistics. */ bool Local; + string UsedMirror; /** \brief The number of fetch queues into which this item has been * inserted. @@@ -243,17 -242,6 +243,17 @@@ /** \return \b true if this object is being fetched from a trusted source. */ virtual bool IsTrusted() {return false;}; + + // report mirror problems + /** \brief Report mirror problem + * + * This allows reporting mirror failures back to a centralized + * server. The apt-report-mirror-failure script is called for this + * + * \param FailCode A short failure string that is send + */ + void ReportMirrorFailure(string FailCode); + /** \brief Initialize an item. * @@@ -273,8 -261,8 +273,8 @@@ */ virtual ~Item(); }; - - /** \brief Information about an index patch (aka diff). */ + /*}}}*/ + /** \brief Information about an index patch (aka diff). */ /*{{{*/ struct DiffInfo { /** The filename of the diff. */ string file; @@@ -285,8 -273,8 +285,8 @@@ /** The size of the diff. */ unsigned long size; }; - - /** \brief An item that is responsible for fetching an index file of + /*}}}*/ + /** \brief An item that is responsible for fetching an index file of {{{ * package list diffs and starting the package list's download. * * This item downloads the Index file and parses it, then enqueues @@@ -360,8 -348,8 +360,8 @@@ class pkgAcqDiffIndex : public pkgAcqui pkgAcqDiffIndex(pkgAcquire *Owner,string URI,string URIDesc, string ShortDesc, HashString ExpectedHash); }; - - /** \brief An item that is responsible for fetching all the patches + /*}}}*/ + /** \brief An item that is responsible for fetching all the patches {{{ * that need to be applied to a given package index file. * * After downloading and applying a single patch, this item will @@@ -489,8 -477,8 +489,8 @@@ class pkgAcqIndexDiffs : public pkgAcqu string ShortDesc, HashString ExpectedHash, vector diffs=vector()); }; - - /** \brief An acquire item that is responsible for fetching an index + /*}}}*/ + /** \brief An acquire item that is responsible for fetching an index {{{ * file (e.g., Packages or Sources). * * \sa pkgAcqDiffIndex, pkgAcqIndexDiffs, pkgAcqIndexTrans @@@ -555,11 -543,10 +555,11 @@@ class pkgAcqIndex : public pkgAcquire:: * (".bz2" is used if bzip2 is installed, ".gz" otherwise). */ pkgAcqIndex(pkgAcquire *Owner,string URI,string URIDesc, - string ShortDesc, HashString ExpectedHash, string compressExt=""); + string ShortDesc, HashString ExpectedHash, + string compressExt=""); }; - - /** \brief An acquire item that is responsible for fetching a + /*}}}*/ + /** \brief An acquire item that is responsible for fetching a {{{ * translated index file. * * The only difference from pkgAcqIndex is that transient failures @@@ -592,8 -579,8 +592,8 @@@ class pkgAcqIndexTrans : public pkgAcqI pkgAcqIndexTrans(pkgAcquire *Owner,string URI,string URIDesc, string ShortDesc); }; - - /** \brief Information about an index file. */ + /*}}}*/ + /** \brief Information about an index file. */ /*{{{*/ struct IndexTarget { /** \brief A URI from which the index file can be downloaded. */ @@@ -610,8 -597,8 +610,8 @@@ */ string MetaKey; }; - - /** \brief An acquire item that downloads the detached signature + /*}}}*/ + /** \brief An acquire item that downloads the detached signature {{{ * of a meta-index (Release) file, then queues up the release * file itself. * @@@ -625,6 -612,7 +625,6 @@@ class pkgAcqMetaSig : public pkgAcquire /** \brief The last good signature file */ string LastGoodSig; - /** \brief The fetch request that is currently being processed. */ pkgAcquire::ItemDesc Desc; @@@ -672,8 -660,8 +672,8 @@@ const vector* IndexTargets, indexRecords* MetaIndexParser); }; - - /** \brief An item that is responsible for downloading the meta-index + /*}}}*/ + /** \brief An item that is responsible for downloading the meta-index {{{ * file (i.e., Release) itself and verifying its signature. * * Once the download and verification are complete, the downloads of @@@ -768,8 -756,8 +768,8 @@@ class pkgAcqMetaIndex : public pkgAcqui const vector* IndexTargets, indexRecords* MetaIndexParser); }; - - /** \brief An item that is responsible for fetching a package file. + /*}}}*/ + /** \brief An item that is responsible for fetching a package file. {{{ * * If the package file already exists in the cache, nothing will be * done. @@@ -852,8 -840,8 +852,8 @@@ class pkgAcqArchive : public pkgAcquire pkgRecords *Recs,pkgCache::VerIterator const &Version, string &StoreFilename); }; - - /** \brief Retrieve an arbitrary file to the current directory. + /*}}}*/ + /** \brief Retrieve an arbitrary file to the current directory. {{{ * * The file is retrieved even if it is accessed via a URL type that * normally is a NOP, such as "file". If the download fails, the @@@ -914,7 -902,7 +914,7 @@@ class pkgAcqFile : public pkgAcquire::I string Desc, string ShortDesc, const string &DestDir="", const string &DestFilename=""); }; - + /*}}}*/ /** @} */ #endif diff --combined apt-pkg/acquire-method.cc index 150fbb77b,fe066741c..3008c8d1a --- a/apt-pkg/acquire-method.cc +++ b/apt-pkg/acquire-method.cc @@@ -96,11 -96,12 +96,11 @@@ void pkgAcqMethod::Fail(string Err,boo } char S[1024]; + char *End = S; if (Queue != 0) { - snprintf(S,sizeof(S)-50,"400 URI Failure\nURI: %s\n" - "Message: %s %s\n",Queue->Uri.c_str(),Err.c_str(), - FailExtra.c_str()); - + End += snprintf(S,sizeof(S)-50,"400 URI Failure\nURI: %s\n" + "Message: %s %s\n",Queue->Uri.c_str(), Err.c_str(), IP.c_str()); // Dequeue FetchItem *Tmp = Queue; Queue = Queue->Next; @@@ -109,14 -110,10 +109,14 @@@ QueueBack = Queue; } else - snprintf(S,sizeof(S)-50,"400 URI Failure\nURI: \n" - "Message: %s %s\n",Err.c_str(), - FailExtra.c_str()); - + { + End += snprintf(S,sizeof(S)-50,"400 URI Failure\nURI: \n" + "Message: %s\n",Err.c_str()); + } + if(FailReason.empty() == false) + End += snprintf(End,sizeof(S)-50 - (End - S),"FailReason: %s\n",FailReason.c_str()); + if (UsedMirror.empty() == false) + End += snprintf(End,sizeof(S)-50 - (End - S),"UsedMirror: %s\n",UsedMirror.c_str()); // Set the transient flag if (Transient == true) strcat(S,"Transient-Failure: true\n\n"); @@@ -187,8 -184,6 +187,8 @@@ void pkgAcqMethod::URIDone(FetchResult End += snprintf(End,sizeof(S)-50 - (End - S),"SHA1-Hash: %s\n",Res.SHA1Sum.c_str()); if (Res.SHA256Sum.empty() == false) End += snprintf(End,sizeof(S)-50 - (End - S),"SHA256-Hash: %s\n",Res.SHA256Sum.c_str()); + if (UsedMirror.empty() == false) + End += snprintf(End,sizeof(S)-50 - (End - S),"UsedMirror: %s\n",UsedMirror.c_str()); if (Res.GPGVOutput.size() > 0) End += snprintf(End,sizeof(S)-50 - (End - S),"GPGVOutput:\n"); for (vector::iterator I = Res.GPGVOutput.begin(); @@@ -451,7 -446,6 +451,6 @@@ void pkgAcqMethod::Status(const char *F exit(100); } /*}}}*/ - // AcqMethod::Redirect - Send a redirect message /*{{{*/ // --------------------------------------------------------------------- /* This method sends the redirect message and also manipulates the queue @@@ -483,7 -477,6 +482,6 @@@ void pkgAcqMethod::Redirect(const strin QueueBack = I->Next; } /*}}}*/ - // AcqMethod::FetchResult::FetchResult - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ diff --combined apt-pkg/algorithms.cc index 8bd98a620,34da745de..a3963d546 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@@ -442,7 -442,6 +442,6 @@@ bool pkgMinimizeUpgrade(pkgDepCache &Ca return true; } /*}}}*/ - // ProblemResolver::pkgProblemResolver - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ @@@ -489,6 -488,36 +488,36 @@@ void pkgProblemResolver::MakeScores( unsigned long Size = Cache.Head().PackageCount; memset(Scores,0,sizeof(*Scores)*Size); + // Important Required Standard Optional Extra + signed short PrioMap[] = { + 0, + _config->FindI("pkgProblemResolver::Scores::Important",3), + _config->FindI("pkgProblemResolver::Scores::Required",2), + _config->FindI("pkgProblemResolver::Scores::Standard",1), + _config->FindI("pkgProblemResolver::Scores::Optional",-1), + _config->FindI("pkgProblemResolver::Scores::Extra",-2) + }; + signed short PrioEssentials = _config->FindI("pkgProblemResolver::Scores::Essentials",100); + signed short PrioInstalledAndNotObsolete = _config->FindI("pkgProblemResolver::Scores::NotObsolete",1); + signed short PrioDepends = _config->FindI("pkgProblemResolver::Scores::Depends",1); + signed short PrioRecommends = _config->FindI("pkgProblemResolver::Scores::Recommends",1); + signed short AddProtected = _config->FindI("pkgProblemResolver::Scores::AddProtected",10000); + signed short AddEssential = _config->FindI("pkgProblemResolver::Scores::AddEssential",5000); + + if (_config->FindB("Debug::pkgProblemResolver::ShowScores",false) == true) + clog << "Settings used to calculate pkgProblemResolver::Scores::" << endl + << " Important => " << PrioMap[1] << endl + << " Required => " << PrioMap[2] << endl + << " Standard => " << PrioMap[3] << endl + << " Optional => " << PrioMap[4] << endl + << " Extra => " << PrioMap[5] << endl + << " Essentials => " << PrioEssentials << endl + << " InstalledAndNotObsolete => " << PrioInstalledAndNotObsolete << endl + << " Depends => " << PrioDepends << endl + << " Recommends => " << PrioRecommends << endl + << " AddProtected => " << AddProtected << endl + << " AddEssential => " << AddEssential << endl; + // Generate the base scores for a package based on its properties for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; I++) { @@@ -502,11 -531,9 +531,9 @@@ to allow an obsolete essential packages to be removed by a conflicts on a powerfull normal package (ie libc6) */ if ((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) - Score += 100; + Score += PrioEssentials; // We transform the priority - // Important Required Standard Optional Extra - signed short PrioMap[] = {0,3,2,1,-1,-2}; if (Cache[I].InstVerIter(Cache)->Priority <= 5) Score += PrioMap[Cache[I].InstVerIter(Cache)->Priority]; @@@ -515,7 -542,7 +542,7 @@@ if those are not obsolete */ if (I->CurrentVer != 0 && Cache[I].CandidateVer != 0 && Cache[I].CandidateVerIter(Cache).Downloadable()) - Score += 1; + Score += PrioInstalledAndNotObsolete; } // Now that we have the base scores we go and propogate dependencies @@@ -526,8 -553,11 +553,11 @@@ for (pkgCache::DepIterator D = Cache[I].InstVerIter(Cache).DependsList(); D.end() == false; D++) { - if (D->Type == pkgCache::Dep::Depends || D->Type == pkgCache::Dep::PreDepends) - Scores[D.TargetPkg()->ID]++; + if (D->Type == pkgCache::Dep::Depends || + D->Type == pkgCache::Dep::PreDepends) + Scores[D.TargetPkg()->ID] += PrioDepends; + else if (D->Type == pkgCache::Dep::Recommends) + Scores[D.TargetPkg()->ID] += PrioRecommends; } } @@@ -547,7 -577,9 +577,9 @@@ { // Only do it for the install version if ((pkgCache::Version *)D.ParentVer() != Cache[D.ParentPkg()].InstallVer || - (D->Type != pkgCache::Dep::Depends && D->Type != pkgCache::Dep::PreDepends)) + (D->Type != pkgCache::Dep::Depends && + D->Type != pkgCache::Dep::PreDepends && + D->Type != pkgCache::Dep::Recommends)) continue; Scores[I->ID] += abs(OldScores[D.ParentPkg()->ID]); @@@ -572,10 -604,10 +604,10 @@@ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; I++) { if ((Flags[I->ID] & Protected) != 0) - Scores[I->ID] += 10000; + Scores[I->ID] += AddProtected; if ((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) - Scores[I->ID] += 5000; - } + Scores[I->ID] += AddEssential; + } } /*}}}*/ // ProblemResolver::DoUpgrade - Attempt to upgrade this package /*{{{*/ @@@ -751,19 -783,21 +783,21 @@@ bool pkgProblemResolver::Resolve(bool B *PEnd++ = I; This = this; qsort(PList,PEnd - PList,sizeof(*PList),&ScoreSort); - - /* for (pkgCache::Package **K = PList; K != PEnd; K++) - if (Scores[(*K)->ID] != 0) - { - pkgCache::PkgIterator Pkg(Cache,*K); - clog << Scores[(*K)->ID] << ' ' << Pkg.Name() << - ' ' << (pkgCache::Version *)Pkg.CurrentVer() << ' ' << - Cache[Pkg].InstallVer << ' ' << Cache[Pkg].CandidateVer << endl; - } */ + + if (_config->FindB("Debug::pkgProblemResolver::ShowScores",false) == true) + { + clog << "Show Scores" << endl; + for (pkgCache::Package **K = PList; K != PEnd; K++) + if (Scores[(*K)->ID] != 0) + { + pkgCache::PkgIterator Pkg(Cache,*K); + clog << Scores[(*K)->ID] << ' ' << Pkg << std::endl; + } + } if (Debug == true) clog << "Starting 2" << endl; - + /* Now consider all broken packages. For each broken package we either remove the package or fix it's problem. We do this once, it should not be possible for a loop to form (that is a < b < c and fixing b by @@@ -878,7 -912,7 +912,7 @@@ } if (Debug == true) - clog << "Package " << I.Name() << " has broken dep on " << Start.TargetPkg().Name() << endl; + clog << "Package " << I.Name() << " has broken " << Start.DepType() << " on " << Start.TargetPkg().Name() << endl; /* Look across the version list. If there are no possible targets then we keep the package and bail. This is necessary @@@ -960,12 -994,9 +994,9 @@@ if (Debug == true) clog << " Removing " << I.Name() << " rather than change " << Start.TargetPkg().Name() << endl; Cache.MarkDelete(I); - if (Counter > 1) - { - if (Scores[Pkg->ID] > Scores[I->ID]) - Scores[I->ID] = Scores[Pkg->ID]; - } - } + if (Counter > 1 && Scores[Pkg->ID] > Scores[I->ID]) + Scores[I->ID] = Scores[Pkg->ID]; + } } } @@@ -1109,7 -1140,8 +1140,7 @@@ return _error->Error(_("Unable to correct problems, you have held broken packages.")); } - // set the auto-flags (mvo: I'm not sure if we _really_ need this, but - // I didn't managed + // set the auto-flags (mvo: I'm not sure if we _really_ need this) pkgCache::PkgIterator I = Cache.PkgBegin(); for (;I.end() != true; I++) { if (Cache[I].NewInstall() && !(Flags[I->ID] & PreInstalled)) { @@@ -1136,9 -1168,6 +1167,6 @@@ bool pkgProblemResolver::ResolveByKeep( unsigned long Size = Cache.Head().PackageCount; - if (Debug == true) - clog << "Entering ResolveByKeep" << endl; - MakeScores(); /* We have to order the packages so that the broken fixing pass @@@ -1151,7 -1180,21 +1179,21 @@@ *PEnd++ = I; This = this; qsort(PList,PEnd - PList,sizeof(*PList),&ScoreSort); - + + if (_config->FindB("Debug::pkgProblemResolver::ShowScores",false) == true) + { + clog << "Show Scores" << endl; + for (pkgCache::Package **K = PList; K != PEnd; K++) + if (Scores[(*K)->ID] != 0) + { + pkgCache::PkgIterator Pkg(Cache,*K); + clog << Scores[(*K)->ID] << ' ' << Pkg << std::endl; + } + } + + if (Debug == true) + clog << "Entering ResolveByKeep" << endl; + // Consider each broken package pkgCache::Package **LastStop = 0; for (pkgCache::Package **K = PList; K != PEnd; K++) @@@ -1197,8 -1240,8 +1239,8 @@@ while (true) { if (Debug == true) - clog << "Package " << I.Name() << " has broken dep on " << Start.TargetPkg().Name() << endl; - + clog << "Package " << I.Name() << " has broken " << Start.DepType() << " on " << Start.TargetPkg().Name() << endl; + // Look at all the possible provides on this package SPtrArray VList = Start.AllTargets(); for (pkgCache::Version **V = VList; *V != 0; V++) @@@ -1214,7 -1257,7 +1256,7 @@@ if ((Flags[I->ID] & Protected) == 0) { if (Debug == true) - clog << " Keeping Package " << Pkg.Name() << " due to dep" << endl; + clog << " Keeping Package " << Pkg.Name() << " due to " << Start.DepType() << endl; Cache.MarkKeep(Pkg, false, false); } @@@ -1271,7 -1314,6 +1313,6 @@@ void pkgProblemResolver::InstallProtect } } /*}}}*/ - // PrioSortList - Sort a list of versions by priority /*{{{*/ // --------------------------------------------------------------------- /* This is ment to be used in conjunction with AllTargets to get a list @@@ -1302,7 -1344,6 +1343,6 @@@ void pkgPrioSortList(pkgCache &Cache,pk qsort(List,Count,sizeof(*List),PrioComp); } /*}}}*/ - // CacheFile::ListUpdate - update the cache files /*{{{*/ // --------------------------------------------------------------------- /* This is a simple wrapper to update the cache. it will fetch stuff diff --combined apt-pkg/deb/dpkgpm.cc index b41b38bd5,f787f365e..4403eaefe --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@@ -12,7 -12,6 +12,7 @@@ #include #include #include +#include #include #include #include @@@ -25,7 -24,6 +25,7 @@@ #include #include #include +#include #include #include #include @@@ -76,12 -74,37 +76,37 @@@ namespac }; } + /* helper function to ionice the given PID + + there is no C header for ionice yet - just the syscall interface + so we use the binary from util-linux + */ + static bool + ionice(int PID) + { + if (!FileExists("/usr/bin/ionice")) + return false; + pid_t Process = ExecFork(); + if (Process == 0) + { + char buf[32]; + snprintf(buf, sizeof(buf), "-p%d", PID); + const char *Args[4]; + Args[0] = "/usr/bin/ionice"; + Args[1] = "-c3"; + Args[2] = buf; + Args[3] = 0; + execv(Args[0], (char **)Args); + } + return ExecWait(Process, "ionice"); + } + // DPkgPM::pkgDPkgPM - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ pkgDPkgPM::pkgDPkgPM(pkgDepCache *Cache) : pkgPackageManager(Cache), dpkgbuf_pos(0), - term_out(NULL), PackagesDone(0), PackagesTotal(0) + term_out(NULL), PackagesDone(0), PackagesTotal(0), pkgFailures(0) { } /*}}}*/ @@@ -308,6 -331,7 +333,6 @@@ bool pkgDPkgPM::RunScriptsWithPkgs(cons return true; } - /*}}}*/ // DPkgPM::DoStdin - Read stdin and pass to slave pty /*{{{*/ // --------------------------------------------------------------------- @@@ -375,7 -399,7 +400,7 @@@ void pkgDPkgPM::ProcessDpkgStatusLine(i 'processing: trigproc: trigger' */ - char* list[5]; + char* list[6]; // dpkg sends multiline error messages sometimes (see // #374195 for a example. we should support this by // either patching dpkg to not send multiline over the @@@ -423,14 -447,6 +448,14 @@@ if(strncmp(action,"error",strlen("error")) == 0) { + // urgs, sometime has ":" in its error string so that we + // end up with the error message split between list[3] + // and list[4], e.g. the message: + // "failed in buffer_write(fd) (10, ret=-1): backend dpkg-deb ..." + // concat them again + if( list[4] != NULL ) + list[3][strlen(list[3])] = ':'; + status << "pmerror:" << list[1] << ":" << (PackagesDone/float(PackagesTotal)*100.0) << ":" << list[3] @@@ -439,8 -455,6 +464,8 @@@ write(OutStatusFd, status.str().c_str(), status.str().size()); if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true) std::clog << "send: '" << status.str() << "'" << endl; + pkgFailures++; + WriteApportReport(list[1], list[3]); return; } if(strncmp(action,"conffile",strlen("conffile")) == 0) @@@ -626,20 -640,12 +651,12 @@@ bool pkgDPkgPM::Go(int OutStatusFd { {"unpacked",N_("Preparing to configure %s") }, {"half-configured", N_("Configuring %s") }, - #if 0 - {"triggers-awaited", N_("Processing triggers for %s") }, - {"triggers-pending", N_("Processing triggers for %s") }, - #endif { "installed", N_("Installed %s")}, {NULL, NULL} }, // Remove operation { {"half-configured", N_("Preparing for removal of %s")}, - #if 0 - {"triggers-awaited", N_("Preparing for removal of %s")}, - {"triggers-pending", N_("Preparing for removal of %s")}, - #endif {"half-installed", N_("Removing %s")}, {"config-files", N_("Removed %s")}, {NULL, NULL} @@@ -676,10 -682,19 +693,19 @@@ for (vector::iterator I = List.begin(); I != List.end();) { vector::iterator J = I; - for (; J != List.end() && J->Op == I->Op; J++); + for (; J != List.end() && J->Op == I->Op; J++) + /* nothing */; // Generate the argument list const char *Args[MaxArgs + 50]; + + // Now check if we are within the MaxArgs limit + // + // this code below is problematic, because it may happen that + // the argument list is split in a way that A depends on B + // and they are in the same "--configure A B" run + // - with the split they may now be configured in different + // runs if (J - I > (signed)MaxArgs) J = I + MaxArgs; @@@ -825,6 -840,15 +851,15 @@@ // Fork dpkg pid_t Child; _config->Set("APT::Keep-Fds::",fd[1]); + // send status information that we are about to fork dpkg + if(OutStatusFd > 0) { + ostringstream status; + status << "pmstatus:dpkg-exec:" + << (PackagesDone/float(PackagesTotal)*100.0) + << ":" << _("Running dpkg") + << endl; + write(OutStatusFd, status.str().c_str(), status.str().size()); + } Child = ExecFork(); // This is the child @@@ -842,6 -866,15 +877,15 @@@ } close(fd[0]); // close the read end of the pipe + if (_config->FindDir("DPkg::Chroot-Directory","/") != "/") + { + std::cerr << "Chrooting into " + << _config->FindDir("DPkg::Chroot-Directory") + << std::endl; + if (chroot(_config->FindDir("DPkg::Chroot-Directory","/").c_str()) != 0) + _exit(100); + } + if (chdir(_config->FindDir("DPkg::Run-Directory","/").c_str()) != 0) _exit(100); @@@ -861,7 -894,6 +905,6 @@@ _exit(100); } - /* No Job Control Stop Env is a magic dpkg var that prevents it from using sigstop */ putenv((char *)"DPKG_NO_TSTP=yes"); @@@ -870,6 -902,10 +913,10 @@@ _exit(100); } + // apply ionice + if (_config->FindB("DPkg::UseIoNice", false) == true) + ionice(Child); + // clear the Keep-Fd again _config->Clear("APT::Keep-Fds",fd[1]); @@@ -904,6 -940,7 +951,6 @@@ signal(SIGHUP,old_SIGHUP); return _error->Errno("waitpid","Couldn't wait for subprocess"); } - // wait for input or output here FD_ZERO(&rfds); if (!stdin_is_dev_null) @@@ -990,162 -1027,3 +1037,162 @@@ void pkgDPkgPM::Reset( List.erase(List.begin(),List.end()); } /*}}}*/ +// pkgDpkgPM::WriteApportReport - write out error report pkg failure /*{{{*/ +// --------------------------------------------------------------------- +/* */ +void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg) +{ + string pkgname, reportfile, srcpkgname, pkgver, arch; + string::size_type pos; + FILE *report; + + if (_config->FindB("Dpkg::ApportFailureReport",true) == false) + { + std::clog << "configured to not write apport reports" << std::endl; + return; + } + + // only report the first errors + if(pkgFailures > _config->FindI("APT::Apport::MaxReports", 3)) + { + std::clog << _("No apport report written because MaxReports is reached already") << std::endl; + return; + } + + // check if its not a follow up error + const char *needle = dgettext("dpkg", "dependency problems - leaving unconfigured"); + if(strstr(errormsg, needle) != NULL) { + std::clog << _("No apport report written because the error message indicates its a followup error from a previous failure.") << std::endl; + return; + } + + // do not report disk-full failures + if(strstr(errormsg, strerror(ENOSPC)) != NULL) { + std::clog << _("No apport report written because the error message indicates a disk full error") << std::endl; + return; + } + + // do not report out-of-memory failures + if(strstr(errormsg, strerror(ENOMEM)) != NULL) { + std::clog << _("No apport report written because the error message indicates a out of memory error") << std::endl; + return; + } + + // get the pkgname and reportfile + pkgname = flNotDir(pkgpath); + pos = pkgname.find('_'); + if(pos != string::npos) + pkgname = pkgname.substr(0, pos); + + // find the package versin and source package name + pkgCache::PkgIterator Pkg = Cache.FindPkg(pkgname); + if (Pkg.end() == true) + return; + pkgCache::VerIterator Ver = Cache.GetCandidateVer(Pkg); + if (Ver.end() == true) + return; + pkgver = Ver.VerStr() == NULL ? "unknown" : Ver.VerStr(); + pkgRecords Recs(Cache); + pkgRecords::Parser &Parse = Recs.Lookup(Ver.FileList()); + srcpkgname = Parse.SourcePkg(); + if(srcpkgname.empty()) + srcpkgname = pkgname; + + // if the file exists already, we check: + // - if it was reported already (touched by apport). + // If not, we do nothing, otherwise + // we overwrite it. This is the same behaviour as apport + // - if we have a report with the same pkgversion already + // then we skip it + reportfile = flCombine("/var/crash",pkgname+".0.crash"); + if(FileExists(reportfile)) + { + struct stat buf; + char strbuf[255]; + + // check atime/mtime + stat(reportfile.c_str(), &buf); + if(buf.st_mtime > buf.st_atime) + return; + + // check if the existing report is the same version + report = fopen(reportfile.c_str(),"r"); + while(fgets(strbuf, sizeof(strbuf), report) != NULL) + { + if(strstr(strbuf,"Package:") == strbuf) + { + char pkgname[255], version[255]; + if(sscanf(strbuf, "Package: %s %s", pkgname, version) == 2) + if(strcmp(pkgver.c_str(), version) == 0) + { + fclose(report); + return; + } + } + } + fclose(report); + } + + // now write the report + arch = _config->Find("APT::Architecture"); + report = fopen(reportfile.c_str(),"w"); + if(report == NULL) + return; + if(_config->FindB("DPkgPM::InitialReportOnly",false) == true) + chmod(reportfile.c_str(), 0); + else + chmod(reportfile.c_str(), 0600); + fprintf(report, "ProblemType: Package\n"); + fprintf(report, "Architecture: %s\n", arch.c_str()); + time_t now = time(NULL); + fprintf(report, "Date: %s" , ctime(&now)); + fprintf(report, "Package: %s %s\n", pkgname.c_str(), pkgver.c_str()); + fprintf(report, "SourcePackage: %s\n", srcpkgname.c_str()); + fprintf(report, "ErrorMessage:\n %s\n", errormsg); + + // ensure that the log is flushed + if(term_out) + fflush(term_out); + + // attach terminal log it if we have it + string logfile_name = _config->FindFile("Dir::Log::Terminal"); + if (!logfile_name.empty()) + { + FILE *log = NULL; + char buf[1024]; + + fprintf(report, "DpkgTerminalLog:\n"); + log = fopen(logfile_name.c_str(),"r"); + if(log != NULL) + { + while( fgets(buf, sizeof(buf), log) != NULL) + fprintf(report, " %s", buf); + fclose(log); + } + } + + // log the ordering + const char *ops_str[] = {"Install", "Configure","Remove","Purge"}; + fprintf(report, "AptOrdering:\n"); + for (vector::iterator I = List.begin(); I != List.end(); I++) + fprintf(report, " %s: %s\n", (*I).Pkg.Name(), ops_str[(*I).Op]); + + // attach dmesg log (to learn about segfaults) + if (FileExists("/bin/dmesg")) + { + FILE *log = NULL; + char buf[1024]; + + fprintf(report, "Dmesg:\n"); + log = popen("/bin/dmesg","r"); + if(log != NULL) + { + while( fgets(buf, sizeof(buf), log) != NULL) + fprintf(report, " %s", buf); + fclose(log); + } + } + fclose(report); + +} + /*}}}*/ diff --combined apt-pkg/deb/dpkgpm.h index 62d3d893d,ebc7e32bf..1675e9e74 --- a/apt-pkg/deb/dpkgpm.h +++ b/apt-pkg/deb/dpkgpm.h @@@ -31,7 -31,6 +31,7 @@@ class pkgDPkgPM : public pkgPackageMana FILE *term_out; protected: + int pkgFailures; // progress reporting struct DpkgState @@@ -48,12 -47,6 +48,7 @@@ // the int is the state that is already done (e.g. a package that is // going to be install is already in state "half-installed") map PackageOpsDone; + - - #if 1 // FIXME: BINARY COMPATIBILITY ONLY, remove on next ABI break - map PackageProcessingOps; - #endif - // progress reporting unsigned int PackagesDone; unsigned int PackagesTotal; @@@ -74,9 -67,6 +69,9 @@@ bool RunScriptsWithPkgs(const char *Cnf); bool SendV2Pkgs(FILE *F); + // apport integration + void WriteApportReport(const char *pkgpath, const char *errormsg); + // dpkg log bool OpenLog(); bool CloseLog(); diff --combined apt-pkg/init.cc index c0384cd45,63caade36..4e7c2cf87 --- a/apt-pkg/init.cc +++ b/apt-pkg/init.cc @@@ -51,7 -51,6 +51,7 @@@ bool pkgInitConfig(Configuration &Cnf Cnf.Set("Dir::State::lists","lists/"); Cnf.Set("Dir::State::cdroms","cdroms.list"); + Cnf.Set("Dir::State::mirrors","mirrors/"); // Cache Cnf.Set("Dir::Cache","var/cache/apt/"); @@@ -68,12 -67,13 +68,13 @@@ Cnf.Set("Dir::Etc::main","apt.conf"); Cnf.Set("Dir::Etc::parts","apt.conf.d"); Cnf.Set("Dir::Etc::preferences","preferences"); + Cnf.Set("Dir::Etc::preferencesparts","preferences.d"); Cnf.Set("Dir::Bin::methods","/usr/lib/apt/methods"); // State Cnf.Set("Dir::Log","var/log/apt"); Cnf.Set("Dir::Log::Terminal","term.log"); - + // Translation Cnf.Set("APT::Acquire::Translation", "environment"); @@@ -81,19 -81,26 +82,26 @@@ // Read an alternate config file const char *Cfg = getenv("APT_CONFIG"); - if (Cfg != 0 && FileExists(Cfg) == true) - Res &= ReadConfigFile(Cnf,Cfg); - + if (Cfg != 0) + { + if (FileExists(Cfg) == true) + Res &= ReadConfigFile(Cnf,Cfg); + else + _error->WarningE("FileExists",_("Unable to read %s"),Cfg); + } + // Read the configuration parts dir string Parts = Cnf.FindDir("Dir::Etc::parts"); if (FileExists(Parts) == true) Res &= ReadConfigDir(Cnf,Parts); - + else + _error->WarningE("FileExists",_("Unable to read %s"),Parts.c_str()); + // Read the main config file string FName = Cnf.FindFile("Dir::Etc::main"); if (FileExists(FName) == true) Res &= ReadConfigFile(Cnf,FName); - + if (Res == false) return false; diff --combined apt-pkg/tagfile.cc index 0ae6950f3,7c5d15a58..1c41f1265 --- a/apt-pkg/tagfile.cc +++ b/apt-pkg/tagfile.cc @@@ -81,7 -81,7 +81,7 @@@ bool pkgTagFile::Resize( End = Start + EndSize; return true; } - + /*}}}*/ // TagFile::Step - Advance to the next section /*{{{*/ // --------------------------------------------------------------------- /* If the Section Scanner fails we refill the buffer and try again. @@@ -212,10 -212,12 +212,12 @@@ bool pkgTagSection::Scan(const char *St if (Stop == 0) return false; - + TagCount = 0; while (TagCount+1 < sizeof(Indexes)/sizeof(Indexes[0]) && Stop < End) { + TrimRecord(true,End); + // Start a new index and add it to the hash if (isspace(Stop[0]) == 0) { @@@ -227,14 -229,14 +229,14 @@@ if (Stop == 0) return false; - + for (; Stop+1 < End && Stop[1] == '\r'; Stop++); // Double newline marks the end of the record if (Stop+1 < End && Stop[1] == '\n') { Indexes[TagCount] = Stop - Section; - for (; Stop < End && (Stop[0] == '\n' || Stop[0] == '\r'); Stop++); + TrimRecord(false,End); return true; } @@@ -244,6 -246,16 +246,16 @@@ return false; } /*}}}*/ + // TagSection::TrimRecord - Trim off any garbage before/after a record /*{{{*/ + // --------------------------------------------------------------------- + /* There should be exactly 2 newline at the end of the record, no more. */ + void pkgTagSection::TrimRecord(bool BeforeRecord, const char*& End) + { + if (BeforeRecord == true) + return; + for (; Stop < End && (Stop[0] == '\n' || Stop[0] == '\r'); Stop++); + } + /*}}}*/ // TagSection::Trim - Trim off any trailing garbage /*{{{*/ // --------------------------------------------------------------------- /* There should be exactly 1 newline at the end of the buffer, no more. */ @@@ -390,7 -402,6 +402,6 @@@ bool pkgTagSection::FindFlag(const cha return true; } /*}}}*/ - // TFRewrite - Rewrite a control record /*{{{*/ // --------------------------------------------------------------------- /* This writes the control record to stdout rewriting it as necessary. The @@@ -407,7 -418,6 +418,7 @@@ static const char *iTFRewritePackageOrd "Section", "Installed-Size", "Maintainer", + "Original-Maintainer", "Architecture", "Source", "Version", @@@ -437,7 -447,6 +448,7 @@@ static const char *iTFRewriteSourceOrde "Priority", "Section", "Maintainer", + "Original-Maintainer", "Build-Depends", "Build-Depends-Indep", "Build-Conflicts", diff --combined cmdline/apt-cache.cc index 425df6994,0e950310b..fcfc67ea1 --- a/cmdline/apt-cache.cc +++ b/cmdline/apt-cache.cc @@@ -399,7 -399,7 +399,7 @@@ bool DumpAvail(CommandLine &Cmd pkgCache &Cache = *GCache; pkgPolicy Plcy(&Cache); - if (ReadPinFile(Plcy) == false) + if (ReadPinFile(Plcy) == false || ReadPinDir(Plcy) == false) return false; unsigned long Count = Cache.HeaderP->PackageCount+1; @@@ -626,7 -626,7 +626,7 @@@ bool Depends(CommandLine &CmdL return true; } - + /*}}}*/ // RDepends - Print out a reverse dependency tree - mbc /*{{{*/ // --------------------------------------------------------------------- /* */ @@@ -714,10 -714,7 +714,7 @@@ bool RDepends(CommandLine &CmdL return true; } - /*}}}*/ - - // xvcg - Generate a graph for xvcg /*{{{*/ // --------------------------------------------------------------------- // Code contributed from Junichi Uekawa on 20 June 2002. @@@ -937,8 -934,6 +934,6 @@@ bool XVcg(CommandLine &CmdL return true; } /*}}}*/ - - // Dotty - Generate a graph for Dotty /*{{{*/ // --------------------------------------------------------------------- /* Dotty is the graphvis program for generating graphs. It is a fairly @@@ -1274,15 -1269,16 +1269,18 @@@ bool DisplayRecord(pkgCache::VerIterato return true; } /*}}}*/ - +// Search - Perform a search /*{{{*/ +// --------------------------------------------------------------------- +/* This searches the package names and package descriptions for a pattern */ struct ExDescFile { pkgCache::DescFile *Df; bool NameMatch; }; + // Search - Perform a search /*{{{*/ + // --------------------------------------------------------------------- + /* This searches the package names and package descriptions for a pattern */ bool Search(CommandLine &CmdL) { pkgCache &Cache = *GCache; @@@ -1519,7 -1515,7 +1517,7 @@@ bool Policy(CommandLine &CmdL pkgCache &Cache = *GCache; pkgPolicy Plcy(&Cache); - if (ReadPinFile(Plcy) == false) + if (ReadPinFile(Plcy) == false || ReadPinDir(Plcy) == false) return false; // Print out all of the package files @@@ -1696,7 -1692,6 +1694,6 @@@ bool Madison(CommandLine &CmdL return true; } - /*}}}*/ // GenCaches - Call the main cache generator /*{{{*/ // --------------------------------------------------------------------- @@@ -1770,8 -1765,7 +1767,7 @@@ void CacheInitialize( _config->Set("help",false); } /*}}}*/ - - int main(int argc,const char *argv[]) + int main(int argc,const char *argv[]) /*{{{*/ { CommandLine::Args Args[] = { {'h',"help","help",0}, @@@ -1878,3 -1872,4 +1874,4 @@@ return 0; } + /*}}}*/ diff --combined cmdline/apt-get.cc index adb1c9214,2ca0855b6..04f3944a9 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@@ -111,6 -111,9 +111,9 @@@ class CacheFile : public pkgCacheFil return Open(true); } CacheFile() : List(0) {}; + ~CacheFile() { + delete[] List; + } }; /*}}}*/ @@@ -594,7 -597,6 +597,6 @@@ void Stats(ostream &out,pkgDepCache &De Dep.BadCount()); } /*}}}*/ - // CacheFile::NameComp - QSort compare by name /*{{{*/ // --------------------------------------------------------------------- /* */ @@@ -687,7 -689,10 +689,10 @@@ bool CacheFile::CheckDeps(bool AllowBro return true; } - + /*}}}*/ + // CheckAuth - check if each download comes form a trusted source /*{{{*/ + // --------------------------------------------------------------------- + /* */ static bool CheckAuth(pkgAcquire& Fetcher) { string UntrustedList; @@@ -728,10 -733,7 +733,7 @@@ return _error->Error(_("There are problems and -y was used without --force-yes")); } - - /*}}}*/ - // InstallPackages - Actually download and install the packages /*{{{*/ // --------------------------------------------------------------------- /* This displays the informative messages describing what is going to @@@ -1301,6 -1303,7 +1303,7 @@@ pkgSrcRecords::Parser *FindSrc(const ch while ((Parse = SrcRecs.Find(Src.c_str(), MatchSrcOnly)) != 0) { string Ver = Parse->Version(); + // show name mismatches if (IsMatch == true && Parse->Package() != Src) ioprintf(c1out, _("No source package '%s' picking '%s' instead\n"), Parse->Package().c_str(), Src.c_str()); @@@ -1334,7 -1337,6 +1337,6 @@@ return Last; } /*}}}*/ - // DoUpdate - Update the package lists /*{{{*/ // --------------------------------------------------------------------- /* */ @@@ -1456,7 -1458,7 +1458,7 @@@ bool DoAutomaticRemove(CacheFile &Cache } return true; } - + /*}}}*/ // DoUpgrade - Upgrade all packages /*{{{*/ // --------------------------------------------------------------------- /* Upgrade all packages without installing new packages or erasing old @@@ -1531,7 -1533,7 +1533,7 @@@ bool TryInstallTask(pkgDepCache &Cache regfree(&Pattern); return res; } - + /*}}}*/ // DoInstall - Install packages from the command line /*{{{*/ // --------------------------------------------------------------------- /* Install named packages */ @@@ -1869,7 -1871,8 +1871,8 @@@ bool DoInstall(CommandLine &CmdL // cache.commit() if (AutoMarkChanged > 0 && Cache->DelCount() == 0 && Cache->InstCount() == 0 && - Cache->BadCount() == 0) + Cache->BadCount() == 0 && + _config->FindB("APT::Get::Simulate",false) == false) Cache->writeStateFile(NULL); // See if we need to prompt @@@ -2103,33 -2106,6 +2106,33 @@@ bool DoSource(CommandLine &CmdL if (Last == 0) return _error->Error(_("Unable to find a source package for %s"),Src.c_str()); + string srec = Last->AsStr(); + string::size_type pos = srec.find("\nVcs-"); + while (pos != string::npos) + { + pos += strlen("\nVcs-"); + string vcs = srec.substr(pos,srec.find(":",pos)-pos); + if(vcs == "Browser") + { + pos = srec.find("\nVcs-", pos); + continue; + } + pos += vcs.length()+2; + string::size_type epos = srec.find("\n", pos); + string uri = srec.substr(pos,epos-pos).c_str(); + ioprintf(c1out, _("NOTICE: '%s' packaging is maintained in " + "the '%s' version control system at:\n" + "%s\n"), + Src.c_str(), vcs.c_str(), uri.c_str()); + if(vcs == "Bzr") + ioprintf(c1out,_("Please use:\n" + "bzr get %s\n" + "to retrieve the latest (possible unreleased) " + "updates to the package.\n"), + uri.c_str()); + break; + } + // Back track vector Lst; if (Last->Files(Lst) == false) @@@ -2724,8 -2700,7 +2727,7 @@@ void SigWinch(int #endif } /*}}}*/ - - int main(int argc,const char *argv[]) + int main(int argc,const char *argv[]) /*{{{*/ { CommandLine::Args Args[] = { {'h',"help","help",0}, @@@ -2777,6 -2752,7 +2779,6 @@@ {"remove",&DoInstall}, {"purge",&DoInstall}, {"autoremove",&DoInstall}, - {"purge",&DoInstall}, {"dist-upgrade",&DoDistUpgrade}, {"dselect-upgrade",&DoDSelectUpgrade}, {"build-dep",&DoBuildDep}, @@@ -2813,7 -2789,19 +2815,19 @@@ ShowHelp(CmdL); return 0; } - + + // simulate user-friendly if apt-get has no root privileges + if (getuid() != 0 && _config->FindB("APT::Get::Simulate") == true) + { + if (_config->FindB("APT::Get::Show-User-Simulation-Note",true) == true) + cout << _("NOTE: This is only a simulation!\n" + " apt-get needs root privileges for real execution.\n" + " Keep also in mind that locking is deactivated,\n" + " so don't depend on the relevance to the real current situation!" + ) << std::endl; + _config->Set("Debug::NoLocking",true); + } + // Deal with stdout not being a tty if (!isatty(STDOUT_FILENO) && _config->FindI("quiet",0) < 1) _config->Set("quiet","1"); @@@ -2845,3 -2833,4 +2859,4 @@@ return 0; } + /*}}}*/ diff --combined debian/apt.cron.daily index 3c440307c,4f47ccfab..980bfbb9d --- a/debian/apt.cron.daily +++ b/debian/apt.cron.daily @@@ -1,40 -1,67 +1,40 @@@ #!/bin/sh +# + #set -e # # This file understands the following apt configuration variables: -# Values here are the default. -# Create /etc/apt/apt.conf.d/02periodic file to set your preference. -# -# Dir "/"; -# - RootDir for all configuration files -# -# Dir::Cache "var/apt/cache/"; -# - Set apt package cache directory -# -# Dir::Cache::Archive "archives/"; -# - Set package archive directory -# -# APT::Periodic::BackupArchiveInterval "0"; -# - Backup after n-days if archive contents changed.(0=disable) -# -# APT::Periodic::BackupLevel "3"; -# - Backup level.(0=disable), 1 is invalid. -# -# Dir::Cache::Backup "backup/"; -# - Set periodic package backup directory -# -# APT::Archives::MaxAge "0"; (old, deprecated) -# APT::Periodic::MaxAge "0"; (new) -# - Set maximum allowed age of a cache package file. If a cache -# package file is older it is deleted (0=disable) -# -# APT::Archives::MinAge "2"; (old, deprecated) -# APT::Periodic::MinAge "2"; (new) -# - Set minimum age of a package file. If a file is younger it -# will not be deleted (0=disable). Usefull to prevent races -# and to keep backups of the packages for emergency. -# -# APT::Archives::MaxSize "0"; (old, deprecated) -# APT::Periodic::MaxSize "0"; (new) -# - Set maximum size of the cache in MB (0=disable). If the cache -# is bigger, cached package files are deleted until the size -# requirement is met (the biggest packages will be deleted -# first). # -# APT::Periodic::Update-Package-Lists "0"; +# "APT::Periodic::Update-Package-Lists=1" # - Do "apt-get update" automatically every n-days (0=disable) # -# APT::Periodic::Download-Upgradeable-Packages "0"; +# "APT::Periodic::Download-Upgradeable-Packages=0", # - Do "apt-get upgrade --download-only" every n-days (0=disable) # -# APT::Periodic::Unattended-Upgrade "0"; +# "APT::Periodic::AutocleanInterval" +# - Do "apt-get autoclean" every n-days (0=disable) +# +# "APT::Periodic::Unattended-Upgrade" # - Run the "unattended-upgrade" security upgrade script # every n-days (0=disabled) # Requires the package "unattended-upgrades" and will write # a log in /var/log/unattended-upgrades # -# APT::Periodic::AutocleanInterval "0"; -# - Do "apt-get autoclean" every n-days (0=disable) +# "APT::Archives::MaxAge", +# - Set maximum allowed age of a cache package file. If a cache +# package file is older it is deleted (0=disable) # -# APT::Periodic::Verbose "0"; -# - Send report mail to root -# 0: no report (or null string) -# 1: progress report (actually any string) -# 2: + command outputs (remove -qq, remove 2>/dev/null, add -d) -# 3: + trace on +# "APT::Archives::MaxSize", +# - Set maximum size of the cache in MB (0=disable). If the cache +# is bigger, cached package files are deleted until the size +# requirement is met (the biggest packages will be deleted +# first). +# +# "APT::Archives::MinAge" +# - Set minimum age of a package file. If a file is younger it +# will not be deleted (0=disable). Usefull to prevent races +# and to keep backups of the packages for emergency. +# check_stamp() { @@@ -42,10 -69,14 +42,14 @@@ interval="$2" if [ $interval -eq 0 ]; then + debug_echo "check_stamp: interval=0" + # treat as no time has passed return 1 fi if [ ! -f $stamp ]; then + debug_echo "check_stamp: missing time stamp file: $stamp." + # treat as enough time has passed return 0 fi @@@ -71,18 -102,17 +75,25 @@@ delta=$(($now-$stamp)) - # intervall is in days, convert to sec. + # intervall is in days, interval=$(($interval*60*60*24)) - debug_echo "check_stamp: interval=$interval, now=$now, stamp=$stamp, delta=$delta (sec)" + #echo "stampfile: $1" + #echo "interval=$interval, now=$now, stamp=$stamp, delta=$delta" + + # remove timestamps a day (or more) in the future and force re-check + if [ $stamp -gt $(($now+86400)) ]; then + echo "WARNING: file $stamp_file has a timestamp in the future: $stamp" + rm -f "$stamp_file" + return 0 + fi + # remove timestamps a day (or more) in the future and force re-check + if [ $stamp -gt $(($now+86400)) ]; then + echo "WARNING: file $stamp_file has a timestamp in the future: $stamp" + rm -f "$stamp_file" + return 0 + fi + if [ $delta -ge $interval ]; then return 0 fi @@@ -93,27 -123,31 +104,32 @@@ update_stamp() { stamp="$1" + touch $stamp } - - # we check here if autoclean was enough sizewise check_size_constraints() { - # min-age in days MaxAge=0 - MinAge=2 - MaxSize=0 - CacheDir="var/cache/apt" - CacheArchive="archives/" eval $(apt-config shell MaxAge APT::Archives::MaxAge) + eval $(apt-config shell MaxAge APT::Periodic::MaxAge) + + MinAge=2 eval $(apt-config shell MinAge APT::Archives::MinAge) + eval $(apt-config shell MinAge APT::Periodic::MinAge) + + MaxSize=0 eval $(apt-config shell MaxSize APT::Archives::MaxSize) - eval $(apt-config shell Dir Dir) + eval $(apt-config shell MaxSize APT::Periodic::MaxSize) + + CacheDir="var/cache/apt/" eval $(apt-config shell CacheDir Dir::Cache) + CacheDir=${CacheDir%/} + + CacheArchive="archives/" eval $(apt-config shell CacheArchive Dir::Cache::archives) + CacheArchive=${CacheArchive%/} # sanity check if [ -z "$CacheDir" -o -z "$CacheArchive" ]; then @@@ -125,9 -159,13 +141,13 @@@ # check age if [ ! $MaxAge -eq 0 ] && [ ! $MinAge -eq 0 ]; then + debug_echo "aged: ctime <$MaxAge and mtime <$MaxAge and ctime>$MinAge and mtime>$MinAge" find $Cache -name "*.deb" \( -mtime +$MaxAge -and -ctime +$MaxAge \) -and -not \( -mtime -$MinAge -or -ctime -$MinAge \) -print0 | xargs -r -0 rm -f elif [ ! $MaxAge -eq 0 ]; then + debug_echo "aged: ctime <$MaxAge and mtime <$MaxAge only" find $Cache -name "*.deb" -ctime +$MaxAge -and -mtime +$MaxAge -print0 | xargs -r -0 rm -f + else + debug_echo "skip aging since MaxAge is 0" fi # check size @@@ -145,11 -183,12 +165,12 @@@ size=${du%%/*} # check if the cache is small enough if [ $size -lt $MaxSize ]; then + debug_echo "end remove by archive size: size=$size < $MaxSize" break fi # check for MinAge of the file - if [ ! $MinAge -eq 0 ]; then + if [ $MinAge -ne 0 ]; then # check both ctime and mtime mtime=$(stat -c %Y $file) ctime=$(stat -c %Z $file) @@@ -158,19 -197,94 +179,94 @@@ else delta=$(($now-$ctime)) fi - #echo "$file ($delta), $MinAge" if [ $delta -le $MinAge ]; then - #echo "Skiping $file (delta=$delta)" + debug_echo "skip remove by archive size: $file, delta=$delta < $MinAgeSec" break + else + # delete oldest file + debug_echo "remove by archive size: $file, delta=$delta >= $MinAgeSec (sec), size=$size >= $MaxSize" + rm -f $file fi fi - - # delete oldest file - rm -f $file done fi } + # deal with the Apt::Periodic::BackupArchiveInterval + do_cache_backup() + { + BackupArchiveInterval="$1" + if [ $BackupArchiveInterval -eq 0 ]; then + return + fi + + # Set default values and normalize + Dir="/" + eval $(apt-config shell Dir Dir) + Dir=${Dir%/} + + CacheDir="var/cache/apt/" + eval $(apt-config shell CacheDir Dir::Cache) + CacheDir=${CacheDir%/} + if [ -z "$CacheDir" ]; then + debug_echo "practically empty Dir::Cache, exiting" + return 0 + fi + + CacheArchive="archives/" + eval $(apt-config shell CacheArchive Dir::Cache::Archives) + CacheArchive=${CacheArchive%/} + if [ -z "$CacheArchive" ]; then + debug_echo "practically empty Dir::Cache::archives, exiting" + return 0 + fi + + BackupLevel=3 + eval $(apt-config shell BackupLevel APT::Periodic::BackupLevel) + if [ $BackupLevel -le 1 ]; then + BackupLevel=2 ; + fi + + CacheBackup="backup/" + eval $(apt-config shell CacheBackup Dir::Cache::Backup) + CacheBackup=${CacheBackup%/} + if [ -z "$CacheBackup" ]; then + echo "practically empty Dir::Cache::Backup, exiting" 1>&2 + return + fi + + Cache="${Dir}/${CacheDir}/${CacheArchive}/" + Back="${Dir}/${CacheDir}/${CacheBackup}/" + BackX="${Back}${CacheArchive}/" + for x in $(seq 0 1 $((${BackupLevel}-1))); do + eval "Back${x}=${Back}${x}/" + done + + # backup after n-days if archive contents changed. + # (This uses hardlink to save disk space) + BACKUP_ARCHIVE_STAMP=/var/lib/apt/periodic/backup-archive-stamp + if check_stamp $BACKUP_ARCHIVE_STAMP $BackupArchiveInterval; then + if [ $({(cd $Cache 2>/dev/null; find . -name "*.deb"); (cd $Back0 2>/dev/null;find . -name "*.deb") ;}| sort|uniq -u|wc -l) -ne 0 ]; then + mkdir -p $Back + rm -rf $Back$((${BackupLevel}-1)) + for y in $(seq $((${BackupLevel}-1)) -1 1); do + eval BackY=${Back}$y + eval BackZ=${Back}$(($y-1)) + if [ -e $BackZ ]; then + mv -f $BackZ $BackY ; + fi + done + cp -la $Cache $Back ; mv -f $BackX $Back0 + update_stamp $BACKUP_ARCHIVE_STAMP + debug_echo "backup with hardlinks. (success)" + else + debug_echo "skip backup since same content." + fi + else + debug_echo "skip backup since too new." + fi + } + # sleep for a random interval of time (default 30min) # (some code taken from cron-apt, thanks) random_sleep() @@@ -185,108 -299,176 +281,197 @@@ RANDOM=$(dd if=/dev/urandom count=1 2> /dev/null | cksum | cut -c"1-5") fi TIME=$(($RANDOM % $RandomSleep)) + debug_echo "sleeping for $TIME seconds" sleep $TIME } - # main - if ! which apt-config >/dev/null; then + debug_echo() + { + # Display message if $VERBOSE >= 1 + if [ "$VERBOSE" -ge 1 ]; then + echo $1 1>&2 + fi + } + + # ------------------------ main ---------------------------- + + # check apt-config exstance + if ! which apt-config >/dev/null ; then + exit 0 + fi + + # Set VERBOSE mode from apt-config (or inherit from environment) + eval $(apt-config shell VERBOSE APT::Periodic::Verbose) + debug_echo "verbose level $VERBOSE" + if [ -z "$VERBOSE" ]; then + VERBOSE="0" + fi + if [ "$VERBOSE" -le 2 ]; then + # quiet for 0,1,2 + XSTDOUT=">/dev/null" + XSTDERR="2>/dev/null" + XAPTOPT="-qq" + XUUPOPT="" + else + XSTDOUT="" + XSTDERR="" + XAPTOPT="" + XUUPOPT="-d" + fi + if [ "$VERBOSE" -ge 3 ]; then + # trace output + set -x + fi + + # laptop check, on_ac_power returns: + # 0 (true) System is on main power + # 1 (false) System is not on main power + # 255 (false) Power status could not be determined + # Desktop systems always return 255 it seems + if which on_ac_power >/dev/null; then + on_ac_power + POWER=$? + if [ $POWER -eq 1 ]; then + debug_echo "exit: system NOT on main power" exit 0 + elif [ $POWER -ne 0 ]; then + debug_echo "power status ($POWER) undetermined, continuing" + fi + debug_echo "system is on main power." + fi + + # check if we can lock the cache and if the cache is clean + if which apt-get >/dev/null && ! eval apt-get check -f $XAPTOPT $XSTDERR ; then + debug_echo "error encountered in cron job with \"apt-get check\"." + exit 0 fi + # Global current time in seconds since 1970-01-01 00:00:00 UTC + now=$(date +%s) + + # Support old Archive for compatibility. + # Document only Periodic for all controling parameters of this script. + UpdateInterval=0 -eval $(apt-config shell UpdateInterval APT::Periodic::Update-Package-Lists) - DownloadUpgradeableInterval=0 -eval $(apt-config shell DownloadUpgradeableInterval APT::Periodic::Download-Upgradeable-Packages) - +eval $(apt-config shell UpdateInterval APT::Periodic::Update-Package-Lists DownloadUpgradeableInterval APT::Periodic::Download-Upgradeable-Packages) +AutocleanInterval=$DownloadUpgradeableInterval +eval $(apt-config shell AutocleanInterval APT::Periodic::AutocleanInterval) UnattendedUpgradeInterval=0 eval $(apt-config shell UnattendedUpgradeInterval APT::Periodic::Unattended-Upgrade) + AutocleanInterval=0 + eval $(apt-config shell AutocleanInterval APT::Periodic::AutocleanInterval) + + BackupArchiveInterval=0 + eval $(apt-config shell BackupArchiveInterval APT::Periodic::BackupArchiveInterval) + # check if we actually have to do anything if [ $UpdateInterval -eq 0 ] && [ $DownloadUpgradeableInterval -eq 0 ] && [ $UnattendedUpgradeInterval -eq 0 ] && - [ $BackupArchiveInterval -eq 0 ] && [ $AutocleanInterval -eq 0 ]; then exit 0 fi - # laptop check, on_ac_power returns: - # 0 (true) System is on mains power - # 1 (false) System is not on mains power - # 255 (false) Power status could not be determined - # Desktop systems always return 255 it seems - if which on_ac_power >/dev/null; then - on_ac_power - if [ $? -eq 1 ]; then - exit 0 - fi ++# set the proxy based on the admin users gconf settings ++admin_user=$(getent group admin|cut -d: -f4|cut -d, -f1) ++if [ -n "$admin_user" ] && [ -x /usr/bin/sudo ] && [ -z "$http_proxy" ] && [ -x /usr/bin/gconftool ]; then ++ use=$(sudo -u "$admin_user" gconftool --get /system/http_proxy/use_http_proxy 2>/dev/null) ++ host=$(sudo -u "$admin_user" gconftool --get /system/http_proxy/host 2>/dev/null) ++ port=$(sudo -u "$admin_user" gconftool --get /system/http_proxy/port 2>/dev/null) ++ if [ "$use" = "true" ] && [ -n "$host" ] && [ -n "$port" ]; then ++ export http_proxy="http://$host:$port/" ++ fi +fi + ++ + # deal with BackupArchiveInterval + do_cache_backup $BackupArchiveInterval + # sleep random amount of time to avoid hitting the # mirrors at the same time random_sleep - # check if we can access the cache - if ! apt-get check -q -q 2>/dev/null; then - # wait random amount of time before retrying - random_sleep - # check again - if ! apt-get check -q -q 2>/dev/null; then - echo "$0: could not lock the APT cache while performing daily cron job. " - echo "Is another package manager working?" - exit 1 - fi - fi - - # set the proxy based on the admin users gconf settings - admin_user=$(getent group admin|cut -d: -f4|cut -d, -f1) - if [ -n "$admin_user" ] && [ -x /usr/bin/sudo ] && [ -z "$http_proxy" ] && [ -x /usr/bin/gconftool ]; then - use=$(sudo -u "$admin_user" gconftool --get /system/http_proxy/use_http_proxy 2>/dev/null) - host=$(sudo -u "$admin_user" gconftool --get /system/http_proxy/host 2>/dev/null) - port=$(sudo -u "$admin_user" gconftool --get /system/http_proxy/port 2>/dev/null) - if [ "$use" = "true" ] && [ -n "$host" ] && [ -n "$port" ]; then - export http_proxy="http://$host:$port/" - fi - fi - + # update package lists + UPDATED=0 UPDATE_STAMP=/var/lib/apt/periodic/update-stamp if check_stamp $UPDATE_STAMP $UpdateInterval; then - if eval apt-get $XAPTOPT -y update $XSTDERR; then + # check for a new archive signing key (against the master keyring) - apt-key net-update - # now run the update - if apt-get -qq update -o APT::Update::Auth-Failure::="cp /usr/share/apt/apt-auth-failure.note /var/lib/update-notifier/user.d/" 2>/dev/null; then - # Could possible test access to '/var/run/dbus/system_bus_socket' has well, - # but I'm not sure how stable the internal pipe location is defined as - # being; so for the moment just 2>/dev/null . --sladen 2007-09-27 - if which dbus-send >/dev/null; then - dbus-send --system / app.apt.dbus.updated boolean:true 2>/dev/null || true ++ if eval apt-key net-update $XSTDERR; then ++ debug_echo "apt-key net-update (success)" ++ else ++ debug_echo "apt-key net-update (failure)" ++ fi ++ if eval apt-get $XAPTOPT -y update -o APT::Update::Auth-Failure::="cp /usr/share/apt/apt-auth-failure.note /var/lib/update-notifier/user.d/" $XSTDERR; then + debug_echo "download updated metadata (success)." + if which dbus-send >/dev/null && pidof dbus-daemon >/dev/null; then + if dbus-send --system / app.apt.dbus.updated boolean:true ; then + debug_echo "send dbus signal (success)" + else + debug_echo "send dbus signal (error)" + fi + else + debug_echo "dbus signal not send (command not available)" fi + update_stamp $UPDATE_STAMP + UPDATED=1 + # now run apt-xapian-index if it is installed to ensure the index + # is up-to-date + if [ -x /usr/sbin/update-apt-xapian-index ]; then + ionice -c3 update-apt-xapian-index -q + fi - update_stamp $UPDATE_STAMP + else + debug_echo "download updated metadata (error)" fi + else + debug_echo "download updated metadata (not run)." fi - + + # download all upgradeable packages (if it is requested) DOWNLOAD_UPGRADEABLE_STAMP=/var/lib/apt/periodic/download-upgradeable-stamp - if check_stamp $DOWNLOAD_UPGRADEABLE_STAMP $DownloadUpgradeableInterval; then - apt-get -qq -d dist-upgrade 2>/dev/null - update_stamp $DOWNLOAD_UPGRADEABLE_STAMP + if [ $UPDATED -eq 1 ] && check_stamp $DOWNLOAD_UPGRADEABLE_STAMP $DownloadUpgradeableInterval; then + if eval apt-get $XAPTOPT -y -d dist-upgrade $XSTDERR; then + update_stamp $DOWNLOAD_UPGRADEABLE_STAMP + debug_echo "download upgradable (success)" + else + debug_echo "download upgradable (error)" + fi + else + debug_echo "download upgradable (not run)" fi + # auto upgrade all upgradeable packages UPGRADE_STAMP=/var/lib/apt/periodic/upgrade-stamp - if check_stamp $UPGRADE_STAMP $UnattendedUpgradeInterval; then - unattended-upgrade - update_stamp $UPGRADE_STAMP + if [ $UPDATED -eq 1 ] && which unattended-upgrade >/dev/null && check_stamp $UPGRADE_STAMP $UnattendedUpgradeInterval; then + if unattended-upgrade $XUUPOPT; then + update_stamp $UPGRADE_STAMP + debug_echo "unattended-upgrade (success)" + else + debug_echo "unattended-upgrade (error)" + fi + else + debug_echo "unattended-upgrade (not run)" fi + # autoclean package archive AUTOCLEAN_STAMP=/var/lib/apt/periodic/autoclean-stamp if check_stamp $AUTOCLEAN_STAMP $AutocleanInterval; then - apt-get -qq autoclean - update_stamp $AUTOCLEAN_STAMP + if eval apt-get $XAPTOPT -y autoclean $XSTDERR; then + debug_echo "autoclean (success)." + update_stamp $AUTOCLEAN_STAMP + else + debug_echo "autoclean (error)" + fi + else + debug_echo "autoclean (not run)" fi # check cache size check_size_constraints + + # + # vim: set sts=4 ai : + # + diff --combined debian/apt.dirs index 747a8e3fd,fb6716c35..d11ee0f2f --- a/debian/apt.dirs +++ b/debian/apt.dirs @@@ -3,11 -3,11 +3,12 @@@ usr/lib/apt/method usr/lib/dpkg/methods/apt etc/apt etc/apt/apt.conf.d + etc/apt/preferences.d etc/apt/sources.list.d etc/logrotate.d var/cache/apt/archives/partial var/lib/apt/lists/partial +var/lib/apt/mirrors/partial var/lib/apt/periodic var/log/apt usr/share/bug/apt diff --combined debian/changelog index 498c6710c,3d5db5f48..f6c282f42 --- a/debian/changelog +++ b/debian/changelog @@@ -1,5 -1,64 +1,76 @@@ - apt (0.7.21ubuntu2~ppa1) karmic; urgency=low ++apt (0.7.23ubuntu1) karmic; urgency=low + ++ * merged from the debian-sid bzr branch ++ ++ * cmdline/apt-get.cc: ++ - honor APT::Get::Only-Source properly in FindSrc() (thanks to ++ Martin Pitt for reporting the problem) ++ ++ -- Michael Vogt Thu, 30 Jul 2009 15:27:30 +0200 ++ + apt (0.7.22) unstable; urgency=low + ++ + [ Christian Perrier ] + * Documentation translations: + - Fix a typo in apt-get(8) French translation. Closes: #525043 + Thanks to Guillaume Delacour for spotting it. + - Updated apt.conf(5) manpgae French translation. + Thanks to Aurélien Couderc. + * Translations: + - fr.po - - sk.po. Closes: #525857 ++ - sk.po. Closes: #525857 + - ru.po. Closes: #526816 + - eu.po. Closes: #528985 + - zh_CN.po. Closes: #531390 + - fr.po + - it.po. Closes: #531758 + - ca.po. Closes: #531921 + - de.po. Closes: #536430 + * Added translations + - ast.po (Asturian by Marcos Alvareez Costales). + Closes: #529007, #529730, #535328 + + [ David Kalnischkies ] + * [ABI break] support '#' in apt.conf and /etc/apt/preferences + (closes: #189866) + * [ABI break] Allow pinning by codename (closes: #97564) + * support running "--simulate" as user + * add depth information to the debug output and show what depends + type triggers a autoinst (closes: #458389) + * add Debug::pkgDepCache::Marker with more detailed debug output + (closes: #87520) + * add Debug::pkgProblemResolver::ShowScores and make the scores + adjustable + * do not write state file in simulate mode (closes: #433007) + * add hook for MarkInstall and MarkDelete (closes: #470035) + * fix typo in apt-pkg/acquire.cc which prevents Dl-Limit to work + correctly when downloading from multiple sites (Closes: #534752) + * add the various foldmarkers in apt-pkg & cmdline (no code change) + * versions with a pin of -1 shouldn't be a candidate (Closes: #355237) + * prefer mmap as memory allocator in MMap instead of a static char + array which can (at least in theory) grow dynamic + * eliminate (hopefully all) segfaults in pkgcachegen.cc and mmap.cc + which can arise if cache doesn't fit into the mmap (Closes: #535218) + * display warnings instead of errors if the parts dirs doesn't exist + ++ + [ Michael Vogt ] + * honor the dpkg hold state in new Marker hooks (closes: #64141) + * debian/apt.cron.daily: + - if the timestamp is too far in the future, delete it + * apt-pkg/acquire.cc: + - make the max pipeline depth of the acquire queue configurable + via Acquire::Max-Pipeline-Depth + * apt-pkg/deb/dpkgpm.cc: + - add Dpkg::UseIoNice boolean option to run dpkg with ionice -c3 + (off by default) + - send "dpkg-exec" message on the status fd when dpkg is run + - provide DPkg::Chroot-Directory config option (useful for testing) + - fix potential hang when in a backgroud process group + * apt-pkg/algorithms.cc: + - consider recommends when making the scores for the problem + resolver * apt-pkg/acquire-worker.cc: - show error details of failed methods * apt-pkg/contrib/fileutl.cc: @@@ -7,41 -66,70 +78,98 @@@ * methods/http.cc: - ignore SIGPIPE, we deal with EPIPE from write in HttpMethod::ServerDie() (LP: #385144) - * debian/apt.cron.daily: - - if the timestamp is too far in the future, delete it - (LP: #135262) + * Only run Download-Upgradable and Unattended-Upgrades if the initial + update was successful Closes: #341970 + * apt-pkg/indexcopy.cc: + - support having CDs with no Packages file (just a Packages.gz) + by not forcing a verification on non-existing files + (LP: #255545) + - remove the gettext from a string that consists entirely + of variables (LP: #56792) + * apt-pkg/cacheiterators.h: + - add missing checks for Owner == 0 in end() + * apt-pkg/indexrecords.cc: + - fix some i18n issues + * apt-pkg/contrib/strutl.h: + - add new strprintf() function to make i18n strings easier + - fix compiler warning + * apt-pkg/deb/debsystem.cc: + - make strings i18n able + * fix problematic use of tolower() when calculating the version + hash by using locale independant tolower_ascii() function. + Thanks to M. Vefa Bicakci (LP: #80248) + * build fixes for g++-4.4 + * cmdline/apt-mark: + - add "showauto" option to show automatically installed packages + * document --install-recommends and --no-install-recommends + (thanks to Dereck Wonnacott, LP: #126180) + * doc/apt.conf.5.xml: + - merged patch from Aurélien Couderc to improve the text + (thanks!) + * [ABI] merged the libudev-dlopen branch, this allows to pass + "apt-udev-auto" to Acquire::Cdrom::mount and the cdrom method will + dynamically find/mount the cdrom device (if libhal is available) + + [ Julian Andres Klode ] + * apt-pkg/contrib/configuration.cc: Fix a small memory leak in + ReadConfigFile. + * Introduce support for the Enhances field. (Closes: #137583) + * Support /etc/apt/preferences.d, by adding ReadPinDir() (Closes: #535512) + * configure-index: document Dir::Etc::SourceParts and some other options + (Closes: #459605) + * Remove Eugene V. Lyubimkin from uploaders as requested. + * apt-pkg/contrib/hashes.cc, apt-pkg/contrib/md5.cc: + - Support reading until EOF if Size=0 to match behaviour of + SHA1Summation and SHA256Summation + + [ Osamu Aoki ] + * Updated cron script to support backups by hardlinks and + verbose levels. All features turned off by default. + * Added more error handlings. Closes: #438803, #462734, #454989, + * Documented all cron script related configuration items in + configure-index. + + [ Dereck Wonnacott ] + * apt-ftparchive might write corrupt Release files (LP: #46439) + * Apply --important option to apt-cache depends (LP: #16947) + [ Otavio Salvador ] + * Apply patch from Sami Liedes to reduce the + number of times we call progress bar updating and debugging + configuration settings. + * Apply patch from Sami Liedes to avoid unecessary + temporary allocations. - -- Michael Vogt Thu, 02 Jul 2009 14:11:35 +0200 + -- Michael Vogt Wed, 29 Jul 2009 19:16:22 +0200 +apt (0.7.21ubuntu1) karmic; urgency=low + + * merged from the debian-sid bzr branch + + [ Christian Perrier ] + * Documentation translations: + - Fix a typo in apt-get(8) French translation. Closes: #525043 + Thanks to Guillaume Delacour for spotting it. + * Translations: + - fr.po + - sk.po. Closes: #525857 + - ru.po. Closes: #526816 + - eu.po. Closes: #528985 + - zh_CN.po. Closes: #531390 + - fr.po + - it.po. Closes: #531758 + - ca.po. Closes: #531921 + * Added translations + - ast.po (Asturian by Marcos Alvareez Costales). + Closes: #529007, #529730 + + [ Michael Vogt ] + * apt-pkg/acquire.cc: + - make the (internal) max pipeline depth of the acquire queue + configurable via Acquire::Max-Pipeline-Depth + + -- Michael Vogt Tue, 09 Jun 2009 15:49:07 +0200 + apt (0.7.21) unstable; urgency=low [ Christian Perrier ] @@@ -54,7 -142,7 +182,7 @@@ - sk.po. Closes: #520403 - it.po. Closes: #522222 - sk.po. Closes: #520403 - + [ Jamie Strandboge ] * apt.cron.daily: catch invalid dates due to DST time changes in the stamp files @@@ -75,7 -163,7 +203,7 @@@ * Clarify the --help for 'purge' (LP: #243948) * cmdline/apt-get.cc - fix "apt-get source pkg" if there is a binary package and - a source package of the same name but from different + a source package of the same name but from different packages (LP: #330103) [ Colin Watson ] @@@ -85,125 -173,6 +213,125 @@@ -- Michael Vogt Tue, 14 Apr 2009 14:12:51 +0200 +apt (0.7.20.2ubuntu7) karmic; urgency=low + + * fix problematic use of tolower() when calculating the version + hash by using locale independant tolower_ascii() function. + Thanks to M. Vefa Bicakci (LP: #80248) + * build fixes for g++-4.4 + * include dmesg output in apport package failures + * include apt ordering into apport package failures + + -- Michael Vogt Fri, 24 Apr 2009 10:14:01 +0200 + +apt (0.7.20.2ubuntu6) jaunty; urgency=low + + [ Jamie Strandboge ] + * apt.cron.daily: catch invalid dates due to DST time changes + in the stamp files (LP: #354793) + + [ Michael Vogt ] + * methods/gpgv.cc: + - properly check for expired and revoked keys (closes: #433091) + LP: #356012 + + -- Michael Vogt Wed, 08 Apr 2009 22:39:50 +0200 + +apt (0.7.20.2ubuntu5) jaunty; urgency=low + + [ Colin Watson ] + * cmdline/acqprogress.cc: + - Call pkgAcquireStatus::Pulse even if quiet, so that we still get + dlstatus messages on the status-fd (LP: #290234). + + [ Michael Vogt ] + * debian/apt.cron.daily: + - do not clutter cron mail with bogus gconftool messages + (LP: #223502) + - merge fix for cache locking from debian (closes: #459344) + - run update-apt-xapian-index (with ionice) to ensure that + the index is up-to-date when synaptic is run (LP: #288797) + + -- Michael Vogt Mon, 30 Mar 2009 13:22:28 +0200 + +apt (0.7.20.2ubuntu4) jaunty; urgency=low + + * ftparchive/cachedb.cc: + - when apt-ftparchive clean is used, compact the database + at the end (thanks to cprov) + + -- Michael Vogt Thu, 26 Mar 2009 13:43:59 +0100 + +apt (0.7.20.2ubuntu3) jaunty; urgency=low + + * methods/mirror.cc: + - when download the mirror file and the server is down, + return a propper error message (LP: #278635) + + -- Michael Vogt Thu, 19 Mar 2009 15:42:15 +0100 + +apt (0.7.20.2ubuntu2) jaunty; urgency=low + + * apt-pkg/deb/dpkgpm.cc: + - revert termios patch (LP: #338514) + * cmdline/apt-get.cc + - fix "apt-get source pkg" if there is a binary package and + a source package of the same name but from different + packages (LP: #330103) + + -- Michael Vogt Mon, 09 Mar 2009 16:33:28 +0100 + +apt (0.7.20.2ubuntu1) jaunty; urgency=low + + [ Christian Perrier ] + * Translations: + - bg.po. Closes: #513211 + - zh_TW.po. Closes: #513311 + - nb.po. Closes: #513843 + + [ Michael Vogt ] + * merged from the debian-sid branch + * [ABI break] merge support for http redirects, thanks to + Jeff Licquia and Anthony Towns + * [ABI break] use int for the package IDs (thanks to Steve Cotton) + * apt-pkg/contrib/strutl.cc: + - fix TimeToStr i18n (LP: #289807) + * debian/apt.conf.autoremove: + - readd "linux-image" (and friends) to the auto-remove + blacklist + * fix some i18n issues (thanks to Gabor Kelemen) + LP: #263089 + * apt-pkg/deb/dpkgpm.cc: + - filter "ENOMEM" errors when creating apport reports + * cmdline/apt-get.cc: + - fix "apt-get source pkg=ver" if binary name != source name + (LP: #202219) + * apt-pkg/indexrecords.cc: + - fix some i18n issues + * apt-pkg/contrib/strutl.h: + - add new strprintf() function to make i18n strings easier + * apt-pkg/dev/debsystem.cc: + - add missing apti18n.h header + * cmdline/apt-get.cc: + - default to "false" for the "APT::Get::Build-Dep-Automatic" + option (follow debian here) + * apt-pkg/pkgcache.cc: + - do not run "dpkg --configure pkg" if pkg is in trigger-awaited + state (LP: #322955) + * methods/https.cc: + - add Acquire::https::AllowRedirect support + - do not unlink files in partial/ (thanks to robbiew) + + [ Dereck Wonnacott ] + * Clarify the --help for 'purge' (LP: #243948) + + [ Ian Weisser ] + * /apt-pkg/deb/debsystem.cc: + - add 'sudo' to the error message to "run 'dpkg --configure -a'" + (LP: #52697) + + -- Michael Vogt Mon, 09 Feb 2009 14:21:05 +0100 + apt (0.7.20.2) unstable; urgency=medium [ Eugene V. Lyubimkin ] @@@ -252,10 -221,10 +380,10 @@@ apt (0.7.20) unstable; urgency=lo (Closes: #440049, #509337) [ Michael Vogt ] - * add option to "apt-get build-dep" to mark the needed - build-dep packages as automatic installed. + * add option to "apt-get build-dep" to mark the needed + build-dep packages as automatic installed. This is controlled via the value of - APT::Get::Build-Dep-Automatic and is set "false" by default. + APT::Get::Build-Dep-Automatic and is set "false" by default. Thanks to Aaron Haviland, closes: #448743 * apt-inst/contrib/arfile.cc: - support members ending with '/' as well (thanks to Michal Cihr, @@@ -263,21 -232,15 +391,21 @@@ [ Christian Perrier ] * Translations: - - Finnish updated. Closes: #508449 + - Finnish updated. Closes: #508449 - Galician updated. Closes: #509151 - Catalan updated. Closes: #509375 - Vietnamese updated. Closes: #509422 - Traditional Chinese added. Closes: #510664 - - French corrected (remove awful use of first person) + - French corrected (remove awful use of first person) -- Michael Vogt Mon, 05 Jan 2009 08:59:20 +0100 +apt (0.7.19ubuntu1) jaunty; urgency=low + + * merge from debian + + -- Michael Vogt Mon, 24 Nov 2008 10:52:20 +0100 + apt (0.7.19) unstable; urgency=low [ Eugene V. Lyubimkin ] @@@ -295,8 -258,6 +423,8 @@@ (Closes: #419521) [ Michael Vogt ] + * doc/makefile: + - add examples/apt-https-method-example.conf - fix SIGHUP handling (closes: #463030) [ Christian Perrier ] @@@ -578,103 -539,6 +706,103 @@@ apt (0.7.15~exp1) experimental; urgency -- Michael Vogt Tue, 16 Sep 2008 21:27:03 +0200 +apt (0.7.14ubuntu7) jaunty; urgency=low + + * cmdline/apt-cache.cc: + - remove the gettext from a string that consists entirely + of variables (LP: #56792) + * apt-pkg/deb/dpkgpm.cc: + - fix potential hang when in a backgroud process group + + -- Michael Vogt Tue, 28 Oct 2008 21:09:12 +0100 + +apt (0.7.14ubuntu6) intrepid; urgency=low + + * debian/apt.conf.autoremove: + - remove "linux-image" (and friends) from the auto-remove + blacklist. we have the kernel fallback infrastructure now + in intrepid (thanks to BenC) + * apt-pkg/indexcopy.cc: + - support having CDs with no Packages file (just a Packages.gz) + by not forcing a verification on non-existing files + (LP: #255545) + * apt-pkg/deb/dpkgpm.cc: + - improve the filtering for duplicated apport reports (thanks + to seb128 for pointing that problem out) + - do not report disk full errors from dpkg via apport + + -- Michael Vogt Thu, 07 Aug 2008 16:28:05 +0200 + +apt (0.7.14ubuntu5) intrepid; urgency=low + + * fix various -Wall warnings + * make "apt-get build-dep" installed packages marked automatic + by default. This can be changed by setting the value of + APT::Get::Build-Dep-Automatic to false (thanks to Aaron + Haviland, closes: #44874, LP: #248268) + + -- Michael Vogt Wed, 06 Aug 2008 14:00:51 +0200 + +apt (0.7.14ubuntu4) intrepid; urgency=low + + [ Michael Vogt ] + * apt-pkg/deb/dpkgpm.cc: + - fix uninitialized variable that caused no apport reports + to be written sometimes (thanks to Matt Zimmerman) + * merge patch that enforces stricter https server certificate + checking (thanks to Arnaud Ebalard, closes: #485960) + * allow per-mirror specific https settings + (thanks to Arnaud Ebalard, closes: #485965) + * add doc/examples/apt-https-method-example.cof + (thanks to Arnaud Ebalard, closes: #485964) + * add DPkg::NoTriggers option so that applications that call + apt/aptitude (like the installer) defer trigger processing + (thanks to Joey Hess) + * document --install-recommends and --no-install-recommends + (thanks to Dereck Wonnacott, LP: #126180) + + [ Dereck Wonnacott ] + * apt-ftparchive might write corrupt Release files (LP: #46439) + * Apply --important option to apt-cache depends (LP: #16947) + + -- Michael Vogt Tue, 05 Aug 2008 10:10:49 +0200 + +apt (0.7.14ubuntu3) intrepid; urgency=low + + [ Otavio Salvador ] + * Apply patch to avoid truncating of arbitrary files. Thanks to Bryan + Donlan for the patch. Closes: #482476 + * Avoid using dbus if dbus-daemon isn't running. Closes: #438803 + + [ Michael Vogt ] + * apt-pkg/deb/dpkgpm.cc: + - improve apt progress reporting, display trigger actions + * apt-pkg/depcache.cc: + - when checking for new important deps, skip critical ones + (LP: #236360) + + -- Michael Vogt Tue, 03 Jun 2008 17:27:07 +0200 + +apt (0.7.14ubuntu2) intrepid; urgency=low + + * debian/control: + - fix FTBFS by adding missing intltool dependency + + -- Michael Vogt Fri, 09 May 2008 13:50:22 +0200 + +apt (0.7.14ubuntu1) intrepid; urgency=low + + [ Michael Vogt ] + * enable installation of recommends by default + * debian/apt.conf.ubuntu: + - remove APT::Install-Recommends-Sections (no longer needed) + * merged from debian/sid, remaining changes: + - authentication-reliable branch (to be merged into debian soon) + - mirror:// uri branch (breaks ABI in debian, not merged yet) + - apport failure reporting + - show warning on apt-get source with 'Vcs-' header + - proxy detection from gconf in apt.cron + apt (0.7.14) unstable; urgency=low [ Christian Perrier ] @@@ -744,7 -608,7 +872,7 @@@ apt (0.7.12) unstable; urgency=lo * apt-pkg/deb/dpkgpm.cc: - merged patch from Kees Cook to fix anoying upper-case display on amd64 in sbuild - * apt-pkg/algorithms.cc: + * apt-pkg/algorithms.cc: - add APT::Update::Post-Invoke-Success script slot - Make the breaks handling use the kill list. This means, that a Breaks: Pkg (<< version) may put Pkg onto the remove list. @@@ -783,7 -647,7 +911,7 @@@ - French updated. - Bulgarian updated. Closes: #448492 - Galician updated. Closes: #476839 - + [ Daniel Burrows ] * apt-pkg/depcache.cc: - Patch MarkInstall to follow currently satisfied Recommends even @@@ -801,7 -665,7 +929,7 @@@ - Add missing Build-Depends-Indep on xsltproc, docbook-xsl, and xmlto. -- Daniel Burrows Sat, 26 Apr 2008 12:24:35 -0700 - + apt (0.7.11) unstable; urgency=critical [ Raise urgency to critical since it fixes a critical but for Debian @@@ -860,6 -724,7 +988,6 @@@ apt (0.7.10) unstable; urgency=lo - Simplified Chinese updated. Closes: #458039 - French updated. - Norwegian Bokmål updated. Closes: #457917 - [ Michael Vogt ] * debian/rules - fix https install location @@@ -874,7 -739,7 +1002,7 @@@ - make the authentication download code more robust against servers/proxies with broken If-Range implementations * apt-pkg/packagemanager.{cc,h}: - - propergate the Immediate flag to make hitting the + - propergate the Immediate flag to make hitting the "E: Internal Error, Could not perform immediate configuration (2)" harder * debian/control: @@@ -888,7 -753,7 +1016,7 @@@ - support lzma data members * ftparchive/multicompress.cc: - support lzma output - + [ Daniel Burrows ] * apt-pkg/contrib/configuration.cc: - if RootDir is set, then FindFile and FindDir will return paths @@@ -897,342 -762,80 +1025,342 @@@ [ Christian Perrier ] * Fix wording for "After unpacking...". Thanks to Michael Gilbert for the patch. Closes: #260825 + + -- Michael Vogt Thu, 03 Jan 2008 11:31:45 +0100 - -- Michael Vogt Mon, 07 Jan 2008 21:40:47 +0100 +apt (0.7.9ubuntu17) hardy-proposed; urgency=low -apt (0.7.9) unstable; urgency=low + * apt-pkg/acquire-item.cc: + - fix signaure removal on transient network failures LP: #220627 + (thanks to Scott James Remnant) - [ Christian Perrier ] - * Add several languages to LINGUAS and, therefore, really ship the relevant - translation: - Arabic, Dzongkha, Khmer, Marathi, Nepali, Thai - Thanks to Theppitak Karoonboonyanan for checking this out. Closes: #448321 + -- Michael Vogt Tue, 22 Apr 2008 16:32:49 +0200 - [ Program translations ] - - Korean updated. Closes: #448430 - - Galician updated. Closes: #448497 - - Swedish updated. +apt (0.7.9ubuntu16) hardy; urgency=low - [ Otavio Salvador ] - * Fix configure script to check for CURL library and headers presense. - * Applied patch from Brian M. Carlson - to add backward support for arches that lacks pselect support, - closes: #448406. - * Umount CD-ROM when calling apt-cdrom ident, except when called with - -m, closes: #448521. + * cmdline/apt-key: + - only check against master-keys in net-update to not break + custom CDs (thanks to Colin Watson) - -- Otavio Salvador Wed, 31 Oct 2007 13:37:26 -0200 + -- Michael Vogt Tue, 08 Apr 2008 14:17:14 +0200 -apt (0.7.8) unstable; urgency=low +apt (0.7.9ubuntu15) hardy; urgency=low - * Applied patch from Daniel Leidert to fix - APT::Acquire::Translation "none" support, closes: #437523. - * Applied patch from Daniel Burrows to add support - for the Homepage field (ABI break), closes: #447970. - * Applied patch from Frans Pop to fix a trailing - space after cd label, closes: #448187. + * cmdline/apt-get.cc: + - do two passes when installing tasks, first ignoring dependencies, + then resolving them and run the problemResolver at the end + so that it can correct any missing dependencies. This should + fix livecd building for kubuntu (thanks to Jonathan Riddell + for reporting the problem) - -- Otavio Salvador Fri, 26 Oct 2007 18:20:13 -0200 + -- Michael Vogt Thu, 13 Mar 2008 23:25:45 +0100 -apt (0.7.7) unstable; urgency=low +apt (0.7.9ubuntu14) hardy; urgency=low + + * cmdline/apt-get.cc: + - fix incorrect help output for -f (LP: #57487) + - run the problemResolver after a task was installed + so that it can correct any missing dependencies + * typo fixes (LP: #107960) + + -- Michael Vogt Tue, 11 Mar 2008 21:46:07 +0100 + +apt (0.7.9ubuntu13) hardy; urgency=low + + [ Lionel Porcheron ] + * debian/apt.cron.daily: + - only call gconftool if gcontool is installed (LP: #194281) [ Michael Vogt ] - * apt-inst/contrib/extracttar.cc: - - fix fd leak for zero size files (thanks to Bill Broadley for - reporting this bug) - * apt-pkg/acquire-item.cc: - - remove zero size files on I-M-S hit - * methods/https.cc: - - only send LastModified if we actually have a file - - send range request with if-range - - delete failed downloads - - delete zero size I-M-S hits - * apt-pkg/deb/dpkgpm.{cc,h}: - - merged dpkg-log branch, this lets you specify a - Dir::Log::Terminal file to log dpkg output to - (ABI break) - - fix parse error when dpkg sends unexpected data - * merged apt--sha256 branch to fully support the new - sha256 checksums in the Packages and Release files - (ABI break) - * apt-pkg/pkgcachegen.cc: - - increase default mmap size - * tests/local-repo: - - added local repository testcase - * apt-pkg/acquire.cc: - - increase MaxPipeDepth for the internal worker<->method - communication to 1000 for the debtorrent backend - * make apt build with g++ 4.3 - * fix missing SetExecClose() call when the status-fd is used + * doc/apt_preferences.5.xml: + - fix typo (LP: #150900) + * doc/example/sources.list: + - updated for hardy (LP: #195879) * debian/apt.cron.daily: - - move unattended-upgrade before apt-get autoclean - * fix "purge" commandline argument, closes: #133421 - (thanks to Julien Danjou for the patch) + - sleep random amount of time (default within 0-30min) before + starting the upate to hit the mirrors less hard + + -- Michael Vogt Tue, 04 Mar 2008 15:35:09 +0100 + +apt (0.7.9ubuntu12) hardy; urgency=low + + * debian/apt.cron.daily: + - use admin user proxy settings * cmdline/apt-get.cc: - - do not change the auto-installed information if a package - is reinstalled + - fix task installation (thanks to Colin Watson) + + -- Michael Vogt Thu, 21 Feb 2008 15:07:44 +0100 + +apt (0.7.9ubuntu11) hardy; urgency=low + + * apt-pkg/algorithms.cc: + - add APT::Update::Post-Invoke-Success script slot + (LP: #188127) + + -- Michael Vogt Thu, 10 Jan 2008 12:06:12 +0100 + +apt (0.7.9ubuntu10) hardy; urgency=low + + * cmdline/apt-key: + - add "net-update" command that fetches the + ubuntu-archive-keyring.gpg and add keys from it that are + signed by the ubuntu-master-keyring.gpg + (apt-archive-key-signatures spec) + * debian/apt.cron.daily: + - add apt-key net-update to the nightly cron job + + -- Michael Vogt Wed, 13 Feb 2008 15:50:28 +0100 + +apt (0.7.9ubuntu9) hardy; urgency=low + + * fix FTBFS due to incorrect intltool build-depends + + -- Michael Vogt Mon, 11 Feb 2008 16:04:37 +0100 + +apt (0.7.9ubuntu8) hardy; urgency=low + + * share/apt-auth-failure.note: + - show update-notifier note if the nightly update fails with a + authentication failure (apt-authentication-reliability spec) + + -- Michael Vogt Mon, 11 Feb 2008 14:04:56 +0100 + +apt (0.7.9ubuntu7) hardy; urgency=low + + * methods/connect.cc: + - remember hosts with Resolve failures or connect Timeouts + see https://wiki.ubuntu.com/NetworklessInstallationFixes + * cmdlines/apt-key: + - fix bug in the new apt-key update code that imports only + keys signed with the master key (thanks to cjwatson) + + -- Michael Vogt Fri, 08 Feb 2008 11:38:35 +0100 + +apt (0.7.9ubuntu6) hardy; urgency=low + + * cmdline/apt-key: + - add support for a master-keyring that contains signing keys + that can be used to sign the archive signing keys. This should + make key-rollover easier. + * apt-pkg/deb/dpkgpm.cc: + - merged patch from Kees Cook to fix anoying upper-case display + on amd64 in sbuild + * apt-pkg/algorithms.cc: + - add APT::Update::Post-Invoke-Success script slot + - Make the breaks handling use the kill list. This means, that a + Breaks: Pkg (<< version) may put Pkg onto the remove list. + * apt-pkg/deb/dpkgpm.cc: + - add APT::Apport::MaxReports to limit the maximum number + of reports generated in a single run (default to 3) + * apt-pkg/deb/debmetaindex.cc: + - add missing "Release" file uri when apt-get update --print-uris + is run + + -- Michael Vogt Mon, 04 Feb 2008 14:28:02 +0100 + +apt (0.7.9ubuntu5) hardy; urgency=low + + * Merged apt-authentication-reliabilty branch. This means + that apt will refuse to update and use the old lists if + the authentication of a repository that used to be + authenticated fails. See + https://wiki.ubuntu.com/AptAuthenticationReliability + for more details. + + -- Michael Vogt Wed, 16 Jan 2008 10:36:10 +0100 + +apt (0.7.9ubuntu4) hardy; urgency=low + + * apt-pkg/algorithms.cc: + - Since APT::Get::List-Cleanup and APT::List-Cleanup both default to + true, the effect of the compatibility code was to require both of them + to be set to false in order to disable list cleanup; this broke the + installer. Instead, disable list cleanup if either of them is set to + false. + + -- Colin Watson Wed, 09 Jan 2008 22:34:37 +0000 + +apt (0.7.9ubuntu3) hardy; urgency=low + + * merged the apt--DoListUpdate branch, this provides a common interface + for "apt-get update" like operations for the frontends and also provides + hooks to run stuff in APT::Update::{Pre,Post}-Invoke + + -- Michael Vogt Mon, 07 Jan 2008 19:02:11 +0100 + +apt (0.7.9ubuntu2) hardy; urgency=low + + [ Otavio Salvador ] + * Applied patch from Aurelien Jarno to fix building + with newest dpkg-shlibdeps changing the packaging building order and a + patch from Robert Millan to fix parallel building, + closes: #452862. + * Applied patch from Alexander Winston + to use 'min' as symbol for minute, closes: #219034. + * Applied patch from Amos Waterland to allow apt to + work properly in initramfs, closes: #448316. + * Applied patch from Robert Millan to make apt-key and + apt-get to ignore time conflicts, closes: #451328. + * Applied patch from Peter Eisentraut to fix a + grammatical error ("manual installed" -> "manually installed"), + closes: #438136. + * Fix cron.daily job to not call fail if apt isn't installed, closes: + #443286. + + [ Daniel Burrows ] + * apt-pkg/contrib/configuration.cc: + - if RootDir is set, then FindFile and FindDir will return paths + relative to the directory stored in RootDir, closes: #456457. + + [ Christian Perrier ] + * Fix wording for "After unpacking...". Thans to Michael Gilbert + for the patch. Closes: #260825 + + [ Program translations ] + - Vietnamese updated. Closes: #453774 + - Japanese updated. Closes: #456909 + - French updated. + + [ Michael Vogt ] + * apt-pkg/packagemanager.{cc,h}: + - propergate the Immediate flag to make hitting the + "E: Internal Error, Could not perform immediate configuration (2)" + harder. (LP: #179247) + * debian/apt.conf.daily: + - print warning if the cache can not be locked (closes: #454561), + thanks to Bastian Kleineidam + * debian/control: + - build against libdb-dev (instead of libdb4.4-dev) + + -- Michael Vogt Thu, 03 Jan 2008 11:31:45 +0100 + +apt (0.7.9ubuntu1) hardy; urgency=low + + * merged from http://bzr.debian.org/apt/apt/debian-sid/, remaining + changes: + - mirror download method (pending merge with debian) + - no pdiff download by default (unsuitable for ubuntu) + - no recommends-by-default yet + - add "Original-Maintainer" field to tagfile + - show warning on apt-get source if the package is maintained + in a VCS (pedinging merge with debian) + - use ubuntu-archive keyring instead of debians one + - support metapackages section for autoremoval + - debian maintainer field change + - send ubuntu string in user-agent + + * Changes from the debian-sid bzr branch (but not uploaded to debian + yet): + + [ Otavio Salvador ] + * Applied patch from Mike O'Connor to add a manpage to + apt-mark, closes: #430207. + * Applied patch from Andrei Popescu to add a + note about some frontends in apt.8 manpage, closes: #438545. + * Applied patch from Aurelien Jarno to avoid CPU + getting crazy when /dev/null is redirected to stdin (which breaks + buildds), closes: #452858. + + [ Program translations ] + - Basque updated. Closes: #453088 + + [ Michael Vogt ] + * debian/rules + - fix https install location + * methods/gpgv.cc: + - remove cruft code that caused timestamp/I-M-S issues + * ftparchive/contents.cc: + - fix error output + * methods/mirror.{cc,h}: + - only update mirror list on IndexFile updates + * apt-pkg/acquire-item.{cc,h}: + - make the authentication download code more robust against + servers/proxies with broken If-Range implementations + * debian/control: + - build against libdb-dev (instead of libdb4.4-dev) + * merged the apt--DoListUpdate branch, this provides a common interface + for "apt-get update" like operations for the frontends and also provides + hooks to run stuff in APT::Update::{Pre,Post}-Invoke + + [ Chris Cheney ] + * ftparchive/contents.cc: + - support lzma data members + * ftparchive/multicompress.cc: + - support lzma output + + -- Michael Vogt Thu, 13 Dec 2007 14:46:27 +0100 + +apt (0.7.9) unstable; urgency=low + + [ Christian Perrier ] + * Add several languages to LINGUAS and, therefore, really ship the relevant + translation: + Arabic, Dzongkha, Khmer, Marathi, Nepali, Thai + Thanks to Theppitak Karoonboonyanan for checking this out. Closes: #448321 + + [ Program translations ] + - Korean updated. Closes: #448430 + - Galician updated. Closes: #448497 + - Swedish updated. + + [ Otavio Salvador ] + * Fix configure script to check for CURL library and headers presense. + * Applied patch from Brian M. Carlson + to add backward support for arches that lacks pselect support, + closes: #448406. + * Umount CD-ROM when calling apt-cdrom ident, except when called with + -m, closes: #448521. + + -- Otavio Salvador Wed, 31 Oct 2007 13:37:26 -0200 + +apt (0.7.8) unstable; urgency=low + + * Applied patch from Daniel Leidert to fix + APT::Acquire::Translation "none" support, closes: #437523. + * Applied patch from Daniel Burrows to add support + for the Homepage field (ABI break), closes: #447970. + * Applied patch from Frans Pop to fix a trailing + space after cd label, closes: #448187. + + -- Otavio Salvador Fri, 26 Oct 2007 18:20:13 -0200 + +apt (0.7.7) unstable; urgency=low + + [ Michael Vogt ] + * apt-inst/contrib/extracttar.cc: + - fix fd leak for zero size files (thanks to Bill Broadley for + reporting this bug) + * apt-pkg/acquire-item.cc: + - remove zero size files on I-M-S hit + * methods/https.cc: + - only send LastModified if we actually have a file + - send range request with if-range + - delete failed downloads + - delete zero size I-M-S hits + * apt-pkg/deb/dpkgpm.{cc,h}: + - merged dpkg-log branch, this lets you specify a + Dir::Log::Terminal file to log dpkg output to + (ABI break) + - fix parse error when dpkg sends unexpected data + * merged apt--sha256 branch to fully support the new + sha256 checksums in the Packages and Release files + (ABI break) + * apt-pkg/pkgcachegen.cc: + - increase default mmap size + * tests/local-repo: + - added local repository testcase + * apt-pkg/acquire.cc: + - increase MaxPipeDepth for the internal worker<->method + communication to 1000 for the debtorrent backend + * make apt build with g++ 4.3 + * fix missing SetExecClose() call when the status-fd is used + * debian/apt.cron.daily: + - move unattended-upgrade before apt-get autoclean + * fix "purge" commandline argument, closes: #133421 + (thanks to Julien Danjou for the patch) + * cmdline/apt-get.cc: + - do not change the auto-installed information if a package + is reinstalled * apt-pkg/acquire-item.cc: - fix crash in diff acquire code * cmdline/apt-mark: @@@ -1287,192 -890,12 +1415,192 @@@ -- Michael Vogt Tue, 23 Oct 2007 14:58:03 +0200 -apt (0.7.6) unstable; urgency=low +apt (0.7.6ubuntu14.1) gutsy-proposed; urgency=low - * Applied patch from Aurelien Jarno to fix wrong - directory downloading on non-linux architectures (closes: #435597) + [ Michael Vogt ] + * apt-pkg/deb/dpkgpm.{cc,h}: + - give up timeslice on EIO error in read from master terminal + * debian/apt.cron.daily: + - only run the cron job if apt-get check succeeds (LP: #131719) - -- Otavio Salvador Wed, 01 Aug 2007 19:49:51 -0300 + [ Martin Emrich ] + * apt-pkg/deb/dpkgpm.{cc,h}: + - rewrite dpkgpm.cc to use pselect() instead of select() + to block signals during select() (LP: #134858) + + -- Michael Vogt Sat, 20 Oct 2007 07:51:12 +0200 + +apt (0.7.6ubuntu14) gutsy; urgency=low + + * apt-pkg/deb/dpkgpm.cc: + - fix resource leak (LP: #148806) + + -- Michael Vogt Mon, 15 Oct 2007 20:57:44 +0200 + +apt (0.7.6ubuntu13) gutsy; urgency=low + + * apt-pkg/deb/dpkgpm.cc: + - fix crash in WriteApportReport (LP: #144537) + * apt-pkg/acquire-item.cc + - fix disappearing local Packages.gz file (LP: #131166) + * methods/https.cc: + - fix off-by-one error I-M-S handling + - cleanup after I-M-S hit + + -- Michael Vogt Tue, 09 Oct 2007 01:48:26 +0200 + +apt (0.7.6ubuntu12) gutsy; urgency=low + + [ Michael Vogt ] + * cmdline/apt-mark: + - Fix chmoding after have renamed the extended-states file + (thanks to Laurent Bigonville, LP: #140019) + * apt-pkg/deb/debmetaindex.cc: comparison with string literal results + in unspecified behaviour; + * Reset curl options and timestamp between downloaded files. Thanks to + Ryan Murray for the patch + + [Paul Sladen] + * Have 'cron.daily/apt' send D-Bus doesn't exist error messages + to the bit bucket. Thanks to 'dasdda'. (LP: #115397) + + -- Michael Vogt Wed, 03 Oct 2007 02:17:45 +0200 + +apt (0.7.6ubuntu11) gutsy; urgency=low + + * apt-pkg/contrib/mmap.cc: + - don't fail if msync() returns > 0 (LP: #144001) + + -- Colin Watson Sat, 22 Sep 2007 21:39:29 +0100 + +apt (0.7.6ubuntu10) gutsy; urgency=low + + * apt-pkg/deb/dpkgpm.cc: + - fix parse error when dpkg sends unexpected data + + -- Michael Vogt Tue, 18 Sep 2007 17:25:09 +0100 + +apt (0.7.6ubuntu9) gutsy; urgency=low + + * apt-pkg/deb/dpkgpm.cc: + - fix progress reporting precent calculation (LP: #137798) + * make apt build with g++ 4.3 + * fix missing SetExecClose() call when the status-fd is used + (LP: #136767) + * debian/apt.cron.daily: + - move unattended-upgrade before apt-get autoclean + * fix "purge" commandline argument, closes LP: #125733 + (thanks to Julien Danjou for the patch) + * cmdline/apt-get.cc: + - do not change the auto-installed information if a package + is reinstalled (LP: #139448) + + -- Michael Vogt Tue, 11 Sep 2007 20:55:00 +0200 + +apt (0.7.6ubuntu8) gutsy; urgency=low + + * apt-pkg/deb/dpkgpm.{cc,h}: + - fix bug in dpkg log writing when a signal is caught during + select() (LP: #134858) + - write end marker in the log as well + + -- Michael Vogt Wed, 05 Sep 2007 15:03:46 +0200 + +apt (0.7.6ubuntu7) gutsy; urgency=low + + * reupload to fix FTBFS + + -- Michael Vogt Thu, 16 Aug 2007 19:44:20 +0200 + +apt (0.7.6ubuntu6) gutsy; urgency=low + + * dpkg-triggers: Deal properly with new package states. + + -- Ian Jackson Wed, 15 Aug 2007 20:44:37 +0100 + +apt (0.7.6ubuntu5) UNRELEASED; urgency=low + + * apt-pkg/acquire-item.cc: + - fix file removal on local repo i-m-s hit (LP: #131166) + * tests/local-repo: + - added regression test for this bug + + -- Michael Vogt Thu, 09 Aug 2007 12:34:07 +0200 + +apt (0.7.6ubuntu4) gutsy; urgency=low + + * cmdline/apt-get.cc: + - remove YnPrompt when a XS-Vcs- tag is found, improve the + notice (LP: #129575) + * methods/copy.cc: + - take hashes here too + * apt-pkg/acquire-worker.cc: + - only pass on computed hash if we recived one from the method + + -- Michael Vogt Wed, 08 Aug 2007 19:30:29 +0200 + +apt (0.7.6ubuntu3) gutsy; urgency=low + + * apt-pkg/deb/dpkgpm.cc: + - fix packagename extraction when writting apport reports + * apt-pkg/pkgcachegen.cc: + - increase default mmap size (LP: #125640) + + -- Michael Vogt Tue, 07 Aug 2007 09:52:00 +0200 + +apt (0.7.6ubuntu2) gutsy; urgency=low + + * doc/examples/sources.list: + - change example source to gutsy + * apt-pkg/deb/dpkgpm.cc: + - do not break if no /dev/pts is available + + -- Michael Vogt Mon, 06 Aug 2007 15:17:57 +0200 + +apt (0.7.6ubuntu1) gutsy; urgency=low + + [ Michael Vogt ] + * apt-inst/contrib/extracttar.cc: + - fix fd leak for zero size files (thanks to Bill Broadley for + reporting this bug) + * apt-pkg/acquire-item.cc: + - remove zero size files on I-M-S hit + * methods/https.cc: + - only send LastModified if we actually have a file + - send range request with if-range + - delete failed downloads + (thanks to Thom May for his help here) + - delete zero size I-M-S hits + * apt-pkg/deb/dpkgpm.{cc,h}: + - merged dpkg-log branch, this lets you specify a + Dir::Log::Terminal file to log dpkg output to + (ABI break) + - when writting apport reports, attach the dpkg + terminal log too + * merged apt--sha256 branch to fully support the new + sha256 checksums in the Packages and Release files + (ABI break) + * apt-pkg/pkgcachegen.cc: + - increase default mmap size + * tests/local-repo: + - added local repository testcase + * make apt build with g++ 4.3 + * fix missing SetExecClose() call when the status-fd is used + * debian/apt.cron.daily: + - move unattended-upgrade before apt-get autoclean + * fix "purge" commandline argument, closes: #133421 + (thanks to Julien Danjou for the patch) + * cmdline/apt-get.cc: + - do not change the auto-installed information if a package + is reinstalled + * cmdline/apt-mark: + - Fix chmoding after have renamed the extended-states file (LP: #140019) + (thanks to Laurent Bigonville) + + [ Ian Jackson ] + * dpkg-triggers: Deal properly with new package states. + + -- Michael Vogt Thu, 02 Aug 2007 11:55:54 +0200 apt (0.7.6) unstable; urgency=low @@@ -1501,14 -924,6 +1629,14 @@@ apt (0.7.5) unstable; urgency=lo -- Otavio Salvador Wed, 25 Jul 2007 20:16:46 -0300 +apt (0.7.4ubuntu1) gutsy; urgency=low + + * debian/apt.conf.ubuntu, apt.conf.autoremove: + - Change metapackages to {restricted,universe,multiverse}/metapackages + in Install-Recommends-Sections and Never-MarkAuto-Sections + + -- Michael Vogt Thu, 26 Jul 2007 10:42:29 +0200 + apt (0.7.4) unstable; urgency=low [ Michael Vogt ] @@@ -1568,90 -983,6 +1696,90 @@@ apt (0.7.3) unstable; urgency=lo which disappeared from the BZR repositories -- Michael Vogt Sun, 01 Jul 2007 12:31:29 +0200 + +apt (0.7.2ubuntu7) gutsy; urgency=low + + * fix build-dependencies + * fixes in the auto-mark code (thanks to Daniel + Burrows) + + -- Michael Vogt Mon, 9 Jul 2007 19:02:54 +0200 + +apt (0.7.2ubuntu6) gutsy; urgency=low + + [ Michael Vogt] + * cmdline/apt-get.cc: + - make the XS-Vcs-$foo warning more copy'n'paste + friendly (thanks to Matt Zimmerman) + - ignore the Vcs-Browser tag (Fixes LP: #121770) + * debian/apt.conf.autoremove: + - added "linux-ubuntu-modules" to APT::NeverAutoRemove + + [ Sarah Hobbs ] + * Change metapackages to *metapackages in Install-Recommends-Section + and Never-MarkAuto-Section of debian/apt.conf.autoremove, so that + the Recommends of metapackages in universe and multiverse will get + installed. + * Also make this change in doc/examples/configure-index. + * Added a Build Dependancies of automake, docbook-xsl, xsltproc, xmlto, + docbook to fix FTBFS. + * Added in previous changelog entries, as those who uploaded did not + actually commit to Bzr. + + -- Sarah Hobbs Mon, 09 Jul 2007 01:15:57 +1000 + +apt (0.7.2ubuntu5) gutsy; urgency=low + + * Rerun autoconf to fix the FTBFS. + + -- Michael Bienia Fri, 06 Jul 2007 19:17:33 +0200 + +apt (0.7.2ubuntu4) gutsy; urgency=low + + * Rebuild for the libcurl4 -> libcurl3 transition mess. + + -- Steve Kowalik Fri, 6 Jul 2007 12:44:05 +1000 + +apt (0.7.2ubuntu3) gutsy; urgency=low + + * cmdline/apt-get.cc: + - fix InstallTask code when a pkgRecord ends + with a single '\n' (thanks to Soren Hansen for reporting) + + -- Michael Vogt Wed, 27 Jun 2007 13:33:38 +0200 + +apt (0.7.2ubuntu2) gutsy; urgency=low + + * fixed compile errors with g++ 4.3 (thanks to + Daniel Burrows, closes: #429378) + * fix FTFBFS by changing build-depends to + libcurl4-gnutls-dev (closes: #428363) + + -- Michael Vogt Tue, 19 Jun 2007 13:47:03 +0200 + +apt (0.7.2ubuntu1) gutsy; urgency=low + + * apt-pkg/deb/dpkgpm.cc: + - apport integration added, this means that a apport + report is written on dpkg failures + * cmdline/apt-get.cc: + - merged http://people.ubuntu.com/~mvo/bzr/apt/xs-vcs-bzr/ + this will warn when Vcs- headers are found on apt-get source + (Fixes LP:#115959) + * merged from debian/unstable, remaining changes: + - maintainer field changed + - merged the apt--mirror branch + http://people.ubuntu.com/~mvo/bzr/apt/apt--mirror/ + - apport reporting on package install/upgrade/remove failure + - support for "Originial-Maintainer" field + - merged apt--xs-vcs-bzr branch + (http://people.ubuntu.com/~mvo/bzr/apt/xs-vcs-bzr/) + - use ubuntu archive keyring by default + - debian/apt.conf.autoremove + + install recommands for section "metapackages" + + do not mark direct dependencies of "metapackages" as autoremoved + + -- Michael Vogt Thu, 14 Jun 2007 10:38:36 +0200 apt (0.7.2-0.1) unstable; urgency=low @@@ -1708,136 -1039,45 +1836,136 @@@ apt (0.7.1) experimental; urgency=lo - use clog for all debugging - only increase the score of installed applications if they are not obsolete - - fix resolver bug on removal triggered by weak-dependencies - with or-groups - * methods/http.cc: - - send apt version in User-Agent - * apt-pkg/deb/debrecords.cc: - - fix SHA1Hash() return value - * apt-pkg/cdrom.cc: - - only unmount if APT::CDROM::NoMount is false - * methods/cdrom.cc: - - only umount if it was mounted by the method before - * po/gl.po: - - fix error translation that causes trouble to lsb_release - * apt-pkg/acquire-item.cc: - - if decompression of a index fails, delete the index - * apt-pkg/acquire.{cc,h}: - - deal better with duplicated sources.list entries (avoid - double queuing of URLs) - this fixes hangs in bzip/gzip - * merged from Christian Perrier: - * mr.po: New Marathi translation Closes: #416806 - * zh_CN.po: Updated by Eric Pareja Closes: #416822 - * tl.po: Updated by Eric Pareja Closes: #416638 - * gl.po: Updated by Jacobo Tarrio - Closes: #412828 - * da.po: Updated by Claus Hindsgaul - Closes: #409483 - * fr.po: Remove a non-breakable space for usability - issues. Closes: #408877 - * ru.po: Updated Russian translation. Closes: #405476 - * *.po: Unfuzzy after upstream typo corrections - * vi.po: Updated to 515t. Closes: #426976 - * eu.po: Updated to 515t. Closes: #423766 - * pt.po: 515t. Closes: #423111 - * fr.po: Updated by Christian Perrier - * Update all PO and the POT. Gives 513t2f for formerly - complete translations - * apt-pkg/policy.cc: - - allow multiple packages (thanks to David Foerster) + - fix resolver bug on removal triggered by weak-dependencies + with or-groups + * methods/http.cc: + - send apt version in User-Agent + * apt-pkg/deb/debrecords.cc: + - fix SHA1Hash() return value + * apt-pkg/cdrom.cc: + - only unmount if APT::CDROM::NoMount is false + * methods/cdrom.cc: + - only umount if it was mounted by the method before + * po/gl.po: + - fix error in translation that causes trouble to lsb_release + (LP#79165) + * apt-pkg/acquire-item.cc: + - if decompression of a index fails, delete the index + * apt-pkg/acquire.{cc,h}: + - deal better with duplicated sources.list entries (avoid + double queuing of URLs) - this fixes hangs in bzip/gzip + (LP#102511) + * Fix broken use of awk in apt-key that caused removal of the wrong keys + from the keyring. Closes: #412572 + * merged from Christian Perrier: + * mr.po: New Marathi translation Closes: #416806 + * zh_CN.po: Updated by Eric Pareja Closes: #416822 + * tl.po: Updated by Eric Pareja Closes: #416638 + * gl.po: Updated by Jacobo Tarrio + Closes: #412828 + * da.po: Updated by Claus Hindsgaul + Closes: #409483 + * fr.po: Remove a non-breakable space for usability + issues. Closes: #408877 + * ru.po: Updated Russian translation. Closes: #405476 + * *.po: Unfuzzy after upstream typo corrections + * vi.po: Updated to 515t. Closes: #426976 + * eu.po: Updated to 515t. Closes: #423766 + * pt.po: 515t. Closes: #423111 + * fr.po: Updated by Christian Perrier + * Update all PO and the POT. Gives 513t2f for formerly + complete translations + * apt-pkg/policy.cc: + - allow multiple packages (thanks to David Foerster) + + -- Michael Vogt Wed, 2 May 2007 13:43:44 +0200 + +apt (0.6.46.4ubuntu10) feisty; urgency=low + + * apt-pkg/depcache.cc: + - added "APT::Never-MarkAuto-Section" and consider dependencies + of packages in this section manual (LP#59893) + - ensure proper permissions in the extended_state file (LP#67037) + * debian/apt.conf.ubuntu: + - added APT::Never-MarkAuto-Section "metapackages" (LP#59893) + * cmdline/apt-get.cc: + - "apt-get install foo" on a already installed package foo will + clean the automatic installed flag (LP#72007) + - do not show packages already marked for removal as auto-installed + (LP#64493) + - applied patch to (optionally) hide the auto-remove information + (thanks to Frode M. Døving) (LP#69148) + + -- Michael Vogt Wed, 14 Mar 2007 13:32:32 +0100 + +apt (0.6.46.4ubuntu9) feisty; urgency=low + + * debian/control: + - set XS-Vcs-Bzr header + - Set Ubuntu maintainer address + * apt-pkg/cdrom.cc: + - only unmount if APT::CDROM::NoMount is false + - only umount if it was mounted by the method before + * cmdline/apt-get.cc: + - fix version output in autoremove list (LP#68941) + * apt-pkg/packagemanager.cc: + - do not spin 100% cpu in FixMissing() (LP#84476) + * apt-pkg/indexfile.cc: + - fix problem overwriting APT::Acquire::Translation + * doc/examples/configure-index: + - document APT::Acquire::Translation + + -- Michael Vogt Tue, 13 Mar 2007 15:24:39 +0100 + +apt (0.6.46.4ubuntu8) feisty; urgency=low + + * fix segfault in the pkgRecords destructor + * Bump ABI version + * debian/control: + - make the libcurl3-gnutls-dev versionized (LP#86614) + + -- Michael Vogt Mon, 26 Feb 2007 14:26:33 +0100 + +apt (0.6.46.4ubuntu7) feisty; urgency=low + + * Merged the apt--mirror branch. This means that a new 'mirror' + method is available that will allow dynamic mirror updates. + The sources.list entry looks something like this: + "deb mirror://mirrors.lp.net/get_mirror feisty main restricted" + + It also supports error reporting to a configurable url for mirror + problems/failures. + * Bump ABI version + + -- Michael Vogt Tue, 6 Feb 2007 11:38:06 +0100 + +apt (0.6.46.4ubuntu6) feisty; urgency=low + + * methods/http.cc: + - send apt version in User-Agent + * apt-pkg/deb/debrecords.cc: + - fix SHA1Hash() return value + * apt-pkg/algorithms.cc: + - fix resolver bug on removal triggered by weak-dependencies + with or-groups + - fix segfault (lp: #76530) + + -- Michael Vogt Wed, 20 Dec 2006 11:04:36 +0100 + +apt (0.6.46.4ubuntu5) feisty; urgency=low + + * added apt-transport-https package to provide a optional + https transport (apt-https spec) + + -- Michael Vogt Tue, 19 Dec 2006 16:23:43 +0100 + +apt (0.6.46.4ubuntu4) feisty; urgency=low + + * apt-pkg/algorithms.cc: + - only increase the score of installed applications if they + are not obsolete - -- Michael Vogt Wed, 2 May 2007 13:43:44 +0200 + -- Michael Vogt Mon, 18 Dec 2006 19:39:05 +0100 apt (0.7.0) experimental; urgency=low @@@ -1866,29 -1106,6 +1994,29 @@@ -- Michael Vogt Fri, 12 Jan 2007 20:48:07 +0100 +apt (0.6.46.4ubuntu3) feisty; urgency=low + + * apt-pkg/algorithm.cc: + - use clog for all debugging + * apt-pkg/depcache.cc: + - never mark Required package for autoremoval (lp: #75882) + + -- Michael Vogt Mon, 18 Dec 2006 11:56:05 +0100 + +apt (0.6.46.4ubuntu2) feisty; urgency=low + + * apt-pkg/algorithms.cc: add missing call to MarkKeep + so that dist-upgrade isn't broken by unsatisfiable Breaks. + (thanks to Ian Jackson) + + -- Michael Vogt Thu, 7 Dec 2006 23:07:24 +0100 + +apt (0.6.46.4ubuntu1) feisty; urgency=low + + * merged with debian + + -- Michael Vogt Thu, 7 Dec 2006 12:13:14 +0100 + apt (0.6.46.4-0.1) unstable; urgency=emergency * NMU @@@ -1935,26 -1152,6 +2063,26 @@@ apt (0.6.46.3-0.1) unstable; urgency=hi -- Andreas Barth Tue, 5 Dec 2006 10:34:56 +0000 +apt (0.6.46.3ubuntu2) feisty; urgency=low + + * apt-pkg/algorithms.cc: add missing call to MarkKeep + so that dist-upgrade isn't broken by unsatisfiable Breaks. + + -- Ian Jackson Thu, 7 Dec 2006 15:46:52 +0000 + +apt (0.6.46.3ubuntu1) feisty; urgency=low + + * doc/apt-get.8.xml: + - documented autoremove, thanks to Vladimír Lapá%Gč%@ek + (lp: #62919) + * fix broken i18n in the dpkg progress reporting, thanks to + Frans Pop and Steinar Gunderson. (closes: #389261) + * po/en_GB.po: + - typo (lp: #61270) + * add apt-secure.8 to "See also" section + + -- Michael Vogt Thu, 23 Nov 2006 07:24:12 +0100 + apt (0.6.46.3) unstable; urgency=low * apt-pkg/deb/dpkgpm.cc: @@@ -2019,46 -1216,10 +2147,46 @@@ apt (0.6.46) unstable; urgency=lo * debian/control: - switched to libdb4.4 for building (closes: #381019) * cmdline/apt-get.cc: - - show only the recommends/suggests for the candidate-version, not for all - versions of the package (closes: #257054) - - properly handle recommends/suggests or-groups when printing the list of - suggested/recommends packages (closes: #311619) + - fix in the TryInstallTask() code to make sure that all package + there are marked manual install (lp: #61684) + + -- Michael Vogt Thu, 28 Sep 2006 00:34:20 +0200 + +apt (0.6.45ubuntu14) edgy; urgency=low + + * cmdline/apt-get.cc: + - fix in the TryInstallTask() code to make sure that all package + there are marked manual install (lp: #61684) + + -- Michael Vogt Thu, 28 Sep 2006 00:34:20 +0200 + +apt (0.6.45ubuntu13) edgy; urgency=low + + * no-changes upload to make apt rebuild against latest g++ and + fix synaptic FTBFS (see bug: #62461 for details) + + -- Michael Vogt Tue, 26 Sep 2006 22:33:10 +0200 + +apt (0.6.45ubuntu12) edgy; urgency=low + + * apt-pkg/depcache.cc: + - fix in the sweep() code, set garbage flag for packages scheduled + for removal too + - do not change the autoFlag in MarkKeep(), this can lead to suprising + side effects + + -- Michael Vogt Thu, 21 Sep 2006 00:58:24 +0200 + +apt (0.6.45ubuntu11) edgy; urgency=low + + * removed "installtask" and change it so that tasknames can be given + with "apt-get install taskname^" + * improve the writeStateFile() code + + -- Michael Vogt Wed, 20 Sep 2006 14:14:24 +0200 + +apt (0.6.45ubuntu10) edgy; urgency=low + * methods/http.cc: - check more careful for incorrect proxy settings (closes: #378868) * methods/gzip.cc: @@@ -2083,113 -1244,8 +2211,113 @@@ caseinsensitive (closes: #384182) - reverted MMap use in the tagfile because it does not work across pipes (closes: #383487) + * added "installtask" command + * added new ubuntu specific rewrite rule for "Original-Maintainer" - -- Michael Vogt Thu, 21 Sep 2006 10:25:03 +0200 + -- Michael Vogt Tue, 19 Sep 2006 15:07:51 +0200 + +apt (0.6.45ubuntu9) edgy; urgency=low + + * cmdline/apt-get.cc: + - if --no-remove is given, do not run the AutoRemove code + + -- Michael Vogt Wed, 13 Sep 2006 11:54:20 +0200 + +apt (0.6.45ubuntu8) edgy; urgency=low + + * apt-pkg/algorithm.cc: + - fix pkgProblemResolver.InstallProtect() to preserve the auto-install + information (lp: #59457) + * cmdline/apt-get.cc: + - fix typo in autoremove information (lp: #59420) + * install apt-mark to modify the automatically install information for + packages + + -- Michael Vogt Fri, 8 Sep 2006 20:07:22 +0200 + +apt (0.6.45ubuntu7) edgy; urgency=low + + * apt-pkg/depcache.cc: + - fix a bug in the install-recommends-section code + + -- Michael Vogt Thu, 7 Sep 2006 18:22:38 +0200 + +apt (0.6.45ubuntu6) edgy; urgency=low + + [Michael Vogt] + * cmdline/apt-get.cc: + - always show auto-removable packages and give a hint how to remove + them + * debian/apt.conf.ubuntu: + - exlucde linux-image and linux-restricted-modules from ever being + auto-removed + - added "metapackages" as the section we want to install recommends + by default + * apt-pkg/depcache.cc: + - added support to turn install-recommends selectively on/off by + section + [Ian Jackson] + * Tests pass without code changes! Except that we need this: + * Bump cache file major version to force rebuild so that Breaks + dependencies are included. + * Don't depend on or suggest any particular dpkg or dpkg-dev versions; + --auto-deconfigure is very very old and dpkg-dev's Breaks support + is more or less orthogonal. + * Initial draft of `Breaks' implementation. Appears to compile, + but as yet *completely untested*. + + -- Michael Vogt Thu, 7 Sep 2006 11:50:52 +0200 + +apt (0.6.45ubuntu5) edgy; urgency=low + + * apt-pkg/pkgcachegen.cc: + - increase the APT::Cache-Limit to deal with the increased demand due + to the translated descriptions + * apt-pkg/deb/dpkgpm.cc: + - pass "--auto-deconfigure" to dpkg on install to support the + new "breaks" in dpkg + + -- Michael Vogt Tue, 15 Aug 2006 12:06:26 +0200 + +apt (0.6.45ubuntu4) edgy; urgency=low + + * cmdline/apt-get.cc: + - fix in the new --fix-polciy code + + -- Michael Vogt Mon, 14 Aug 2006 21:08:11 +0200 + +apt (0.6.45ubuntu3) edgy; urgency=low + + * ABI break + * merged latest apt--install-recommends (closes: #559000) + * added "--fix-policy" option to can be used as "--fix-broken" and + will install missing weak depends (recommends, and/or suggests + depending on the settings) + * merged the apt--ddtp branch + + -- Michael Vogt Fri, 11 Aug 2006 12:53:23 +0200 + +apt (0.6.45ubuntu2) edgy; urgency=low + + * debian/control: + - switched to libdb4.4 for building (closes: #381019) + * cmdline/apt-get.cc: + - show only the recommends/suggests for the candidate-version, not for all + versions of the package (closes: #257054) + - properly handle recommends/suggests or-groups when printing the list of + suggested/recommends packages (closes: #311619) + * merged "apt--install-recommends" branch: + - added "{no-}install-recommends" commandline option + - added APT::Install-{Recommends,Suggests} option + - currently Install-Recommends defaults to "False" + + -- Michael Vogt Wed, 9 Aug 2006 23:38:46 +0200 + +apt (0.6.45ubuntu1) edgy; urgency=low + + * merged with debian/unstable + + -- Michael Vogt Tue, 1 Aug 2006 15:43:22 +0200 apt (0.6.45) unstable; urgency=low @@@ -2227,57 -1283,42 +2355,57 @@@ * dz.po: New Dzongkha translation: 512t * ro.po: Updated to 512t * eu.po: Updated - * eu.po: Updated - * fix apt-get dist-upgrade - * fix warning if no /var/lib/apt/extended_states is present - * don't download Translations for deb-src sources.list lines - * apt-pkg/tagfile.cc: - - support not-mmapable files again -- Michael Vogt Thu, 27 Jul 2006 00:52:05 +0200 -apt (0.6.44.2exp1) experimental; urgency=low +apt (0.6.44.2ubuntu4) edgy; urgency=low - * added support for i18n of the package descriptions - * added support for aptitude like auto-install tracking (a HUGE - HUGE thanks to Daniel Burrows who made this possible) - * synced with the http://people.debian.org/~mvo/bzr/apt/debian-sid branch - * build from http://people.debian.org/~mvo/bzr/apt/debian-experimental + * Make apt-get dselect-upgrade happy again - -- Michael Vogt Mon, 3 Jul 2006 21:50:31 +0200 + -- Michael Vogt Fri, 21 Jul 2006 11:03:02 +0200 -apt (0.6.44.2) unstable; urgency=low +apt (0.6.44.2ubuntu3) edgy; urgency=low - * apt-pkg/depcache.cc: - - added Debug::pkgDepCache::AutoInstall (thanks to infinity) - * apt-pkg/acquire-item.cc: - - fix missing chmod() in the new aquire code - (thanks to Bastian Blank, Closes: #367425) - * merged from - http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main: - * sk.po: Completed to 512t - * eu.po: Completed to 512t - * fr.po: Completed to 512t - * sv.po: Completed to 512t - * Update all PO and the POT. Gives 506t6f for formerly - complete translations + * Close extended_states file after writing it. + + -- Colin Watson Tue, 18 Jul 2006 00:12:13 +0100 + +apt (0.6.44.2ubuntu2) edgy; urgency=low + + * create a empty extended_states file if none exists already + + -- Michael Vogt Tue, 4 Jul 2006 09:23:03 +0200 + +apt (0.6.44.2ubuntu1) edgy; urgency=low + + * merged with debian/unstable + * merged the "auto-mark" branch to support aptitude like + marking of automatically installed dependencies and added + "apt-get remove --auto-remove" to remove unused auto-installed + packages again + * changed library version from 3.11 to 3.50 to make it clearly + different from the debian version (we are ABI incompatible because + of the auto-mark patch) + + -- Michael Vogt Mon, 3 Jul 2006 18:30:46 +0200 - -- Michael Vogt Wed, 14 Jun 2006 12:00:57 +0200 +apt (0.6.44.2) unstable; urgency=low + + * apt-pkg/depcache.cc: + - added Debug::pkgDepCache::AutoInstall (thanks to infinity) + * apt-pkg/acquire-item.cc: + - fix missing chmod() in the new aquire code + (thanks to Bastian Blank, Closes: #367425) + * merged from + http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main: + * sk.po: Completed to 512t + * eu.po: Completed to 512t + * fr.po: Completed to 512t + * sv.po: Completed to 512t + * Update all PO and the POT. Gives 506t6f for formerly + complete translations + + -- Michael Vogt Wed, 14 Jun 2006 12:00:57 +0200 apt (0.6.44.1-0.1) unstable; urgency=low @@@ -2339,26 -1380,6 +2467,26 @@@ apt (0.6.44) unstable; urgency=lo -- Michael Vogt Mon, 8 May 2006 22:28:53 +0200 +apt (0.6.43.3ubuntu3) dapper; urgency=low + + * methods/http.cc: + - fix the user-agent string + + -- Michael Vogt Fri, 26 May 2006 18:09:32 +0200 + +apt (0.6.43.3ubuntu2) dapper; urgency=low + + * apt-pkg/deb/dpkgpm.cc: wording fixes (thanks to Matt Zimmerman) + + -- Michael Vogt Tue, 18 Apr 2006 13:24:40 +0200 + +apt (0.6.43.3ubuntu1) dapper; urgency=low + + * apt-pkg/acquire.cc: don't show ETA if it is 0 or absurdely large in + the status-fd (ubuntu #28954) + + -- Michael Vogt Tue, 28 Mar 2006 20:34:46 +0200 + apt (0.6.43.3) unstable; urgency=low * Merge bubulle@debian.org--2005/apt--main--0 up to patch-186: @@@ -2368,46 -1389,16 +2496,46 @@@ * pl.po: Completed to 512t. Closes: #349514 * sk.po: Completed to 512t. Closes: #349474 * gl.po: Completed to 512 strings Closes: #349407 + * vi.po: Completed to 512 strings * sv.po: Completed to 512 strings Closes: #349210 * ru.po: Completed to 512 strings Closes: #349154 * da.po: Completed to 512 strings Closes: #349084 * fr.po: Completed to 512 strings + * LINGUAS: Add Welsh + * *.po: Updated from sources (512 strings) * vi.po: Completed to 511 strings Closes: #348968 - * zh_CN.po: Completed to 512t. Closes: #353936 - * it.po: Completed to 512t. Closes: #352803 - * pt_BR.po: Completed to 512t. Closes: #352419 + * apt-pkg/deb/deblistparser.cc: + - don't explode on a DepCompareOp in a Provides line, but warn about + it and ignore it otherwise (thanks to James Troup for reporting it) + * cmdline/apt-get.cc: + - don't lock the lists directory in DoInstall, breaks --print-uri + (thanks to James Troup for reporting it) + * debian/apt.dirs: create /etc/apt/sources.list.d + * make apt-cache madison work without deb-src entries (#352583) + * cmdline/apt-get.cc: only run the list-cleaner if a update was + successfull + * apt-get update errors are only warnings nowdays + * be more careful with the signature file on network failures + + -- Michael Vogt Wed, 22 Feb 2006 10:13:04 +0100 + +apt (0.6.43.2ubuntu1) dapper; urgency=low + + * Merge bubulle@debian.org--2005/apt--main--0 up to patch-182: + * ca.po: Completed to 512t. Closes: #351592 + * eu.po: Completed to 512t. Closes: #350483 + * ja.po: Completed to 512t. Closes: #349806 + * pl.po: Completed to 512t. Closes: #349514 + * sk.po: Completed to 512t. Closes: #349474 + * gl.po: Completed to 512 strings Closes: #349407 + * vi.po: Completed to 512 strings + * sv.po: Completed to 512 strings Closes: #349210 + * ru.po: Completed to 512 strings Closes: #349154 + * da.po: Completed to 512 strings Closes: #349084 + * fr.po: Completed to 512 strings * LINGUAS: Add Welsh * *.po: Updated from sources (512 strings) + * vi.po: Completed to 511 strings Closes: #348968 * apt-pkg/deb/deblistparser.cc: - don't explode on a DepCompareOp in a Provides line, but warn about it and ignore it otherwise (thanks to James Troup for reporting it) @@@ -2418,10 -1409,8 +2546,10 @@@ * make apt-cache madison work without deb-src entries (#352583) * cmdline/apt-get.cc: only run the list-cleaner if a update was successfull + * apt-get update errors are only warnings nowdays + * be more careful with the signature file on network failures - -- Michael Vogt Wed, 22 Feb 2006 10:13:04 +0100 + -- Michael Vogt Mon, 20 Feb 2006 22:27:48 +0100 apt (0.6.43.2) unstable; urgency=low @@@ -2446,26 -1435,8 +2574,26 @@@ -- Michael Vogt Thu, 19 Jan 2006 00:06:33 +0100 -apt (0.6.43.1) unstable; urgency=low +apt (0.6.43.1ubuntu1) dapper; urgency=low + + * Merge bubulle@debian.org--2005/apt--main--0 up to patch-159: + - en_GB.po, de.po: fix spaces errors in "Ign " translations + Closes: #347258 + - makefile: make update-po a pre-requisite of clean target so + that POT and PO files are always up-to-date + - sv.po: Completed to 511t. Closes: #346450 + - sk.po: Completed to 511t. Closes: #346369 + - fr.po: Completed to 511t + - *.po: Updated from sources (511 strings) + * add patch to fix http download corruption problem (thanks to + Petr Vandrovec, closes: #280844, #290694) + * added APT::Periodic::Unattended-Upgrade (requires the package + "unattended-upgrade") + + -- Michael Vogt Tue, 10 Jan 2006 17:09:31 +0100 +apt (0.6.43.1) unstable; urgency=low + * Merge bubulle@debian.org--2005/apt--main--0 up to patch-148: * fr.po: Completed to 510 strings * it.po: Completed to 510t @@@ -2487,19 -1458,6 +2615,19 @@@ -- Michael Vogt Fri, 6 Jan 2006 01:17:08 +0100 +apt (0.6.43ubuntu2) dapper; urgency=low + + * merged some missing bits that wheren't merged by baz in the previous + upload (*grumble*) + + -- Michael Vogt Thu, 8 Dec 2005 18:35:58 +0100 + +apt (0.6.43ubuntu1) dapper; urgency=low + + * merged with debian + + -- Michael Vogt Fri, 25 Nov 2005 11:36:29 +0100 + apt (0.6.43) unstable; urgency=medium * Merge bubulle@debian.org--2005/apt--main--0 up to patch-132: @@@ -2520,22 -1478,6 +2648,22 @@@ -- Michael Vogt Tue, 29 Nov 2005 00:17:07 +0100 +apt (0.6.42.3ubuntu2) dapper; urgency=low + + * Merge bubulle@debian.org--2005/apt--main--0 up to patch-131: + * zh_CN.po: Completed to 507 strings(Closes: #338267) + * gl.po: Completed to 510 strings (Closes: #338356) + * added support for "/etc/apt/sources.list.d" directory + (closes: #66325) + + -- Michael Vogt Mon, 14 Nov 2005 15:30:12 +0100 + +apt (0.6.42.3ubuntu1) dapper; urgency=low + + * synced with debian + + -- Michael Vogt Thu, 10 Nov 2005 05:05:56 +0100 + apt (0.6.42.3) unstable; urgency=low * Merge bubulle@debian.org--2005/apt--main--0 up to patch-129: @@@ -2583,13 -1525,13 +2711,13 @@@ apt (0.6.42) unstable; urgency=lo - unmount the cdrom when apt failed to locate any package files * allow cdrom failures and fallback to other sources in that case (closes: #44135) - * better error text when dpkg-source fails + * better error text when dpkg-source fails * Merge bubulle@debian.org--2005/apt--main--0 up to patch-115: - patch-99: Added Galician translation - patch-100: Completed Danish translation (Closes: #325686) - patch-104: French translation completed - patch-109: Italian translation completed - - patch-112: Swedish translation update + - patch-112: Swedish translation update - patch-115: Basque translation completed (Closes: #333299) * applied french man-page update (thanks to Philippe Batailler) (closes: #316638, #327456) @@@ -2603,9 -1545,9 +2731,9 @@@ * apt-pkg/contrib/md5.cc: - fix a alignment problem on sparc64 that gives random bus errors (thanks to Fabbione for providing a test-case) - * init the default ScreenWidth to 79 columns by default + * init the default ScreenWidth to 79 columns by default (Closes: #324921) - * cmdline/apt-cdrom.cc: + * cmdline/apt-cdrom.cc: - fix some missing gettext() calls (closes: #334539) * doc/apt-cache.8.xml: fix typo (closes: #334714) @@@ -2616,8 -1558,8 +2744,8 @@@ apt (0.6.41) unstable; urgency=lo * improved the support for "error" and "conffile" reporting from dpkg, added the format to README.progress-reporting * added README.progress-reporting to the apt-doc package - * improved the network timeout handling, if a index file from a - sources.list times out or EAI_AGAIN is returned from getaddrinfo, + * improved the network timeout handling, if a index file from a + sources.list times out or EAI_AGAIN is returned from getaddrinfo, don't try to get the other files from that entry * Support architecture-specific extra overrides (closes: #225947). Thanks to Anthony Towns for idea and @@@ -2625,10 -1567,10 +2753,10 @@@ * Javier Fernandez-Sanguino Pen~a: - Added a first version of an apt-secure.8 manpage, and modified apt-key and apt.end accordingly. Also added the 'update' - argument to apt-key which was previously not documented + argument to apt-key which was previously not documented (Closes: #322120) * Andreas Pakulat: - - added example apt-ftparchive.conf file to doc/examples + - added example apt-ftparchive.conf file to doc/examples (closes: #322483) * Fix a incorrect example in the man-page (closes: #282918) * Fix a bug for very long lines in the apt-cdrom code (closes: #280356) @@@ -2637,84 -1579,10 +2765,84 @@@ * Change pkgPolicy::Pin from private to protected to let subclasses access it too (closes: #321799) * add default constructor for PrvIterator (closes: #322267) - * Reread status configuration on debSystem::Initialize() + * Reread status configuration on debSystem::Initialize() (needed for apt-proxy, thanks to Otavio for this patch) - + -- Michael Vogt Mon, 5 Sep 2005 22:59:03 +0200 + +apt (0.6.40.1ubuntu8) breezy; urgency=low + + * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-62: + - fix for a bad memory/file leak in the mmap code (ubuntu #15603) + * po/de.po, po/fr.po: + - updated the translations + * po/makefile: + - create a single pot file in each domain dir to make rosetta happy + + -- Michael Vogt Wed, 28 Sep 2005 10:16:06 +0200 + +apt (0.6.40.1ubuntu7) breezy; urgency=low + + * updated the pot/po files , no code changes + + -- Michael Vogt Tue, 27 Sep 2005 18:38:16 +0200 + +apt (0.6.40.1ubuntu6) breezy; urgency=low + + * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-56: + - make it possible for apt to handle a failed MediaChange event and + fall back to other sources (ubuntu #13713) + + -- Michael Vogt Tue, 13 Sep 2005 22:09:50 +0200 + +apt (0.6.40.1ubuntu5) breezy; urgency=low + + * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-{50,51}. + This adds media-change reporting to the apt status-fd (ubuntu #15213) + * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-55: + apt-pkg/cdrom.cc: + - unmount the cdrom when apt failed to locate any package files + + -- Michael Vogt Mon, 12 Sep 2005 15:44:26 +0200 + +apt (0.6.40.1ubuntu4) breezy; urgency=low + + * debian/apt.cron.daily: + - fix a embarrassing typo + + -- Michael Vogt Wed, 7 Sep 2005 10:10:37 +0200 + +apt (0.6.40.1ubuntu3) breezy; urgency=low + + * debian/apt.cron.daily: + - use the ctime as well when figuring what packages need to + be removed. This fixes the problem that packages copied with + "cp -a" (e.g. from the installer) have old mtimes (ubuntu #14504) + + -- Michael Vogt Tue, 6 Sep 2005 18:30:46 +0200 + +apt (0.6.40.1ubuntu2) breezy; urgency=low + + * improved the support for "error" and "conffile" reporting from + dpkg, added the format to README.progress-reporting + * added README.progress-reporting to the apt-doc package + * Do md5sum checking for file and cdrom method (closes: #319142) + * Change pkgPolicy::Pin from private to protected to let subclasses + access it too (closes: #321799) + * methods/connect.cc: + - send failure reason for EAI_AGAIN (TmpResolveFailure) to acuire-item + * apt-pkg/acquire-item.cc: + - fail early if a FailReason is TmpResolveFailure (avoids hangs during + the install when no network is available) + * merged michael.vogt@ubuntu.com--2005/apt--trust-cdrom--0 + + -- Michael Vogt Tue, 23 Aug 2005 19:44:55 +0200 + +apt (0.6.40.1ubuntu1) breezy; urgency=low + + * Synchronize with Debian + + -- Michael Vogt Fri, 5 Aug 2005 14:20:56 +0200 apt (0.6.40.1) unstable; urgency=low @@@ -2725,12 -1593,6 +2853,12 @@@ -- Michael Vogt Fri, 5 Aug 2005 13:24:58 +0200 +apt (0.6.40ubuntu1) breezy; urgency=low + + * Synchronize with Debian + + -- Matt Zimmerman Thu, 4 Aug 2005 15:53:22 -0700 + apt (0.6.40) unstable; urgency=low * Patch from Jordi Mallach to mark some additional strings for translation @@@ -2746,39 -1608,6 +2874,39 @@@ -- Matt Zimmerman Thu, 28 Jul 2005 11:57:32 -0700 +apt (0.6.39ubuntu4) breezy; urgency=low + + * Fix keyring paths in apt-key, apt.postinst (I swear I remember doing this + before...) + + -- Matt Zimmerman Wed, 29 Jun 2005 08:39:17 -0700 + +apt (0.6.39ubuntu3) breezy; urgency=low + + * Fix keyring locations for Ubuntu in apt-key too. + + -- Colin Watson Wed, 29 Jun 2005 14:45:36 +0100 + +apt (0.6.39ubuntu2) breezy; urgency=low + + * Install ubuntu-archive.gpg rather than debian-archive.gpg as + /etc/apt/trusted.gpg. + + -- Colin Watson Wed, 29 Jun 2005 11:53:34 +0100 + +apt (0.6.39ubuntu1) breezy; urgency=low + + * 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 + + -- Matt Zimmerman Tue, 28 Jun 2005 11:52:24 -0700 + apt (0.6.39) unstable; urgency=low * Welsh translation update: daf@muse.19inch.net--2005/apt--main--0--patch-6 @@@ -2789,14 -1618,7 +2917,14 @@@ * Update priority of apt-utils to important, to match the override file * Install only one keyring on each branch (Closes: #316119) - -- Matt Zimmerman Tue, 28 Jun 2005 11:51:09 -0700 + -- Matt Zimmerman Tue, 28 Jun 2005 11:35:21 -0700 + +apt (0.6.38ubuntu1) breezy; urgency=low + + * First release from Ubuntu branch + * Merge with --main--0, switch back to Ubuntu keyring + + -- Matt Zimmerman Sat, 25 Jun 2005 16:52:41 -0700 apt (0.6.38) unstable; urgency=low diff --combined debian/control index b74079735,84c411509..03cc52d87 --- a/debian/control +++ b/debian/control @@@ -1,22 -1,20 +1,22 @@@ Source: apt Section: admin Priority: important -Maintainer: APT Development Team +Maintainer: Ubuntu Core Developers +XSBC-Original-Maintainer: APT Development Team Uploaders: Michael Vogt , Otavio Salvador , Christian Perrier , Daniel Burrows , - Luca Bruno , Eugene V. Lyubimkin - Standards-Version: 3.8.0 + Luca Bruno + Standards-Version: 3.8.1.0 -Build-Depends: debhelper (>= 5.0), libdb-dev, gettext (>= 0.12), libcurl4-gnutls-dev | libcurl3-gnutls-dev (>= 7.15.5), debiandoc-sgml, docbook-utils (>= 0.6.12), xsltproc, docbook-xsl, xmlto -Vcs-Bzr: http://bzr.debian.org/apt/debian-sid/ +Build-Depends: debhelper (>= 5.0), libdb-dev, gettext (>= 0.12), libcurl4-gnutls-dev | libcurl3-gnutls-dev (>= 7.15.5), debiandoc-sgml, docbook-utils (>= 0.6.12), xsltproc, docbook-xsl, xmlto, intltool +Vcs-Bzr: http://code.launchpad.net/~ubuntu-core-dev/apt/ubuntu Package: apt Architecture: any -Depends: ${shlibs:Depends}, debian-archive-keyring +Depends: ${shlibs:Depends} Priority: important Replaces: libapt-pkg-doc (<< 0.3.7), libapt-pkg-dev (<< 0.3.7) Provides: ${libapt-pkg:provides} +Recommends: ubuntu-keyring Suggests: aptitude | synaptic | gnome-apt | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt Section: admin Description: Advanced front-end for dpkg diff --combined doc/examples/configure-index index a3ccdded8,5dc7b5246..175f0e480 --- a/doc/examples/configure-index +++ b/doc/examples/configure-index @@@ -55,6 -55,7 +55,7 @@@ AP Diff-Only "false"; Tar-Only "false"; Build-Dep-Automatic "true"; + Show-User-Simulation-Note "true"; }; Cache @@@ -107,9 -108,6 +108,9 @@@ Install-Recommends "true"; Install-Suggests "false"; + // install recommends automatically for packages in this section + Install-Recommends-Section { "metapackages"; "universe/metapackages"; }; + // consider dependencies of packages in this section manual Never-MarkAuto-Sections {"metapackages"; "universe/metapackages"; }; @@@ -118,6 -116,56 +119,56 @@@ // Keep the list of FDs open (normally apt closes all fds when it // does a ExecFork) Keep-Fds {}; + + // control parameters for cron jobs by /etc/cron.daily/apt + Periodic + { + BackupArchiveInterval "0"; + // - Backup after n-days if archive contents changed.(0=disable) + + BackupLevel "3"; + // - Backup level.(0=disable), 1 is invalid. + + // APT::Archives::MaxAge "0"; (old, deprecated) + MaxAge "0"; // (new) + // - Set maximum allowed age of a cache package file. If a cache + // package file is older it is deleted (0=disable) + + // APT::Archives::MinAge "2"; (old, deprecated) + MinAge "2"; // (new) + // - Set minimum age of a package file. If a file is younger it + // will not be deleted (0=disable). Usefull to prevent races + // and to keep backups of the packages for emergency. + + // APT::Archives::MaxSize "0"; (old, deprecated) + MaxSize "0"; // (new) + // - Set maximum size of the cache in MB (0=disable). If the cache + // is bigger, cached package files are deleted until the size + // requirement is met (the biggest packages will be deleted + // first). + + Update-Package-Lists "0"; + // - Do "apt-get update" automatically every n-days (0=disable) + // + Download-Upgradeable-Packages "0"; + // - Do "apt-get upgrade --download-only" every n-days (0=disable) + // + Unattended-Upgrade "0"; + // - Run the "unattended-upgrade" security upgrade script + // every n-days (0=disabled) + // Requires the package "unattended-upgrades" and will write + // a log in /var/log/unattended-upgrades + // + AutocleanInterval "0"; + // - Do "apt-get autoclean" every n-days (0=disable) + + Verbose "0"; + // - Send report mail to root + // 0: no report (or null string) + // 1: progress report (actually any string) + // 2: + command outputs (remove -qq, remove 2>/dev/null, add -d) + // 3: + trace on + }; }; // Options for the downloading routines @@@ -198,20 -246,6 +249,20 @@@ Acquir { Options {"--ignore-time-conflict";} // not very useful on a normal system }; + + mirror + { + RefreshInterval "360"; // refresh interval in minutes + MaxAge "90"; // max age for a mirror file in days before + // it gets deleted + // mirror failure reporting script + ProblemReporting "/usr/lib/apt/apt-report-mirror-failure"; + // mirror failure reporting url + ReportFailures "http://example.com/mirror-failure"; + }; + + // translations can be set here to "none", "environment" or "$locale" + Translation "none"; }; // Directory layout @@@ -225,22 -259,27 +276,28 @@@ Dir "/ userstatus "status.user"; status "/var/lib/dpkg/status"; cdroms "cdroms.list"; + mirrors "mirrors/"; }; // Location of the cache dir Cache "var/cache/apt/" { Archives "archives/"; + // backup directory created by /etc/cron.daily/apt + Backup "backup/"; srcpkgcache "srcpkgcache.bin"; pkgcache "pkgcache.bin"; }; // Config files Etc "etc/apt/" { - SourceList "sources.list"; Main "apt.conf"; - Preferences "preferences"; Parts "apt.conf.d/"; + Preferences "preferences"; + PreferencesParts "preferences.d"; + SourceList "sources.list"; + SourceParts "sources.list.d"; + VendorList "vendors.list"; + VendorParts "vendors.list.d"; }; // Locations of binaries @@@ -306,7 -345,9 +363,9 @@@ DPk Debug { pkgProblemResolver "false"; + pkgProblemResolver::ShowScores "false"; pkgDepCache::AutoInstall "false"; // what packages apt install to satify dependencies + pkgDepCache::Marker "false"; pkgAcquire "false"; pkgAcquire::Worker "false"; pkgAcquire::Auth "false"; @@@ -321,9 -362,9 +380,9 @@@ Acquire::Http "false"; // Show http command traffic Acquire::Https "false"; // Show https debug Acquire::gpgv "false"; // Show the gpgv traffic + Acquire::Mirror "false"; // Show debugging of the mirror method aptcdrom "false"; // Show found package files IdentCdrom "false"; - } /* Whatever you do, do not use this configuration file!! Take out ONLY diff --combined methods/http.cc index 3f13be050,006e89394..476fb751f --- a/methods/http.cc +++ b/methods/http.cc @@@ -723,7 -723,7 +723,7 @@@ void HttpMethod::SendReq(FetchItem *Itm Req += string("Authorization: Basic ") + Base64Encode(Uri.User + ":" + Uri.Password) + "\r\n"; - Req += "User-Agent: Debian APT-HTTP/1.3 ("VERSION")\r\n\r\n"; + Req += "User-Agent: Ubuntu APT-HTTP/1.3 ("VERSION")\r\n\r\n"; if (Debug == true) cerr << Req << endl; @@@ -947,9 -947,6 +947,9 @@@ int HttpMethod::DealWithHeaders(FetchRe failure */ if (Srv->Result < 200 || Srv->Result >= 300) { + char err[255]; + snprintf(err,sizeof(err)-1,"HttpError%i",Srv->Result); + SetFailReason(err); _error->Error("%u %s",Srv->Result,Srv->Code); if (Srv->HaveContent == true) return 4; @@@ -1026,7 -1023,7 +1026,7 @@@ void HttpMethod::SigTerm(int depth. */ bool HttpMethod::Fetch(FetchItem *) { - if (Server == 0) + if (Server == 0) return true; // Queue the requests @@@ -1316,5 -1313,15 +1316,15 @@@ int HttpMethod::Loop( } /*}}}*/ + int main() + { + setlocale(LC_ALL, ""); + // ignore SIGPIPE, this can happen on write() if the socket + // closes the connection (this is dealt with via ServerDie()) + signal(SIGPIPE, SIG_IGN); + + HttpMethod Mth; + return Mth.Loop(); + } diff --combined methods/makefile index 1d022be90,134166ba3..f4d417cee --- a/methods/makefile +++ b/methods/makefile @@@ -7,7 -7,7 +7,7 @@@ include ../buildlib/defaults.ma BIN := $(BIN)/methods # FIXME.. - LIB_APT_PKG_MAJOR = 4.7 + LIB_APT_PKG_MAJOR = 4.8 APT_DOMAIN := libapt-pkg$(LIB_APT_PKG_MAJOR) # The file method @@@ -40,7 -40,7 +40,7 @@@ include $(PROGRAM_H # The cdrom method PROGRAM=cdrom - SLIBS = -lapt-pkg $(INTLLIBS) + SLIBS = -lapt-pkg -ldl $(INTLLIBS) LIB_MAKES = apt-pkg/makefile SOURCE = cdrom.cc include $(PROGRAM_H) @@@ -49,7 -49,7 +49,7 @@@ PROGRAM=http SLIBS = -lapt-pkg $(SOCKETLIBS) $(INTLLIBS) LIB_MAKES = apt-pkg/makefile -SOURCE = http.cc rfc2553emu.cc connect.cc +SOURCE = http.cc http_main.cc rfc2553emu.cc connect.cc include $(PROGRAM_H) # The https method @@@ -80,17 -80,9 +80,17 @@@ LIB_MAKES = apt-pkg/makefil SOURCE = rsh.cc include $(PROGRAM_H) +# The mirror method +PROGRAM=mirror +SLIBS = -lapt-pkg $(SOCKETLIBS) +LIB_MAKES = apt-pkg/makefile +SOURCE = mirror.cc http.cc rfc2553emu.cc connect.cc +include $(PROGRAM_H) + # SSH and bzip2 method symlink binary: $(BIN)/ssh $(BIN)/bzip2 $(BIN)/lzma veryclean: clean-$(BIN)/ssh clean-$(BIN)/bzip2 clean-$(BIN)/lzma + $(BIN)/ssh: echo "Installing ssh method link" ln -fs rsh $(BIN)/ssh