xjobs: init at 20200726

xjobs reads job descriptions line by line and executes them in parallel.

Signed-off-by: Sirio Balmelli <sirio@b-ad.ch>
Co-authored-by: legendofmiracles <30902201+legendofmiracles@users.noreply.github.com>
Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
This commit is contained in:
Sirio Balmelli 2021-05-07 10:02:43 +02:00
parent 4f51b501fe
commit f088ce558f
No known key found for this signature in database
GPG key ID: 0437A96EFE4C426E
2 changed files with 67 additions and 0 deletions

View file

@ -0,0 +1,65 @@
{ lib, stdenv, fetchurl
, flex, installShellFiles, ncurses, which
}:
stdenv.mkDerivation rec {
pname = "xjobs";
version = "20200726";
src = fetchurl {
url = "mirror://sourceforge//xjobs/files/${pname}-${version}.tgz";
sha256 = "0ay6gn43pnm7r1jamwgpycl67bjg5n87ncl27jb01w2x6x70z0i3";
};
nativeBuildInputs = [
flex
installShellFiles
which
];
buildInputs = [
ncurses
];
checkPhase = ''
runHook preCheck
./${pname} -V
runHook postCheck
'';
installPhase = ''
runHook preInstall
mkdir -p $out/{bin,etc}
install -m755 ${pname} $out/bin/${pname}
install -m644 ${pname}.rc $out/etc/${pname}.rc
installManPage ${pname}.1
runHook postInstall
'';
meta = with lib; {
description = "A program which reads job descriptions line by line and executes them in parallel";
homepage = "https://www.maier-komor.de/xjobs.html";
license = licenses.gpl2Plus;
platforms = platforms.all;
maintainers = [ maintainers.siriobalmelli ];
longDescription = ''
xjobs reads job descriptions line by line and executes them in parallel.
It limits the number of parallel executing jobs and starts new jobs when jobs finish.
Therefore, it combines the arguments from every input line with the utility
and arguments given on the command line.
If no utility is given as an argument to xjobs,
then the first argument on every job line will be used as utility.
To execute utility xjobs searches the directories given in the PATH environment variable
and uses the first file found in these directories.
xjobs is most useful on multi-processor/core machines when one needs to execute
several time consuming command several that could possibly be run in parallel.
With xjobs this can be achieved easily, and it is possible to limit the load
of the machine to a useful value.
It works similar to xargs, but starts several processes simultaneously
and gives only one line of arguments to each utility call.
'';
};
}

View file

@ -4307,6 +4307,8 @@ in
xkcdpass = with python3Packages; toPythonApplication xkcdpass;
xjobs = callPackage ../tools/misc/xjobs { };
xob = callPackage ../tools/X11/xob { };
z-lua = callPackage ../tools/misc/z-lua { };