File mksh.spec of Package mksh

%def_without legacy

Name: mksh
Version: 56b
Release: 1
Summary: MirBSD Korn Shell
License: MirOS and ISC
Group: System/Shells
Url: http://www.mirbsd.org/%name.htm
Source: https://www.mirbsd.org/MirOS/dist/mir/%name/%name-R%version.tgz
# PATCH-FEATURE-OPENSUSE mksh-vendor-mkshrc.patch gber@opensuse.org -- Add support for a vendor-supplied kshrc which is read by interactive shells before $ENV or $HOME/.mkshrc are processed
Patch0: %name-vendor-mkshrc.patch
Patch1: %name-locale.patch
%if 0%{?suse_version} >= 1320
%def_with alternatives
%endif
%if_with alternatives
Provides: /bin/ksh
Requires(post): update-alternatives
Requires(preun): update-alternatives
%endif
Requires(post): grep
Requires(postun): grep sed

BuildRequires: perl

%description
The MirBSD Korn Shell is an actively developed free implementation of the Korn
Shell programming language and a successor to the Public Domain Korn Shell
(pdksh).


%prep
%setup -q -n %name
%patch0 -p1
%patch1 -p1

%if 0%{?sles_version}%{?suse_version}
sed -i -r '/^#[[:blank:]]*define[[:blank:]]+MKSH_VERSION[[:blank:]]/s/"[[:blank:]]*$/ SUSE&/' sh.h
sed -i '/[[:blank:]]KSH[[:blank:]]/s/[[:blank:]]*$/ SUSE/' check.t
%endif


%build
export CC="%__cc"
export CFLAGS="%optflags"
export CPPFLAGS='-DMKSH_VENDOR_MKSHRC_PATH=\"/etc/mkshrc\"'
sh Build.sh -r -c lto || exit 1
mv test.sh test-%name.sh
%if_with legacy
# build lksh to automatically enable -o posix if called as sh
export CPPFLAGS="$CPPFLAGS -DMKSH_BINSHPOSIX -DMKSH_SMALL -DMKSH_SMALL_BUT_FAST"
sh Build.sh -L -r -c lto || exit 1
mv test.sh test-lksh.sh
%endif


%install
install -d -m 0755 %buildroot{/bin,%_bindir,%_mandir/man1,%_sysconfdir}
install -p -m 0755 %name %buildroot/bin/
install -p -m 0644 %name.1 %buildroot%_mandir/man1/
ln -s /bin/%name %buildroot%_bindir/
%if_with legacy
install -p -m 0755 lksh %buildroot/bin/
install -p -m 0644 lksh.1 %buildroot%_mandir/man1/
ln -s /bin/lksh %buildroot%_bindir/
%endif
ln -s %_sysconfdir/bash.bashrc %buildroot%_sysconfdir/%{name}rc
%if_with alternatives
# symlinks for update-alternatives
install -d -m 0755 %buildroot%_sysconfdir/alternatives
touch %buildroot%_sysconfdir/alternatives/{ksh{,.1%ext_man},usr-bin-ksh,{,usr-bin-}sh}
ln -sf %_sysconfdir/alternatives/ksh %buildroot/bin/ksh
ln -sf %_sysconfdir/alternatives/usr-bin-ksh %buildroot%_bindir/ksh
ln -sf %name.1 %buildroot/%_mandir/man1/ksh.1
ln -sf %_sysconfdir/alternatives/sh %buildroot/bin/sh
ln -sf %_sysconfdir/alternatives/usr-bin-sh %buildroot%_bindir/sh
%endif


%check
./test-%name.sh -v -f -C regress:no-ctty
%{?_with_legacy:./test-lksh.sh -v -f -C regress:no-ctty}


%post
%if_with alternatives
%_sbindir/update-alternatives --quiet \
	--install /bin/ksh ksh /bin/%name 25 \
	--slave %_bindir/ksh usr-bin-ksh /bin/%name \
	--slave %_mandir/man1/ksh.1%ext_man ksh.1%ext_man %_mandir/man1/%name.1%ext_man
%_sbindir/update-alternatives --quiet \
	--install /bin/sh sh /bin/%name 6 \
	--slave %_bindir/sh usr-bin-sh /bin/%name
%endif
# Add mksh to the list of allowed shells in /etc/shells
grep -q '^[[:blank:]]*/bin/%name[[:blank:]]*$' %_sysconfdir/shells || echo /bin/%name >> %_sysconfdir/shells


%if_with alternatives
%preun
if [ $1 -eq 0 ]; then
	%_sbindir/update-alternatives --quiet --remove ksh /bin/%name
	%_sbindir/update-alternatives --quiet --remove sh /bin/%name
fi
%endif


%postun
# Remove mksh from the list of allowed shells in /etc/shells
if [ "$1" = 0 ] && grep -q /bin/%name %_sysconfdir/shells; then
	sed -i '\|^[[:blank:]]*/bin/%name[[:blank:]]*$|d' %_sysconfdir/shells
fi


%files
%defattr(-,root,root)
%doc dot.%{name}rc
%_sysconfdir/%{name}rc
/bin/?ksh
%_bindir/?ksh
%_mandir/man1/?ksh.*
%if_with alternatives
%ghost /bin/sh
%ghost %_bindir/sh
%ghost /bin/ksh
%ghost %_bindir/ksh
%ghost %_mandir/man1/ksh.*
%ghost %_sysconfdir/alternatives/*
%endif


%changelog
openSUSE Build Service is sponsored by