parallel: fix calculation of max line length

parallel >= 20200822 uses /bin/echo to calculate the max allowed line
length. Patch it to a correct path, so that it doesn't (silently) fail
and fall back to a low value of 324.

Before:
  $ parallel --max-line-length-allowed
  324

After:
  $ parallel --max-line-length-allowed
  131063

Fixes: 16ca8725ff ("parallel: 20200722 -> 20200822")
This commit is contained in:
Bjørn Forsman 2020-10-23 17:12:23 +02:00
parent c0a646edd0
commit 3d4e133e77
2 changed files with 26 additions and 1 deletions

View file

@ -1,4 +1,4 @@
{ fetchurl, stdenv, perl, makeWrapper, procps }:
{ fetchurl, stdenv, perl, makeWrapper, procps, coreutils }:
stdenv.mkDerivation rec {
name = "parallel-20200822";
@ -8,6 +8,14 @@ stdenv.mkDerivation rec {
sha256 = "02dy46g6f05p7s2qs8h6yg20p1zl3flxxf77n5jw74l3h1m24m4n";
};
patches = [
./fix-max-line-length-allowed.diff
];
postPatch = ''
substituteInPlace src/parallel --subst-var-by coreutils ${coreutils}
'';
outputs = [ "out" "man" ];
nativeBuildInputs = [ makeWrapper ];

View file

@ -0,0 +1,17 @@
Correct path to coreutils echo to fix parallel --max-line-length-allowed.
Author: Bjørn Forsman
diff --git a/src/parallel b/src/parallel
index a047fd94..9fc5f671 100755
--- a/src/parallel
+++ b/src/parallel
@@ -11580,7 +11580,7 @@ sub is_acceptable_command_line_length($$) {
$len += length $Global::parallel_env;
}
# Force using non-built-in command
- ::qqx("/bin/echo ".${string}x(($len-length "/bin/echo ")/length $string));
+ ::qqx("@coreutils@/bin/echo ".${string}x(($len-length "@coreutils@/bin/echo ")/length $string));
::debug("init", "$len=$? ");
return not $?;
}