From: Michael Vogt Date: Thu, 10 Dec 2009 15:06:40 +0000 (+0100) Subject: * merge lp:~mvo/apt/netrc branch, this adds support for a X-Git-Tag: 0.7.25~9^2 X-Git-Url: https://git.saurik.com/apt.git/commitdiff_plain/e4b16ac68196eab5e58abf715459fe70c199cff3?hp=-c * merge lp:~mvo/apt/netrc branch, this adds support for a /etc/apt/auth.conf that can be used to store username/passwords in a "netrc" style file (with the extension that it supports "/" in a machine definition). Based on the maemo git branch. * apt-pkg/deb/dpkgpm.cc: - add "purge" to list of known actions --- e4b16ac68196eab5e58abf715459fe70c199cff3 diff --combined apt-pkg/deb/dpkgpm.cc index adaf362fa,fe673925b..6eb3b40ac --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@@ -49,6 -49,7 +49,7 @@@ namespac std::make_pair("install", N_("Installing %s")), std::make_pair("configure", N_("Configuring %s")), std::make_pair("remove", N_("Removing %s")), + std::make_pair("purge", N_("Completely removing %s")), std::make_pair("trigproc", N_("Running post-installation trigger %s")) }; @@@ -134,14 -135,8 +135,14 @@@ bool pkgDPkgPM::Configure(PkgIterator P { if (Pkg.end() == true) return false; - - List.push_back(Item(Item::Configure,Pkg)); + + List.push_back(Item(Item::Configure, Pkg)); + + // Use triggers for config calls if we configure "smart" + // as otherwise Pre-Depends will not be satisfied, see #526774 + if (_config->FindB("DPkg::TriggersPending", false) == true) + List.push_back(Item(Item::TriggersPending, PkgIterator())); + return true; } /*}}}*/ @@@ -196,9 -191,6 +197,9 @@@ bool pkgDPkgPM::SendV2Pkgs(FILE *F // Write out the package actions in order. for (vector::iterator I = List.begin(); I != List.end(); I++) { + if(I->Pkg.end() == true) + continue; + pkgDepCache::StateCache &S = Cache[I->Pkg]; fprintf(F,"%s ",I->Pkg.Name()); @@@ -387,11 -379,10 +388,11 @@@ void pkgDPkgPM::DoTerminalPty(int maste */ void pkgDPkgPM::ProcessDpkgStatusLine(int OutStatusFd, char *line) { + bool const Debug = _config->FindB("Debug::pkgDPkgProgressReporting",false); // the status we output ostringstream status; - if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true) + if (Debug == true) std::clog << "got from dpkg '" << line << "'" << std::endl; @@@ -406,7 -397,6 +407,7 @@@ 'processing: install: pkg' 'processing: configure: pkg' 'processing: remove: pkg' + 'processing: purge: pkg' - but for apt is it a ignored "unknown" action 'processing: trigproc: trigger' */ @@@ -419,28 -409,28 +420,28 @@@ TokSplitString(':', line, list, sizeof(list)/sizeof(list[0])); if( list[0] == NULL || list[1] == NULL || list[2] == NULL) { - if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true) + if (Debug == true) std::clog << "ignoring line: not enough ':'" << std::endl; return; } - char *pkg = list[1]; - char *action = _strstrip(list[2]); + const char* const pkg = list[1]; + const char* action = _strstrip(list[2]); // 'processing' from dpkg looks like // 'processing: action: pkg' if(strncmp(list[0], "processing", strlen("processing")) == 0) { char s[200]; - char *pkg_or_trigger = _strstrip(list[2]); - action =_strstrip( list[1]); + const char* const pkg_or_trigger = _strstrip(list[2]); + action = _strstrip( list[1]); const std::pair * const iter = std::find_if(PackageProcessingOpsBegin, PackageProcessingOpsEnd, MatchProcessingOp(action)); if(iter == PackageProcessingOpsEnd) { - if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true) - std::clog << "ignoring unknwon action: " << action << std::endl; + if (Debug == true) + std::clog << "ignoring unknown action: " << action << std::endl; return; } snprintf(s, sizeof(s), _(iter->second), pkg_or_trigger); @@@ -451,7 -441,7 +452,7 @@@ << endl; if(OutStatusFd > 0) write(OutStatusFd, status.str().c_str(), status.str().size()); - if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true) + if (Debug == true) std::clog << "send: '" << status.str() << "'" << endl; return; } @@@ -464,11 -454,11 +465,11 @@@ << endl; if(OutStatusFd > 0) write(OutStatusFd, status.str().c_str(), status.str().size()); - if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true) + if (Debug == true) std::clog << "send: '" << status.str() << "'" << endl; return; } - if(strncmp(action,"conffile",strlen("conffile")) == 0) + else if(strncmp(action,"conffile",strlen("conffile")) == 0) { status << "pmconffile:" << list[1] << ":" << (PackagesDone/float(PackagesTotal)*100.0) @@@ -476,12 -466,12 +477,12 @@@ << endl; if(OutStatusFd > 0) write(OutStatusFd, status.str().c_str(), status.str().size()); - if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true) + if (Debug == true) std::clog << "send: '" << status.str() << "'" << endl; return; } - vector &states = PackageOps[pkg]; + vector const &states = PackageOps[pkg]; const char *next_action = NULL; if(PackageOpsDone[pkg] < states.size()) next_action = states[PackageOpsDone[pkg]].state; @@@ -504,15 -494,15 +505,15 @@@ << endl; if(OutStatusFd > 0) write(OutStatusFd, status.str().c_str(), status.str().size()); - if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true) + if (Debug == true) std::clog << "send: '" << status.str() << "'" << endl; } - if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true) + if (Debug == true) std::clog << "(parsed from dpkg) pkg: " << pkg << " action: " << action << endl; } - -// DPkgPM::DoDpkgStatusFd /*{{{*/ + /*}}}*/ +// DPkgPM::DoDpkgStatusFd /*{{{*/ // --------------------------------------------------------------------- /* */ @@@ -549,7 -539,7 +550,7 @@@ void pkgDPkgPM::DoDpkgStatusFd(int stat dpkgbuf_pos = dpkgbuf+dpkgbuf_pos-p; } /*}}}*/ - +// DPkgPM::OpenLog /*{{{*/ bool pkgDPkgPM::OpenLog() { string logdir = _config->FindDir("Dir::Log"); @@@ -572,8 -562,7 +573,8 @@@ } return true; } - + /*}}}*/ +// DPkg::CloseLog /*{{{*/ bool pkgDPkgPM::CloseLog() { if(term_out) @@@ -590,7 -579,7 +591,7 @@@ term_out = NULL; return true; } - + /*}}}*/ /*{{{*/ // This implements a racy version of pselect for those architectures // that don't have a working implementation. @@@ -612,6 -601,7 +613,6 @@@ static int racy_pselect(int nfds, fd_se return retval; } /*}}}*/ - // DPkgPM::Go - Run the sequence /*{{{*/ // --------------------------------------------------------------------- /* This globs the operations and calls dpkg @@@ -628,9 -618,9 +629,9 @@@ bool pkgDPkgPM::Go(int OutStatusFd sigset_t sigmask; sigset_t original_sigmask; - unsigned int MaxArgs = _config->FindI("Dpkg::MaxArgs",8*1024); - unsigned int MaxArgBytes = _config->FindI("Dpkg::MaxArgBytes",32*1024); - bool NoTriggers = _config->FindB("DPkg::NoTriggers",false); + unsigned int const MaxArgs = _config->FindI("Dpkg::MaxArgs",8*1024); + unsigned int const MaxArgBytes = _config->FindI("Dpkg::MaxArgBytes",32*1024); + bool const NoTriggers = _config->FindB("DPkg::NoTriggers", false); if (RunScripts("DPkg::Pre-Invoke") == false) return false; @@@ -638,13 -628,6 +639,13 @@@ if (RunScriptsWithPkgs("DPkg::Pre-Install-Pkgs") == false) return false; + // support subpressing of triggers processing for special + // cases like d-i that runs the triggers handling manually + bool const SmartConf = (_config->Find("PackageManager::Configure", "all") != "all"); + bool const TriggersPending = _config->FindB("DPkg::TriggersPending", false); + if (_config->FindB("DPkg::ConfigurePending", SmartConf) == true) + List.push_back(Item(Item::ConfigurePending, PkgIterator())); + // map the dpkg states to the operations that are performed // (this is sorted in the same way as Item::Ops) static const struct DpkgState DpkgStatesOpMap[][7] = { @@@ -680,19 -663,16 +681,19 @@@ // that will be [installed|configured|removed|purged] and add // them to the PackageOps map (the dpkg states it goes through) // and the PackageOpsTranslations (human readable strings) - for (vector::iterator I = List.begin(); I != List.end();I++) + for (vector::const_iterator I = List.begin(); I != List.end();I++) { - string name = (*I).Pkg.Name(); + if((*I).Pkg.end() == true) + continue; + + string const name = (*I).Pkg.Name(); PackageOpsDone[name] = 0; for(int i=0; (DpkgStatesOpMap[(*I).Op][i]).state != NULL; i++) { PackageOps[name].push_back(DpkgStatesOpMap[(*I).Op][i]); PackagesTotal++; } - } + } stdin_is_dev_null = false; @@@ -700,25 -680,11 +701,25 @@@ OpenLog(); // this loop is runs once per operation - for (vector::iterator I = List.begin(); I != List.end();) + for (vector::const_iterator I = List.begin(); I != List.end();) { - vector::iterator J = I; - for (; J != List.end() && J->Op == I->Op; J++) - /* nothing */; + // Do all actions with the same Op in one run + vector::const_iterator J = I; + if (TriggersPending == true) + for (; J != List.end(); J++) + { + if (J->Op == I->Op) + continue; + if (J->Op != Item::TriggersPending) + break; + vector::const_iterator T = J + 1; + if (T != List.end() && T->Op == I->Op) + continue; + break; + } + else + for (; J != List.end() && J->Op == I->Op; J++) + /* nothing */; // Generate the argument list const char *Args[MaxArgs + 50]; @@@ -735,7 -701,7 +736,7 @@@ unsigned int n = 0; unsigned long Size = 0; - string Tmp = _config->Find("Dir::Bin::dpkg","dpkg"); + string const Tmp = _config->Find("Dir::Bin::dpkg","dpkg"); Args[n++] = Tmp.c_str(); Size += strlen(Args[n-1]); @@@ -785,23 -751,11 +786,23 @@@ case Item::Configure: Args[n++] = "--configure"; - if (NoTriggers) - Args[n++] = "--no-triggers"; Size += strlen(Args[n-1]); break; - + + case Item::ConfigurePending: + Args[n++] = "--configure"; + Size += strlen(Args[n-1]); + Args[n++] = "--pending"; + Size += strlen(Args[n-1]); + break; + + case Item::TriggersPending: + Args[n++] = "--triggers-only"; + Size += strlen(Args[n-1]); + Args[n++] = "--pending"; + Size += strlen(Args[n-1]); + break; + case Item::Install: Args[n++] = "--unpack"; Size += strlen(Args[n-1]); @@@ -809,14 -763,7 +810,14 @@@ Size += strlen(Args[n-1]); break; } - + + if (NoTriggers == true && I->Op != Item::TriggersPending && + I->Op != Item::ConfigurePending) + { + Args[n++] = "--no-triggers"; + Size += strlen(Args[n-1]); + } + // Write in the file or package names if (I->Op == Item::Install) { @@@ -832,8 -779,6 +833,8 @@@ { for (;I != J && Size < MaxArgBytes; I++) { + if((*I).Pkg.end() == true) + continue; Args[n++] = I->Pkg.Name(); Size += strlen(Args[n-1]); } @@@ -972,9 -917,11 +973,9 @@@ int Status = 0; // we read from dpkg here - int _dpkgin = fd[0]; + int const _dpkgin = fd[0]; close(fd[1]); // close the write end of the pipe - // the result of the waitpid call - int res; if(slave > 0) close(slave); @@@ -982,8 -929,6 +983,8 @@@ sigemptyset(&sigmask); sigprocmask(SIG_BLOCK,&sigmask,&original_sigmask); + // the result of the waitpid call + int res; int select_ret; while ((res=waitpid(Child,&Status, WNOHANG)) != Child) { if(res < 0) { @@@ -1050,7 -995,7 +1051,7 @@@ // if it was set to "keep-dpkg-runing" then we won't return // here but keep the loop going and just report it as a error // for later - bool stopOnError = _config->FindB("Dpkg::StopOnError",true); + bool const stopOnError = _config->FindB("Dpkg::StopOnError",true); if(stopOnError) RunScripts("DPkg::Post-Invoke"); diff --combined apt-pkg/init.cc index 15efb1a3d,2a3dfae74..a54c09a36 --- a/apt-pkg/init.cc +++ b/apt-pkg/init.cc @@@ -65,6 -65,7 +65,7 @@@ bool pkgInitConfig(Configuration &Cnf Cnf.Set("Dir::Etc::vendorlist","vendors.list"); Cnf.Set("Dir::Etc::vendorparts","vendors.list.d"); Cnf.Set("Dir::Etc::main","apt.conf"); + Cnf.Set("Dir::ETc::netrc", "auth.conf"); Cnf.Set("Dir::Etc::parts","apt.conf.d"); Cnf.Set("Dir::Etc::preferences","preferences"); Cnf.Set("Dir::Etc::preferencesparts","preferences.d"); @@@ -103,7 -104,7 +104,7 @@@ if (Res == false) return false; - + if (Cnf.FindB("Debug::pkgInitConfig",false) == true) Cnf.Dump(); diff --combined apt-pkg/makefile index 7816ecf0d,26fc9fac5..f2a8460a9 --- a/apt-pkg/makefile +++ b/apt-pkg/makefile @@@ -14,7 -14,7 +14,7 @@@ include ../buildlib/defaults.ma LIBRARY=apt-pkg LIBEXT=$(GLIBC_VER)$(LIBSTDCPP_VER) MAJOR=4.8 -MINOR=0 +MINOR=1 SLIBS=$(PTHREADLIB) $(INTLLIBS) -lutil -ldl APT_DOMAIN:=libapt-pkg$(MAJOR) @@@ -22,10 -22,10 +22,10 @@@ SOURCE = contrib/mmap.cc contrib/error.cc contrib/strutl.cc \ contrib/configuration.cc contrib/progress.cc contrib/cmndline.cc \ contrib/md5.cc contrib/sha1.cc contrib/sha256.cc contrib/hashes.cc \ - contrib/cdromutl.cc contrib/crc-16.cc \ + contrib/cdromutl.cc contrib/crc-16.cc contrib/netrc.cc \ contrib/fileutl.cc - HEADERS = mmap.h error.h configuration.h fileutl.h cmndline.h \ - md5.h crc-16.h cdromutl.h strutl.h sptr.h sha1.h sha256.h hashes.h + HEADERS = mmap.h error.h configuration.h fileutl.h cmndline.h netrc.h\ + md5.h crc-16.h cdromutl.h strutl.h sptr.h sha1.h sha256.h hashes.h # Source code for the core main library SOURCE+= pkgcache.cc version.cc depcache.cc \ @@@ -34,15 -34,14 +34,15 @@@ acquire-worker.cc acquire-method.cc init.cc clean.cc \ srcrecords.cc cachefile.cc versionmatch.cc policy.cc \ pkgsystem.cc indexfile.cc pkgcachegen.cc acquire-item.cc \ - indexrecords.cc vendor.cc vendorlist.cc cdrom.cc indexcopy.cc + indexrecords.cc vendor.cc vendorlist.cc cdrom.cc indexcopy.cc \ + aptconfiguration.cc HEADERS+= algorithms.h depcache.h pkgcachegen.h cacheiterators.h \ orderlist.h sourcelist.h packagemanager.h tagfile.h \ init.h pkgcache.h version.h progress.h pkgrecords.h \ acquire.h acquire-worker.h acquire-item.h acquire-method.h \ clean.h srcrecords.h cachefile.h versionmatch.h policy.h \ pkgsystem.h indexfile.h metaindex.h indexrecords.h vendor.h \ - vendorlist.h cdrom.h indexcopy.h + vendorlist.h cdrom.h indexcopy.h aptconfiguration.h # Source code for the debian specific components # In theory the deb headers do not need to be exported.. diff --combined debian/changelog index 5cff0919a,a0166414e..8c5cbac7c --- a/debian/changelog +++ b/debian/changelog @@@ -1,35 -1,23 +1,41 @@@ -apt (0.7.22.4) unstable; urgency=low +apt (0.7.25) UNRELEASED; urgency=low + [ Christian Perrier ] + * Fix apt-ftparchive(1) wrt description of the "-o" option. + Thanks to Dann Frazier for the patch. Closes: #273100 + * po/LINGUAS. Re-disable Hebrew. Closes: #534992 + * po/LINGUAS. Enable Asturian and Lithuanian + * Fix typo in apt-cache.8.xml: nessasarily + * Fix "with with" in apt-get.8.xml + * Fix some of the typos mentioned by the german team + Closes: #479997 + * Polish translation update by Wiktor Wandachowicz + Closes: #548571 + * German translation update by Holger Wansing + Closes: #551534 + * German translation of manpages by Chris Leick + Closes: #552606 + * Italian translation update by Milo Casagrande + Closes: #555797 + * Simplified Chinese translation update by Aron Xu + Closes: #558737 + [ Michael Vogt ] - * apt-pkg/deb/dpkgpm.cc: - - when tcgetattr() returns non-zero skip all pty magic - (thanks to Simon Richter, closes: #509866) - * apt-inst/contrib/arfile.cc: - - show propper error message for Invalid archive members + * apt-pkg/packagemanager.cc: + - fix overly aggressive immediate config propergation + (thanks to David Kalnischkies) * apt-pkg/packagemanager.cc: - add output about pre-depends configuring when debug::pkgPackageManager is used * methods/https.cc: - fix incorrect use of CURLOPT_TIMEOUT, closes: #497983, LP: #354972 thanks to Brian Thomason for the patch + * merge lp:~mvo/apt/netrc branch, this adds support for a + /etc/apt/auth.conf that can be used to store username/passwords + in a "netrc" style file (with the extension that it supports "/" + in a machine definition). Based on the maemo git branch. + * apt-pkg/deb/dpkgpm.cc: + - add "purge" to list of known actions [ Brian Murray ] * apt-pkg/depcache.cc, apt-pkg/indexcopy.cc: @@@ -40,106 -28,9 +46,106 @@@ - Emit a warning if removed keys keyring is missing and skip associated checks (LP: #218971) - -- Michael Vogt Mon, 31 Aug 2009 11:08:03 +0200 + [ Julian Andres Klode ] + * doc/apt.conf.5.xml: + - Deprecate unquoted values, string concatenation and explain what should + not be written inside a value (quotes,backslash). + - Restrict option names to alphanumerical characters and "/-:._+". + - Deprecate #include, we have apt.conf.d nowadays which should be + sufficient. + * methods/https.cc: + - Add support for authentication using netrc (Closes: #518473), patch + by Jussi Hakala . + * ftparchive/apt-ftparchive.cc: + - Call setlocale() so translations are actually used. + * debian/apt.conf.autoremove: + - Add kfreebsd-image-* to the list (Closes: #558803) + + -- Michael Vogt Tue, 29 Sep 2009 15:51:34 +0200 + +apt (0.7.24) unstable; urgency=low -apt (0.7.22.3) UNRELEASED; urgency=low + [ Nicolas François ] + * Cleaned up the first patch draft from KURASAWA Nozomu to finally + get po4a support for translating the man pages. + Many thanks to both for this excellent work! (Closes: #441608) + * doc/ja/*, doc/po/ja.po: + - remove the old ja man page translation and replace it with + the new po4a-powered translation by KURASAWA Nozomu. + * doc/*.?.xml (manpages): + - add contrib to author tags and also add refmiscinfo to fix warnings + * doc/style.txt, buildlib/defaults.mak, buildlib/manpage.mak: + - fix a few typos in the comments of this files + + [ Michael Vogt ] + * apt-pkg/deb/dpkgpm.cc: + - when tcgetattr() returns non-zero skip all pty magic + (thanks to Simon Richter, closes: #509866) + * apt-inst/contrib/arfile.cc: + - show propper error message for Invalid archive members + + [ David Kalnischkies ] + * doc/Doxyfile.in: + - update file with doxygen 1.6.1 (current unstable) + - activate DOT_MULTI_TARGETS, it is default on since doxygen 1.5.9 + * buildlib/po4a_manpage.mak, doc/makefile, configure: + - simplify the makefiles needed for po4a manpages + * apt-pkg/contrib/configuration.cc: + - add a helper to easily get a vector of strings from the config + * apt-pkg/contrib/strutl.cc: + - replace unknown multibytes with ? in UTF8ToCharset (Closes: #545208) + * doc/apt-get.8.xml: + - fix two little typos in the --simulate description. (Closes: #545059) + * apt-pkg/aptconfiguration.cc, doc/apt.conf.5.xml: + - add an order subgroup to the compression types to simplify reordering + a bit and improve the documentation for this option group. + * doc/apt.conf.5.xml: + - document the Acquire::http::Dl-Limit option + - try to be crystal clear about the usage of :: and {} (Closes: #503481) + * doc/apt-cache.8.xml: + - clarify the note for the pkgnames command (Closes: #547599) + * doc/apt.ent, all man pages: + - move the description of files to globally usable entities + * doc/apt_preferences.5.xml: + - document the new preferences.d folder (Closes: #544017) + * methods/rred.cc: + - add at the top without failing (by Bernhard R. Link, Closes: #545694) + * buildlib/sizetable: + - add amd64 for cross building (by Mikhail Gusarov, Closes: #513058) + * debian/prerm: + - remove file as nobody will upgrade from 0.4.10 anymore + * debian/control: + - remove gnome-apt suggestion as it was removed from debian + * apt-pkg/deb/dpkgpm.cc, apt-pkg/packagemanager.cc, apt-pkg/orderlist.cc: + - add and document _experimental_ options to make (aggressive) + use of dpkg's trigger and configuration handling (Closes: #473461) + * cmdline/apt-get.cc: + - ignore versions that are not candidates when selecting a package + instead of a virtual one (by Marius Vollmer, Closes: #547788) + + [ Christian Perrier ] + * doc/fr/*, doc/po/fr.po: + - remove the old fr man page translation and replace it with + the new po4a-powered translation + * doc/de: dropped (translation is too incomplete to be useful in + the transition to the po4a-powered translations) + + -- Michael Vogt Fri, 25 Sep 2009 19:57:25 +0200 + +apt (0.7.23.1) unstable; urgency=low + + [ Michael Vogt ] + * apt-pkg/pkgcache.cc: + - do not set internel "needs-configure" state for packages in + triggers-pending state. dpkg will deal with the trigger and + it if does it before we trigger it, dpkg will error out + (LP: #414631) + * apt-pkg/acquire-item.cc: + - do not segfault on invalid items (closes: #544080) + + -- Michael Vogt Fri, 28 Aug 2009 21:53:20 +0200 + +apt (0.7.23) unstable; urgency=low [ Eugene V. Lyubimkin ] * methods/{http,https,ftp}, doc/apt.conf.5.xml: @@@ -149,50 -40,14 +155,50 @@@ mentioned above are not specified. (Closes: #445985, #157759, #320184, #365880, #479617) - [ Michael Vogt ] - * apt-pkg/pkgcache.cc: - - do not set internel "needs-configure" state for packages in - triggers-pending state. dpkg will deal with the trigger and - it if does it before we trigger it, dpkg will error out - (LP: #414631) + [ David Kalnischkies ] + * cmdline/apt-get.cc: + - add APT::Get::HideAutoRemove=small to display only a short line + instead of the full package list. (Closes: #537450) + - ShowBroken() in build-dep (by Mike O'Connor, Closes: #145916) + - check for statfs.f_type (by Robert Millan, Closes: #509313) + - correct the order of picked package binary vs source in source + - use SourceVersion instead of the BinaryVersion to get the source + Patch by Matt Kraai, thanks! (Closes: #382826) + - add pkg/archive and codename in source (Closes: #414105, #441178) + * apt-pkg/contrib/strutl.cc: + - enable thousand separator according to the current locale + (by Luca Bruno, Closes: #223712) + * doc/apt.conf.5.xml: + - mention the apt.conf.d dir (by Vincent McIntyre, Closes: #520831) + * apt-inst/contrib/arfile.cc: + - use sizeof instead strlen (by Marius Vollmer, Closes: #504325) + * doc/apt-mark.8.xml: + - improve manpage based on patch by Carl Chenet (Closes: #510286) + * apt-pkg/acquire-item.cc: + - use configsettings for dynamic compression type use and order. + Based on a patch by Jyrki Muukkonen, thanks! (LP: #71746) + * apt-pkg/aptconfiguration.cc: + - add default configuration for compression types and add lzma + support. Order is now bzip2, lzma, gzip, none (Closes: #510526) + * ftparchive/writer.cc: + - add lzma support also here, patch for this (and inspiration for + the one above) by Robert Millan, thanks! + * apt-pkg/depcache.cc: + - restore the --ignore-hold effect in the Is{Delete,Install}Ok hooks + * doc/apt-get.8.xml: + - update the source description to reflect what it actually does + and how it can be used. (Closes: #413021) + * methods/http.cc: + - allow empty Reason-Phase in Status-Line to please squid, + thanks Modestas Vainius for noticing! (Closes: #531157, LP: #411435) + + [ George Danchev ] + * cmdline/apt-cache.cc: + - fix a memory leak in the xvcg method (Closes: #511557) + * apt-pkg/indexcopy.cc: + - fix a memory leak then the Release file not exists (Closes: #511556) - -- Michael Vogt Wed, 19 Aug 2009 11:14:15 +0200 + -- Michael Vogt Thu, 27 Aug 2009 14:44:39 +0200 apt (0.7.22.2) unstable; urgency=low @@@ -280,7 -135,7 +286,7 @@@ apt (0.7.22) unstable; urgency=lo (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 + - fix potential hang when in a background process group * apt-pkg/algorithms.cc: - consider recommends when making the scores for the problem resolver @@@ -309,7 -164,7 +315,7 @@@ * 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. + hash by using locale independent tolower_ascii() function. Thanks to M. Vefa Bicakci (LP: #80248) * build fixes for g++-4.4 * cmdline/apt-mark: diff --combined doc/examples/configure-index index 27118fb7e,fc2bede4e..f5f996460 --- a/doc/examples/configure-index +++ b/doc/examples/configure-index @@@ -246,15 -246,6 +246,15 @@@ Acquir { Options {"--ignore-time-conflict";} // not very useful on a normal system }; + + CompressionTypes + { + bz2 "bzip2"; + lzma "lzma"; + gz "gzip"; + + Order { "gz"; "lzma"; "bz2"; }; + }; }; // Directory layout @@@ -282,6 -273,7 +282,7 @@@ Dir "/ // Config files Etc "etc/apt/" { Main "apt.conf"; + Netrc "auth.conf"; Parts "apt.conf.d/"; Preferences "preferences"; PreferencesParts "preferences.d"; @@@ -319,25 -311,18 +320,25 @@@ DSelec CheckDir "no"; } -DPkg +DPkg { + // let apt aggressivly use dpkg triggers + NoTriggers "true"; + NoConfigure "true"; + ConfigurePending "true"; + // Probably don't want to use force-downgrade.. Options {"--force-overwrite";"--force-downgrade";} - + // Auto re-mounting of a readonly /usr Pre-Invoke {"mount -o remount,rw /usr";}; Post-Invoke {"mount -o remount,ro /usr";}; - + + Chroot-Directory "/"; + // Prevents daemons from getting cwd as something mountable (default) Run-Directory "/"; - + // Build options for apt-get source --compile Build-Options "-b -uc"; @@@ -380,6 -365,7 +381,7 @@@ Debu Acquire::gpgv "false"; // Show the gpgv traffic aptcdrom "false"; // Show found package files IdentCdrom "false"; + acquire::netrc "false"; // netrc parser } diff --combined methods/http.cc index 461a98406,50478b44c..3b210f6b6 --- a/methods/http.cc +++ b/methods/http.cc @@@ -29,6 -29,7 +29,7 @@@ #include #include #include + #include #include #include @@@ -42,6 -43,7 +43,7 @@@ #include #include + // Internet stuff #include @@@ -49,7 -51,6 +51,6 @@@ #include "connect.h" #include "rfc2553emu.h" #include "http.h" - /*}}}*/ using namespace std; @@@ -552,7 -553,7 +553,7 @@@ bool ServerState::HeaderLine(string Lin // Evil servers return no version if (Line[4] == '/') { - if (sscanf(Line.c_str(),"HTTP/%u.%u %u %[^\n]",&Major,&Minor, + if (sscanf(Line.c_str(),"HTTP/%u.%u %u%[^\n]",&Major,&Minor, &Result,Code) != 4) return _error->Error(_("The HTTP server sent an invalid reply header")); } @@@ -560,7 -561,7 +561,7 @@@ { Major = 0; Minor = 9; - if (sscanf(Line.c_str(),"HTTP %u %[^\n]",&Result,Code) != 2) + if (sscanf(Line.c_str(),"HTTP %u%[^\n]",&Result,Code) != 2) return _error->Error(_("The HTTP server sent an invalid reply header")); } @@@ -724,10 -725,12 +725,12 @@@ void HttpMethod::SendReq(FetchItem *Itm Req += string("Proxy-Authorization: Basic ") + Base64Encode(Proxy.User + ":" + Proxy.Password) + "\r\n"; + maybe_add_auth (Uri, _config->FindFile("Dir::Etc::netrc")); if (Uri.User.empty() == false || Uri.Password.empty() == false) + { Req += string("Authorization: Basic ") + Base64Encode(Uri.User + ":" + Uri.Password) + "\r\n"; - + } Req += "User-Agent: Debian APT-HTTP/1.3 ("VERSION")\r\n\r\n"; if (Debug == true) diff --combined methods/https.cc index 47988970b,86d7f3a6b..3717ded7b --- a/methods/https.cc +++ b/methods/https.cc @@@ -14,6 -14,7 +14,7 @@@ #include #include #include + #include #include #include @@@ -126,8 -127,10 +127,10 @@@ bool HttpsMethod::Fetch(FetchItem *Itm curl_easy_reset(curl); SetupProxy(); + maybe_add_auth (Uri, _config->FindFile("Dir::Etc::netrc")); + // callbacks - curl_easy_setopt(curl, CURLOPT_URL, Itm->Uri.c_str()); + curl_easy_setopt(curl, CURLOPT_URL, static_cast(Uri).c_str()); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, this); curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, progress_callback); @@@ -135,7 -138,6 +138,7 @@@ curl_easy_setopt(curl, CURLOPT_NOPROGRESS, false); curl_easy_setopt(curl, CURLOPT_FAILONERROR, true); curl_easy_setopt(curl, CURLOPT_FILETIME, true); + curl_easy_setopt(curl, CURLOPT_NETRC, CURL_NETRC_OPTIONAL); // SSL parameters are set by default to the common (non mirror-specific) value // if available (or a default one) and gets overload by mirror-specific ones.