This updates ksh93 to the actively maintained development branch at https://github.com/ksh93/ksh/. Although it's still labelled as "beta", it is most definitely an improvement from the nine-year-old AT&T release we have now, so I'd like to commit the update.
It also fixes the va_args problem seen on powerpc. Index: Makefile =================================================================== RCS file: /cvs/ports/shells/ksh93/Makefile,v retrieving revision 1.12 diff -u -p -r1.12 Makefile --- Makefile 20 Feb 2021 20:15:29 -0000 1.12 +++ Makefile 21 Dec 2021 19:28:43 -0000 @@ -1,20 +1,16 @@ # $OpenBSD: Makefile,v 1.12 2021/02/20 20:15:29 cwen Exp $ -# error: non-const lvalue reference to type '__builtin_va_list' cannot bind to -# a temporary of type 'va_list' (aka 'char *') -BROKEN-powerpc64 = libast fails to build on hashalloc.c/tokscan.c -BROKEN-powerpc = libast fails to build on hashalloc.c/tokscan.c - COMMENT = AT&T Korn Shell -V = 2012-08-01 -DISTNAME = ast-ksh.${V} -PKGNAME = ksh93-${V:S/-//g} -REVISION = 1 +GH_ACCOUNT = ksh93 +GH_PROJECT = ksh +GH_TAGNAME = v1.0.0-beta.2 +PKGNAME = ksh93-1.0.0beta2 +EPOCH = 0 CATEGORIES = shells -HOMEPAGE = http://www.kornshell.com/ +HOMEPAGE = https://github.com/ksh93/ksh MAINTAINER = Pascal Stumpf <pas...@stumpf.co> @@ -23,28 +19,18 @@ PERMIT_PACKAGE = Yes WANTLIB += c m util -MASTER_SITES = https://spacehopper.org/mirrors/ -DISTFILES = ${DISTNAME}${EXTRACT_SUFX} INIT.${V}${EXTRACT_SUFX} -EXTRACT_SUFX = .tgz -DIST_SUBDIR = ksh93 - -MAKE_ENV = CC="${CC}" CCFLAGS="${CFLAGS}" SHELL=/bin/sh \ - TMPDIR="${WRKDIR}" +MAKE_ENV = CC="${CC}" CCFLAGS="${CFLAGS}" LDFLAGS="-lm" \ + SHELL=/bin/sh TMPDIR="${WRKDIR}" USE_GROFF = Yes -WRKDIST = ${WRKDIR} -.if ${MACHINE_ARCH} == "hppa" -AST_ARCH = ${WRKSRC}/arch/openbsd.pa -.elif ${MACHINE_ARCH} == "powerpc" -AST_ARCH = ${WRKSRC}/arch/openbsd.ppc -.else -AST_ARCH = ${WRKSRC}/arch/openbsd.${MACHINE_ARCH} -.endif +HOSTTYPE = openbsd.${MACHINE_ARCH} +AST_ARCH = ${WRKSRC}/arch/${HOSTTYPE} AST_INC = ${AST_ARCH}/include/ast do-build: - cd ${WRKSRC} && env -i ${MAKE_ENV} /bin/sh bin/package make + cd ${WRKSRC} && env -i ${MAKE_ENV} /bin/sh bin/package make \ + HOSTTYPE="${HOSTTYPE}" do-install: ${INSTALL_PROGRAM} ${AST_ARCH}/bin/ksh ${PREFIX}/bin/ksh93 Index: distinfo =================================================================== RCS file: /cvs/ports/shells/ksh93/distinfo,v retrieving revision 1.1.1.1 diff -u -p -r1.1.1.1 distinfo --- distinfo 13 Oct 2012 15:11:51 -0000 1.1.1.1 +++ distinfo 21 Dec 2021 19:28:43 -0000 @@ -1,4 +1,2 @@ -SHA256 (ksh93/INIT.2012-08-01.tgz) = xAz1fpshhicanDYqVgqkpuJbqRGoJYq5MdK7285Ez+U= -SHA256 (ksh93/ast-ksh.2012-08-01.tgz) = 5hks+lKmqf0gYYy68/qB8Myf2DUlUAdX6DAXJ16WKFE= -SIZE (ksh93/INIT.2012-08-01.tgz) = 377769 -SIZE (ksh93/ast-ksh.2012-08-01.tgz) = 2053532 +SHA256 (ksh-1.0.0-beta.2.tar.gz) = 2GeNI8PJYzoD5PyJXmBM3Qry/wBtAmhXmzopvt37hGM= +SIZE (ksh-1.0.0-beta.2.tar.gz) = 2238224 Index: patches/patch-bin_package =================================================================== RCS file: patches/patch-bin_package diff -N patches/patch-bin_package --- patches/patch-bin_package 13 Oct 2012 15:11:51 -0000 1.1.1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,21 +0,0 @@ -$OpenBSD: patch-bin_package,v 1.1.1.1 2012/10/13 15:11:51 pascal Exp $ ---- bin/package.orig Fri Aug 10 21:22:28 2012 -+++ bin/package Fri Aug 10 21:23:14 2012 -@@ -2823,7 +2823,7 @@ cat $INITROOT/$i.sh - # check if $CC (full path $cc) is a cross compiler - - ( -- cd /tmp || exit 3 -+ cd ${TMPDIR:-/tmp} || exit 3 - cp $INITROOT/hello.c pkg$$.c || exit 3 - $cc -o pkg$$.exe pkg$$.c > pkg$$.e 2>&1 || { - if $cc -Dnew=old -o pkg$$.exe pkg$$.c > /dev/null 2>&1 -@@ -3193,7 +3193,7 @@ cygwin.*) - lose=ntsec - ;; - *ntsec*);; -- *) exe=/tmp/pkg$$.exe -+ *) exe=${TMPDIR:-/tmp}/pkg$$.exe - rm -f $exe - : > $exe - if test -x $exe Index: patches/patch-src_cmd_ksh93_Mamfile =================================================================== RCS file: patches/patch-src_cmd_ksh93_Mamfile diff -N patches/patch-src_cmd_ksh93_Mamfile --- patches/patch-src_cmd_ksh93_Mamfile 1 May 2018 08:37:50 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,23 +0,0 @@ -$OpenBSD: patch-src_cmd_ksh93_Mamfile,v 1.1 2018/05/01 08:37:50 pascal Exp $ - -Index: src/cmd/ksh93/Mamfile ---- src/cmd/ksh93/Mamfile.orig -+++ src/cmd/ksh93/Mamfile -@@ -1337,7 +1337,7 @@ prev +ljobs - prev +li - prev ${mam_libsocket} - prev ${mam_libsecdb} --exec - ${CC} ${CCLDFLAGS} ${mam_cc_FLAGS} ${CCFLAGS} ${LDFLAGS} ${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -o ksh pmain.o ${mam_libshell} ${mam_libnsl} ${mam_libast} -+exec - ${CC} ${CCLDFLAGS} ${mam_cc_FLAGS} ${CCFLAGS} ${LDFLAGS} ${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -o ksh pmain.o ${mam_libshell} ${mam_libnsl} ${mam_libast} -lm - done ksh generated - make shcomp - make shcomp.o -@@ -1361,7 +1361,7 @@ prev ${mam_libsocket} - prev ${mam_libsecdb} - setv CC.DLL -UCC.DLL - setv SH_DICT -DSH_DICT="\"libshell\"" --exec - ${CC} ${CCLDFLAGS} ${mam_cc_FLAGS} ${CCFLAGS} ${LDFLAGS} ${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -o shcomp shcomp.o ${mam_libshell} ${mam_libnsl} ${mam_libast} -+exec - ${CC} ${CCLDFLAGS} ${mam_cc_FLAGS} ${CCFLAGS} ${LDFLAGS} ${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -o shcomp shcomp.o ${mam_libshell} ${mam_libnsl} ${mam_libast} -lm - done shcomp generated - make suid_exec - make suid_exec.o Index: patches/patch-src_cmd_ksh93_edit_history_c =================================================================== RCS file: patches/patch-src_cmd_ksh93_edit_history_c diff -N patches/patch-src_cmd_ksh93_edit_history_c --- patches/patch-src_cmd_ksh93_edit_history_c 11 Jul 2014 20:55:40 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -$OpenBSD: patch-src_cmd_ksh93_edit_history_c,v 1.1 2014/07/11 20:55:40 pascal Exp $ ---- src/cmd/ksh93/edit/history.c.orig Fri Jul 11 10:03:31 2014 -+++ src/cmd/ksh93/edit/history.c Fri Jul 11 10:04:59 2014 -@@ -834,7 +834,7 @@ static int hist_write(Sfio_t *iop,const void *buff,reg - if(hp->auditfp) - { - time_t t=time((time_t*)0); -- sfprintf(hp->auditfp,"%u;%u;%s;%*s%c",sh_isoption(SH_PRIVILEGED)?shgd->euserid:shgd->userid,t,hp->tty,size,buff,0); -+ sfprintf(hp->auditfp,"%u;%llu;%s;%*s%c",sh_isoption(SH_PRIVILEGED)?shgd->euserid:shgd->userid,t,hp->tty,size,buff,0); - sfsync(hp->auditfp); - } - #endif /* SHOPT_AUDIT */ Index: patches/patch-src_lib_libast_hash_hashalloc_c =================================================================== RCS file: patches/patch-src_lib_libast_hash_hashalloc_c diff -N patches/patch-src_lib_libast_hash_hashalloc_c --- patches/patch-src_lib_libast_hash_hashalloc_c 11 Aug 2017 12:35:48 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,27 +0,0 @@ -$OpenBSD: patch-src_lib_libast_hash_hashalloc_c,v 1.1 2017/08/11 12:35:48 sthen Exp $ - -From libast beta repo, via FreeBSD. - -https://github.com/att/ast/blob/beta/src/lib/libast/hash/hashalloc.c -https://github.com/att/ast/blob/beta/src/lib/libast/string/tokscan.c - -Index: src/lib/libast/hash/hashalloc.c ---- src/lib/libast/hash/hashalloc.c.orig -+++ src/lib/libast/hash/hashalloc.c -@@ -151,7 +151,16 @@ hashalloc(Hash_table_t* ref, ...) - va_copy(*vp, ap); - vp++; - } -+#if __clang__ && __SIZEOF_POINTER__ == 4 -+ { -+ va_list np; -+ -+ np = va_listval(va_arg(ap, va_listarg)); -+ va_copy(ap, np); -+ } -+#else - va_copy(ap, va_listval(va_arg(ap, va_listarg))); -+#endif - break; - case 0: - if (vp > va) Index: patches/patch-src_lib_libast_string_tokscan_c =================================================================== RCS file: patches/patch-src_lib_libast_string_tokscan_c diff -N patches/patch-src_lib_libast_string_tokscan_c --- patches/patch-src_lib_libast_string_tokscan_c 11 Aug 2017 12:35:48 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,27 +0,0 @@ -$OpenBSD: patch-src_lib_libast_string_tokscan_c,v 1.1 2017/08/11 12:35:48 sthen Exp $ - -From libast beta repo, via FreeBSD. - -https://github.com/att/ast/blob/beta/src/lib/libast/hash/hashalloc.c -https://github.com/att/ast/blob/beta/src/lib/libast/string/tokscan.c - -Index: src/lib/libast/string/tokscan.c ---- src/lib/libast/string/tokscan.c.orig -+++ src/lib/libast/string/tokscan.c -@@ -233,7 +233,16 @@ tokscan(register char* s, char** nxt, const char* fmt, - prv_f = f; - f = va_arg(ap, char*); - va_copy(prv_ap, ap); -+#if __clang__ && __SIZEOF_POINTER__ == 4 -+ { -+ va_list np; -+ -+ np = va_listval(va_arg(ap, va_listarg)); -+ va_copy(ap, np); -+ } -+#else - va_copy(ap, va_listval(va_arg(ap, va_listarg))); -+#endif - continue; - case 'c': - p_char = va_arg(ap, char*); Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/shells/ksh93/pkg/PLIST,v retrieving revision 1.1.1.1 diff -u -p -r1.1.1.1 PLIST --- pkg/PLIST 13 Oct 2012 15:11:51 -0000 1.1.1.1 +++ pkg/PLIST 21 Dec 2021 19:28:43 -0000 @@ -43,9 +43,9 @@ include/ast/prototyped.h include/ast/sfio.h include/ast/sfio_s.h include/ast/shell.h -lib/libast.a -lib/libcmd.a -lib/libshell.a +@static-lib lib/libast.a +@static-lib lib/libcmd.a +@static-lib lib/libshell.a @man man/man1/ksh93.1 @man man/man1/rksh93.1 @man man/man3/shell.3