##
##  coreutils.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:         coreutils
Summary:      GNU Core Utilities
URL:          http://www.gnu.org/software/coreutils/
Vendor:       Free Software Foundation
Packager:     OpenPKG Project
Distribution: OpenPKG Community
Class:        BASE
Group:        ShellUtils
License:      GPL
Version:      9.8
Release:      20250926

#   package options
%option       with_legacy  no

#   list of sources
Source0:      http://ftp.gnu.org/gnu/coreutils/coreutils-%{version}.tar.xz
Patch0:       coreutils.patch

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

%description
    The GNU Core Utilities are the basic file, shell and text
    manipulation utilities of the GNU operating system. These are the
    core utilities which are expected to exist on every operating
    system. Previously these utilities were offered as three individual
    sets of GNU utilities, fileutils, shellutils, and textutils. Those
    three have been combined into a single set of utilities call the
    coreutils.

    The provided GNU utilities are: base64, basename, cat, chgrp, chmod,
    chown, chroot, cksum, comm, cp, csplit, cut, date, dd, df, dir,
    dircolors, dirname, du, echo, env, expand, expr, factor, false,
    fmt, fold, groups, head, hostid, hostname, id, install, join, kill,
    link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mv, nice, nl,
    nohup, nupr, od, paste, pathchk, pinky, printenv, printf, ptx, pwd,
    readlink, rm, rmdir, seq, sha1sum, sha224sum, sha256sum, sha384sum,
    sha512sum, shred, shuf, sleep, sort, split, stat, stty, su, sum,
    sync, tac, tail, tee, test, touch, tr, true, tsort, tty, uname,
    unexpand, uniq, unlink, uptime, users, vdir, wc, who, whoami, yes.

%track
    prog coreutils = {
        version   = %{version}
        url       = http://ftp.gnu.org/gnu/coreutils/
        regex     = coreutils-(__VER__)\.tar\.(gz|bz2|xz)
    }

%prep
    %setup -q
    %patch -p0
    %{l_shtool} subst \
        -e 's;^\(install-exec-local:\).*;\1;' \
        -e 's;^\(bin_PROGRAMS =\);\1 su;' \
        src/Makefile.in

%build
    CC="%{l_cc} -pthread" \
    CFLAGS="%{l_cflags -O}" \
    CPPFLAGS="%{l_cppflags}" \
    LDFLAGS="%{l_ldflags}" \
    CONFIG_SHELL="%{l_bash}" \
    HELP2MAN="true" \
    GREP="grep" \
    ./configure \
        --prefix=%{l_prefix} \
        --infodir=%{l_prefix}/info \
        --mandir=%{l_prefix}/man \
        --enable-threads=posix \
        --program-prefix=g \
        --disable-nls
    %{l_make} %{l_mflags -O}

%install
    %{l_make} %{l_mflags} install AM_MAKEFLAGS="DESTDIR=$RPM_BUILD_ROOT"
    strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true
    rm -f "$RPM_BUILD_ROOT%{l_prefix}/bin/g["
    #   rename gpr utility to avoid conflict with graphviz
    #   legacyname becomes nupr
    mv "$RPM_BUILD_ROOT%{l_prefix}/bin/gpr" \
       "$RPM_BUILD_ROOT%{l_prefix}/bin/gnupr" 2>/dev/null || true
    mv "$RPM_BUILD_ROOT%{l_prefix}/man/man1/gpr.1" \
       "$RPM_BUILD_ROOT%{l_prefix}/man/man1/gnupr.1" 2>/dev/null || true
%if "%{with_legacy}" == "yes"
    ( cd $RPM_BUILD_ROOT%{l_prefix}/bin
      for i in g*; do
          ln -s $i `echo "$i" | sed -e 's;^g;;'`
      done
      #   These cause problems on SuSE 8.x and Darwin.
      #   configure determines system type using these.
      for p in hostname uname; do
          rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/$p
          rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/${p}*
      done
      cd $RPM_BUILD_ROOT%{l_prefix}/man/man1
      for i in g*; do
          ln -s $i `echo "$i" | sed -e 's;^g;;'`
      done
    ) || exit $?
%endif
    rm -f $RPM_BUILD_ROOT%{l_prefix}/info/dir
    rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/charset.alias
    %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std}

%files -f files

%clean

