diff options
Diffstat (limited to 'system/mksh/mksh.SlackBuild')
-rw-r--r-- | system/mksh/mksh.SlackBuild | 127 |
1 files changed, 63 insertions, 64 deletions
diff --git a/system/mksh/mksh.SlackBuild b/system/mksh/mksh.SlackBuild index a468e0587c950..ac0a66c68747e 100644 --- a/system/mksh/mksh.SlackBuild +++ b/system/mksh/mksh.SlackBuild @@ -2,34 +2,24 @@ # Slackware build script for mksh -# Copyright (c) 2011-2021 Markus Reichelt, Aachen, DE -# All rights reserved. -# -# Permission to use, copy, modify, and distribute this software for -# any purpose with or without fee is hereby granted, provided that -# the above copyright notice and this permission notice appear in all -# copies. -# -# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED -# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# Markus Reichelt, slackbuilds@mareichelt.de, 0xCCEEF115 +# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. + +# Original author: Markus Reichelt, Aachen, DE +# Now maintained by B. Watson <urchlay@slackware.uk> + +# 20230102 bkw: BUILD=2 +# - take over maintenance. +# - relicense as WTFPL. +# - install FAQ.htm, not mksh.faq. +# - make the test suite optional (but default to enabled). +# - simplify the build script. +# - make the slack-desc show the build options. cd $(dirname $0) ; CWD=$(pwd) PRGNAM=mksh VERSION=${VERSION:-R59c} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} @@ -41,9 +31,6 @@ if [ -z "$ARCH" ]; then esac fi -# If the variable PRINT_PACKAGE_NAME is set, then this script will report what -# the name of the created package would be, and then exit. This information -# could be useful to other scripts. if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" exit 0 @@ -69,69 +56,81 @@ fi set -e -rm -rf $PKG -mkdir -p $TMP $PKG $OUTPUT -cd $TMP -rm -rf $PRGNAM -tar xf $CWD/$PRGNAM-$VERSION.tgz -cd $PRGNAM - CC="gcc" SLKCFLAGS="${SLKCFLAGS} -Wall" -if [ "$STATIC" = "yes" ]; then - LDFLAGS="${LDFLAGS} -static" - CPPFLAGS="${CPPFLAGS} -DMKSH_NOPWNAM" +# 20230102 bkw: fail if user passes both DIET=yes and MUSL=yes. +if [ "$DIET" = "yes" -a "$MUSL" = "yes" ]; then + echo "$( basename $0 ): cannot combine DIET=yes with MUSL=yes." 1>&2 + exit 1 fi if [ "$DIET" = "yes" ]; then + # no need to log out & back in after installing dietlibc. + source /etc/profile.d/dietlibc.sh CC="diet -Os gcc" + # diet builds are always static + STATIC=yes + BUILDOPTS+="DIET=yes " +elif [ "$MUSL" = "yes" ]; then + CC="musl-gcc" + BUILDOPTS+="MUSL=yes " fi -if [ "$MUSL" = "yes" ]; then - CC="musl-gcc" +if [ "$STATIC" = "yes" ]; then + LDFLAGS="${LDFLAGS} -static" + CPPFLAGS="${CPPFLAGS} -DMKSH_NOPWNAM" + BUILDOPTS+="STATIC=yes " fi -chown -R root:root . -find -L . \ - \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ - -o -perm 511 \) -exec chmod 755 {} \; -o \ - \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ - -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PRGNAM +tar xvf $CWD/$PRGNAM-$VERSION.tgz +cd $PRGNAM -mkdir build -cd build +chown -R root:root . +find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \ + \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+ -LDFLAGS=$LDFLAGS \ -CPPFLAGS=$CPPFLAGS \ -CFLAGS=$SLKCFLAGS \ -CC=$CC \ - sh ../Build.sh -r +LDFLAGS="$LDFLAGS" \ +CPPFLAGS="$CPPFLAGS" \ +CFLAGS="$SLKCFLAGS" \ +CC="$CC" \ + sh Build.sh -r # make sure tests pass whether there is a controlling tty or not. There are # some changes related to this in CVS, so this can probably be removed with the # next release. # thanks alpine maintainers. -sed -i ../check.t -e '/^name: selftest-tty-absent$/,/^---$/d' -./test.sh -C regress:no-ctty +# 20230102 bkw: make tests optional with TESTS=no. This is a maintainer-mode +# option (saves me time if I'm repeatedly editing/running the script). +if [ "${TESTS:-yes}" = "yes" ]; then + sed -i -e '/^name: selftest-tty-absent$/,/^---$/d' check.t + ./test.sh -C regress:no-ctty +fi -mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION $PKG/usr/man/man1 $PKG/install +# 20230102 bkw: turns mksh.faq into proper HTML (FAQ.htm). +sh FAQ2HTML.sh -ginstall -D -m 755 mksh $PKG/bin/mksh -ginstall -D -m 644 ../mksh.1 $PKG/usr/man/man1/ -ginstall -D -m 644 ../lksh.1 $PKG/usr/man/man1/ -ginstall -D -m 644 ../mksh.faq $PKG/usr/doc/$PRGNAM-$VERSION/ -ginstall -D -m 644 ../dot.mkshrc $PKG/etc/skel/.mkshrc.new +PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION +mkdir -p $PKGDOC $PKG/{bin,usr/man/man1,etc/skel,install} -find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ - | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true +install -m 755 -s mksh $PKG/bin +install -m 644 dot.mkshrc $PKG/etc/skel/.mkshrc.new +install -m 644 dot.mkshrc $PKGDOC +install -m 644 FAQ.htm $PKGDOC -cat ../dot.mkshrc > $PKG/usr/doc/$PRGNAM-$VERSION/dot.mkshrc -cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild +for i in mksh lksh; do + gzip -9c < $i.1 > $PKG/usr/man/man1/$i.1.gz +done -find $PKG/usr/man -type f -exec gzip -9 {} \; +cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild cat $CWD/slack-desc > $PKG/install/slack-desc +[ -n "$BUILDOPTS" ] && \ + sed -i "15s,\$, Build options: $BUILDOPTS," $PKG/install/slack-desc cat $CWD/doinst.sh > $PKG/install/doinst.sh cd $PKG |