public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Fabian Groffen" <grobian@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/portage-utils:master commit in: /, man/
Date: Tue, 10 Sep 2019 18:25:13 +0000 (UTC)	[thread overview]
Message-ID: <1568139711.3dc607a8a6cfd3bafbc2f10d9a7c3aae90c3a757.grobian@gentoo> (raw)

commit:     3dc607a8a6cfd3bafbc2f10d9a7c3aae90c3a757
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 10 18:21:51 2019 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Tue Sep 10 18:21:51 2019 +0000
URL:        https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=3dc607a8

qlop: add mode to print last run in a similar way like emerge(1) does

For example, the output could be like this, showing upgrade information:

% ./qlop -E -t
  U  app-shells/bash-5.0_p11 [5.0_p9-r0]: 2′38″
  U  app-admin/eselect-1.4.15 [1.4.14-r0]: 19s
  U  sys-libs/talloc-2.3.0 [2.2.0-r0]: 1′56″
  U  app-portage/prefix-toolkit-5 [4-r0]: 10s
  U  dev-python/cryptography-2.7 [2.6.1-r0]: 1′59″
  U  net-dns/bind-tools-9.14.5 [9.14.4-r0]: 4′17″
 R   dev-python/sphinxcontrib-applehelp-1.0.1: 28s
 R   dev-python/sphinxcontrib-devhelp-1.0.1: 27s
 R   dev-python/sphinxcontrib-jsmath-1.0.1: 25s
 R   dev-python/sphinxcontrib-htmlhelp-1.0.2: 28s
 R   dev-python/sphinxcontrib-serializinghtml-1.1.3: 28s
 R   dev-python/sphinxcontrib-qthelp-1.0.2: 28s
  U  dev-python/sphinx-2.0.1 [1.7.5-r1]: 1′13″
  U  net-mail/notmuch-0.29.1-r1 [0.28.4-r0]: 1′00″

Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>

 man/qlop.1 |  5 ++++-
 qlop.c     | 49 ++++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 52 insertions(+), 2 deletions(-)

diff --git a/man/qlop.1 b/man/qlop.1
index baa5bf5..de1e525 100644
--- a/man/qlop.1
+++ b/man/qlop.1
@@ -1,5 +1,5 @@
 .\" generated by mkman.py, please do NOT edit!
-.TH qlop "1" "Jul 2019" "Gentoo Foundation" "qlop"
+.TH qlop "1" "Sep 2019" "Gentoo Foundation" "qlop"
 .SH NAME
 qlop \- emerge log analyzer
 .SH SYNOPSIS
@@ -65,6 +65,9 @@ Show autoclean unmerge history.
 \fB\-s\fR, \fB\-\-sync\fR
 Show sync history.
 .TP
+\fB\-E\fR, \fB\-\-emerge\fR
+Show last merge like how emerge(1) -v would show it.
+.TP
 \fB\-e\fR, \fB\-\-endtime\fR
 Report time at which the operation finished (iso started).
 .TP

diff --git a/qlop.c b/qlop.c
index 243c8b6..3cc3367 100644
--- a/qlop.c
+++ b/qlop.c
@@ -24,7 +24,7 @@
 
 #define QLOP_DEFAULT_LOGFILE "emerge.log"
 
-#define QLOP_FLAGS "ctaHMmuUslerd:f:w:F:" COMMON_FLAGS
+#define QLOP_FLAGS "ctaHMmuUsElerd:f:w:F:" COMMON_FLAGS
 static struct option const qlop_long_opts[] = {
 	{"summary",   no_argument, NULL, 'c'},
 	{"time",      no_argument, NULL, 't'},
@@ -35,6 +35,7 @@ static struct option const qlop_long_opts[] = {
 	{"unmerge",   no_argument, NULL, 'u'},
 	{"autoclean", no_argument, NULL, 'U'},
 	{"sync",      no_argument, NULL, 's'},
+	{"emerge",    no_argument, NULL, 'E'},
 	{"endtime",   no_argument, NULL, 'e'},
 	{"running",   no_argument, NULL, 'r'},
 	{"date",       a_argument, NULL, 'd'},
@@ -54,6 +55,7 @@ static const char * const qlop_opts_help[] = {
 	"Show unmerge history",
 	"Show autoclean unmerge history",
 	"Show sync history",
+	"Show last merge like how emerge(1) -v would show it",
 	"Report time at which the operation finished (iso started)",
 	"Show current emerging packages",
 	"Limit selection to this time (1st -d is start, 2nd -d is end)",
@@ -85,6 +87,7 @@ struct qlop_mode {
 	char do_machine:1;
 	char do_endtime:1;
 	char show_lastmerge:1;
+	char show_emerge:1;
 	const char *fmt;
 };
 
@@ -334,6 +337,7 @@ static int do_emerge_log(
 	time_t elapsed;
 	depend_atom *atom;
 	depend_atom *atomw;
+	depend_atom *upgrade_atom = NULL;
 	DECLARE_ARRAY(merge_matches);
 	DECLARE_ARRAY(merge_averages);
 	DECLARE_ARRAY(unmerge_matches);
@@ -638,6 +642,34 @@ static int do_emerge_log(
 								flags->do_time ? ": " : "",
 								flags->do_time ?
 									fmt_elapsedtime(flags, elapsed) : "");
+					} else if (flags->show_emerge) {
+						int state = NOT_EQUAL;
+						if (upgrade_atom != NULL)
+							state = atom_compare(pkgw->atom, upgrade_atom);
+						switch (state) {
+							/*         "NRUD " */
+							case EQUAL:
+								printf(" %sR%s   ", YELLOW, NORM);
+								break;
+							case NOT_EQUAL:
+								printf("%sN%s    ", GREEN, NORM);
+								break;
+							case NEWER:
+								printf("  %sU%s  ", BLUE, NORM);
+								break;
+							case OLDER:
+								printf("  %sU%sD%s ", BLUE, DKBLUE, NORM);
+								break;
+						}
+						printf("%s", atom_format(flags->fmt, pkgw->atom));
+						if (state == NEWER || state == OLDER)
+							printf(" %s[%s%s%s]%s", DKBLUE, NORM,
+									atom_format("%[PVR]", upgrade_atom),
+									DKBLUE, NORM);
+						if (flags->do_time)
+							printf(": %s\n", fmt_elapsedtime(flags, elapsed));
+						else
+							printf("\n");
 					} else if (flags->do_time) {
 						printf("%s >>> %s: %s\n",
 								fmt_date(flags, pkgw->tbegin, tstart),
@@ -675,6 +707,14 @@ static int do_emerge_log(
 				if (atom == NULL)
 					continue;
 
+				if (p[-20] == ' ' && flags->show_emerge)
+				{
+					if (upgrade_atom != NULL)
+						atom_implode(upgrade_atom);
+					upgrade_atom = atom;
+					continue;
+				}
+
 				/* see if we need this atom */
 				atomw = NULL;
 				array_for_each(atoms, i, atomw) {
@@ -942,6 +982,7 @@ int qlop_main(int argc, char **argv)
 	m.do_machine = 0;
 	m.do_endtime = 0;
 	m.show_lastmerge = 0;
+	m.show_emerge = 0;
 	m.fmt = NULL;
 
 	while ((ret = GETOPT_LONG(QLOP, qlop, "")) != -1) {
@@ -953,6 +994,12 @@ int qlop_main(int argc, char **argv)
 			case 'u': m.do_unmerge = 1;     break;
 			case 'U': m.do_autoclean = 1;   break;
 			case 's': m.do_sync = 1;        break;
+			case 'E': m.do_merge = 1;
+					  m.do_unmerge = 1;
+					  m.do_autoclean = 1;
+					  m.show_lastmerge = 1;
+					  m.show_emerge = 1;
+					  verbose = 1;          break;
 			case 'r': m.do_running = 1;     break;
 			case 'a': m.do_average = 1;     break;
 			case 'c': m.do_summary = 1;     break;


             reply	other threads:[~2019-09-10 18:25 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-10 18:25 Fabian Groffen [this message]
  -- strict thread matches above, loose matches on Subject: below --
2020-05-02  8:45 [gentoo-commits] proj/portage-utils:master commit in: /, man/ Fabian Groffen
2020-01-06 15:03 Fabian Groffen
2019-12-14 17:01 Fabian Groffen
2019-11-24 12:29 Fabian Groffen
2019-11-09 10:13 Fabian Groffen
2019-10-27 12:22 Fabian Groffen
2019-09-28 13:19 Fabian Groffen
2019-07-14 13:09 Fabian Groffen
2019-07-14 10:21 Fabian Groffen
2019-07-14 10:21 Fabian Groffen
2019-07-14 10:21 Fabian Groffen
2019-07-14 10:21 Fabian Groffen
2019-05-20 10:46 Fabian Groffen
2016-03-28  4:53 Mike Frysinger
2016-02-22 20:37 Mike Frysinger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1568139711.3dc607a8a6cfd3bafbc2f10d9a7c3aae90c3a757.grobian@gentoo \
    --to=grobian@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox