mksh: moved to github
authorThorsten Glaser <tg@mirbsd.org>
Thu, 9 Oct 2014 08:52:57 +0000 (10:52 +0200)
committerThorsten Glaser <tg@mirbsd.org>
Thu, 9 Oct 2014 12:15:19 +0000 (14:15 +0200)
Signed-off-by: Thorsten Glaser <tg@mirbsd.org>
utils/mksh/Makefile [new file with mode: 0644]
utils/mksh/patches/100-dot_mkshrc [new file with mode: 0644]

diff --git a/utils/mksh/Makefile b/utils/mksh/Makefile
new file mode 100644 (file)
index 0000000..66e8e63
--- /dev/null
@@ -0,0 +1,81 @@
+#
+# Copyright (C) 2007-2011 OpenWrt.org
+# Copyright (c) 2009-2013 Thorsten Glaser <tg@mirbsd.org>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=mksh
+PKG_VERSION:=47
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-R$(PKG_VERSION).tgz
+PKG_SOURCE_URL:=http://www.mirbsd.org/MirOS/dist/mir/mksh
+PKG_MD5SUM:=71c7cbcd78306897801b8b6691091e66
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/mksh
+  SECTION:=shells
+  CATEGORY:=Base system
+  TITLE:=MirBSD Korn Shell
+  DEPENDS:=$(DEP)
+  URL:=http://mirbsd.de/mksh
+endef
+
+define Package/mksh/description
+mksh is the MirBSD enhanced version of the Public Domain Korn
+shell (pdksh), a Bourne-compatible shell which is largely si-
+milar to the original AT&T Korn shell; mksh is the only pdksh
+derivate currently being actively developed.  It includes bug
+fixes and feature improvements, in order to produce a modern,
+robust shell good for interactive and especially script use.
+mksh has UTF-8 support (in substring operations and the Emacs
+editing mode) and - while R47 corresponds to OpenBSD 5.1-cur-
+rent ksh (without GNU bash-like PS1 and fancy character clas-
+ses) - adheres to SUSv4 and is much more robust. The code has
+been cleaned up and simplified, bugs fixed, standards compli-
+ance added, and several enhancements (for extended compatibi-
+lity to other modern shells - as well as a couple of its own)
+are available. It has sensible defaults as usual with BSD.
+endef
+
+define Build/Compile
+       # -DMKSH_SMALL=1 ⇒ reduce functionality quite a lot
+       # -DMKSH_ASSUME_UTF8=0 ⇒ never automatically enable
+       #       UTF-8 mode, neither use setlocale/nl_langinfo
+       #       nor look at $LC_* and $LANG (not recommended)
+       # HAVE_CAN_FSTACKPROTECTORALL=0 ⇒ nuke libssp dependency
+       cd $(PKG_BUILD_DIR); \
+               CC="$(TARGET_CC)" \
+               TARGET_OS="$(shell uname -s)" \
+               CFLAGS="$(TARGET_CFLAGS)" \
+               CPPFLAGS="-DMKSH_SMALL=1 -DMKSH_ASSUME_UTF8=0" \
+               HAVE_CAN_FSTACKPROTECTORALL=0 \
+               LDFLAGS="$(TARGET_LDFLAGS)" \
+                       $(BASH) Build.sh -Q -r -c lto
+endef
+
+define Package/mksh/postinst
+#!/bin/sh
+grep mksh $${IPKG_INSTROOT}/etc/shells || \
+       echo "/bin/mksh" >> $${IPKG_INSTROOT}/etc/shells
+endef
+
+define Package/mksh/install
+       $(INSTALL_DIR) $(1)/etc
+       $(INSTALL_DATA) $(PKG_BUILD_DIR)/dot.mkshrc $(1)/etc/mkshrc
+       $(INSTALL_DIR) $(1)/bin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/mksh $(1)/bin/
+endef
+
+define Package/mksh/conffiles
+/etc/mkshrc
+endef
+
+$(eval $(call BuildPackage,mksh))
diff --git a/utils/mksh/patches/100-dot_mkshrc b/utils/mksh/patches/100-dot_mkshrc
new file mode 100644 (file)
index 0000000..7cdd162
--- /dev/null
@@ -0,0 +1,50 @@
+From 2bee59bb9e6b142a78c94f5e77a54e4e2366c1b8 Mon Sep 17 00:00:00 2001
+From: Thorsten Glaser <tg@freewrt.org>
+Date: Thu, 25 Jul 2013 22:07:33 +0200
+Subject: [PATCH] Make default mkshrc file suitable for OpenWrt environment:
+
+* Part of the FreeWRT patches:
+  - no hostname(1)
+  - ls(1) has no -o option
+* OpenWrt and FreeWRT-1.0 fix:
+  - since this is not ~/.mkshrc make sure subshells find it
+---
+ dot.mkshrc | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/dot.mkshrc b/dot.mkshrc
+index c10b8fd..3a389b2 100644
+--- a/dot.mkshrc
++++ b/dot.mkshrc
+@@ -28,8 +28,8 @@ case $KSH_VERSION in
+ *) return 0 ;;
+ esac
+-PS1='#'; (( USER_ID )) && PS1='$'; [[ ${HOSTNAME:=$(ulimit -c 0; hostname -s \
+-    2>/dev/null)} = *([        ]|localhost) ]] && HOSTNAME=$(ulimit -c 0; hostname \
++PS1='#'; (( USER_ID )) && PS1='$'; [[ ${HOSTNAME:=$(</proc/sys/kernel/hostname
++    )} = *([   ]|localhost) ]] && HOSTNAME=$(ulimit -c 0; hostname \
+     2>/dev/null); : ${EDITOR:=/bin/ed} ${HOSTNAME:=nil} ${TERM:=vt100}
+ : ${MKSH:=$(whence -p mksh)}; PS4='[$EPOCHREALTIME] '; PS1=$'\001\r''${|
+       local e=$?
+@@ -50,7 +50,7 @@ unalias ls
+ alias l='ls -F'
+ alias la='l -a'
+ alias ll='l -l'
+-alias lo='l -alo'
++alias lo='l -al'
+ alias doch='fc -ln -1 | sudo mksh -s'
+ whence -p rot13 >/dev/null || alias rot13='tr \
+     abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ \
+@@ -413,4 +413,8 @@ alias cls='print -n \\033c'
+ unset p
++# we need this in OpenWrt for subshells that are not login shells
++: ${ENV=/etc/mkshrc}
++[[ -z $ENV ]] || export ENV
++
+ : place customisations above this line
+-- 
+1.8.3.2
+