##
##  xjobs.spec -- OpenPKG RPM Package Specification
##  Copyright (c) 2000-2025 OpenPKG Project <http://openpkg.org/>
##
##  Permission to use, copy, modify, and distribute this software for
##  any purpose with or without fee is hereby granted, provided that
##  the above copyright notice and this permission notice appear in all
##  copies.
##
##  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
##  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
##  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
##  IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
##  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
##  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
##  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
##  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
##  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
##  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
##  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
##  SUCH DAMAGE.
##

#   package information
Name:         xjobs
Summary:      Parallel Execution of Jobs
URL:          http://www.maier-komor.de/xjobs.html
Vendor:       Thomas Maier-Komor
Packager:     OpenPKG Project
Distribution: OpenPKG Community
Class:        EVAL
Group:        ShellUtils
License:      GPL
Version:      20250529
Release:      20250601

#   list of sources
Source0:      http://www.maier-komor.de/xjobs/xjobs-%{version}.tgz
Patch0:       xjobs.patch

#   build information
BuildPreReq:  OpenPKG, openpkg >= 20160101, make, flex
PreReq:       OpenPKG, openpkg >= 20160101

%description
    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 multiprocessor 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.

%track
    prog xjobs = {
        version   = %{version}
        url       = http://www.maier-komor.de/xjobs.html
        regex     = xjobs-(__VER__)\.tgz
    }

%prep
    %setup -q
    %patch -p0

%build
    CC="%{l_cc}" \
    CFLAGS="%{l_cflags -O}" \
    ./configure \
        --prefix=%{l_prefix} \
        --mandir=%{l_prefix}/man
    %{l_make} %{l_mflags -O}

%install
    %{l_make} %{l_mflags} install \
        prefix=$RPM_BUILD_ROOT%{l_prefix} \
        exec_prefix=$RPM_BUILD_ROOT%{l_prefix} \
        mandir=$RPM_BUILD_ROOT%{l_prefix}/man/man1
    strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true
    %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std}

%files -f files

%clean

