[Buildroot] [PATCH v2] mksh: add new package MirOS Korn Shell

Waldemar Brodkorb wbx at openadk.org
Thu Sep 22 18:12:54 UTC 2016


The MirOS Korn Shell is a quite complete posix shell implementation,
is rather small and supports vi mode properly.

Signed-off-by: Kurt Van Dijck <dev.kurt at vandijck-laurijssen.be>
Signed-off-by: Waldemar Brodkorb <wbx at openadk.org>
---
v1 -> v2:
  - added hash file
  - updated to latest release
  - tested with shared and static builds
---
I am resending the patch from Kurt, not sure why he got no feedback
yet. I can take over maintainership (DEVELOPERS entry), if Kurt won't do it.
It is a great shell and if you ever try to debug functions in ash
with set -x, you know why you want to switch to mksh.
It should properly cross-compile for every supported buildroot
architecture with MMU. It is used for a long time in OpenADK as
base system shell and it is pretty stable.
---
 package/Config.in      |  1 +
 package/mksh/Config.in | 22 ++++++++++++++++++++++
 package/mksh/mksh.hash |  4 ++++
 package/mksh/mksh.mk   | 31 +++++++++++++++++++++++++++++++
 system/Config.in       |  9 ++++++++-
 5 files changed, 66 insertions(+), 1 deletion(-)
 create mode 100644 package/mksh/Config.in
 create mode 100644 package/mksh/mksh.hash
 create mode 100644 package/mksh/mksh.mk

diff --git a/package/Config.in b/package/Config.in
index 9ca6c15..287603b 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1654,6 +1654,7 @@ menu "Shell and utilities"
 comment "Shells"
 	source "package/bash/Config.in"
 	source "package/dash/Config.in"
+	source "package/mksh/Config.in"
 	source "package/zsh/Config.in"
 comment "Utilities"
 	source "package/at/Config.in"
diff --git a/package/mksh/Config.in b/package/mksh/Config.in
new file mode 100644
index 0000000..9e2030a
--- /dev/null
+++ b/package/mksh/Config.in
@@ -0,0 +1,22 @@
+config BR2_PACKAGE_MKSH
+	bool "mksh"
+	depends on BR2_USE_MMU # fork()
+	help
+	  The MirBSD Korn Shell,
+
+	  mksh is a successor of pdksh but not affiliated with the pdksh
+	  developers or contributors. mksh is not affiliated with the
+	  AT&T Korn Shell, its past or present owners, other than that
+	  both attempt to implement the Korn Shell programming language.
+
+	  mksh targets users who desire a compact, fast, reliable,
+	  secure shell not cut off modern extensions; a shell with
+	  Unicode support; an actively developed, current, and portable
+	  product; one with developers that listen to their users’ requests
+	  and implement them if they actually make sense.
+
+	  mksh aims to replace pdksh in all but very rare use cases
+	  (such as support for checking the Unix mbox) and in all operating
+	  environments (thus including patches from pdksh on e.g. Debian).
+
+	  http://mirbsd.de/mksh
diff --git a/package/mksh/mksh.hash b/package/mksh/mksh.hash
new file mode 100644
index 0000000..d95001c
--- /dev/null
+++ b/package/mksh/mksh.hash
@@ -0,0 +1,4 @@
+# From http://www.mirbsd.org/mksh.htm#build
+md5	43fc3e32963cc1795a299bcec531d770	mksh-R53a.tgz
+# Calculated based on the hash above
+sha256	3bb2453c8cb65abbda24f9bdd8b8371e30a6e1c2f7a0d5474a3efae438639635	mksh-R53a.tgz
diff --git a/package/mksh/mksh.mk b/package/mksh/mksh.mk
new file mode 100644
index 0000000..7ca58cd
--- /dev/null
+++ b/package/mksh/mksh.mk
@@ -0,0 +1,31 @@
+################################################################################
+#
+# mksh
+#
+################################################################################
+
+MKSH_VERSION = R53a
+MKSH_SOURCE = mksh-$(MKSH_VERSION).tgz
+MKSH_SITE = https://www.mirbsd.org/MirOS/dist/mir/mksh
+MKSH_LICENSE = MirOS, BSD-3c, ISC
+MKSH_LICENSE_FILES = COPYING
+
+define MKSH_CONFIGURE_CMDS
+	cd $(@D) && $(TARGET_MAKE_ENV) \
+		CPPFLAGS="-DMKSH_S_NOVI=0 $(TARGET_CPPFLAGS)" \
+		CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \
+		LD="$(TARGET_LD)" LDFLAGS="$(TARGET_LDFLAGS)" LDLIBS="$(TARGET_LDLIBS)" \
+		TARGET_OS=Linux \
+		sh ./Build.sh -M
+endef
+
+define MKSH_BUILD_CMDS
+	cd $(@D) && $(TARGET_MAKE_ENV) \
+		sh ./Rebuild.sh
+endef
+
+define MKSH_INSTALL_TARGET_CMDS
+	$(INSTALL) -m 0755 $(@D)/mksh $(TARGET_DIR)/bin/mksh
+endef
+
+$(eval $(generic-package))
diff --git a/system/Config.in b/system/Config.in
index 77c665b..d3b2889 100644
--- a/system/Config.in
+++ b/system/Config.in
@@ -276,13 +276,19 @@ config BR2_SYSTEM_BIN_SH_DASH
 	depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
 	select BR2_PACKAGE_DASH
 
+config BR2_SYSTEM_BIN_SH_MKSH
+	bool "mksh"
+	depends on BR2_USE_MMU # mksh
+	depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
+	select BR2_PACKAGE_MKSH
+
 config BR2_SYSTEM_BIN_SH_ZSH
 	bool "zsh"
 	depends on BR2_USE_MMU # zsh
 	depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
 	select BR2_PACKAGE_ZSH
 
-comment "bash, dash, zsh need BR2_PACKAGE_BUSYBOX_SHOW_OTHERS"
+comment "bash, dash, mksh, zsh need BR2_PACKAGE_BUSYBOX_SHOW_OTHERS"
 	depends on !BR2_PACKAGE_BUSYBOX_SHOW_OTHERS && BR2_PACKAGE_BUSYBOX
 
 config BR2_SYSTEM_BIN_SH_NONE
@@ -295,6 +301,7 @@ config BR2_SYSTEM_BIN_SH
 	default "busybox" if BR2_SYSTEM_BIN_SH_BUSYBOX
 	default "bash"    if BR2_SYSTEM_BIN_SH_BASH
 	default "dash"    if BR2_SYSTEM_BIN_SH_DASH
+	default "mksh"    if BR2_SYSTEM_BIN_SH_MKSH
 	default "zsh"     if BR2_SYSTEM_BIN_SH_ZSH
 
 menuconfig BR2_TARGET_GENERIC_GETTY
-- 
2.1.4



More information about the buildroot mailing list