diff options
author | Shlomi Fish <shlomif@iglu.org.il> | 2016-07-11 10:53:26 +0200 |
---|---|---|
committer | Thierry Vignaud <thierry.vignaud@gmail.com> | 2016-07-11 10:57:38 +0200 |
commit | e5cdde09bc13d9d39400feadc9703a4194253d0f (patch) | |
tree | 7918c10a08cc637aad6fc65bafbafb005b1ceb17 | |
parent | 67b4fc23df549e8b986545695afcaac64b965ccb (diff) | |
download | urpmi-e5cdde09bc13d9d39400feadc9703a4194253d0f.tar urpmi-e5cdde09bc13d9d39400feadc9703a4194253d0f.tar.gz urpmi-e5cdde09bc13d9d39400feadc9703a4194253d0f.tar.bz2 urpmi-e5cdde09bc13d9d39400feadc9703a4194253d0f.tar.xz urpmi-e5cdde09bc13d9d39400feadc9703a4194253d0f.zip |
adapt to aria2c-1.16+ output (mga#16500)
aria2c > 1.14 changed the output of the progress download string
it's no longer what follows:
"[#1 SIZE:176.0KiB/2.5MiB(6%) CN:3 SPD:256.22KiBs ETA:09s]"
but here is the new one from aria2c 1.16 and beyond:
"[#2c8dae 496KiB/830KiB(59%) CN:1 DL:84KiB ETA:3s]"
So the old parser no longer works...
The string parser has been rewritten by Shlomi Fish with use of
multiline mode and comments for better readability, should aria2c
progress download string change again
Dug & fixed by Giuseppe Ghibò <ghibomgx@gmail.com> and Shlomi Fish
<shlomif@shlomifish.org>
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | urpm/download.pm | 27 |
2 files changed, 25 insertions, 3 deletions
@@ -1,3 +1,4 @@ +- fix reporting progress with newer aria2 (mga#16500) - s/suggests/recommends/ in bash completion Version 8.102 - 14 April 2016 diff --git a/urpm/download.pm b/urpm/download.pm index acc46f08..fe200da7 100644 --- a/urpm/download.pm +++ b/urpm/download.pm @@ -696,7 +696,7 @@ sub sync_aria2 { "/usr/bin/aria2c", $options->{debug} ? ('--log', "$options->{dir}/.aria2.log") : @{[]}, '--auto-file-renaming=false', '--ftp-pasv', - '--summary-interval=0', + '--summary-interval=1', '--follow-metalink=mem', $medium->{mirrorlist} ? ( '--metalink-enable-unique-protocol=true', # do not try to connect to the same server using the same protocol @@ -764,8 +764,29 @@ sub _parse_aria2_output { propagate_sync_callback($options, 'start', $file) if !$options->{is_retry}; } - #parses aria2c: [#1 SIZE:176.0KiB/2.5MiB(6%) CN:3 SPD:256.22KiBs ETA:09s] - if ($buf =~ m!^\[#\d*\s+\S+:([\d\.]+\w*).([\d\.]+\w*)\S([\d]+)\S+\s+\S+\s*([\d\.]+)\s\w*:([\d\.]+\w*)\s\w*:(\d+\w*)\]$!) { + + # aria2c 1.16 and beyond: + # parses aria2c: [#2c8dae 496KiB/830KiB(59%) CN:1 DL:84KiB ETA:3s] + # + # using multiline mode and comments for better readability: + # + if ($buf =~ m! + ^\[\#[\dA-Fa-f]+ # match #2c8dae + \s+ + ([\d\.]+\w*) # Match 496KiB + / + ([\d\.]+\w*) # Match 830KiB + \s* \( (\d+) % \) # Match (59%) + \s+ + CN:(\S+) # Match CN:1 + \s+ + DL:(\S+) # Match DL:84KiB + \s+ + ETA:(\w+) + \]$ + !msx + ) + { my ($total, $percent, $speed, $eta) = ($2, $3, $5, $6); #- $1 = current downloaded size, $4 = connections if (propagate_sync_callback($options, 'progress', $file, $percent, $total, $eta, $speed) eq 'canceled') { |