app-shells/mksh: Add USE=lksh
authorHaelwenn (lanodan) Monnier <contact@hacktivis.me>
Mon, 25 Nov 2019 07:27:21 +0000 (08:27 +0100)
committerMichał Górny <mgorny@gentoo.org>
Sun, 1 Dec 2019 23:24:22 +0000 (00:24 +0100)
lksh is a variant of mksh intended for legacy scripts and strict
POSIX-compatibility

Signed-off-by: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Signed-off-by: Michał Górny <mgorny@gentoo.org>
app-shells/mksh/metadata.xml
app-shells/mksh/mksh-57-r2.ebuild
app-shells/mksh/mksh-9999.ebuild

index 9df017effeb6f33fe7ffa181578ecede43c299a5..c22c0afc77d85492fc7b467882ddcf2263a2b926 100644 (file)
@@ -9,4 +9,10 @@
                <email>proxy-maint@gentoo.org</email>
                <name>Proxy Maintainers</name>
        </maintainer>
+       <use>
+               <flag name="lksh">
+variant that uses POSIX-compliant arithmetics with the host “long” data type 
+and is automatically in POSIX mode when called as /bin/sh
+               </flag>
+       </use>
 </pkgmetadata>
index b818b1caf1a2883ab56abebabb5eb64a3df23ce5..ff84abaff24a316a9499448205d5f326817c4cae 100644 (file)
@@ -23,7 +23,7 @@ HOMEPAGE="http://mirbsd.de/mksh"
 
 LICENSE="BSD"
 SLOT="0"
-IUSE="static test"
+IUSE="lksh static test"
 RESTRICT="!test? ( test )"
 
 DEPEND="
@@ -35,10 +35,25 @@ DEPEND="
 
 S="${WORKDIR}/${PN}"
 
+src_prepare() {
+       default
+       if use lksh; then
+               cp -pr "${S}" "${S}"_lksh || die
+       fi
+}
+
 src_compile() {
        tc-export CC
        use static && export LDSTATIC="-static"
        export CPPFLAGS="${CPPFLAGS} -DMKSH_DEFAULT_PROFILEDIR=\\\"${EPREFIX}/etc\\\""
+
+       if use lksh; then
+               pushd "${S}"_lksh >/dev/null || die
+               CPPFLAGS="${CPPFLAGS} -DMKSH_BINSHPOSIX -DMKSH_BINSHREDUCED" \
+                       sh Build.sh -r -L || die
+               popd >/dev/null || die
+       fi
+
        sh Build.sh -r || die
 }
 
@@ -47,8 +62,21 @@ src_install() {
        dobin mksh
        doman mksh.1
        dodoc dot.mkshrc
+
+       if use lksh; then
+               dobin "${S}"_lksh/lksh
+               doman "${S}"_lksh/lksh.1
+       fi
 }
 
 src_test() {
+       einfo "Testing regular mksh."
        ./mksh test.sh -v || die
+
+       if use lksh; then
+               einfo "Testing lksh, POSIX long-bit mksh."
+               pushd "${S}"_lksh >/dev/null || die
+               ./lksh test.sh -v || die
+               popd >/dev/null || die
+       fi
 }
index b818b1caf1a2883ab56abebabb5eb64a3df23ce5..ff84abaff24a316a9499448205d5f326817c4cae 100644 (file)
@@ -23,7 +23,7 @@ HOMEPAGE="http://mirbsd.de/mksh"
 
 LICENSE="BSD"
 SLOT="0"
-IUSE="static test"
+IUSE="lksh static test"
 RESTRICT="!test? ( test )"
 
 DEPEND="
@@ -35,10 +35,25 @@ DEPEND="
 
 S="${WORKDIR}/${PN}"
 
+src_prepare() {
+       default
+       if use lksh; then
+               cp -pr "${S}" "${S}"_lksh || die
+       fi
+}
+
 src_compile() {
        tc-export CC
        use static && export LDSTATIC="-static"
        export CPPFLAGS="${CPPFLAGS} -DMKSH_DEFAULT_PROFILEDIR=\\\"${EPREFIX}/etc\\\""
+
+       if use lksh; then
+               pushd "${S}"_lksh >/dev/null || die
+               CPPFLAGS="${CPPFLAGS} -DMKSH_BINSHPOSIX -DMKSH_BINSHREDUCED" \
+                       sh Build.sh -r -L || die
+               popd >/dev/null || die
+       fi
+
        sh Build.sh -r || die
 }
 
@@ -47,8 +62,21 @@ src_install() {
        dobin mksh
        doman mksh.1
        dodoc dot.mkshrc
+
+       if use lksh; then
+               dobin "${S}"_lksh/lksh
+               doman "${S}"_lksh/lksh.1
+       fi
 }
 
 src_test() {
+       einfo "Testing regular mksh."
        ./mksh test.sh -v || die
+
+       if use lksh; then
+               einfo "Testing lksh, POSIX long-bit mksh."
+               pushd "${S}"_lksh >/dev/null || die
+               ./lksh test.sh -v || die
+               popd >/dev/null || die
+       fi
 }