- Upgrade to pre-release of 40i

- This includes new legacy shell lksh we were asked to test
This commit is contained in:
Michal Hlavinka 2012-07-20 13:38:47 +02:00
parent 2c26a0c6f5
commit 70f5739f0a
4 changed files with 299 additions and 14 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
mksh-R40d.cpio.gz
/mksh_40.9.20120630.orig.tar.gz

265
lksh.1 Normal file
View File

@ -0,0 +1,265 @@
.\" $MirOS: contrib/hosted/tg/deb/mksh/debian/lksh.1,v 1.4 2012/06/30 17:24:36 tg Exp $
.\"-
.\" Copyright (c) 2008, 2009, 2010, 2012
.\" Thorsten “mirabilos” Glaser <tg@mirbsd.org>
.\"-
.\" Try to make GNU groff and AT&T nroff more compatible
.\" * ` generates in gnroff, so use \`
.\" * ' generates in gnroff, \' generates ´, so use \*(aq
.\" * - generates in gnroff, \- generates , so .tr it to -
.\" thus use - for hyphens and \- for minus signs and option dashes
.\" * ~ is size-reduced and placed atop in groff, so use \*(TI
.\" * ^ is size-reduced and placed atop in groff, so use \*(ha
.\" * \(en does not work in nroff, so use \*(en
.\" * <>| are problematic, so redefine and use \*(Lt\*(Gt\*(Ba
.\" Also make sure to use \& especially with two-letter words.
.\" The section after the "doc" macropackage has been loaded contains
.\" additional code to convene between the UCB mdoc macropackage (and
.\" its variant as BSD mdoc in groff) and the GNU mdoc macropackage.
.\"
.ie \n(.g \{\
. if \*[.T]ascii .tr \-\N'45'
. if \*[.T]latin1 .tr \-\N'45'
. if \*[.T]utf8 .tr \-\N'45'
. ds <= \[<=]
. ds >= \[>=]
. ds Rq \[rq]
. ds Lq \[lq]
. ds sL \(aq
. ds sR \(aq
. if \*[.T]utf8 .ds sL `
. if \*[.T]ps .ds sL `
. if \*[.T]utf8 .ds sR '
. if \*[.T]ps .ds sR '
. ds aq \(aq
. ds TI \(ti
. ds ha \(ha
. ds en \(en
.\}
.el \{\
. ds aq '
. ds TI ~
. ds ha ^
. ds en \(em
.\}
.\"
.\" Implement .Dd with the Mdocdate RCS keyword
.\"
.rn Dd xD
.de Dd
.ie \\$1$Mdocdate: \{\
. xD \\$2 \\$3, \\$4
.\}
.el .xD \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
..
.\"
.\" .Dd must come before definition of .Mx, because when called
.\" with -mandoc, it might implement .Mx itself, but we want to
.\" use our own definition. And .Dd must come *first*, always.
.\"
.Dd $Mdocdate: June 30 2012 $
.\"
.\" Check which macro package we use, and do other -mdoc setup.
.\"
.ie \n(.g \{\
. if \*[.T]utf8 .tr \[la]\*(Lt
. if \*[.T]utf8 .tr \[ra]\*(Gt
. ie d volume-ds-1 .ds tT gnu
. el .ds tT bsd
.\}
.el .ds tT ucb
.\"
.\" Implement .Mx (MirBSD)
.\"
.ie "\*(tT"gnu" \{\
. eo
. de Mx
. nr curr-font \n[.f]
. nr curr-size \n[.ps]
. ds str-Mx \f[\n[curr-font]]\s[\n[curr-size]u]
. ds str-Mx1 \*[Tn-font-size]\%MirOS\*[str-Mx]
. if !\n[arg-limit] \
. if \n[.$] \{\
. ds macro-name Mx
. parse-args \$@
. \}
. if (\n[arg-limit] > \n[arg-ptr]) \{\
. nr arg-ptr +1
. ie (\n[type\n[arg-ptr]] == 2) \
. as str-Mx1 \~\*[arg\n[arg-ptr]]
. el \
. nr arg-ptr -1
. \}
. ds arg\n[arg-ptr] "\*[str-Mx1]
. nr type\n[arg-ptr] 2
. ds space\n[arg-ptr] "\*[space]
. nr num-args (\n[arg-limit] - \n[arg-ptr])
. nr arg-limit \n[arg-ptr]
. if \n[num-args] \
. parse-space-vector
. print-recursive
..
. ec
. ds sP \s0
. ds tN \*[Tn-font-size]
.\}
.el \{\
. de Mx
. nr cF \\n(.f
. nr cZ \\n(.s
. ds aa \&\f\\n(cF\s\\n(cZ
. if \\n(aC==0 \{\
. ie \\n(.$==0 \&MirOS\\*(aa
. el .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
. \}
. if \\n(aC>\\n(aP \{\
. nr aP \\n(aP+1
. ie \\n(C\\n(aP==2 \{\
. as b1 \&MirOS\ #\&\\*(A\\n(aP\\*(aa
. ie \\n(aC>\\n(aP \{\
. nr aP \\n(aP+1
. nR
. \}
. el .aZ
. \}
. el \{\
. as b1 \&MirOS\\*(aa
. nR
. \}
. \}
..
.\}
.\"-
.Dt LKSH 1
.Os MirBSD
.Sh NAME
.Nm lksh
.Nd Legacy Korn shell built on mksh
.Sh SYNOPSIS
.Nm
.Bk -words
.Op Fl +abCefhiklmnprUuvXx
.Op Fl +o Ar opt
.Oo
.Fl c Ar string \*(Ba
.Fl s \*(Ba
.Ar file
.Op Ar args ...
.Oc
.Ek
.Sh DESCRIPTION
.Nm
is a command interpreter intended exclusive for running legacy
shell scripts.
It is built on
.Nm mksh ;
refer to its manual page for details on the scripting language.
.Sh LEGACY MODE
.Nm
has the following differences from
.Nm mksh :
.Bl -bullet
.It
.Nm
is not suitable for use as
.Pa /bin/sh .
.It
There is no explicit support for interactive use,
nor any command line editing code.
Hence,
.Nm
is not suitable as a user's login shell, either; use
.Nm mksh
instead.
.It
The
.Ev KSH_VERSION
string identifies
.Nm
as
.Dq LEGACY KSH
instead of
.Dq MIRBSD KSH .
.It
Some
.Nm mksh
specific extensions are missing; specifically, the
.Fl T
command-line option.
.It
.Nm
always uses traditional mode for constructs like:
.Bd -literal -offset indent
$ set -- $(getopt ab:c "$@")
$ echo $?
.Ed
.Pp
POSIX mandates this to show 0, but traditional mode
passes through the errorlevel from the
.Xr getopt 1
command.
.It
.Nm lksh ,
unlike
.At
.Nm ksh ,
does not keep file descriptors \*(Gt 2 private.
.It
.Nm
parses leading-zero numbers as octal (base 8).
.It
Integers use the host C environment's
.Vt long
type, not
.Vt int32_t .
Unsigned arithmetic is done using
.Vt unsigned long ,
not
.Vt uint32_t .
Neither value limits nor wraparound is guaranteed.
Dividing the largest negative number by \-1 is Undefined Behaviour
.Po
but might work on 32-bit and 64-bit
.Vt long
types
.Pc .
.El
.Sh SEE ALSO
.Xr mksh 1
.Pp
.Pa https://www.mirbsd.org/mksh.htm
.Pp
.Pa https://www.mirbsd.org/ksh\-chan.htm
.Sh CAVEATS
.Nm
tries to make a cross between a legacy bourne/posix compatibl-ish
shell and a legacy pdksh-alike but
.Dq legacy
is not exactly specified.
Parsing numbers with leading zero digits or
.Dq 0x
is relatively recent in all
.Nm pdksh
derivates, but supported here for completeness.
It might make sense to make this a run-time option, but
that might also be overkill.
.Pp
The
.Ic set
built-in command does not have all options one would expect
from a full-blown
.Nm mksh
or
.Nm pdksh .
.Pp
Talk to the
.Mx
development team using the mailing list at
.Aq miros\-discuss@mirbsd.org
or the
.Li \&#\&!/bin/mksh
.Pq or Li \&#ksh
IRC channel at
.Pa irc.freenode.net
.Pq Port 6697 SSL, 6667 unencrypted
if you need any further quirks.

View File

@ -1,15 +1,17 @@
%define _bindir /bin
%global snapshot 20120630
Summary: MirBSD enhanced version of the Korn Shell
Name: mksh
Version: 40d
Release: 3%{?dist}
Version: 40i
Release: 0%{?dist}.%{snapshot}
# BSD (setmode.c), ISC (strlcpy.c), MirOS (the rest)
License: MirOS and ISC and BSD
Group: System Environment/Shells
URL: http://www.mirbsd.de/%{name}.htm
Source0: http://www.mirbsd.org/MirOS/dist/mir/%{name}/%{name}-R%{version}.cpio.gz
Source0: ftp://ftp.debian.org/debian/pool/main/m/%{name}/%{name}_40.9.%{snapshot}.orig.tar.gz
#Source0: http://www.mirbsd.org/MirOS/dist/mir/%{name}/%{name}-R%{version}.cpio.gz
Source1: dot-mkshrc
Source2: lksh.1
Requires(post): grep
Requires(postun): sed
BuildRequires: util-linux, ed
@ -26,27 +28,37 @@ bourne shell replacement, pdksh successor and an alternative to the C shell.
%setup -q -T -c
# rpm.org has no support for *.cpio.gz
gzip -dc %{SOURCE0} | cpio -imd
mv %{name}/* . && rm -rf %{name}
#gzip -dc %{SOURCE0} | cpio -imd
#mv %{name}/* . && rm -rf %{name}
tar xvzf %{SOURCE0}
mv mksh-40.9.%{snapshot}.orig/* .
%build
CFLAGS="$RPM_OPT_FLAGS" sh Build.sh -r -c lto
cp test.sh test_mksh.sh
CFLAGS="$RPM_OPT_FLAGS" sh Build.sh -L -r -c lto
cp test.sh test_lksh.sh
%install
rm -rf $RPM_BUILD_ROOT
install -D -m 755 %{name} $RPM_BUILD_ROOT%{_bindir}/%{name}
install -D -m 755 lksh $RPM_BUILD_ROOT%{_bindir}/lksh
install -D -m 644 %{name}.1 $RPM_BUILD_ROOT%{_mandir}/man1/%{name}.1
install -D -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_mandir}/man1/lksh.1
install -D -p -m 644 dot.mkshrc $RPM_BUILD_ROOT%{_sysconfdir}/mkshrc
install -D -p -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/skel/.mkshrc
%check
echo > test.wait
script -qc './test.sh -v; x=$?; rm -f test.wait; exit $x'
maxwait=0
while test -e test.wait; do
sleep 1
maxwait=$(expr $maxwait + 1)
test $maxwait -lt 900 || break
for tf in test_mksh.sh test_lksh.sh
do
echo > test.wait
script -qc "./$tf"' -v; x=$?; rm -f test.wait; exit $x'
maxwait=0
while test -e test.wait; do
sleep 1
maxwait=$(expr $maxwait + 1)
test $maxwait -lt 900 || break
done
done
%post
@ -65,11 +77,18 @@ rm -rf $RPM_BUILD_ROOT
%defattr(-,root,root,-)
%doc dot.mkshrc
%{_bindir}/%{name}
%{_bindir}/lksh
%config(noreplace) %{_sysconfdir}/mkshrc
%config(noreplace) %{_sysconfdir}/skel/.mkshrc
%{_mandir}/man1/%{name}.1*
%{_mandir}/man1/lksh.1*
%changelog
* Fri Jul 20 2012 Michal Hlavinka <mhlavink@redhat.com> - 40i-0.20120630
- Upgrade to pre-release of 40i
- includes new legacy shell lksh for old scripts requiring pdksh or similar old
ksh-88 shell, see man lksh for differences
* Fri Jul 20 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 40d-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild

View File

@ -1 +1 @@
c6428401103367730a95b99284bf47dc mksh-R40d.cpio.gz
d2da844ef5ae1c6c68d0675a4d0c1229 mksh_40.9.20120630.orig.tar.gz