summaryrefslogtreecommitdiff
path: root/shells/ksh93-devel
diff options
context:
space:
mode:
authorCy Schubert <cy@FreeBSD.org>2020-02-22 22:38:42 +0000
committerCy Schubert <cy@FreeBSD.org>2020-02-22 22:38:42 +0000
commitf812380a4e1e314cfcbb029ba779d61bf23a5865 (patch)
tree2755806664d52db8925f844c591522fdf1c9c2df /shells/ksh93-devel
parentAT&T AST (att/ast) on github has rewound their repo back to ksh93u+. See (diff)
AT&T AST (att/ast) on github has rewound their repo back to ksh93u+. See
https://github.com/att/ast/issues/1464 and https://github.com/att/ast/issues/1466. The reason for the rewind back to 93u+ instead of 93v- was that it was an abandoned unstable buggy unfinished beta. A full explanation of this can be found here, https://github.com/att/ast/issues/1466#issuecomment-589942449. At present ksh93-devel will track att/ast until development shifts to the new ksh-community repo on github.
Notes
Notes: svn path=/head/; revision=526860
Diffstat (limited to 'shells/ksh93-devel')
-rw-r--r--shells/ksh93-devel/Makefile60
-rw-r--r--shells/ksh93-devel/distinfo6
-rw-r--r--shells/ksh93-devel/files/extra-patch-install-as-ksh9325
-rw-r--r--shells/ksh93-devel/files/extra-patch-install-as-ksh93-doc10
-rw-r--r--shells/ksh93-devel/files/patch-scripts_builtin_documentation.sh10
-rw-r--r--shells/ksh93-devel/files/patch-src_cmd_std_features_procfs36
-rw-r--r--shells/ksh93-devel/files/patch-src_cmd_std_pss-kvm.c12
-rw-r--r--shells/ksh93-devel/files/patch-src_lib_libast_features_mmap36
-rw-r--r--shells/ksh93-devel/files/patch-src_lib_libast_features_standards23
-rw-r--r--shells/ksh93-devel/files/patch-src_lib_libast_features_vmalloc10
-rw-r--r--shells/ksh93-devel/files/patch-src_lib_libast_features_wchar10
-rw-r--r--shells/ksh93-devel/files/patch-src_lib_libast_port_astcopy.c17
-rw-r--r--shells/ksh93-devel/files/patch-src_lib_libast_sfio_sfhdr.h12
-rw-r--r--shells/ksh93-devel/files/patch-src_lib_libast_sfio_sfseek.c24
-rw-r--r--shells/ksh93-devel/files/patch-src_lib_libast_string_strexpr.c87
-rw-r--r--shells/ksh93-devel/pkg-plist66
16 files changed, 318 insertions, 126 deletions
diff --git a/shells/ksh93-devel/Makefile b/shells/ksh93-devel/Makefile
index e82b9ba18990..a62ee1686d79 100644
--- a/shells/ksh93-devel/Makefile
+++ b/shells/ksh93-devel/Makefile
@@ -1,52 +1,80 @@
# $FreeBSD$
+# Make sure that your configuration DOES NOT set ANY gcc-related
+# variables. ksh93 will not compile if you set even the seemingly
+# most unrelated variable related to gcc configuration. This means
+# especially any flag which attempts to set the cputype. Setting the
+# cputype does absolutely nothing except cause systems to fail in
+# horrible ways. For any modern processor, setting the cputype only
+# serves to expose gcc bugs and does nothing to speed up any known
+# program. If you are really unconvinced, go ahead but do not
+# complain to me about it.
+
PORTNAME= ksh93
PORTVERSION= ${AST_COMMIT_DATE}
CATEGORIES= shells
-PKGNAMESUFFIX= -devel
+DIST_SUBDIR= ksh93
MAINTAINER= cy@FreeBSD.org
COMMENT= Development branch of AT&T KornShell 93
LICENSE= EPL
-USES= compiler:c11 meson ninja python:build
+HASH= 0be82553
+AST_COMMIT_DATE= 2020.02.22
+
+BROKEN_aarch64= Fails to compile: needs sbrk
-HASH= 8cf92b28
-AST_COMMIT_DATE= 2020.02.07
+USES= compiler:c11
USE_GITHUB= yes
GH_ACCOUNT= att
GH_PROJECT= ast
GH_TAGNAME= ${HASH}
+# IMPORTANT: Disabling conflicts, i.e. -DDISABLE_CONFLICTS will result in
+# arcane build failures due to already installed ksh/ksh93 in
+# $PATH.
KSH_CONFLICTS= pdksh-*
KSH93_CONFLICTS= ksh93-2* ast-ksh-*
-MESON_BUILD_DIR= build
-
-OPTIONS_DEFAULT= KSH93
+OPTIONS_DEFAULT= KSH93 EXAMPLES
+OPTIONS_DEFINE= EXAMPLES STATIC
OPTIONS_SINGLE= BIN_KSH
OPTIONS_SINGLE_BIN_KSH= KSH KSH93
KSH_DESC= Install to ${PREFIX}/bin/ksh
KSH93_DESC= Install to ${PREFIX}/bin/ksh93
-KSH93_EXTRA_PATCHES= ${FILESDIR}/extra-patch-install-as-ksh93 \
- ${FILESDIR}/extra-patch-install-as-ksh93-doc
+CFLAGS+= -DMAP_TYPE
+LDFLAGS+= -lm
+MAKE_ENV= CCFLAGS="-Wno-unused-value -Wno-parentheses -Wno-logical-op-parentheses" CFLAGS="${CFLAGS}"
+
+STATIC_MAKE_ENV= LDFLAGS+=-static
KSH_PLIST_SUB= 93=""
KSH93_PLIST_SUB= 93="93"
.include <bsd.port.options.mk>
-post-patch:
- @${REINPLACE_CMD} -e '/for name in/ s|python.*|${PYTHON_CMD}|g' ${WRKSRC}/scripts/python.sh
- @${REINPLACE_CMD} -e 's|SF_FLAGS|SFIO_FLAGS|g' ${WRKSRC}/src/lib/libast/include/sfio*.h ${WRKSRC}/src/lib/libast/sfio/*.c
.if ${PORT_OPTIONS:MKSH93}
- @${MV} ${WRKSRC}/src/cmd/ksh93/docs/ksh.1 ${WRKSRC}/src/cmd/ksh93/docs/ksh93.1
-.endif
-.if ${PORT_OPTIONS:MKSH}
- @# Keep portlint happy
+PNAME= ksh93
+.else
+PNAME= ksh
.endif
+post-patch:
+ @${REINPLACE_CMD} -e 's|SF_FLAGS|SFIO_FLAGS|g' ${WRKSRC}/src/lib/libast/include/sfio*.h ${WRKSRC}/src/lib/libast/sfio/*.c
+
+do-build:
+ @cd ${WRKSRC}/ && ${SETENV} -i ${MAKE_ENV} ${SH} bin/package flat make ksh93
+
+do-install:
+ ${INSTALL_PROGRAM} ${WRKSRC}/bin/ksh ${STAGEDIR}${PREFIX}/bin/${PNAME}
+ ${INSTALL_MAN} ${WRKSRC}/man/man1/sh.1 ${STAGEDIR}${MAN1PREFIX}/man/man1/${PNAME}.1
+ ${MKDIR} ${STAGEDIR}${EXAMPLESDIR}/
+ cd ${WRKSRC}/fun/ && ${INSTALL_SCRIPT} dirs popd pushd ${STAGEDIR}${EXAMPLESDIR}/
+
+do-test:
+ cd ${WRKSRC}/src/cmd/ksh93/tests/ && ${SETENV} SHELL=${WRKSRC}/bin/ksh ${WRKSRC}/bin/ksh shtests
+
.include <bsd.port.mk>
diff --git a/shells/ksh93-devel/distinfo b/shells/ksh93-devel/distinfo
index 471e69486bd0..38761bd3b770 100644
--- a/shells/ksh93-devel/distinfo
+++ b/shells/ksh93-devel/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1581102021
-SHA256 (att-ast-2020.02.07-8cf92b28_GH0.tar.gz) = bbff37f478c9dedd4f52ccf27ab3a90bb17f9fb0458ef11a1ac5316097df9278
-SIZE (att-ast-2020.02.07-8cf92b28_GH0.tar.gz) = 2229786
+TIMESTAMP = 1581223383
+SHA256 (ksh93/att-ast-2020.02.08-0be82553_GH0.tar.gz) = a78f2930e9daebd3950044eb899dfbcae67ac8e2599346aa25c2fd6fb8097bf0
+SIZE (ksh93/att-ast-2020.02.08-0be82553_GH0.tar.gz) = 12960534
diff --git a/shells/ksh93-devel/files/extra-patch-install-as-ksh93 b/shells/ksh93-devel/files/extra-patch-install-as-ksh93
deleted file mode 100644
index 0ef50874bd81..000000000000
--- a/shells/ksh93-devel/files/extra-patch-install-as-ksh93
+++ /dev/null
@@ -1,25 +0,0 @@
---- src/cmd/ksh93/meson.build.orig 2020-01-30 18:34:35.000000000 -0800
-+++ src/cmd/ksh93/meson.build 2020-01-30 20:47:13.410465000 -0800
-@@ -26,7 +26,7 @@
- dependencies: [libm_dep, libexecinfo_dep, libdl_dep, libsocket_dep, libnsl_dep],
- install: get_option('default_library') == 'shared')
-
--ksh93_exe = executable('ksh', ['sh/pmain.c'], c_args: shared_c_args,
-+ksh93_exe = executable('ksh93', ['sh/pmain.c'], c_args: shared_c_args,
- include_directories: [configuration_incdir, ksh93_incdir],
- link_with: [libksh, libast, libcmd, libdll],
- dependencies: [libm_dep, libexecinfo_dep, libdl_dep],
-@@ -34,11 +34,11 @@
-
- # Create a symlink for a restricted version of the ksh shell.
- create_rksh_symlink = find_program(source_dir + '/scripts/create_rksh_symlink')
--rksh93_exe = custom_target('rksh', input: ksh93_exe, output: 'rksh', build_by_default: true,
-+rksh93_exe = custom_target('rksh', input: ksh93_exe, output: 'rksh93', build_by_default: true,
- install: true, install_mode: 'rwxr-xr-x', install_dir: install_prefix + '/bin',
- command: [create_rksh_symlink, '@INPUT@'])
-
--shcomp_exe = executable('shcomp', ['sh/shcomp.c'], c_args: shared_c_args,
-+shcomp_exe = executable('shcomp93', ['sh/shcomp.c'], c_args: shared_c_args,
- include_directories: [configuration_incdir, ksh93_incdir],
- link_with: [libksh, libast, libcmd, libdll],
- dependencies: [libm_dep, libexecinfo_dep, libdl_dep, libsocket_dep, libnsl_dep],
diff --git a/shells/ksh93-devel/files/extra-patch-install-as-ksh93-doc b/shells/ksh93-devel/files/extra-patch-install-as-ksh93-doc
deleted file mode 100644
index 35e8b7d6dd8e..000000000000
--- a/shells/ksh93-devel/files/extra-patch-install-as-ksh93-doc
+++ /dev/null
@@ -1,10 +0,0 @@
---- src/cmd/ksh93/docs/meson.build.orig 2019-09-16 17:08:04.000000000 -0700
-+++ src/cmd/ksh93/docs/meson.build 2019-09-17 12:15:14.321848000 -0700
-@@ -3,6 +3,6 @@
- # default man page directory: /usr/local/share/man/man1. The man pages for individual builtins will
- # be installed in /usr/local/share/ksh/man.
- #
--install_man('ksh.1', install_mode: 'rw-r--r--')
-+install_man('ksh93.1', install_mode: 'rw-r--r--')
-
- # See also scripts/install_aux_files.sh which takes care of installing the private man pages.
diff --git a/shells/ksh93-devel/files/patch-scripts_builtin_documentation.sh b/shells/ksh93-devel/files/patch-scripts_builtin_documentation.sh
deleted file mode 100644
index d89bb531bcad..000000000000
--- a/shells/ksh93-devel/files/patch-scripts_builtin_documentation.sh
+++ /dev/null
@@ -1,10 +0,0 @@
---- scripts/builtin_documentation.sh.orig 2019-08-30 05:32:36.000000000 -0700
-+++ scripts/builtin_documentation.sh 2019-08-30 12:40:24.125856000 -0700
-@@ -8,6 +8,6 @@
- cmd_name=$(basename "$in_file" .1)
- [ "$cmd_name" = ksh ] && continue
- echo "const char sh_opt${cmd_name}[] ="
-- sed -e 's/\(.*\)/ "\1\\n"/' < "$in_file"
-+ sed -e 's/"//g;s/\(.*\)/ "\1\\n"/' < "$in_file"
- echo ";"
- done
diff --git a/shells/ksh93-devel/files/patch-src_cmd_std_features_procfs b/shells/ksh93-devel/files/patch-src_cmd_std_features_procfs
new file mode 100644
index 000000000000..7fc3c1fc8113
--- /dev/null
+++ b/shells/ksh93-devel/files/patch-src_cmd_std_features_procfs
@@ -0,0 +1,36 @@
+--- src/cmd/std/features/procfs.orig 2017-11-30 22:35:04 UTC
++++ src/cmd/std/features/procfs
+@@ -1,6 +1,6 @@
+ hdr kvm,procinfo,pstat,asm/param
+
+-sys procfs,sysctl
++sys procfs,sysctl,user
+
+ lib getprocs
+ lib kvm_open,kvm_getprocs kvm.h sys/time.h sys/param.h sys/proc.h sys/sysctl.h -lkvm
+@@ -10,7 +10,11 @@ mem extern_proc.p_pid,extern_proc.p_star
+ mem procsinfo64.pi_pri procinfo.h
+ mem prpsinfo.pr_clname,prpsinfo.pr_cstime,prpsinfo.pr_cstime.tv_sec,prpsinfo.pr_ctime,prpsinfo.pr_cutime,prpsinfo.pr_gid,prpsinfo.pr_lttydev,prpsinfo.pr_ntpid,prpsinfo.pr_pgid,prpsinfo.pr_pgrp,prpsinfo.pr_psargs,prpsinfo.pr_refcount,prpsinfo.pr_rssize,prpsinfo.pr_sid,prpsinfo.pr_sonproc,prpsinfo.pr_start,prpsinfo.pr_start.tv_sec,prpsinfo.pr_starttime,prpsinfo.pr_starttime.tv_sec,prpsinfo.pr_state,prpsinfo.pr_stime,prpsinfo.pr_tgrp,prpsinfo.pr_time,prpsinfo.pr_time.tv_sec,prpsinfo.pr_utime,prpsinfo.pr_zomb,prpsinfo.pr_pctcpu,prpsinfo.pr_cpu,prpsinfo.pr_lwp.pr_pctcpu,prpsinfo.pr_lwp.pr_cpu -D_STRUCTURED_PROC -Dprpsinfo=psinfo sys/types.h sys/procfs.h
+
++num PIOCPSINFO
++
+ typ struct.prpsinfo -D_STRUCTURED_PROC -Dprpsinfo=psinfo sys/types.h sys/procfs.h
++typ struct.kinfo_proc sys/types.h sys/procfs.h sys/user.h
++typ struct.kp_proc sys/types.h sys/procfs.h sys/user.h
+
+ tst lib_info note{ info(2) kernel table api }end link{
+ #include <info.h>
+@@ -587,11 +591,11 @@ cat{
+ #define PSS_METHOD PSS_METHOD_getprocs
+ #endif
+
+-#if !PSS_METHOD && defined(_PS_dir)
++#if !PSS_METHOD && defined(_PS_dir) && (_PS_scan_binary || _num_PIOCPSINFO)
+ #define PSS_METHOD PSS_METHOD_procfs
+ #endif
+
+-#if !PSS_METHOD && _hdr_kvm && _sys_sysctl && _lib_kvm_open && _lib_kvm_getprocs
++#if !PSS_METHOD && _hdr_kvm && _sys_sysctl && _lib_kvm_open && _lib_kvm_getprocs && _typ_struct_kinfo_proc && _typ_struct_kp_proc
+ #define PSS_METHOD PSS_METHOD_kvm
+ #endif
+
diff --git a/shells/ksh93-devel/files/patch-src_cmd_std_pss-kvm.c b/shells/ksh93-devel/files/patch-src_cmd_std_pss-kvm.c
new file mode 100644
index 000000000000..4bd842573d48
--- /dev/null
+++ b/shells/ksh93-devel/files/patch-src_cmd_std_pss-kvm.c
@@ -0,0 +1,12 @@
+--- src/cmd/std/pss-kvm.c.orig 2017-11-30 22:35:04 UTC
++++ src/cmd/std/pss-kvm.c
+@@ -43,6 +43,9 @@ NoN(pss_kvm)
+ #if _sys_proc
+ #include <sys/proc.h>
+ #endif
++#if _sys_user
++#include <sys/user.h>
++#endif
+ #include <sys/sysctl.h>
+ #include <sys/tty.h>
+
diff --git a/shells/ksh93-devel/files/patch-src_lib_libast_features_mmap b/shells/ksh93-devel/files/patch-src_lib_libast_features_mmap
new file mode 100644
index 000000000000..9690f24cc355
--- /dev/null
+++ b/shells/ksh93-devel/files/patch-src_lib_libast_features_mmap
@@ -0,0 +1,36 @@
+--- src/lib/libast/features/mmap.orig 2020-02-08 10:39:38.000000000 -0800
++++ src/lib/libast/features/mmap 2020-02-08 20:49:37.791733000 -0800
+@@ -16,14 +16,7 @@
+
+ #define Failed(file) (remove(file),1)
+
+- int
+- #if _STD_
+- main(int argc, char** argv)
+- #else
+- main(argc,argv)
+- int argc;
+- char** argv;
+- #endif
++ int main(int argc, char** argv)
+ {
+ caddr_t mm;
+ char *t, *u, *f;
+@@ -326,17 +319,12 @@
+ cat{
+
+ /* some systems get it wrong but escape concise detection */
+- #ifndef _NO_MMAP
+ #if __CYGWIN__
+ #define _NO_MMAP 1
+ #endif
+- #endif
+
+ #if _NO_MMAP
+ #undef _lib_mmap
+ #undef _lib_mmap64
+- #undef _mmap_anon
+- #undef _mmap_devzero
+- #undef _mmap_worthy
+ #endif
+ }end
diff --git a/shells/ksh93-devel/files/patch-src_lib_libast_features_standards b/shells/ksh93-devel/files/patch-src_lib_libast_features_standards
new file mode 100644
index 000000000000..166362409d66
--- /dev/null
+++ b/shells/ksh93-devel/files/patch-src_lib_libast_features_standards
@@ -0,0 +1,23 @@
+--- src/lib/libast/features/standards.orig 2020-02-08 10:39:38.000000000 -0800
++++ src/lib/libast/features/standards 2020-02-08 21:58:23.687268000 -0800
+@@ -1,5 +1,19 @@
+ set stdio
+-if tst note{ _ALL_SOURCE & _POSIX_SOURCE & _POSIX_C_SOURCE & _XOPEN_SOURCE & __EXTENSIONS__ works }end compile{
++# In FreeBSD, definitions like _POSIX_SOURCE and such are used to *limit*
++# functionality to known API; they don't enable anything. The general intent in
++# BSD is to enable everything by default (effectively, providing the
++# _KITCHEN_SINK_SOURCE mentioned below). So we look for that here, but stay
++# careful that we don't get fooled by presence of FreeBSD that underpins some
++# subsystems in Mac OS X; there are other Apple-specific portability hacks
++# elsewhere we should not interfere with.
++if tst note{ FreeBSD }end compile{
++ #include <sys/param.h>
++ #if !defined(__FreeBSD__) || defined(APPLE)
++ #error not a FreeBSD system
++ #endif
++ }end {
++ }
++elif tst note{ _ALL_SOURCE & _POSIX_SOURCE & _POSIX_C_SOURCE & _XOPEN_SOURCE & __EXTENSIONS__ works }end compile{
+ #define _ALL_SOURCE 1
+ #define _POSIX_SOURCE 1
+ #define _POSIX_C_SOURCE 21000101L
diff --git a/shells/ksh93-devel/files/patch-src_lib_libast_features_vmalloc b/shells/ksh93-devel/files/patch-src_lib_libast_features_vmalloc
new file mode 100644
index 000000000000..a90f1e720ef3
--- /dev/null
+++ b/shells/ksh93-devel/files/patch-src_lib_libast_features_vmalloc
@@ -0,0 +1,10 @@
+--- src/lib/libast/features/vmalloc.orig 2016-02-28 17:09:23 UTC
++++ src/lib/libast/features/vmalloc
+@@ -217,7 +217,4 @@ cat{
+ #if _mmap_anon
+ #define _mem_mmap_anon 1
+ #endif
+- #if _mmap_devzero
+- #define _mem_mmap_zero 1
+- #endif
+ }end
diff --git a/shells/ksh93-devel/files/patch-src_lib_libast_features_wchar b/shells/ksh93-devel/files/patch-src_lib_libast_features_wchar
new file mode 100644
index 000000000000..d3dca1657a59
--- /dev/null
+++ b/shells/ksh93-devel/files/patch-src_lib_libast_features_wchar
@@ -0,0 +1,10 @@
+--- src/lib/libast/features/wchar.orig 2017-11-30 22:35:04 UTC
++++ src/lib/libast/features/wchar
+@@ -6,6 +6,7 @@ set include .
+ cat{
+ #ifndef _AST_WCHAR_H
+ #define _AST_WCHAR_H 1
++ #define _STDFILE_DECLARED
+ }end
+
+ lib mbstowcs,wctomb,wcscmp,wcscoll,wcslen,wcstombs,wcsxfrm,wcwidth stdlib.h stdio.h wchar.h
diff --git a/shells/ksh93-devel/files/patch-src_lib_libast_port_astcopy.c b/shells/ksh93-devel/files/patch-src_lib_libast_port_astcopy.c
new file mode 100644
index 000000000000..c0bef96c2a0e
--- /dev/null
+++ b/shells/ksh93-devel/files/patch-src_lib_libast_port_astcopy.c
@@ -0,0 +1,17 @@
+--- src/lib/libast/port/astcopy.c.orig 2016-02-28 17:09:23 UTC
++++ src/lib/libast/port/astcopy.c
+@@ -30,14 +30,10 @@
+ #include <ast.h>
+ #include <ast_mmap.h>
+
+-#if _mmap_worthy > 1
+-
+ #include <ls.h>
+
+ #define MAPSIZE (1024*256)
+
+-#endif
+-
+ #undef BUFSIZ
+ #define BUFSIZ 4096
+
diff --git a/shells/ksh93-devel/files/patch-src_lib_libast_sfio_sfhdr.h b/shells/ksh93-devel/files/patch-src_lib_libast_sfio_sfhdr.h
new file mode 100644
index 000000000000..ed668e576208
--- /dev/null
+++ b/shells/ksh93-devel/files/patch-src_lib_libast_sfio_sfhdr.h
@@ -0,0 +1,12 @@
+--- src/lib/libast/sfio/sfhdr.h.orig 2016-02-28 17:09:23 UTC
++++ src/lib/libast/sfio/sfhdr.h
+@@ -209,9 +209,6 @@
+
+ /* see if we can use memory mapping for io */
+ #if _LARGEFILE64_SOURCE && !_lib_mmap64
+-#undef _mmap_worthy
+-#endif
+-#if !_mmap_worthy
+ #undef _hdr_mman
+ #undef _sys_mman
+ #endif
diff --git a/shells/ksh93-devel/files/patch-src_lib_libast_sfio_sfseek.c b/shells/ksh93-devel/files/patch-src_lib_libast_sfio_sfseek.c
new file mode 100644
index 000000000000..41e5cd15271a
--- /dev/null
+++ b/shells/ksh93-devel/files/patch-src_lib_libast_sfio_sfseek.c
@@ -0,0 +1,24 @@
+--- src/lib/libast/sfio/sfseek.c.orig 2020-02-08 10:39:38.000000000 -0800
++++ src/lib/libast/sfio/sfseek.c 2020-02-09 20:01:11.420655000 -0800
+@@ -204,18 +204,9 @@
+ #ifdef MAP_TYPE
+ if(f->bits&SF_MMAP)
+ { /* if mmap is not great, stop mmaping if moving around too much */
+-#if _mmap_worthy < 2
+- if((f->next - f->data) < ((f->endb - f->data)/4) )
+- { SFSETBUF(f,(Void_t*)f->tiny,(size_t)SF_UNBOUND);
+- hardseek = 1; /* this forces a hard seek below */
+- }
+- else
+-#endif
+- { /* for mmap, f->here can be virtual except for hardseek */
+- newpos(f,p);
+- if(!hardseek)
+- goto done;
+- }
++ newpos(f,p);
++ if(!hardseek)
++ goto done;
+ }
+ #endif
+
diff --git a/shells/ksh93-devel/files/patch-src_lib_libast_string_strexpr.c b/shells/ksh93-devel/files/patch-src_lib_libast_string_strexpr.c
new file mode 100644
index 000000000000..d4f706b9b147
--- /dev/null
+++ b/shells/ksh93-devel/files/patch-src_lib_libast_string_strexpr.c
@@ -0,0 +1,87 @@
+--- src/lib/libast/string/strexpr.c.orig 2017-11-30 22:35:04 UTC
++++ src/lib/libast/string/strexpr.c
+@@ -44,7 +44,7 @@
+ #define peekchr(ex) (*(ex)->nextchr)
+ #define ungetchr(ex) ((ex)->nextchr--)
+
+-#define error(ex,msg) return(seterror(ex,msg))
++#define err(ex,msg) return(seterror(ex,msg))
+
+ typedef struct /* expression handle */
+ {
+@@ -87,7 +87,7 @@ expr(register Expr_t* ex, register int p
+ case 0:
+ ungetchr(ex);
+ if (!precedence) return(0);
+- error(ex, "more tokens expected");
++ err(ex, "more tokens expected");
+ case '-':
+ n = -expr(ex, 13);
+ break;
+@@ -113,17 +113,17 @@ expr(register Expr_t* ex, register int p
+ case 0:
+ goto done;
+ case ')':
+- if (!precedence) error(ex, "too many )'s");
++ if (!precedence) err(ex, "too many )'s");
+ goto done;
+ case '(':
+ n = expr(ex, 1);
+ if (getchr(ex) != ')')
+ {
+ ungetchr(ex);
+- error(ex, "closing ) expected");
++ err(ex, "closing ) expected");
+ }
+ gotoperand:
+- if (operand) error(ex, "operator expected");
++ if (operand) err(ex, "operator expected");
+ operand = 1;
+ continue;
+ case '?':
+@@ -140,7 +140,7 @@ expr(register Expr_t* ex, register int p
+ if (getchr(ex) != ':')
+ {
+ ungetchr(ex);
+- error(ex, ": expected for ? operator");
++ err(ex, ": expected for ? operator");
+ }
+ if (n)
+ {
+@@ -189,7 +189,7 @@ expr(register Expr_t* ex, register int p
+ break;
+ case '=':
+ case '!':
+- if (peekchr(ex) != '=') error(ex, "operator syntax error");
++ if (peekchr(ex) != '=') err(ex, "operator syntax error");
+ if (precedence > 7) goto done;
+ getchr(ex);
+ x = expr(ex, 8);
+@@ -237,7 +237,7 @@ expr(register Expr_t* ex, register int p
+ if (precedence > 11) goto done;
+ x = expr(ex, 12);
+ if (c == '*') n *= x;
+- else if (x == 0) error(ex, "divide by zero");
++ else if (x == 0) err(ex, "divide by zero");
+ else if (c == '/') n /= x;
+ else n %= x;
+ break;
+@@ -246,15 +246,15 @@ expr(register Expr_t* ex, register int p
+ pos = --ex->nextchr;
+ if (isdigit(c)) n = strton(ex->nextchr, &ex->nextchr, NiL, 0);
+ else if (ex->convert) n = (*ex->convert)(ex->nextchr, &ex->nextchr, ex->handle);
+- if (ex->nextchr == pos) error(ex, "syntax error");
++ if (ex->nextchr == pos) err(ex, "syntax error");
+ goto gotoperand;
+ }
+ if (ex->errmsg) return(0);
+- if (!operand) error(ex, "operand expected");
++ if (!operand) err(ex, "operand expected");
+ }
+ done:
+ ungetchr(ex);
+- if (!operand) error(ex, "operand expected");
++ if (!operand) err(ex, "operand expected");
+ return(n);
+ }
+
diff --git a/shells/ksh93-devel/pkg-plist b/shells/ksh93-devel/pkg-plist
index 0e4d7d5e0b2f..86dc0057f028 100644
--- a/shells/ksh93-devel/pkg-plist
+++ b/shells/ksh93-devel/pkg-plist
@@ -1,64 +1,6 @@
@shell bin/ksh%%93%%
-@shell bin/rksh%%93%%
-bin/shcomp%%93%%
man/man1/ksh%%93%%.1.gz
-share/ksh/config.ksh
-share/ksh/functions/cd
-share/ksh/functions/_ksh_print_help
-share/ksh/functions/dirs
-share/ksh/functions/man
-share/ksh/functions/mcd
-share/ksh/functions/popd
-share/ksh/functions/pushd
-share/ksh/man/man1/alias.1
-share/ksh/man/man1/basename.1
-share/ksh/man/man1/bg.1
-share/ksh/man/man1/break.1
-share/ksh/man/man1/builtin.1
-share/ksh/man/man1/cat.1
-share/ksh/man/man1/cd.1
-share/ksh/man/man1/chmod.1
-share/ksh/man/man1/cmp.1
-share/ksh/man/man1/command.1
-share/ksh/man/man1/compgen.1
-share/ksh/man/man1/complete.1
-share/ksh/man/man1/continue.1
-share/ksh/man/man1/cut.1
-share/ksh/man/man1/dirname.1
-share/ksh/man/man1/disown.1
-share/ksh/man/man1/echo.1
-share/ksh/man/man1/enum.1
-share/ksh/man/man1/eval.1
-share/ksh/man/man1/exec.1
-share/ksh/man/man1/exit.1
-share/ksh/man/man1/export.1
-share/ksh/man/man1/fg.1
-share/ksh/man/man1/head.1
-share/ksh/man/man1/hist.1
-share/ksh/man/man1/jobs.1
-share/ksh/man/man1/kill.1
-share/ksh/man/man1/let.1
-share/ksh/man/man1/logname.1
-share/ksh/man/man1/mkdir.1
-share/ksh/man/man1/print.1
-share/ksh/man/man1/printf.1
-share/ksh/man/man1/pwd.1
-share/ksh/man/man1/read.1
-share/ksh/man/man1/readonly.1
-share/ksh/man/man1/return.1
-share/ksh/man/man1/shcomp.1
-share/ksh/man/man1/shift.1
-share/ksh/man/man1/sleep.1
-share/ksh/man/man1/source.1
-share/ksh/man/man1/sync.1
-share/ksh/man/man1/test.1
-share/ksh/man/man1/times.1
-share/ksh/man/man1/trap.1
-share/ksh/man/man1/ulimit.1
-share/ksh/man/man1/umask.1
-share/ksh/man/man1/unalias.1
-share/ksh/man/man1/uname.1
-share/ksh/man/man1/unset.1
-share/ksh/man/man1/wait.1
-share/ksh/man/man1/wc.1
-share/ksh/man/man1/whence.1
+share/examples/ksh93/dirs
+share/examples/ksh93/popd
+share/examples/ksh93/pushd
+