##
##  zsh.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:         zsh
Summary:      Z-Shell
URL:          http://www.zsh.org/
Vendor:       Paul Falstad
Packager:     OpenPKG Project
Distribution: OpenPKG Community
Class:        BASE
Group:        Shell
License:      BSD-style
Version:      5.9
Release:      20220515

#   package options
%option       with_dynamic  no

#   list of sources
Source0:      ftp://ftp.zsh.org/pub/zsh-%{version}.tar.xz
Source1:      zsh-wrapper.c
Patch0:       zsh.patch

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

%description
    Zsh is a shell designed for interactive use, although it is also a
    powerful scripting language. Many of the useful features of bash,
    ksh, and tcsh were incorporated into zsh; many original features
    were added.

%track
    prog zsh = {
        version   = %{version}
        url       = ftp://ftp.zsh.org/pub/
        regex     = zsh-(\d+\.\d+(?:\.\d+)?)\.tar\.(?:gz|xz)
    }

%prep
    %setup -q
    %patch -p0

%build
    ( echo "ac_cv_lib_iconv_iconv=no"
    ) >config.cache
    CC="%{l_cc}" \
    CFLAGS="%{l_cflags -O}" \
    %{l_bash} ./configure \
        --cache-file=./config.cache \
        --prefix=%{l_prefix} \
        --mandir=%{l_prefix}/man \
        --enable-etcdir=%{l_prefix}/etc/zsh \
        --enable-fndir=%{l_prefix}/share/zsh/functions \
        --enable-site-fndir=%{l_prefix}/share/zsh/site-functions \
        --disable-locale \
%if "%{with_dynamic}" == "yes"
        --enable-dynamic
%else
        --disable-dynamic
%endif
    %{l_make} %{l_mflags}
%if "%{with_dynamic}" == "yes"
    %{l_cc} %{l_cflags -O} %{l_ldflags} \
        '-DPREFIX="%{l_prefix}"' \
        -o zsh-wrapper %{SOURCE zsh-wrapper.c}
%endif

%install
    %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT
%if "%{with_dynamic}" == "yes"
    %{l_shtool} mkdir -f -p -m 755 \
        $RPM_BUILD_ROOT%{l_prefix}/libexec/zsh
    mv  $RPM_BUILD_ROOT%{l_prefix}/bin/zsh \
        $RPM_BUILD_ROOT%{l_prefix}/libexec/zsh/zsh
    %{l_shtool} install -c -s -m 755 \
        zsh-wrapper $RPM_BUILD_ROOT%{l_prefix}/bin/zsh
%endif
    %{l_shtool} mkdir -f -p -m 755 \
        $RPM_BUILD_ROOT%{l_prefix}/etc/zsh
    for rc in zshenv zshrc zprofile zlogin zlogout; do
        %{l_shtool} install -c -m 644 /dev/null \
            $RPM_BUILD_ROOT%{l_prefix}/etc/zsh/$rc
    done
    rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/zsh-*
    strip $RPM_BUILD_ROOT%{l_prefix}/bin/* 2>/dev/null || true
    %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
        %{l_files_std} \
        '%config %{l_prefix}/etc/zsh/*'

%files -f files

%clean

%post
    if [ ".$1" = .1 ]; then
        if [ -f /etc/shells ]; then
            if [ ".`grep $RPM_INSTALL_PREFIX/bin/zsh /etc/shells`" = . ]; then
                ( echo "Hint: To use $RPM_INSTALL_PREFIX/bin/zsh as the login"
                  echo "shell for users, please add this path to /etc/shells."
                ) | %{l_rpmtool} msg -b -t notice
            fi
        fi
    fi

