X-Git-Url: https://git.pld-linux.org/gitweb.cgi?a=blobdiff_plain;f=mksh.spec;h=2a43a5ac1c732c3e08ef96b70feead72b65761a8;hb=7486e2ef4689b89754ddff8c9ca2e4d23e94f971;hp=b9ef49d61de3306e4001f6c985a5b3ae8f78cec6;hpb=a06946c0a3f84935ecb1f6ed4a2f5319586b515f;p=packages%2Fmksh.git diff --git a/mksh.spec b/mksh.spec index b9ef49d..2a43a5a 100644 --- a/mksh.spec +++ b/mksh.spec @@ -1,20 +1,25 @@ -%bcond_without static -%bcond_without tests +# +# TODO: https://bugs.launchpad.net/mksh/+bug/1179287 +# +# Conditional build: +%bcond_without static # static version of mksh +%bcond_without tests # rtchecks and test.sh checks +# # Summary: MirBSD Korn Shell Summary(pl.UTF-8): Powłoka Korna z MirBSD Name: mksh -Version: 40b -Release: 1 +Version: 46 +Release: 0.1 License: BSD Group: Applications/Shells -Source0: http://www.mirbsd.org/MirOS/dist/mir/mksh/%{name}-R%{version}.cpio.gz -# Source0-md5: afb08b65272ace550ec59b26a876a7de +Source0: http://www.mirbsd.org/MirOS/dist/mir/mksh/%{name}-R%{version}.tgz +# Source0-md5: 77c108d8143a6e7670954d77517d216d Source1: %{name}-mkshrc Patch0: %{name}-mkshrc_support.patch Patch1: %{name}-circumflex.patch Patch2: %{name}-no_stop_alias.patch -Patch3: %{name}-distro.patch +Patch3: %{name}-cmdline-length.patch URL: https://www.mirbsd.org/mksh.htm %if %{with tests} BuildRequires: ed @@ -85,14 +90,58 @@ mv mksh/* .; rmdir mksh %patch2 -p1 %patch3 -p1 +# sed rules instead of patch (needed update for every release) +sed -i -e 's|\(#define.*MKSH_VERSION.*\)"|\1 @DISTRO@"|g' sh.h +sed -i -e 's|\(@(#)MIRBSD KSH.*\)|\1 @DISTRO@|g' check.t + +# fill distro sed -i -e 's#@DISTRO@#PLD/Linux 3.0#g' check.t sh.h +# sanity checks +grep PLD/Linux check.t || exit 1 +grep PLD/Linux sh.h || exit 1 + +# we'll need this later due to -DMKSH_GCC55009 +cat >rtchecks <<'EOF' +typeset -i sari=0 +typeset -Ui uari=0 +typeset -i x=0 +print -r -- $((x++)):$sari=$uari. +let --sari --uari +print -r -- $((x++)):$sari=$uari. +sari=2147483647 uari=2147483647 +print -r -- $((x++)):$sari=$uari. +let ++sari ++uari +print -r -- $((x++)):$sari=$uari. +let --sari --uari +let 'sari *= 2' 'uari *= 2' +let ++sari ++uari +print -r -- $((x++)):$sari=$uari. +let ++sari ++uari +print -r -- $((x++)):$sari=$uari. +sari=-2147483648 uari=-2147483648 +print -r -- $((x++)):$sari=$uari. +let --sari --uari +print -r -- $((x++)):$sari=$uari. +EOF + +cat >rtchecks.expected <<'EOF' +0:0=0. +1:-1=4294967295. +2:2147483647=2147483647. +3:-2147483648=2147483648. +4:-1=4294967295. +5:0=0. +6:-2147483648=2147483648. +7:2147483647=2147483647. +EOF %build install -d out CC="%{__cc}" \ -CFLAGS="%{rpmcppflags} %{rpmcflags}" \ +CFLAGS="%{rpmcflags} -DMKSH_GCC55009" \ LDFLAGS="%{rpmldflags}" \ +CPPFLAGS="%{rpmcppflags}" \ sh ./Build.sh -Q -r -j -c lto # skip some tests if not on terminal @@ -100,16 +149,33 @@ if ! tty -s; then skip_tests="-C regress:no-ctty" fi -%{?with_tests:./test.sh -v $skip_tests} +%if %{with tests} +./mksh rtchecks >rtchecks.got 2>&1 +if ! cmp --quiet rtchecks.got rtchecks.expected ; then + echo "rtchecks failed" + diff -Naurp %{SOURCE3} rtchecks.got + exit 1 +fi +./test.sh -v $skip_tests +%endif mv mksh out/mksh.dynamic %if %{with static} CC="%{__cc}" \ -CFLAGS="%{rpmcppflags} %{rpmcflags}" \ +CFLAGS="%{rpmcflags} -DMKSH_GCC55009" \ LDFLAGS="%{rpmldflags} -static" \ +CPPFLAGS="%{rpmcppflags}" \ sh ./Build.sh -Q -r -j -c lto -%{?with_tests:./test.sh -v $skip_tests} +%if %{with tests} +./test.sh -v $skip_tests +./mksh rtchecks >rtchecks.got 2>&1 +if ! cmp --quiet rtchecks.got rtchecks.expected ; then + echo "rtchecks failed" + diff -Naurp %{SOURCE3} rtchecks.got + exit 1 +fi +%endif mv mksh out/mksh.static %endif @@ -134,11 +200,10 @@ rm -rf $RPM_BUILD_ROOT %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 - +%posttrans -p %add_etc_shells -p /bin/sh /bin/ksh /bin/mksh -%post static -p %add_etc_shells -p /bin/mksh.static -%preun static -p %remove_etc_shells -p /bin/mksh.static +%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)