diff --git a/shells/ksh-devel/Makefile b/shells/ksh-devel/Makefile index 50ec6bbbd593..90300f060f96 100644 --- a/shells/ksh-devel/Makefile +++ b/shells/ksh-devel/Makefile @@ -1,82 +1,83 @@ # 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= ksh PORTVERSION= ${AST_COMMIT_DATE} +PORTREVISION= 1 CATEGORIES= shells PKGNAMESUFFIX= -devel MAINTAINER= cy@FreeBSD.org COMMENT= ksh93u+m is the development branch ksh93 based on AT&T ksh93u+ (stable) WWW= http://www.kornshell.com/ LICENSE= EPL BROKEN_FreeBSD_12= exit code 139 making lib/libcmd HASH= c6ee0aa6 AST_COMMIT_DATE= 2023.06.09 USES= compiler:c11 USE_GITHUB= yes GH_ACCOUNT= ksh93 GH_PROJECT= ksh 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 ast-ksh KSH93D_CONFLICTS= ksh93 ast-ksh OPTIONS_DEFAULT= KSH93 EXAMPLES OPTIONS_DEFINE= EXAMPLES STATIC OPTIONS_SINGLE= BIN_KSH OPTIONS_SINGLE_BIN_KSH= KSH KSH93 KSH93D KSH_DESC= Install to ${PREFIX}/bin/ksh KSH93_DESC= Install to ${PREFIX}/bin/ksh93 KSH93D_DESC= Install to ${PREFIX}/bin/ksh93d (development) 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" KSH93D_PLIST_SUB= 93="93d" .include .if ${PORT_OPTIONS:MKSH93D} PSUFFIX= 93d .elif ${PORT_OPTIONS:MKSH93} PSUFFIX= 93 .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 do-install: ${INSTALL_PROGRAM} ${WRKSRC}/bin/ksh ${STAGEDIR}${PREFIX}/bin/ksh${PSUFFIX} ${INSTALL_MAN} ${WRKSRC}/man/man1/sh.1 ${STAGEDIR}${MAN1PREFIX}/man/man1/ksh${PSUFFIX}.1 ${MKDIR} ${STAGEDIR}${EXAMPLESDIR}${PSUFFIX}/ cd ${WRKSRC}/fun/ && ${INSTALL_SCRIPT} dirs popd pushd ${STAGEDIR}${EXAMPLESDIR}${PSUFFIX}/ do-test: cd ${WRKSRC}/src/cmd/ksh93/tests/ && ${SETENV} SHELL=${WRKSRC}/bin/ksh ${WRKSRC}/bin/ksh shtests .include diff --git a/shells/ksh-devel/files/patch-src_cmd_ksh93_sh_macro.c b/shells/ksh-devel/files/patch-src_cmd_ksh93_sh_macro.c index 391cff245ac6..a3b6a4f2585e 100644 --- a/shells/ksh-devel/files/patch-src_cmd_ksh93_sh_macro.c +++ b/shells/ksh-devel/files/patch-src_cmd_ksh93_sh_macro.c @@ -1,13 +1,84 @@ -diff --git src/cmd/ksh93/sh/macro.c.orig src/cmd/ksh93/sh/macro.c -index aba6f9d..0d60219 100644 ---- src/cmd/ksh93/sh/macro.c.orig -+++ src/cmd/ksh93/sh/macro.c -@@ -2582,7 +2582,7 @@ static void endfield(Mac_t *mp,int split) +--- src/cmd/ksh93/sh/macro.c.orig 2023-06-08 23:30:08.000000000 -0700 ++++ src/cmd/ksh93/sh/macro.c 2023-06-12 19:26:31.718942000 -0700 +@@ -76,6 +76,7 @@ + char macsub; /* set to 1 when running mac_substitute */ + int dotdot; /* set for .. in subscript */ + void *nvwalk; /* for name space walking */ ++ char bracketexpr; /* set when in [brackets] within a non-ERE glob pattern */ + } Mac_t; + + #undef ESCAPE +@@ -437,7 +438,6 @@ + char oldquote = mp->quote; /* save "double quoted" state */ + char ansi_c = 0; /* set when processing ANSI C escape codes */ + int32_t ere = 0; /* bitmask of pattern options indicating an extended regular expression */ +- char bracketexpr = 0; /* set when in [brackets] within a non-ERE glob pattern */ + Sfio_t *sp = mp->sp; + Stk_t *stkp = sh.stk; + char *resume = 0; +@@ -533,7 +533,7 @@ + if(mp->pattern) + { + /* preserve \ for escaping glob pattern bracket expression operators */ +- if(bracketexpr && n==S_BRAOP) ++ if(mp->bracketexpr && n==S_BRAOP) + break; + /* preserve \digit for pattern matching */ + /* also \alpha for extended patterns */ +@@ -636,8 +636,8 @@ + mp->pattern = c; + break; + case S_ENDCH: +- if(bracketexpr && cp[-1]==RBRACT && !(mp->quote || mp->lit)) +- bracketexpr--; ++ if(mp->bracketexpr && cp[-1]==RBRACT && !(mp->quote || mp->lit)) ++ mp->bracketexpr--; + if((mp->lit || cp[-1]!=endch || mp->quote!=newquote)) + goto pattern; + if(endch==RBRACE && mp->pattern && brace) +@@ -738,12 +738,12 @@ + cp = first = fcseek(0); + break; + } +- if(mp->pattern==1 && !ere && !bracketexpr) ++ if(mp->pattern==1 && !ere && !mp->bracketexpr) + { +- bracketexpr++; ++ mp->bracketexpr++; + /* a ] following [, as in []abc], should not close the bracket expression */ + if(cp[0]==RBRACT && cp[1]) +- bracketexpr++; ++ mp->bracketexpr++; + } + /* FALLTHROUGH */ + case S_PAT: +@@ -883,7 +883,7 @@ + break; + case S_BRAOP: + /* escape a quoted !^- within a bracket expression */ +- if(!bracketexpr || !(mp->quote || mp->lit)) ++ if(!mp->bracketexpr || !(mp->quote || mp->lit)) + continue; + if(c) + sfwrite(stkp,first,c); +@@ -2481,7 +2481,10 @@ + continue; + } + if(n==S_ESC) +- sfputc(stkp,ESCAPE); ++ { ++ if(!mp->bracketexpr) ++ sfputc(stkp,ESCAPE); ++ } + else if(n==S_EPAT) + { + /* don't allow extended patterns in this case */ +@@ -2583,7 +2586,7 @@ mp->atmode = 0; if(mp->patfound) { - int musttrim = mp->wasexpan && !mp->noextpat && strchr(argp->argval,'\\'); + int musttrim = mp->wasexpan && !mp->quoted && !mp->noextpat && strchr(argp->argval,'\\'); sh.argaddr = 0; #if SHOPT_BRACEPAT /* in POSIX mode, disallow brace expansion for unquoted expansions */ diff --git a/shells/ksh/Makefile b/shells/ksh/Makefile index 319bdab02d59..f111d24d6fd5 100644 --- a/shells/ksh/Makefile +++ b/shells/ksh/Makefile @@ -1,76 +1,76 @@ # 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. DISTVERSIONPREFIX= v PORTNAME= ksh PORTVERSION= 1.0.5 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= shells MAINTAINER= cy@FreeBSD.org COMMENT= ksh93u+m is the renewed development of ksh93 based on AT&T ksh93u+m (stable) WWW= http://www.kornshell.com/ LICENSE= EPL USES= compiler:c11 USE_GITHUB= yes GH_ACCOUNT= ksh93 GH_PROJECT= ksh # 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 ast-ksh ksh-devel OPTIONS_DEFAULT= KSH93 EXAMPLES OPTIONS_DEFINE= EXAMPLES STATIC OPTIONS_SINGLE= BIN_KSH OPTIONS_SINGLE_BIN_KSH= KSH KSH93 KSH93N KSH_DESC= Install to ${PREFIX}/bin/ksh KSH93_DESC= Install to ${PREFIX}/bin/ksh93 KSH93N_DESC= Install to ${PREFIX}/bin/ksh93n (new) 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" KSH93N_PLIST_SUB= 93="93n" .include .if ${PORT_OPTIONS:MKSH93N} PSUFFIX= 93n .elif ${PORT_OPTIONS:MKSH93} PSUFFIX= 93 .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 do-install: ${INSTALL_PROGRAM} ${WRKSRC}/bin/ksh ${STAGEDIR}${PREFIX}/bin/ksh${PSUFFIX} ${INSTALL_MAN} ${WRKSRC}/man/man1/sh.1 ${STAGEDIR}${MAN1PREFIX}/man/man1/ksh${PSUFFIX}.1 ${MKDIR} ${STAGEDIR}${EXAMPLESDIR}${PSUFFIX}/ cd ${WRKSRC}/fun/ && ${INSTALL_SCRIPT} dirs popd pushd ${STAGEDIR}${EXAMPLESDIR}${PSUFFIX}/ do-test: cd ${WRKSRC}/src/cmd/ksh93/tests/ && ${SETENV} SHELL=${WRKSRC}/bin/ksh ${WRKSRC}/bin/ksh shtests .include diff --git a/shells/ksh/files/patch-src_cmd_ksh93_sh_macro.c b/shells/ksh/files/patch-src_cmd_ksh93_sh_macro.c index 391cff245ac6..30ba02d5304d 100644 --- a/shells/ksh/files/patch-src_cmd_ksh93_sh_macro.c +++ b/shells/ksh/files/patch-src_cmd_ksh93_sh_macro.c @@ -1,13 +1,84 @@ -diff --git src/cmd/ksh93/sh/macro.c.orig src/cmd/ksh93/sh/macro.c -index aba6f9d..0d60219 100644 ---- src/cmd/ksh93/sh/macro.c.orig -+++ src/cmd/ksh93/sh/macro.c -@@ -2582,7 +2582,7 @@ static void endfield(Mac_t *mp,int split) +--- src/cmd/ksh93/sh/macro.c.orig 2023-06-06 21:29:33.000000000 -0700 ++++ src/cmd/ksh93/sh/macro.c 2023-06-12 19:23:44.427794000 -0700 +@@ -76,6 +76,7 @@ + char macsub; /* set to 1 when running mac_substitute */ + int dotdot; /* set for .. in subscript */ + void *nvwalk; /* for name space walking */ ++ char bracketexpr; /* set when in [brackets] within a non-ERE glob pattern */ + } Mac_t; + + #undef ESCAPE +@@ -437,7 +438,6 @@ + char oldquote = mp->quote; /* save "double quoted" state */ + char ansi_c = 0; /* set when processing ANSI C escape codes */ + int32_t ere = 0; /* bitmask of pattern options indicating an extended regular expression */ +- char bracketexpr = 0; /* set when in [brackets] within a non-ERE glob pattern */ + Sfio_t *sp = mp->sp; + Stk_t *stkp = sh.stk; + char *resume = 0; +@@ -533,7 +533,7 @@ + if(mp->pattern) + { + /* preserve \ for escaping glob pattern bracket expression operators */ +- if(bracketexpr && n==S_BRAOP) ++ if(mp->bracketexpr && n==S_BRAOP) + break; + /* preserve \digit for pattern matching */ + /* also \alpha for extended patterns */ +@@ -636,8 +636,8 @@ + mp->pattern = c; + break; + case S_ENDCH: +- if(bracketexpr && cp[-1]==RBRACT && !(mp->quote || mp->lit)) +- bracketexpr--; ++ if(mp->bracketexpr && cp[-1]==RBRACT && !(mp->quote || mp->lit)) ++ mp->bracketexpr--; + if((mp->lit || cp[-1]!=endch || mp->quote!=newquote)) + goto pattern; + if(endch==RBRACE && mp->pattern && brace) +@@ -738,12 +738,12 @@ + cp = first = fcseek(0); + break; + } +- if(mp->pattern==1 && !ere && !bracketexpr) ++ if(mp->pattern==1 && !ere && !mp->bracketexpr) + { +- bracketexpr++; ++ mp->bracketexpr++; + /* a ] following [, as in []abc], should not close the bracket expression */ + if(cp[0]==RBRACT && cp[1]) +- bracketexpr++; ++ mp->bracketexpr++; + } + /* FALLTHROUGH */ + case S_PAT: +@@ -883,7 +883,7 @@ + break; + case S_BRAOP: + /* escape a quoted !^- within a bracket expression */ +- if(!bracketexpr || !(mp->quote || mp->lit)) ++ if(!mp->bracketexpr || !(mp->quote || mp->lit)) + continue; + if(c) + sfwrite(stkp,first,c); +@@ -2481,7 +2481,10 @@ + continue; + } + if(n==S_ESC) +- sfputc(stkp,ESCAPE); ++ { ++ if(!mp->bracketexpr) ++ sfputc(stkp,ESCAPE); ++ } + else if(n==S_EPAT) + { + /* don't allow extended patterns in this case */ +@@ -2582,7 +2585,7 @@ mp->atmode = 0; if(mp->patfound) { - int musttrim = mp->wasexpan && !mp->noextpat && strchr(argp->argval,'\\'); + int musttrim = mp->wasexpan && !mp->quoted && !mp->noextpat && strchr(argp->argval,'\\'); sh.argaddr = 0; #if SHOPT_BRACEPAT /* in POSIX mode, disallow brace expansion for unquoted expansions */