aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThorsten Glaser <tg@mirbsd.org>2014-10-09 10:52:57 +0200
committerThorsten Glaser <tg@mirbsd.org>2014-10-09 14:15:19 +0200
commita219ffc012ffa9059e81ff53a46cbd386a13ebce (patch)
treecc0ad12029552eeec375bb1accb47ba929756fb2
parentf42d4f63eed430a5c1bb95806ac666e9d161c491 (diff)
mksh: moved to github
Signed-off-by: Thorsten Glaser <tg@mirbsd.org>
-rw-r--r--utils/mksh/Makefile81
-rw-r--r--utils/mksh/patches/100-dot_mkshrc50
2 files changed, 131 insertions, 0 deletions
diff --git a/utils/mksh/Makefile b/utils/mksh/Makefile
new file mode 100644
index 000000000..66e8e63a2
--- /dev/null
+++ b/utils/mksh/Makefile
@@ -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
index 000000000..7cdd162fc
--- /dev/null
+++ b/utils/mksh/patches/100-dot_mkshrc
@@ -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
+