X-Git-Url: http://git.pld-linux.org/gitweb.cgi?a=blobdiff_plain;f=mksh.spec;h=b9ef49d61de3306e4001f6c985a5b3ae8f78cec6;hb=a06946c0a3f84935ecb1f6ed4a2f5319586b515f;hp=3ec2db814fc7f53551c93f098f3b942a7622b767;hpb=5cba9227bf6081a57eac3fa9638657a077769b23;p=packages%2Fmksh.git diff --git a/mksh.spec b/mksh.spec index 3ec2db8..b9ef49d 100644 --- a/mksh.spec +++ b/mksh.spec @@ -1,81 +1,157 @@ +%bcond_without static +%bcond_without tests +# Summary: MirBSD Korn Shell +Summary(pl.UTF-8): Powłoka Korna z MirBSD Name: mksh -Version: 31d -Release: 0.1 +Version: 40b +Release: 1 License: BSD Group: Applications/Shells Source0: http://www.mirbsd.org/MirOS/dist/mir/mksh/%{name}-R%{version}.cpio.gz -# Source0-md5: a7c77428bd2b887c1583095a00c84aac -Source1: http://www.mirbsd.org/MirOS/dist/hosted/other/arc4random.c -URL: http://mirbsd.de/mksh +# Source0-md5: afb08b65272ace550ec59b26a876a7de +Source1: %{name}-mkshrc +Patch0: %{name}-mkshrc_support.patch +Patch1: %{name}-circumflex.patch +Patch2: %{name}-no_stop_alias.patch +Patch3: %{name}-distro.patch +URL: https://www.mirbsd.org/mksh.htm +%if %{with tests} +BuildRequires: ed +BuildRequires: perl-base +%endif +%{?with_static:BuildRequires: glibc-static} +BuildRequires: rpmbuild(macros) >= 1.462 +# is needed for /etc directory existence Requires(pre): FHS Requires: setup >= 2.4.6-2 +Obsoletes: pdksh BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %define _bindir /bin %description mksh is the MirBSD enhanced version of the Public Domain Korn shell -(pdksh), a bourne-compatible shell which is largely si- milar to the +(pdksh), a Bourne-compatible shell which is largely similar to the original AT&T Korn shell. It includes bug fixes and feature improvements in order to produce a modern, robust shell good for interactive and especially script use. It has UTF-8 support in the -emacs command line editing mode; corres- ponds to OpenBSD 4.2-current +emacs command line editing mode; corresponds to OpenBSD 4.2-current ksh sans GNU bash-like $PS1; the build environment requirements are autoconfigured; throughout code simplification/bugfix/enhancement has been done, and the shell has extended compatibility to other modern shells. +%description -l pl.UTF-8 +mksh to pochodząca z MirBSD rozszerzona wersja powłoki Public Domain +Korn Shell (pdksh) - kompatybilnej z powłoką Bourne'a, w większości +zbliżonej do oryginalnej powłoki Korna z AT&T. Zawiera poprawki błędów +i rozszerzenia mające na celu stworzenie współczesnej powłoki o +bogatych możliwościach do użytku interaktywnego i (zwłaszcza) w +skryptach. Ma obsługę UTF-8 w trybie edycji linii poleceń w stylu +emacsa; $PS1 odpowiada temu z ksh obecnym w OpenBSD 4.2-current; +środowisko budowania jest automatycznie konfigurowane; dzięki +wykonanym uproszczeniom kodu, poprawkom i rozszerzeniom powłoka ma +rozszerzoną kompatybilność z innymi współczesnymi powłokami. + +%package static +Summary: Statically linked the MirBSD enhanced version of pdksh +Summary(pl.UTF-8): Skonsolidowana statycznie powłoka mksh +Group: Applications/Shells +# requires base for /etc/mkshrc? +Requires: %{name} = %{version}-%{release} + +%description static +mksh is the MirBSD enhanced version of the Public Domain Korn shell +(pdksh), a Bourne-compatible shell which is largely similar to the +original AT&T Korn shell. + +This packege contains statically linked version of mksh. + +%description static -l pl.UTF-8 +mksh to pochodząca z MirBSD rozszerzona wersja powłoki Public Domain +Korn Shell (pdksh) - kompatybilnej z powłoką Bourne'a, w większości +zbliżonej do oryginalnej powłoki Korna z AT&T. + +W tym pakiecie jest mksh skonsolidowany statycznie. %prep -%setup -q -T +%setup -qcT gzip -dc %{SOURCE0} | cpio -mid -mv mksh/* ./ ; rm -fr mksh -cp "%{SOURCE1}" ./ +mv mksh/* .; rmdir mksh + +%patch0 -p0 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 + +sed -i -e 's#@DISTRO@#PLD/Linux 3.0#g' check.t sh.h %build -CC="%__cc" CFLAGS="%{optflags}" sh ./Build.sh -Q -r -j -./test.sh -v +install -d out + +CC="%{__cc}" \ +CFLAGS="%{rpmcppflags} %{rpmcflags}" \ +LDFLAGS="%{rpmldflags}" \ +sh ./Build.sh -Q -r -j -c lto + +# skip some tests if not on terminal +if ! tty -s; then + skip_tests="-C regress:no-ctty" +fi + +%{?with_tests:./test.sh -v $skip_tests} +mv mksh out/mksh.dynamic + +%if %{with static} +CC="%{__cc}" \ +CFLAGS="%{rpmcppflags} %{rpmcflags}" \ +LDFLAGS="%{rpmldflags} -static" \ +sh ./Build.sh -Q -r -j -c lto + +%{?with_tests:./test.sh -v $skip_tests} +mv mksh out/mksh.static +%endif %install rm -rf $RPM_BUILD_ROOT +install -d $RPM_BUILD_ROOT{%{_bindir},%{_mandir}/man1} +install -p out/mksh.dynamic $RPM_BUILD_ROOT%{_bindir}/mksh +%{?with_static:install -p out/mksh.static $RPM_BUILD_ROOT%{_bindir}/mksh.static} + +cp -a mksh.1 $RPM_BUILD_ROOT%{_mandir}/man1/mksh.1 +echo ".so mksh.1" > $RPM_BUILD_ROOT%{_mandir}/man1/sh.1 + +install -D %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/mkshrc +ln -sf mksh $RPM_BUILD_ROOT%{_bindir}/sh -install -D mksh $RPM_BUILD_ROOT%{_bindir}/mksh -install -D mksh.1 $RPM_BUILD_ROOT%{_mandir}/man1/mksh.1 +# some pdksh scripts used that +ln -sf mksh $RPM_BUILD_ROOT%{_bindir}/ksh %clean rm -rf $RPM_BUILD_ROOT -%post -p -t = {} -f = io.open("/etc/shells", "r") -if f then - for l in f:lines() do t[l]=l; end - f:close() -end -for _, s in ipairs({"/bin/mksh", "/bin/sh"}) do - if not t[s] then - f = io.open("/etc/shells", "a"); f:write(s.."\n"); f:close() - end -end - -%preun -p -if arg[2] == "0" then - f = io.open("/etc/shells", "r") - if f then - s="" - for l in f:lines() do - if not string.match(l,"^/bin/mksh$") then - s=s..l.."\n" - end - end - f:close() - io.open("/etc/shells", "w"):write(s) - end -end +%post -p %add_etc_shells -p /bin/sh /bin/ksh /bin/mksh +%preun -p %remove_etc_shells -p /bin/sh /bin/ksh /bin/mksh + +%posttrans -p %add_etc_shells -p /bin/sh /bin/ksh + + +%post static -p %add_etc_shells -p /bin/mksh.static +%preun static -p %remove_etc_shells -p /bin/mksh.static %files %defattr(644,root,root,755) %doc dot.mkshrc +%config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/mkshrc %attr(755,root,root) %{_bindir}/mksh -%{_mandir}/man1/* +%attr(755,root,root) %{_bindir}/ksh +%attr(755,root,root) %{_bindir}/sh +%{_mandir}/man1/mksh.1* +%{_mandir}/man1/sh.1* + +%if %{with static} +%files static +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/mksh.static +%endif