3 %bcond_with lto # enable link time optimisations (breaks tests)
4 %bcond_without static # static version of mksh
5 %bcond_without tests # rtchecks and test.sh checks
7 Summary: MirBSD Korn Shell
8 Summary(pl.UTF-8): Powłoka Korna z MirBSD
13 Group: Applications/Shells
14 Source0: https://www.mirbsd.org/MirOS/dist/mir/mksh/%{name}-R%{version}.tgz
15 # Source0-md5: 4799a9ac6d55871d79ba66713d928663
16 Source1: %{name}-mkshrc
17 Source2: get-source.sh
18 Patch0: %{name}-mkshrc_support.patch
19 Patch1: %{name}-circumflex.patch
20 URL: https://www.mirbsd.org/mksh.htm
23 BuildRequires: perl-base
25 %{?with_static:BuildRequires: glibc-static}
26 BuildRequires: rpmbuild(macros) >= 1.670
27 # is needed for /etc directory existence
29 Requires: setup >= 2.4.6-2
31 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
36 mksh is the MirBSD enhanced version of the Public Domain Korn shell
37 (pdksh), a Bourne-compatible shell which is largely similar to the
38 original AT&T Korn shell. It includes bug fixes and feature
39 improvements in order to produce a modern, robust shell good for
40 interactive and especially script use. It has UTF-8 support in the
41 emacs command line editing mode; corresponds to OpenBSD 4.2-current
42 ksh sans GNU bash-like $PS1; the build environment requirements are
43 autoconfigured; throughout code simplification/bugfix/enhancement has
44 been done, and the shell has extended compatibility to other modern
47 %description -l pl.UTF-8
48 mksh to pochodząca z MirBSD rozszerzona wersja powłoki Public Domain
49 Korn Shell (pdksh) - kompatybilnej z powłoką Bourne'a, w większości
50 zbliżonej do oryginalnej powłoki Korna z AT&T. Zawiera poprawki błędów
51 i rozszerzenia mające na celu stworzenie współczesnej powłoki o
52 bogatych możliwościach do użytku interaktywnego i (zwłaszcza) w
53 skryptach. Ma obsługę UTF-8 w trybie edycji linii poleceń w stylu
54 emacsa; $PS1 odpowiada temu z ksh obecnym w OpenBSD 4.2-current;
55 środowisko budowania jest automatycznie konfigurowane; dzięki
56 wykonanym uproszczeniom kodu, poprawkom i rozszerzeniom powłoka ma
57 rozszerzoną kompatybilność z innymi współczesnymi powłokami.
60 Summary: Statically linked the MirBSD enhanced version of pdksh
61 Summary(pl.UTF-8): Skonsolidowana statycznie powłoka mksh
62 Group: Applications/Shells
63 # requires base for /etc/mkshrc?
64 Requires: %{name} = %{version}-%{release}
67 mksh is the MirBSD enhanced version of the Public Domain Korn shell
68 (pdksh), a Bourne-compatible shell which is largely similar to the
69 original AT&T Korn shell.
71 This packege contains statically linked version of mksh.
73 %description static -l pl.UTF-8
74 mksh to pochodząca z MirBSD rozszerzona wersja powłoki Public Domain
75 Korn Shell (pdksh) - kompatybilnej z powłoką Bourne'a, w większości
76 zbliżonej do oryginalnej powłoki Korna z AT&T.
78 W tym pakiecie jest mksh skonsolidowany statycznie.
82 %{__mv} mksh/* .; rmdir mksh
87 # sed rules instead of patch (needed update for every release)
88 sed -i -e 's|\(#define.*MKSH_VERSION.*\)"|\1 @DISTRO@"|g' sh.h
89 sed -i -e 's|\(@(#)MIRBSD KSH.*\)|\1 @DISTRO@|g' check.t
92 sed -i -e 's#@DISTRO@#TLD/Linux#g' check.t sh.h
94 grep TLD/Linux check.t || exit 1
95 grep TLD/Linux sh.h || exit 1
97 # we'll need this later due to -DMKSH_GCC55009
102 print -r -- $((x++)):$sari=$uari.
104 print -r -- $((x++)):$sari=$uari.
105 sari=2147483647 uari=2147483647
106 print -r -- $((x++)):$sari=$uari.
108 print -r -- $((x++)):$sari=$uari.
110 let 'sari *= 2' 'uari *= 2'
112 print -r -- $((x++)):$sari=$uari.
114 print -r -- $((x++)):$sari=$uari.
115 sari=-2147483648 uari=-2147483648
116 print -r -- $((x++)):$sari=$uari.
118 print -r -- $((x++)):$sari=$uari.
121 cat >rtchecks.expected <<'EOF'
124 2:2147483647=2147483647.
125 3:-2147483648=2147483648.
128 6:-2147483648=2147483648.
129 7:2147483647=2147483647.
136 CFLAGS="%{rpmcflags} -DMKSH_GCC55009" \
137 LDFLAGS="%{rpmldflags}" \
138 CPPFLAGS="%{rpmcppflags}" \
139 sh ./Build.sh -Q -r -j %{?with_lto:-c lto}
141 # skip some tests if not on terminal
143 skip_tests="-C regress:no-ctty"
147 ./mksh rtchecks >rtchecks.got 2>&1
148 if ! cmp --quiet rtchecks.got rtchecks.expected ; then
149 echo "rtchecks failed"
150 diff -Naurp rtchecks.expected rtchecks.got
153 ./test.sh -v $skip_tests
155 mv mksh out/mksh.dynamic
159 CFLAGS="%{rpmcflags} -DMKSH_GCC55009" \
160 LDFLAGS="%{rpmldflags} -static" \
161 CPPFLAGS="%{rpmcppflags}" \
162 sh ./Build.sh -Q -r -j %{?with_lto:-c lto}
165 ./test.sh -v $skip_tests
166 ./mksh rtchecks >rtchecks.got 2>&1
167 if ! cmp --quiet rtchecks.got rtchecks.expected ; then
168 echo "rtchecks failed"
169 diff -Naurp %{SOURCE3} rtchecks.got
173 mv mksh out/mksh.static
177 rm -rf $RPM_BUILD_ROOT
178 install -d $RPM_BUILD_ROOT{%{_bindir},%{_mandir}/man1}
179 install -p out/mksh.dynamic $RPM_BUILD_ROOT%{_bindir}/mksh
180 %{?with_static:install -p out/mksh.static $RPM_BUILD_ROOT%{_bindir}/mksh.static}
182 cp -a mksh.1 $RPM_BUILD_ROOT%{_mandir}/man1/mksh.1
183 echo ".so mksh.1" > $RPM_BUILD_ROOT%{_mandir}/man1/sh.1
185 install -D %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/mkshrc
186 ln -sf mksh $RPM_BUILD_ROOT%{_bindir}/sh
188 # some pdksh scripts used that
189 ln -sf mksh $RPM_BUILD_ROOT%{_bindir}/ksh
192 rm -rf $RPM_BUILD_ROOT
194 %post -p %add_etc_shells -p /bin/sh /bin/ksh /bin/mksh
195 %preun -p %remove_etc_shells -p /bin/sh /bin/ksh /bin/mksh
197 %post static -p %add_etc_shells -p /bin/mksh.static
198 %preun static -p %remove_etc_shells -p /bin/mksh.static
200 %triggerpostun -p <lua> -- pdksh
202 %lua_add_etc_shells /bin/sh /bin/ksh /bin/mksh
206 %defattr(644,root,root,755)
208 %config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/mkshrc
209 %attr(755,root,root) %{_bindir}/mksh
210 %attr(755,root,root) %{_bindir}/ksh
211 %attr(755,root,root) %{_bindir}/sh
212 %{_mandir}/man1/mksh.1*
213 %{_mandir}/man1/sh.1*
217 %defattr(644,root,root,755)
218 %attr(755,root,root) %{_bindir}/mksh.static