EMerge LOg Parser
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.
Installation
From main portage tree
Not available yet, ask in gentoo bug 649904 ;)
From portage overlay
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.
From source
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.
Usage
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 history
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>.
Predict merge time
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 merge statistics
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>.
Contributing
Thanks, and welcome :) See CONTRIBUTING. Emlop is licensed as GPLv3.