Name:             ksh
Version:          2020.0.0
Release:          5
Summary:          The Original ATT Korn Shell
License:          EPL
URL:              http://www.kornshell.com/
Epoch:            1
Source0:          https://github.com/att/ast/releases/download/%{version}/%{name}-%{version}.tar.gz
Source1:          kshcomp.conf
Source2:          kshrc.rhs
Source3:          dotkshrc

Patch1:           CVE-2019-14868.patch

Provides:         /bin/ksh /usr/bin/ksh
BuildRequires:    meson gcc glibc-devel ed
Conflicts:        pdksh
Requires(post):   grep, coreutils, systemd-units chkconfig
Requires(preun):  chkconfig
Requires(postun): sed
Provides:         ksh-help = %{epoch}:%{version}-%{release}
Obsoletes:        ksh-help < %{epoch}:%{version}-%{release}

%description
KornShell is an interactive command language that provides access to the UNIX system and to
many other systems, on the many different computers and workstations on which it is implemented.

%prep
%autosetup -p1 -n %{name}-%{version}

%build
%meson -Dbuild-api-tests=false
%meson_build

%install
%meson_install
mv %{buildroot}/%{_bindir}/ksh %{buildroot}/%{_bindir}/ksh93
mv %{buildroot}/%{_bindir}/shcomp %{buildroot}/%{_bindir}/shcomp93
mv %{buildroot}/%{_mandir}/man1/ksh.1 %{buildroot}/%{_mandir}/man1/ksh93.1
install -p -D -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/binfmt.d/kshcomp.conf
install -p -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/kshrc
install -p -D -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/skel/.kshrc

%post
for s in /bin/ksh /usr/bin/ksh
do
  if [ ! -f /etc/shells ]; then
        echo "$s" > /etc/shells
  else
        if ! grep -q '^'"$s"'$' /etc/shells ; then
                echo "$s" >> /etc/shells
        fi
  fi
done

/bin/systemctl try-restart systemd-binfmt.service >/dev/null 2>&1 || :

%{_sbindir}/alternatives --install /bin/ksh ksh /bin/ksh93 50 \
    --slave %{_mandir}/man1/ksh.1.gz ksh-man %{_mandir}/man1/ksh93.1.gz \
    --slave /bin/shcomp shcomp93 /bin/shcomp93 2>/dev/null

%preun
if [ $1 -eq 0 ]; then
    %{_sbindir}/alternatives --remove ksh /bin/ksh93
fi

%postun
for s in /bin/ksh /usr/bin/ksh
do
  if [ ! -f $s ]; then
     sed -i '\|^'"$s"'$|d' /etc/shells
  fi
done

%triggerpostun -- ksh < 1:2020.0.0-0.1
%{_sbindir}/alternatives --auto ksh

%files
%doc src/cmd/ksh93/{COMPATIBILITY,RELEASE,TYPES}
%{_bindir}/{ksh93,shcomp93}
%{_mandir}/man1/*
%config(noreplace) %{_sysconfdir}/skel/.kshrc
%config(noreplace) %{_sysconfdir}/kshrc
%config(noreplace) %{_sysconfdir}/binfmt.d/kshcomp.conf

%changelog
* Fri Dec 25 2020 Liquor <lirui130@huawei.com> - 1:2020.0.0-5
- Type:bugfix
- ID:NA
- SUG:NA
- DESC:add package ksh-help to package ksh

* Tue Aug 4 2020 zhangxingliang <zhangxingliang3@huawei.com> - 1:2020.0.0-4
- Type:enhancement
- ID:NA
- SUG:NA
- DESC:update to stable release version 2020.0.0

* Tue Apr 21 2020 openEuler Buildteam <buildteam@openeuler.org> - 1:2020.0.0-3
- Type:cves
- ID:CVE-2019-14868
- SUG:restart
- DESC:fix CVE-2019-14868

* Fri Jan 10 2020 Lijin Yang <yanglijin@huawei.com> - 1:2020.0.0-2
- Package init

