Emlop parses emerge logs (as generated by portage, the Gentoo package manager) to yield useful info like merge history and merge time prediction.
It is heavily inspired by genlop but aims to be faster, more accurate, and more ergonomic. Other rewrites of Genlop exist, see COMPARISON.
Not available yet, ask in gentoo bug 649904 ;)
If you do not have layman already, install and configure it.
Then run layman -a moltonel
to add the overlay with the emlop ebuild. Then run emerge emlop
as
ususal.
If you do not have Rust already, install it with emerge rust
or
rustup. Emlop should always work with the latest
version of rust from portage, but the version from rustup might be more recent and performant.
git clone https://github.com/vincentdephily/emlop
cd emlop
cargo test
cargo install -f
This installs emlop into ~/.cargo/bin/
, which should be in your $PATH
. If you wish to install
emlop system-wide, edit the system $PATH
or copy/symlink ~/.cargo/bin/emlop
somewhere in
$PATH
.
Emlop is split into subcommands like list
or predict
, which can be abbreviated by their first
letter. This file doesn't show everything, see emlop -h
and emlop <sucommand> -h
for complete
and up to date usage info.
Show merge date, merge time, and package name:
$ emlop list | tail
2018-01-29 10:20:52 +00:00 13 net-wireless/iw-4.9
2018-01-29 10:21:21 +00:00 29 dev-libs/librdkafka-0.11.3
2018-01-29 10:22:27 +00:00 1:06 net-misc/curl-7.58.0
2018-01-29 11:09:20 +00:00 1:23 media-libs/openexr-2.2.0-r2
2018-01-29 11:12:18 +00:00 2:58 media-gfx/imagemagick-7.0.7.19
2018-01-29 11:12:42 +00:00 24 kde-frameworks/kimageformats-5.42.0
2018-01-29 11:25:32 +00:00 12:50 media-gfx/inkscape-0.92.2
2018-01-29 12:36:52 +00:00 1:11:20 dev-lang/rust-1.23.0-r1
2018-01-29 12:37:08 +00:00 16 virtual/rust-1.23.0
2018-01-29 12:41:54 +00:00 4:46 dev-util/cargo-0.24.0
Same info but filter packages by regexp:
$ emlop l gcc | tail
2017-10-04 18:43:31 +01:00 8 sys-devel/gcc-config-1.8-r1
2017-10-16 13:54:34 +01:00 11 sys-devel/gcc-config-1.8-r1
2017-10-16 20:00:23 +01:00 1:51:55 sys-devel/gcc-5.4.0-r3
2017-10-19 11:57:21 +01:00 36 sys-devel/gcc-config-1.8-r1
2017-11-07 13:06:47 +00:00 1:56:37 sys-devel/gcc-6.4.0
2017-11-20 12:18:58 +00:00 2:24:20 sys-devel/gcc-6.4.0
2017-11-20 13:24:59 +00:00 46 sys-devel/gcc-config-1.8-r1
2017-12-04 18:12:03 +00:00 1:39 sys-devel/gcc-config-1.8-r1
2017-12-05 12:49:27 +00:00 2:59:33 sys-devel/gcc-6.4.0
2018-01-12 12:49:17 +00:00 1:48:28 sys-devel/gcc-6.4.0-r1
Options summary:
emlop list [OPTIONS] [package]
<package> Display only packages matching <package>.
-e, --exact Match package with a string instead of a regex.
--from <date> Only parse log entries after <date>.
--to <date> Only parse log entries before <date>.
Show currently emerging packages, how long they have been running, and predict how long is left:
$ emlop p
Pid 27455: ...n-exec/python3.5/emerge -O chromium 33
Pid 27848: ...on-exec/python3.5/emerge -O firefox 29
www-client/firefox-58.0.1 53:37 - 24
www-client/chromium-65.0.3325.146 6:01:02 - 28
Estimate for 2 ebuilds (0 unknown, 52 elapsed) 6:53:47
Predict merge time from an emerge --pretend
output, taking currently elapsed time into account:
$ emerge -rOp | emlop p
Pid 8799: .../emerge -O chromium firefox konqueror 1:14:11
www-client/chromium-65.0.3325.146 5:49:38 - 1:10:55
www-client/firefox-58.0.1 53:37
kde-apps/konqueror-17.12.3 3:46
Estimate for 3 ebuilds (0 unknown, 1:10:55 elapsed) 5:36:06
Options summary:
emlop predict [OPTIONS]
--limit <limit> Use the last N merge times to predict next merge time. [default: 10]
--from <date> Only parse log entries after <date>.
--to <date> Only parse log entries before <date>.
Show total merge time, merge count, and average merge time:
$ emlop s gtk
app-admin/gtkdiskfree 1:19 1 1:19
net-libs/webkit-gtk 63:17:43 44 1:57:33
x11-libs/gtk+ 3:10:20 40 4:21
x11-themes/gtk-engines-adwaita 1:23 4 20
dev-util/gtk-doc 4:46 9 31
dev-python/pygtk 16:05 7 2:17
dev-util/gtk-doc-am 3:43 19 11
x11-libs/gtksourceview 4:54 6 49
dev-python/pygtksourceview 2:27 6 24
dev-perl/gtk2-ex-formfactory 2:29 10 14
dev-util/gtk-update-icon-cache 5:44 16 23
dev-cpp/gtkmm 39:33 12 3:40
dev-python/pywebkitgtk 13 1 13
dev-perl/gtk2-perl 12:49 8 1:36
Options summary:
emlop stats [OPTIONS] [package]
<package> Display only packages matching <package>.
-e, --exact Match package with a string instead of a regex.
--limit <limit> Use the last N merge times to predict next merge time. [default: 10]
--from <date> Only parse log entries after <date>.
--to <date> Only parse log entries before <date>.
Thanks, and welcome :) See CONTRIBUTING. Emlop is licensed as GPLv3.