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