From: Michael Vogt Date: Fri, 18 Dec 2009 15:55:06 +0000 (+0100) Subject: * merged lp:~mvo/apt/history X-Git-Tag: 0.7.25ubuntu1~2^2 X-Git-Url: https://git.saurik.com/apt.git/commitdiff_plain/8cf0b1e1a4eab0f78d86ba3dc4576b35ee46969b?hp=-c * merged lp:~mvo/apt/history - this writes a /var/log/apt/history tagfile that contains details from the transaction (complements term.log) --- 8cf0b1e1a4eab0f78d86ba3dc4576b35ee46969b diff --combined apt-pkg/deb/dpkgpm.cc index d1a275a47,4b118bc14..88098c379 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@@ -550,45 -550,103 +550,103 @@@ void pkgDPkgPM::DoDpkgStatusFd(int stat dpkgbuf_pos = dpkgbuf+dpkgbuf_pos-p; } /*}}}*/ + // DPkgPM::WriteHistoryTag /*{{{*/ + void pkgDPkgPM::WriteHistoryTag(string tag, string value) + { + if (value.size() > 0) + { + // poor mans rstrip(", ") + if (value[value.size()-2] == ',' && value[value.size()-1] == ' ') + value.erase(value.size() - 2, 2); + fprintf(history_out, "%s: %s\n", tag.c_str(), value.c_str()); + } + } /*}}}*/ // DPkgPM::OpenLog /*{{{*/ bool pkgDPkgPM::OpenLog() { string logdir = _config->FindDir("Dir::Log"); if(not FileExists(logdir)) return _error->Error(_("Directory '%s' missing"), logdir.c_str()); + + // get current time + char timestr[200]; + time_t t = time(NULL); + struct tm *tmp = localtime(&t); + strftime(timestr, sizeof(timestr), "%F %T", tmp); + + // open terminal log string logfile_name = flCombine(logdir, _config->Find("Dir::Log::Terminal")); if (!logfile_name.empty()) { term_out = fopen(logfile_name.c_str(),"a"); chmod(logfile_name.c_str(), 0600); - // output current time - char outstr[200]; - time_t t = time(NULL); - struct tm *tmp = localtime(&t); - strftime(outstr, sizeof(outstr), "%F %T", tmp); - fprintf(term_out, "\nLog started: "); - fprintf(term_out, "%s", outstr); + fprintf(term_out, "\n\nLog started: "); + fprintf(term_out, "%s", timestr); fprintf(term_out, "\n"); } + + // write + string history_name = flCombine(logdir, + _config->Find("Dir::Log::History")); + if (!history_name.empty()) + { + history_out = fopen(history_name.c_str(),"a"); + chmod(history_name.c_str(), 0644); + fprintf(history_out, "\nStart-Date: %s\n", timestr); + string remove, purge, install, upgrade, downgrade; + for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; I++) + { + if (Cache[I].NewInstall()) + install += I.Name() + string(" (") + Cache[I].CandVersion + string("), "); + else if (Cache[I].Upgrade()) + upgrade += I.Name() + string(" (") + Cache[I].CurVersion + string(", ") + Cache[I].CandVersion + string("), "); + else if (Cache[I].Downgrade()) + downgrade += I.Name() + string(" (") + Cache[I].CurVersion + string(", ") + Cache[I].CandVersion + string("), "); + else if (Cache[I].Delete()) + { + if ((Cache[I].iFlags & pkgDepCache::Purge) == pkgDepCache::Purge) + purge += I.Name() + string(" (") + Cache[I].CurVersion + string("), "); + else + remove += I.Name() + string(" (") + Cache[I].CurVersion + string("), "); + } + } + WriteHistoryTag("Install", install); + WriteHistoryTag("Upgrade", upgrade); + WriteHistoryTag("Downgrade",downgrade); + WriteHistoryTag("Remove",remove); + WriteHistoryTag("Purge",purge); + fflush(history_out); + } + return true; } /*}}}*/ // DPkg::CloseLog /*{{{*/ bool pkgDPkgPM::CloseLog() { + char timestr[200]; + time_t t = time(NULL); + struct tm *tmp = localtime(&t); + strftime(timestr, sizeof(timestr), "%F %T", tmp); + if(term_out) { - char outstr[200]; - time_t t = time(NULL); - struct tm *tmp = localtime(&t); - strftime(outstr, sizeof(outstr), "%F %T", tmp); fprintf(term_out, "Log ended: "); - fprintf(term_out, "%s", outstr); + fprintf(term_out, "%s", timestr); fprintf(term_out, "\n"); fclose(term_out); } term_out = NULL; + + if(history_out) + { + if (dpkg_error.size() > 0) + fprintf(history_out, "Error: %s\n", dpkg_error.c_str()); + fprintf(history_out, "End-Date: %s\n", timestr); + fclose(history_out); + } + return true; } /*}}}*/ @@@ -879,8 -937,7 +937,8 @@@ bool pkgDPkgPM::Go(int OutStatusFd const char *s = _("Can not write log, openpty() " "failed (/dev/pts not mounted?)\n"); fprintf(stderr, "%s",s); - fprintf(term_out, "%s",s); + if(term_out) + fprintf(term_out, "%s",s); master = slave = -1; } else { struct termios rtt; @@@ -1058,11 -1115,14 +1116,14 @@@ RunScripts("DPkg::Post-Invoke"); if (WIFSIGNALED(Status) != 0 && WTERMSIG(Status) == SIGSEGV) - _error->Error("Sub-process %s received a segmentation fault.",Args[0]); + strprintf(dpkg_error, "Sub-process %s received a segmentation fault.",Args[0]); else if (WIFEXITED(Status) != 0) - _error->Error("Sub-process %s returned an error code (%u)",Args[0],WEXITSTATUS(Status)); + strprintf(dpkg_error, "Sub-process %s returned an error code (%u)",Args[0],WEXITSTATUS(Status)); else - _error->Error("Sub-process %s exited unexpectedly",Args[0]); + strprintf(dpkg_error, "Sub-process %s exited unexpectedly",Args[0]); + + if(dpkg_error.size() > 0) + _error->Error(dpkg_error.c_str()); if(stopOnError) { diff --combined debian/changelog index 53dfcce12,c75ea227e..eb50b4c78 --- a/debian/changelog +++ b/debian/changelog @@@ -1,4 -1,4 +1,12 @@@ -apt (0.7.25) UNRELEASED; urgency=low ++apt (0.7.25.1) UNRELEASED; urgency=low ++ ++ * merged lp:~mvo/apt/history ++ - this writes a /var/log/apt/history tagfile that contains details ++ from the transaction (complements term.log) ++ ++ -- Michael Vogt Fri, 18 Dec 2009 16:54:18 +0100 ++ +apt (0.7.25) unstable; urgency=low [ Christian Perrier ] * Fix apt-ftparchive(1) wrt description of the "-o" option. @@@ -13,6 -13,8 +21,6 @@@ 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 @@@ -34,10 -36,6 +42,10 @@@ (thanks also to Jussi Hakala and Julian Andres Klode) * apt-pkg/deb/dpkgpm.cc: - add "purge" to list of known actions + * apt-pkg/init.h: + - add compatibility with old ABI name until the next ABI break + * merge segfault fix from Mario Sanchez Prada, many thanks + (closes: #561109) [ Brian Murray ] * apt-pkg/depcache.cc, apt-pkg/indexcopy.cc: @@@ -56,21 -54,18 +64,21 @@@ * doc/po4a.conf: activate translation of guide.sgml and offline.sgml * doc/apt.conf.5.xml: - provide a few more details about APT::Immediate-Configure + - briefly document the behaviour of the new https options * doc/sources.list.5.xml: - add note about additional apt-transport-methods * doc/apt-mark.8.xml: - correct showauto synopsis, thanks Andrew Schulman (Closes: #551440) * cmdline/apt-get.cc: - - source should displays his final pkg pick (Closes: #249383, #550952) + - source should display his final pkg pick (Closes: #249383, #550952) - source doesn't need the complete version for match (Closes: #245250) - source ignores versions/releases if not available (Closes: #377424) - only warn if (free) space overflows (Closes: #522238) - add --debian-only as alias for --diff-only * methods/connect.cc: - display also strerror of "wicked" getaddrinfo errors + - add AI_ADDRCONFIG to ai_flags as suggested by Aurelien Jarno + in response to Bernhard R. Link, thanks! (Closes: #505020) * buildlib/configure.mak, buildlib/config.{sub,guess}: - remove (outdated) config.{sub,guess} and use the ones provided by the new added build-dependency autotools-dev instead @@@ -84,42 -79,21 +92,42 @@@ - bump policy to 3.8.3 as we have no outdated manpages anymore * debian/NEWS: - fix a typo in 0.7.24: Allready -> Already (Closes: #557674) - * cmdline/apt-mark: - - print an error if a new state file can't be created, - thanks Carl Chenet! (Closes: #521289) - - print an error and exit if python-apt is not installed, - thanks Carl Chenet! (Closes: #521284) * ftparchive/writer.{cc,h}: - add APT::FTPArchive::LongDescription to be able to disable them * apt-pkg/deb/debsrcrecords.cc: - use "diff" filetype for .debian.tar.* files (Closes: #554898) + * methods/rred.cc: + - rewrite to be able to handle even big patch files + - adopt optional mmap+iovec patch from Morten Hustveit + (Closes: #463354) which should speed up a bit. Thanks! + * methods/http{,s}.cc + - add config setting for User-Agent to the Acquire group, + thanks Timothy J. Miller! (Closes: #355782) + - add https options which default to http ones (Closes: #557085) + * debian/apt.cron.daily: + - check cache size even if we do nothing else otherwise, thanks + Francesco Poli for patch(s) and patience! (Closes: #459344) + * ftparchive/*: + - fix a few typos in strings, comments and manpage, + thanks Karl Goetz! (Closes: #558757) + + [ Carl Chenet ] + * cmdline/apt-mark: + - print an error if a new state file can't be created + (Closes: #521289) and + - exit nicely if python-apt is not installed (Closes: #521284) [ Chris Leick ] + * doc/de: German translation of manpages (Closes: #552606) * doc/ various manpages: - correct various errors, typos and oddities (Closes: #552535) * doc/apt-secure.8.xml: - replace literal with emphasis tags in Archive configuration + * doc/apt-ftparchive.1.xml: + - remove informalexample tag which hides the programlisting + * doc/apt-get.8.xml: + - change equivalent "for" to "to the" (purge command) + - clarify --fix-broken sentence about specifying packages [ Eugene V. Lyubimkin ] * apt-pkg/contib/strutl.h @@@ -139,7 -113,7 +147,7 @@@ * debian/apt.conf.autoremove: - Add kfreebsd-image-* to the list (Closes: #558803) - -- Michael Vogt Tue, 29 Sep 2009 15:51:34 +0200 + -- Michael Vogt Tue, 15 Dec 2009 09:21:55 +0100 apt (0.7.24) unstable; urgency=low diff --combined doc/examples/configure-index index ced390447,eaea6511c..1e9946e1b --- a/doc/examples/configure-index +++ b/doc/examples/configure-index @@@ -191,37 -191,19 +191,37 @@@ Acquir Max-Age "86400"; // 1 Day age on index files No-Store "false"; // Prevent the cache from storing archives Dl-Limit "7"; // 7Kb/sec maximum download rate + User-Agent "Debian APT-HTTP/1.3"; }; - // HTTPS method configuration: - // - uses the http proxy config - // - uses the http cache-control values - // - uses the http Dl-Limit values - https + + + // HTTPS method configuration: uses the http + // - proxy config + // - cache-control values + // - Dl-Limit, Timout, ... values + // if not set explicit for https + // + // see /usr/share/doc/apt/examples/apt-https-method-example.conf.gz + // for more examples + https { Verify-Peer "false"; SslCert "/etc/apt/some.pem"; - CaPath "/etc/ssl/certs"; - Verify-Host" "true"; - AllowRedirect "true"; + CaPath "/etc/ssl/certs"; + Verify-Host" "true"; + AllowRedirect "true"; + + Timeout "120"; + AllowRedirect "true"; + + // Cache Control. Note these do not work with Squid 2.0.2 + No-Cache "false"; + Max-Age "86400"; // 1 Day age on index files + No-Store "false"; // Prevent the cache from storing archives + Dl-Limit "7"; // 7Kb/sec maximum download rate + + User-Agent "Debian APT-CURL/1.0"; }; ftp @@@ -325,6 -307,7 +325,7 @@@ Dir "/ // Location of the logfile Log "var/log/apt" { Terminal "term.log"; + History "history.log"; }; };