up to 50f
[packages/mksh.git] / mksh.spec
CommitLineData
de8a6e5f
JB
1#
2# Conditional build:
3%bcond_without static # static version of mksh
4%bcond_without tests # rtchecks and test.sh checks
1c7e5b2c 5
5cba9227 6Summary: MirBSD Korn Shell
246a15d9 7Summary(pl.UTF-8): Powłoka Korna z MirBSD
5cba9227 8Name: mksh
2e6ba03e
ER
9Version: 50f
10Release: 1
5cba9227 11License: BSD
12Group: Applications/Shells
62eadf67 13Source0: https://www.mirbsd.org/MirOS/dist/mir/mksh/%{name}-R%{version}.tgz
2e6ba03e 14# Source0-md5: c3bdd668992e7369165910f0902fa854
bbdaf468 15Source1: %{name}-mkshrc
f9769367 16Source2: get-source.sh
bbdaf468 17Patch0: %{name}-mkshrc_support.patch
118a1201 18Patch1: %{name}-circumflex.patch
d4eb7072 19Patch2: %{name}-no_stop_alias.patch
90672aa5 20Patch3: %{name}-cmdline-length.patch
15b50001
KK
21URL: https://www.mirbsd.org/mksh.htm
22%if %{with tests}
23BuildRequires: ed
24BuildRequires: perl-base
25%endif
d979d194 26%{?with_static:BuildRequires: glibc-static}
20fe49cb 27BuildRequires: rpmbuild(macros) >= 1.670
d979d194
AM
28# is needed for /etc directory existence
29Requires(pre): FHS
30Requires: setup >= 2.4.6-2
31Obsoletes: pdksh
5cba9227 32BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
33
34%define _bindir /bin
35
36%description
37mksh is the MirBSD enhanced version of the Public Domain Korn shell
246a15d9 38(pdksh), a Bourne-compatible shell which is largely similar to the
5cba9227 39original AT&T Korn shell. It includes bug fixes and feature
40improvements in order to produce a modern, robust shell good for
41interactive and especially script use. It has UTF-8 support in the
5110d1d3 42emacs command line editing mode; corresponds to OpenBSD 4.2-current
5cba9227 43ksh sans GNU bash-like $PS1; the build environment requirements are
44autoconfigured; throughout code simplification/bugfix/enhancement has
45been done, and the shell has extended compatibility to other modern
46shells.
47
246a15d9
JB
48%description -l pl.UTF-8
49mksh to pochodząca z MirBSD rozszerzona wersja powłoki Public Domain
50Korn Shell (pdksh) - kompatybilnej z powłoką Bourne'a, w większości
51zbliżonej do oryginalnej powłoki Korna z AT&T. Zawiera poprawki błędów
52i rozszerzenia mające na celu stworzenie współczesnej powłoki o
53bogatych możliwościach do użytku interaktywnego i (zwłaszcza) w
54skryptach. Ma obsługę UTF-8 w trybie edycji linii poleceń w stylu
55emacsa; $PS1 odpowiada temu z ksh obecnym w OpenBSD 4.2-current;
56środowisko budowania jest automatycznie konfigurowane; dzięki
57wykonanym uproszczeniom kodu, poprawkom i rozszerzeniom powłoka ma
58rozszerzoną kompatybilność z innymi współczesnymi powłokami.
59
d979d194
AM
60%package static
61Summary: Statically linked the MirBSD enhanced version of pdksh
62Summary(pl.UTF-8): Skonsolidowana statycznie powłoka mksh
63Group: Applications/Shells
64# requires base for /etc/mkshrc?
65Requires: %{name} = %{version}-%{release}
66
67%description static
68mksh is the MirBSD enhanced version of the Public Domain Korn shell
69(pdksh), a Bourne-compatible shell which is largely similar to the
70original AT&T Korn shell.
71
72This packege contains statically linked version of mksh.
73
74%description static -l pl.UTF-8
75mksh to pochodząca z MirBSD rozszerzona wersja powłoki Public Domain
76Korn Shell (pdksh) - kompatybilnej z powłoką Bourne'a, w większości
77zbliżonej do oryginalnej powłoki Korna z AT&T.
78
7a5709f6 79W tym pakiecie jest mksh skonsolidowany statycznie.
d979d194 80
5cba9227 81%prep
62eadf67 82%setup -qc
64114d19 83mv mksh/* .; rmdir mksh
5cba9227 84
e42128b9 85%patch0 -p1
118a1201 86%patch1 -p1
d4eb7072 87%patch2 -p1
53554a18 88%patch3 -p1
a56c2c0a 89
90672aa5
AM
90# sed rules instead of patch (needed update for every release)
91sed -i -e 's|\(#define.*MKSH_VERSION.*\)"|\1 @DISTRO@"|g' sh.h
92sed -i -e 's|\(@(#)MIRBSD KSH.*\)|\1 @DISTRO@|g' check.t
93
94# fill distro
e38ec2b8 95sed -i -e 's#@DISTRO@#PLD/Linux 3.0#g' check.t sh.h
90672aa5
AM
96# sanity checks
97grep PLD/Linux check.t || exit 1
98grep PLD/Linux sh.h || exit 1
bbdaf468 99
9b0c41bb
JR
100# we'll need this later due to -DMKSH_GCC55009
101cat >rtchecks <<'EOF'
102typeset -i sari=0
103typeset -Ui uari=0
104typeset -i x=0
105print -r -- $((x++)):$sari=$uari.
106let --sari --uari
107print -r -- $((x++)):$sari=$uari.
108sari=2147483647 uari=2147483647
109print -r -- $((x++)):$sari=$uari.
110let ++sari ++uari
111print -r -- $((x++)):$sari=$uari.
112let --sari --uari
113let 'sari *= 2' 'uari *= 2'
114let ++sari ++uari
115print -r -- $((x++)):$sari=$uari.
116let ++sari ++uari
117print -r -- $((x++)):$sari=$uari.
118sari=-2147483648 uari=-2147483648
119print -r -- $((x++)):$sari=$uari.
120let --sari --uari
121print -r -- $((x++)):$sari=$uari.
122EOF
123
124cat >rtchecks.expected <<'EOF'
1250:0=0.
1261:-1=4294967295.
1272:2147483647=2147483647.
1283:-2147483648=2147483648.
1294:-1=4294967295.
1305:0=0.
1316:-2147483648=2147483648.
1327:2147483647=2147483647.
133EOF
134
5cba9227 135%build
d979d194
AM
136install -d out
137
138CC="%{__cc}" \
e054616e 139CFLAGS="%{rpmcflags} -DMKSH_GCC55009" \
d979d194 140LDFLAGS="%{rpmldflags}" \
eec2ce74 141CPPFLAGS="%{rpmcppflags}" \
a06946c0 142sh ./Build.sh -Q -r -j -c lto
abf806a4 143
1281d680
AM
144# skip some tests if not on terminal
145if ! tty -s; then
e14f3193 146 skip_tests="-C regress:no-ctty"
1281d680
AM
147fi
148
9b0c41bb
JR
149%if %{with tests}
150./mksh rtchecks >rtchecks.got 2>&1
151if ! cmp --quiet rtchecks.got rtchecks.expected ; then
152 echo "rtchecks failed"
f4608d8e 153 diff -Naurp rtchecks.expected rtchecks.got
9b0c41bb
JR
154 exit 1
155fi
156./test.sh -v $skip_tests
157%endif
d979d194
AM
158mv mksh out/mksh.dynamic
159
160%if %{with static}
161CC="%{__cc}" \
e054616e 162CFLAGS="%{rpmcflags} -DMKSH_GCC55009" \
d979d194 163LDFLAGS="%{rpmldflags} -static" \
eec2ce74 164CPPFLAGS="%{rpmcppflags}" \
a06946c0 165sh ./Build.sh -Q -r -j -c lto
d979d194 166
9b0c41bb
JR
167%if %{with tests}
168./test.sh -v $skip_tests
169./mksh rtchecks >rtchecks.got 2>&1
170if ! cmp --quiet rtchecks.got rtchecks.expected ; then
171 echo "rtchecks failed"
172 diff -Naurp %{SOURCE3} rtchecks.got
173 exit 1
174fi
175%endif
d979d194
AM
176mv mksh out/mksh.static
177%endif
178
5cba9227 179%install
180rm -rf $RPM_BUILD_ROOT
64114d19 181install -d $RPM_BUILD_ROOT{%{_bindir},%{_mandir}/man1}
d979d194
AM
182install -p out/mksh.dynamic $RPM_BUILD_ROOT%{_bindir}/mksh
183%{?with_static:install -p out/mksh.static $RPM_BUILD_ROOT%{_bindir}/mksh.static}
184
64114d19 185cp -a mksh.1 $RPM_BUILD_ROOT%{_mandir}/man1/mksh.1
d979d194
AM
186echo ".so mksh.1" > $RPM_BUILD_ROOT%{_mandir}/man1/sh.1
187
bbdaf468 188install -D %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/mkshrc
d76a7e70 189ln -sf mksh $RPM_BUILD_ROOT%{_bindir}/sh
5cba9227 190
53554a18
AM
191# some pdksh scripts used that
192ln -sf mksh $RPM_BUILD_ROOT%{_bindir}/ksh
193
5cba9227 194%clean
195rm -rf $RPM_BUILD_ROOT
196
b4c63cbb
AM
197%post -p %add_etc_shells -p /bin/sh /bin/ksh /bin/mksh
198%preun -p %remove_etc_shells -p /bin/sh /bin/ksh /bin/mksh
199
de8a6e5f
JB
200%post static -p %add_etc_shells -p /bin/mksh.static
201%preun static -p %remove_etc_shells -p /bin/mksh.static
5cba9227 202
1c7e5b2c
ER
203%triggerpostun -p <lua> -- pdksh
204if arg[2] ~= 0 then
7660cf00 205%lua_add_etc_shells /bin/sh /bin/ksh /bin/mksh
1c7e5b2c
ER
206end
207
5cba9227 208%files
209%defattr(644,root,root,755)
210%doc dot.mkshrc
bbdaf468 211%config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/mkshrc
5cba9227 212%attr(755,root,root) %{_bindir}/mksh
53554a18 213%attr(755,root,root) %{_bindir}/ksh
7a5709f6 214%attr(755,root,root) %{_bindir}/sh
64114d19 215%{_mandir}/man1/mksh.1*
d979d194
AM
216%{_mandir}/man1/sh.1*
217
218%if %{with static}
219%files static
220%defattr(644,root,root,755)
221%attr(755,root,root) %{_bindir}/mksh.static
222%endif
This page took 0.226161 seconds and 4 git commands to generate.