Accepting request 1008386 from Base:System

- Add upstream patches
  * bash52-001
    Expanding unset arrays in an arithmetic context can cause a
    segmentation fault.
  * bash52-002
    Starting bash with an invalid locale specification for
    LC_ALL/LANG/LC_CTYPE can cause the shell to crash.
- Do not run checks in parallel as it eats memory, a lot of memory
- Disable alternate array implementation as it eats a lot of memory

- Update to final bash 5.2 
  a. When replacing a history entry, make sure the existing entry has a non-NULL
     timestamp before copying it; it may have been added by the application, not
     the history library.

- Modernize run-tests 

- add checks

- Enable parallel builds by splitting clean and all at make time
- Update to bash 5.2 rc4
  Pos. aa is now enabled by default.
  m. Readline now checks for changes to locale settings (LC_ALL/LC_CTYPE/LANG)
     each time it is called, and modifies the appropriate locale-specific display
- Port patches
  * bash-2.03-manual.patch
  * bash-5.2.dif

- Update to bash 5.2 rc2
  gg. Since there is no `declare -' equivalent of `local -', make sure to use

OBS-URL: https://build.opensuse.org/request/show/1008386
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/bash?expand=0&rev=180
This commit is contained in:
Richard Brown 2022-10-11 15:59:13 +00:00 committed by Git OBS Bridge
commit d93a48fedf
23 changed files with 290 additions and 85 deletions

View File

@ -19,7 +19,7 @@
.B \-D .B \-D
A list of all double-quoted strings preceded by \fB$\fP A list of all double-quoted strings preceded by \fB$\fP
is printed on the standard output. is printed on the standard output.
@@ -7382,6 +7388,11 @@ Apply the following `\fBs\fP' modifier o @@ -7667,6 +7673,11 @@ Apply the following `\fBs\fP' modifier o
.SH "SHELL BUILTIN COMMANDS" .SH "SHELL BUILTIN COMMANDS"
.\" start of bash_builtins .\" start of bash_builtins
.zZ .zZ
@ -31,7 +31,7 @@
.PP .PP
Unless otherwise noted, each builtin command documented in this Unless otherwise noted, each builtin command documented in this
section as accepting options preceded by section as accepting options preceded by
@@ -11081,6 +11092,11 @@ process or job waited for. @@ -11543,6 +11554,11 @@ process or job waited for.
.SH "RESTRICTED SHELL" .SH "RESTRICTED SHELL"
.\" rbash.1 .\" rbash.1
.zY .zY

View File

@ -4,7 +4,7 @@
--- expr.c --- expr.c
+++ expr.c 2018-11-29 08:10:59.542212175 +0000 +++ expr.c 2018-11-29 08:10:59.542212175 +0000
@@ -512,8 +512,8 @@ expassign () @@ -514,8 +514,8 @@ expassign ()
value = expcond (); value = expcond ();
if (curtok == EQ || curtok == OP_ASSIGN) if (curtok == EQ || curtok == OP_ASSIGN)
{ {

View File

@ -15,7 +15,7 @@
#include "chartypes.h" #include "chartypes.h"
#include <errno.h> #include <errno.h>
@@ -77,6 +81,15 @@ void @@ -79,6 +83,15 @@ void
set_default_locale () set_default_locale ()
{ {
#if defined (HAVE_SETLOCALE) #if defined (HAVE_SETLOCALE)

View File

@ -1,10 +1,10 @@
--- ---
builtins/printf.def | 11 ++++++++++- builtins/printf.def | 13 ++++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-) 1 file changed, 12 insertions(+), 1 deletion(-)
--- builtins/printf.def --- builtins/printf.def
+++ builtins/printf.def 2018-11-29 08:11:53.901189708 +0000 +++ builtins/printf.def 2022-06-22 06:26:14.069158235 +0000
@@ -54,6 +54,7 @@ error occurs. @@ -56,6 +56,7 @@ error occurs.
$END $END
#include <config.h> #include <config.h>
@ -12,25 +12,38 @@
#include "../bashtypes.h" #include "../bashtypes.h"
@@ -661,12 +662,20 @@ printf_builtin (list) @@ -702,7 +703,7 @@ printf_builtin (list)
case 'A': case 'A':
#endif #endif
{ {
- char *f; - char *f;
+ char *f, *lce = getenv("LC_NUMERIC"), *lcl = setlocale(LC_NUMERIC, NULL); + char *f, *lce = getenv("LC_NUMERIC"), *lcl = setlocale(LC_NUMERIC, NULL);
floatmax_t p;
p = getfloatmax (); if (use_Lmod || posixly_correct == 0)
f = mklong (start, FLOATMAX_CONV, sizeof(FLOATMAX_CONV) - 1); {
@@ -710,7 +711,12 @@ printf_builtin (list)
p = getfloatmax ();
f = mklong (start, "L", 1);
+ +
+ if (lce && lcl) + if (lce && lcl) setlocale(LC_NUMERIC, lce);
+ setlocale(LC_NUMERIC, lce);
+ +
PF (f, p); PF (f, p);
+ +
+ if (lce && lcl) + if (lce && lcl) setlocale(LC_NUMERIC, lcl);
+ setlocale(LC_NUMERIC, lcl); }
else /* posixly_correct */
{
@@ -718,7 +724,12 @@ printf_builtin (list)
p = getdouble ();
f = mklong (start, "", 0);
+ +
+ if (lce && lcl) setlocale(LC_NUMERIC, lce);
+
PF (f, p);
+
+ if (lce && lcl) setlocale(LC_NUMERIC, lcl);
}
break; break;
}

View File

@ -4,7 +4,7 @@
--- locale.c --- locale.c
+++ locale.c 2018-09-20 08:14:41.307485537 +0000 +++ locale.c 2018-09-20 08:14:41.307485537 +0000
@@ -55,6 +55,7 @@ extern int dump_translatable_strings, du @@ -57,6 +57,7 @@ extern int dump_translatable_strings, du
/* The current locale when the program begins */ /* The current locale when the program begins */
static char *default_locale; static char *default_locale;
@ -12,7 +12,7 @@
/* The current domain for textdomain(3). */ /* The current domain for textdomain(3). */
static char *default_domain; static char *default_domain;
@@ -359,11 +360,21 @@ get_locale_var (var) @@ -361,11 +362,21 @@ get_locale_var (var)
if (locale == 0 || *locale == 0) if (locale == 0 || *locale == 0)
locale = lang; locale = lang;
if (locale == 0 || *locale == 0) if (locale == 0 || *locale == 0)

View File

@ -16,11 +16,11 @@
|other files as well even if the bash does not. |other files as well even if the bash does not.
| |
--- ---
doc/bash.1 | 15 ++++++++++++--- doc/bash.1 | 16 ++++++++++++----
1 file changed, 12 insertions(+), 3 deletions(-) 1 file changed, 12 insertions(+), 4 deletions(-)
--- doc/bash.1 --- doc/bash.1
+++ doc/bash.1 2018-09-20 08:16:12.073822864 +0000 +++ doc/bash.1 2022-06-22 06:31:11.283670836 +0000
@@ -330,6 +330,8 @@ and executes commands from the first one @@ -330,6 +330,8 @@ and executes commands from the first one
The The
.B \-\-noprofile .B \-\-noprofile
@ -52,13 +52,14 @@
.PP .PP
When When
.B bash .B bash
@@ -431,7 +439,8 @@ daemon, usually \fIrshd\fP, or the secur @@ -432,8 +440,8 @@ or the secure shell daemon \fIsshd\fP.
If If
.B bash .B bash
determines it is being run in this fashion, it reads and executes determines it is being run non-interactively in this fashion,
-commands from \fI~/.bashrc\fP, if that file exists and is readable. -it reads and executes commands from \fI~/.bashrc\fP,
+commands from \fI/etc/bash.bashrc\fP then \fI~/.bashrc\fP when -if that file exists and is readable.
+those files exist and are readable. +it reads and executes commands from \fI/etc/bash.bashrc\fP then
+\fI~/.bashrc\fP, when those files exists and are readable.
It will not do this if invoked as \fBsh\fP. It will not do this if invoked as \fBsh\fP.
The The
.B \-\-norc .B \-\-norc

View File

@ -4,7 +4,7 @@
--- bashline.c --- bashline.c
+++ bashline.c 2018-11-29 08:12:25.876588305 +0000 +++ bashline.c 2018-11-29 08:12:25.876588305 +0000
@@ -2128,6 +2128,13 @@ globword: @@ -2206,6 +2206,13 @@ globword:
return ((char *)NULL); return ((char *)NULL);
} }

View File

@ -12,7 +12,7 @@
# include <unistd.h> # include <unistd.h>
#endif #endif
@@ -1855,6 +1856,28 @@ init_interactive_script () @@ -1888,6 +1893,28 @@ init_interactive_script ()
#endif #endif
} }
@ -41,7 +41,7 @@
void void
get_current_user_info () get_current_user_info ()
{ {
@@ -1886,6 +1909,7 @@ get_current_user_info () @@ -1919,6 +1946,7 @@ get_current_user_info ()
#if defined (HAVE_GETPWENT) #if defined (HAVE_GETPWENT)
endpwent (); endpwent ();
#endif #endif

View File

@ -11,7 +11,7 @@
--- array.c --- array.c
+++ array.c 2020-10-12 16:00:37.207185803 +0000 +++ array.c 2020-10-12 16:00:37.207185803 +0000
@@ -1028,7 +1028,7 @@ char *s, *sep; @@ -1095,7 +1095,7 @@ char *s, *sep;
* To make a running version, compile -DTEST_ARRAY and link with: * To make a running version, compile -DTEST_ARRAY and link with:
* xmalloc.o syntax.o lib/malloc/libmalloc.a lib/sh/libsh.a * xmalloc.o syntax.o lib/malloc/libmalloc.a lib/sh/libsh.a
*/ */
@ -54,7 +54,7 @@
signal_is_trapped (s) signal_is_trapped (s)
--- jobs.c --- jobs.c
+++ jobs.c 2020-10-12 16:00:37.267184666 +0000 +++ jobs.c 2020-10-12 16:00:37.267184666 +0000
@@ -2223,6 +2223,15 @@ make_child (command, flags) @@ -2212,6 +2212,15 @@ make_child (command, flags)
child process, go back and change callers who free `command' in child process, go back and change callers who free `command' in
the child process when this returns. */ the child process when this returns. */
mypid = getpid (); mypid = getpid ();
@ -87,7 +87,7 @@
static SigHandler *old_winch = (SigHandler *)SIG_DFL; static SigHandler *old_winch = (SigHandler *)SIG_DFL;
--- sig.h --- sig.h
+++ sig.h 2020-10-12 16:03:44.403637781 +0000 +++ sig.h 2020-10-12 16:03:44.403637781 +0000
@@ -109,8 +109,8 @@ do { \ @@ -105,8 +105,8 @@ do { \
extern volatile sig_atomic_t sigwinch_received; extern volatile sig_atomic_t sigwinch_received;
extern volatile sig_atomic_t sigterm_received; extern volatile sig_atomic_t sigterm_received;

View File

@ -29,7 +29,7 @@
r = finfo_main (c, v); r = finfo_main (c, v);
--- examples/loadables/head.c --- examples/loadables/head.c
+++ examples/loadables/head.c 2018-09-20 08:07:43.739129083 +0000 +++ examples/loadables/head.c 2018-09-20 08:07:43.739129083 +0000
@@ -99,8 +99,6 @@ head_builtin (list) @@ -101,8 +101,6 @@ head_builtin (list)
WORD_LIST *l; WORD_LIST *l;
FILE *fp; FILE *fp;

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2c650b815eadbfdc0e4ac1ae4b7adddd679c6af91f5bab375f6e950c61f8d41f
size 11560

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cc012bc860406dcf42f64431bcd3d2fa7560c02915a601aba9cd597a39329baa
size 10458638

Binary file not shown.

3
bash-5.2-patches.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:23adb8e4f372fe2722e16a2b0768f1808a8d7e1e1bb05748aeab5a394f301111
size 1867

View File

@ -15,8 +15,8 @@
13 files changed, 37 insertions(+), 21 deletions(-) 13 files changed, 37 insertions(+), 21 deletions(-)
--- Makefile.in --- Makefile.in
+++ Makefile.in 2020-11-23 07:50:41.491908452 +0000 +++ Makefile.in 2022-06-22 06:38:20.511747259 +0000
@@ -457,7 +457,7 @@ SOURCES = $(CSOURCES) $(HSOURCES) $(BUI @@ -466,7 +466,7 @@ SOURCES = $(CSOURCES) $(HSOURCES) $(BUI
# headers in top-level source directory that get installed by install-headers # headers in top-level source directory that get installed by install-headers
INSTALLED_HEADERS = shell.h bashjmp.h command.h syntax.h general.h error.h \ INSTALLED_HEADERS = shell.h bashjmp.h command.h syntax.h general.h error.h \
variables.h array.h assoc.h arrayfunc.h quit.h dispose_cmd.h \ variables.h array.h assoc.h arrayfunc.h quit.h dispose_cmd.h \
@ -24,9 +24,9 @@
+ make_cmd.h subst.h sig.h externs.h builtins.h bashline.h \ + make_cmd.h subst.h sig.h externs.h builtins.h bashline.h \
bashtypes.h xmalloc.h config-top.h config-bot.h \ bashtypes.h xmalloc.h config-top.h config-bot.h \
bashintl.h bashansi.h bashjmp.h alias.h hashlib.h \ bashintl.h bashansi.h bashjmp.h alias.h hashlib.h \
conftypes.h unwind_prot.h jobs.h siglist.h conftypes.h unwind_prot.h jobs.h siglist.h \
--- config-top.h --- config-top.h
+++ config-top.h 2020-11-23 07:52:34.257749719 +0000 +++ config-top.h 2022-04-28 11:55:03.660248012 +0000
@@ -60,10 +60,14 @@ @@ -60,10 +60,14 @@
due to EPIPE. */ due to EPIPE. */
/* #define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS */ /* #define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS */
@ -51,8 +51,8 @@
+ _PATH_STDPATH + _PATH_STDPATH
#endif #endif
/* Default primary and secondary prompt strings. */ /* The default path for enable -f */
@@ -91,20 +95,20 @@ @@ -97,20 +101,20 @@
#define DEFAULT_BASHRC "~/.bashrc" #define DEFAULT_BASHRC "~/.bashrc"
/* System-wide .bashrc file for interactive shells. */ /* System-wide .bashrc file for interactive shells. */
@ -78,8 +78,8 @@
/* Define if you want the case-toggling operators (~[~]) and the /* Define if you want the case-toggling operators (~[~]) and the
`capcase' variable attribute (declare -c). */ `capcase' variable attribute (declare -c). */
--- doc/Makefile.in --- doc/Makefile.in
+++ doc/Makefile.in 2020-11-23 07:50:41.491908452 +0000 +++ doc/Makefile.in 2022-04-28 11:53:04.334380153 +0000
@@ -154,7 +154,7 @@ BASHREF_FILES = $(srcdir)/bashref.texi $ @@ -153,7 +153,7 @@ BASHREF_FILES = $(srcdir)/bashref.texi $
# $(RM) $@ # $(RM) $@
# -${TEXI2PDF} $< # -${TEXI2PDF} $<
@ -89,8 +89,8 @@
everything: all pdf everything: all pdf
--- doc/bash.1 --- doc/bash.1
+++ doc/bash.1 2020-11-23 07:50:41.491908452 +0000 +++ doc/bash.1 2022-06-22 06:37:14.908958305 +0000
@@ -5520,8 +5520,8 @@ file (the \fIinputrc\fP file). @@ -5745,8 +5745,8 @@ file (the \fIinputrc\fP file).
The name of this file is taken from the value of the The name of this file is taken from the value of the
.SM .SM
.B INPUTRC .B INPUTRC
@ -101,7 +101,7 @@
If that file does not exist or cannot be read, the ultimate default is If that file does not exist or cannot be read, the ultimate default is
.IR /etc/inputrc . .IR /etc/inputrc .
When a program which uses the readline library starts up, the When a program which uses the readline library starts up, the
@@ -11241,6 +11241,9 @@ The individual login shell cleanup file, @@ -11706,6 +11706,9 @@ command history
.TP .TP
.FN ~/.inputrc .FN ~/.inputrc
Individual \fIreadline\fP initialization file Individual \fIreadline\fP initialization file
@ -112,7 +112,7 @@
.SH AUTHORS .SH AUTHORS
Brian Fox, Free Software Foundation Brian Fox, Free Software Foundation
--- general.h --- general.h
+++ general.h 2020-11-23 07:50:41.491908452 +0000 +++ general.h 2022-04-28 11:53:04.334380153 +0000
@@ -21,10 +21,13 @@ @@ -21,10 +21,13 @@
#if !defined (_GENERAL_H_) #if !defined (_GENERAL_H_)
#define _GENERAL_H_ #define _GENERAL_H_
@ -128,8 +128,8 @@
#if defined (HAVE_SYS_RESOURCE_H) && defined (RLIMTYPE) #if defined (HAVE_SYS_RESOURCE_H) && defined (RLIMTYPE)
# if defined (HAVE_SYS_TIME_H) # if defined (HAVE_SYS_TIME_H)
--- parse.y --- parse.y
+++ parse.y 2020-11-23 07:50:41.491908452 +0000 +++ parse.y 2022-04-28 11:53:04.334380153 +0000
@@ -1458,7 +1458,7 @@ input_file_descriptor () @@ -1498,7 +1498,7 @@ input_file_descriptor ()
#if defined (READLINE) #if defined (READLINE)
char *current_readline_prompt = (char *)NULL; char *current_readline_prompt = (char *)NULL;
@ -139,7 +139,7 @@
static int static int
--- shell.c --- shell.c
+++ shell.c 2020-11-23 07:50:41.491908452 +0000 +++ shell.c 2022-04-28 11:56:12.623015117 +0000
@@ -45,6 +45,7 @@ @@ -45,6 +45,7 @@
#if defined (HAVE_UNISTD_H) #if defined (HAVE_UNISTD_H)
# include <sys/types.h> # include <sys/types.h>
@ -148,16 +148,16 @@
#endif #endif
#include "bashintl.h" #include "bashintl.h"
@@ -503,7 +504,7 @@ main (argc, argv, env) @@ -511,7 +512,7 @@ main (argc, argv, env)
if (dump_translatable_strings)
read_but_dont_execute = 1; read_but_dont_execute = 1;
#endif
- if (running_setuid && privileged_mode == 0) - if (running_setuid && privileged_mode == 0)
+ if (running_setuid && privileged_mode == 0 /* && act_like_sh == 0 */) + if (running_setuid && privileged_mode == 0 /* && act_like_sh == 0 */)
disable_priv_mode (); disable_priv_mode ();
/* Need to get the argument to a -c option processed in the /* Need to get the argument to a -c option processed in the
@@ -1310,6 +1311,9 @@ disable_priv_mode () @@ -1341,6 +1342,9 @@ disable_priv_mode ()
{ {
int e; int e;
@ -168,7 +168,7 @@
if (setresuid (current_user.uid, current_user.uid, current_user.uid) < 0) if (setresuid (current_user.uid, current_user.uid, current_user.uid) < 0)
#else #else
--- support/man2html.c --- support/man2html.c
+++ support/man2html.c 2020-11-23 07:50:41.491908452 +0000 +++ support/man2html.c 2022-04-28 11:53:04.338380081 +0000
@@ -78,6 +78,7 @@ @@ -78,6 +78,7 @@
#include <time.h> #include <time.h>
#include <sys/time.h> #include <sys/time.h>
@ -178,7 +178,7 @@
#define NULL_TERMINATED(n) ((n) + 1) #define NULL_TERMINATED(n) ((n) + 1)
--- support/rlvers.sh --- support/rlvers.sh
+++ support/rlvers.sh 2020-11-23 07:50:41.495908376 +0000 +++ support/rlvers.sh 2022-04-28 11:53:04.338380081 +0000
@@ -27,10 +27,10 @@ TDIR=$TMPDIR/rlvers @@ -27,10 +27,10 @@ TDIR=$TMPDIR/rlvers
# defaults # defaults
@ -194,9 +194,9 @@
# cannot rely on the presence of getopts # cannot rely on the presence of getopts
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
--- support/shobj-conf --- support/shobj-conf
+++ support/shobj-conf 2020-11-23 07:50:41.495908376 +0000 +++ support/shobj-conf 2022-04-28 11:57:29.117647038 +0000
@@ -126,10 +126,11 @@ sunos5*|solaris2*) @@ -126,10 +126,11 @@ sunos5*|solaris2*)
linux*-*|gnu*-*|k*bsd*-gnu-*|freebsd*|dragonfly*) linux*-*|gnu*-*|k*bsd*-gnu-*|midnightbsd*|freebsd*|dragonfly*)
SHOBJ_CFLAGS=-fPIC SHOBJ_CFLAGS=-fPIC
SHOBJ_LD='${CC}' SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' - SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
@ -210,8 +210,8 @@
# Darwin/MacOS X # Darwin/MacOS X
--- tests/glob.tests --- tests/glob.tests
+++ tests/glob.tests 2020-11-23 07:50:41.495908376 +0000 +++ tests/glob.tests 2022-04-28 11:53:04.338380081 +0000
@@ -33,8 +33,8 @@ ${THIS_SH} ./glob9.sub @@ -34,8 +34,8 @@ ${THIS_SH} ./glob10.sub
MYDIR=$PWD # save where we are MYDIR=$PWD # save where we are
@ -223,15 +223,15 @@
rm -rf * rm -rf *
--- tests/run-intl --- tests/run-intl
+++ tests/run-intl 2020-11-23 07:50:41.495908376 +0000 +++ tests/run-intl 2022-04-28 11:58:22.140698412 +0000
@@ -5,4 +5,4 @@ echo "warning: some of these tests will @@ -2,4 +2,4 @@
echo "warning: locales installed on your system." >&2 ( diff -a ./intl.right ./intl.right >/dev/null 2>&1 ) && AFLAG=-a
${THIS_SH} ./intl.tests > ${BASH_TSTOUT} ${THIS_SH} ./intl.tests > ${BASH_TSTOUT}
-diff $AFLAG ${BASH_TSTOUT} intl.right && rm -f ${BASH_TSTOUT} -diff $AFLAG ${BASH_TSTOUT} intl.right && rm -f ${BASH_TSTOUT}
+diff -w $AFLAG ${BASH_TSTOUT} intl.right && rm -f ${BASH_TSTOUT} +diff -w $AFLAG ${BASH_TSTOUT} intl.right && rm -f ${BASH_TSTOUT}
--- tests/run-read --- tests/run-read
+++ tests/run-read 2020-11-23 07:50:41.495908376 +0000 +++ tests/run-read 2022-04-28 11:53:04.338380081 +0000
@@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
echo "warning: please do not consider output differing only in the amount of" >&2 echo "warning: please do not consider output differing only in the amount of" >&2
echo "warning: white space to be an error." >&2 echo "warning: white space to be an error." >&2

BIN
bash-5.2.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

BIN
bash-5.2.tar.gz.sig Normal file

Binary file not shown.

View File

@ -1,4 +1,6 @@
addFilter(".*shared-library-without-dependency-information.*") addFilter(".*shared-library-without-dependency-information.*")
addFilter(".*useless-provides.*")
addFilter(".*zero-length.*/etc/skel/\..*") addFilter(".*zero-length.*/etc/skel/\..*")
addFilter(".*call-to-mktemp.*/usr/bin/bash.*") addFilter(".*call-to-mktemp.*/usr/bin/bash.*")
addFilter(".*bash-loadables\..*:.*W:.*unstripped-binary-or-object.*/usr/lib.*/bash/.*")
addFilter(".*W:.*patch-not-applied.*Patch.*:.*bash-4\.3-winch\.dif.*")
addFilter(".*W:.*macro-in-comment.*%patch.*")

View File

@ -1,7 +1,38 @@
-------------------------------------------------------------------
Thu Oct 6 10:43:59 UTC 2022 - Dr. Werner Fink <werner@suse.de>
- Add upstream patches
* bash52-001
Expanding unset arrays in an arithmetic context can cause a
segmentation fault.
* bash52-002
Starting bash with an invalid locale specification for
LC_ALL/LANG/LC_CTYPE can cause the shell to crash.
- Do not run checks in parallel as it eats memory, a lot of memory
- Disable alternate array implementation as it eats a lot of memory
-------------------------------------------------------------------
Tue Sep 27 07:54:48 UTC 2022 - Dr. Werner Fink <werner@suse.de>
- Update to final bash 5.2
a. When replacing a history entry, make sure the existing entry has a non-NULL
timestamp before copying it; it may have been added by the application, not
the history library.
-------------------------------------------------------------------
Tue Sep 27 07:44:16 UTC 2022 - Dr. Werner Fink <werner@suse.de>
- Modernize run-tests
-------------------------------------------------------------------
Sat Sep 24 13:57:27 UTC 2022 - Christopher Yeleighton <giecrilj@stegny.2a.pl>
- add checks
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Sep 20 06:59:04 UTC 2022 - Dr. Werner Fink <werner@suse.de> Tue Sep 20 06:59:04 UTC 2022 - Dr. Werner Fink <werner@suse.de>
- Enable parallel builds by slpitting clean and all at make time - Enable parallel builds by splitting clean and all at make time
(Thanks to Christopher Yeleighton) (Thanks to Christopher Yeleighton)
- Do not copy more than 1 byte for \(aq becoming a "'" in - Do not copy more than 1 byte for \(aq becoming a "'" in
quotes-man2html.patch quotes-man2html.patch
@ -18,11 +49,129 @@ Thu Sep 15 13:09:24 UTC 2022 - Dr. Werner Fink <werner@suse.de>
- Add patch quotes-man2html.patch - Add patch quotes-man2html.patch
* Fix boo#1203091 -- BASH(1) Manual Page: Unprocessed macro aq * Fix boo#1203091 -- BASH(1) Manual Page: Unprocessed macro aq
-------------------------------------------------------------------
Tue Sep 13 06:42:43 UTC 2022 - Dr. Werner Fink <werner@suse.de>
- Update to bash 5.2 rc4
Pos. aa is now enabled by default.
m. Readline now checks for changes to locale settings (LC_ALL/LC_CTYPE/LANG)
each time it is called, and modifies the appropriate locale-specific display
- Port patches
* bash-2.03-manual.patch
* bash-5.2.dif
-------------------------------------------------------------------
Wed Jul 27 12:20:53 UTC 2022 - Dr. Werner Fink <werner@suse.de>
- Update to bash 5.2 rc2
gg. Since there is no `declare -' equivalent of `local -', make sure to use
`local -' in the output of `local -p'.
-------------------------------------------------------------------
Wed Jun 22 06:19:27 UTC 2022 - Dr. Werner Fink <werner@suse.de>
- Update to bash 5.2 rc1
dd. In posix mode, the `printf' builtin checks for the `L' length modifier and
uses long double for floating point conversion specifiers if it's present,
double otherwise.
ee. The `globbing' completion code now takes the `globstar' option into account.
ff. `suspend -f' now forces the shell to suspend even if job control is not
currently enabled.
- Port patches
* bash-2.03-manual.patch
* bash-3.2-printf.patch
* bash-4.1-bash.bashrc.dif
* bash-5.2.dif
------------------------------------------------------------------- -------------------------------------------------------------------
Thu Apr 28 19:00:17 UTC 2022 - Dirk Müller <dmueller@suse.com> Thu Apr 28 19:00:17 UTC 2022 - Dirk Müller <dmueller@suse.com>
- use https:// for source urls - use https:// for source urls
-------------------------------------------------------------------
Thu Apr 28 11:59:44 UTC 2022 - Dr. Werner Fink <werner@suse.de>
- Update to bash 5.2 beta
a. The bash malloc returns memory that is aligned on 16-byte boundaries.
b. There is a new internal timer framework used for read builtin timeouts.
c. Rewrote the command substitution parsing code to call the parser recursively
and rebuild the command string from the parsed command. This allows better
syntax checking and catches errors much earlier.
d. The `ulimit' builtin now treats an operand remaining after all of the options
and arguments are parsed as an argument to the last command specified by
an option. This is for POSIX compatibility.
e. Here-document parsing now handles $'...' and $"..." quoting when reading the
here-document body.
f. The `shell-expand-line' and `history-and-alias-expand-line' bindable readline
commands now understand $'...' and $"..." quoting.
g. There is a new `spell-correct-word' bindable readline command to perform
spelling correction on the current word.
h. The `unset' builtin now attempts to treat arguments as array subscripts
without parsing or expanding the subscript, even when `assoc_expand_once'
is not set.
i. There is a default value for $BASH_LOADABLES_PATH in config-top.h.
j. Associative array assignment and certain instances of referencing (e.g.,
`test -v' now allow `@' and `*' to be used as keys.
k. Bash attempts to expand indexed array subscripts only once when executing
shell constructs and word expansions.
l. The `unset' builtin allows a subscript of `@' or `*' to unset a key with
that value for associative arrays instead of unsetting the entire array
(which you can still do with `unset arrayname'). For indexed arrays, it
removes all elements of the array without unsetting it (like `A=()').
m. Additional builtins (printf/test/read/wait) do a better job of not
parsing array subscripts if array_expand_once is set.
n. New READLINE_ARGUMENT variable set to numeric argument for readline commands
defined using `bind -x'.
o. The new `varredir_close' shell option causes bash to automatically close
file descriptors opened with {var}<fn and other styles of varassign
redirection unless they're arguments to the `exec' builtin.
p. The `$0' special parameter is now set to the name of the script when running
any (non-interactive) startup files such as $BASH_ENV.
q. The `enable' builtin tries to load a loadable builtin using the default
search path if `enable name' (without any options) attempts to enable a
non-existent builtin.
r. The `printf' builtin has a new format specifier: %Q. This acts like %q but
applies any specified precision to the original unquoted argument, then
quotes and outputs the result.
s. The new `noexpand_translations' option controls whether or not the translated
output of $"..." is single-quoted.
t. There is a new parameter transformation operator: @k. This is like @K, but
expands the result to separate words after word splitting.
u. There is an alternate array implementation, selectable at `configure' time,
that optimizes access speed over memory use (use the new configure
--enable-alt-array-implementation option).
v. If an [N]<&WORD- or [N]>&WORD- redirection has WORD expand to the empty
string, treat the redirection as [N]<&- or [N]>&- and close file descriptor
N (default 0).
w. Invalid parameter transformation operators are now invalid word expansions,
and so cause fatal errors in non-interactive shells.
x. New shell option: patsub_replacement. When enabled, a `&' in the replacement
string of the pattern substitution expansion is replaced by the portion of
the string that matched the pattern. Backslash will escape the `&' and
insert a literal `&'.
y. `command -p' no longer looks in the hash table for the specified command.
z. The new `--enable-translatable-strings' option to `configure' allows $"..."
support to be compiled in or out.
aa. The new `globskipdots' shell option forces pathname expansion never to
return `.' or `..' unless explicitly matched.
bb. Array references using `@' and `*' that are the value of nameref variables
(declare -n ref='v[@]' ; echo $ref) no longer cause the shell to exit if
set -u is enabled and the array (v) is unset.
cc. There is a new bindable readline command name:
`vi-edit-and-execute-command'.
- Remove upstream patchset tarball for 8.1 and create new and empty for 8.2
- Port patches
* bash-2.03-manual.patch
* bash-3.0-evalexp.patch
* bash-3.0-warn-locale.patch
* bash-3.2-printf.patch
* bash-4.0-setlocale.dif
* bash-4.1-completion.dif
* bash-4.2-nscdunmap.dif
* bash-4.3-2.4.4.patch
* bash-4.3-loadables.dif
- Port patch bash-5.1.dif and rename it to bash-5.2.dif
------------------------------------------------------------------- -------------------------------------------------------------------
Thu Mar 24 14:37:18 UTC 2022 - Dr. Werner Fink <werner@suse.de> Thu Mar 24 14:37:18 UTC 2022 - Dr. Werner Fink <werner@suse.de>
@ -2123,7 +2272,7 @@ Mon Feb 15 17:24:46 CET 2010 - werner@suse.de
forward all history entries to syslog. forward all history entries to syslog.
* A new variable $BASHOPTS to export shell options settable using `shopt' to * A new variable $BASHOPTS to export shell options settable using `shopt' to
child processes. child processes.
* There is a new confgure option that forces the extglob option to be * There is a new configure option that forces the extglob option to be
enabled by default. enabled by default.
* New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace * New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace
output to that file descriptor. output to that file descriptor.
@ -2155,7 +2304,7 @@ Mon Feb 15 17:24:46 CET 2010 - werner@suse.de
consume key sequences generated by keys like Home and End without having consume key sequences generated by keys like Home and End without having
to bind all keys. to bind all keys.
* New application-settable function: rl_filename_rewrite_hook. Can be used * New application-settable function: rl_filename_rewrite_hook. Can be used
to rewite or modify filenames read from the file system before they are to rewrite or modify filenames read from the file system before they are
compared to the word to be completed. compared to the word to be completed.
* New bindable variable: skip-completed-text, active when completing in the * New bindable variable: skip-completed-text, active when completing in the
middle of a word. If enabled, it means that characters in the completion middle of a word. If enabled, it means that characters in the completion

View File

@ -21,9 +21,11 @@
%else %else
%bcond_without alternatives %bcond_without alternatives
%endif %endif
# Unicode tests do alloc to much memory
%bcond_with altarray
%define bextend %{nil} %define bextend %{nil}
%define bversion 5.1 %define bversion 5.2
%define bpatchlvl %(bash %{_sourcedir}/get_version_number.sh %{_sourcedir}) %define bpatchlvl %(bash %{_sourcedir}/get_version_number.sh %{_sourcedir})
%global _incdir %{_includedir} %global _incdir %{_includedir}
%global _ldldir %{_libdir}/bash %global _ldldir %{_libdir}/bash
@ -87,6 +89,8 @@ Patch50: quotes-man2html.patch
BuildRequires: autoconf BuildRequires: autoconf
BuildRequires: bison BuildRequires: bison
BuildRequires: fdupes BuildRequires: fdupes
BuildRequires: glibc-locale
BuildRequires: glibc-locale-base
BuildRequires: makeinfo BuildRequires: makeinfo
BuildRequires: patchutils BuildRequires: patchutils
BuildRequires: pkgconfig BuildRequires: pkgconfig
@ -98,7 +102,7 @@ BuildRequires: update-alternatives
BuildRequires: pkgconfig(audit) BuildRequires: pkgconfig(audit)
BuildRequires: pkgconfig(ncurses) BuildRequires: pkgconfig(ncurses)
# This has to be always the same version as included in the bash its self # This has to be always the same version as included in the bash its self
BuildRequires: pkgconfig(readline) = 8.1 BuildRequires: pkgconfig(readline) = 8.2
%if %{with alternatives} %if %{with alternatives}
Requires(post): update-alternatives Requires(post): update-alternatives
Requires(preun):update-alternatives Requires(preun):update-alternatives
@ -139,6 +143,7 @@ Group: System/Shells
Provides: alternative(sh) Provides: alternative(sh)
Conflicts: alternative(sh) Conflicts: alternative(sh)
PreReq: bash = %{version} PreReq: bash = %{version}
BuildArch: noarch
%description sh %description sh
Use bash as /bin/sh implementation. Use bash as /bin/sh implementation.
@ -217,6 +222,7 @@ Group: System/Shells
Requires: bash = %{version}-%{release} Requires: bash = %{version}-%{release}
Requires: this-is-only-for-build-envs Requires: this-is-only-for-build-envs
Conflicts: rpmlib(X-CheckUnifiedSystemdir) Conflicts: rpmlib(X-CheckUnifiedSystemdir)
BuildArch: noarch
%description legacybin %description legacybin
Legacy usrmove helper files for the build system. Do not install. Legacy usrmove helper files for the build system. Do not install.
@ -230,6 +236,7 @@ Legacy usrmove helper files for the build system. Do not install.
%endif %endif
%setup -q -n bash-%{bversion}%{bextend} -b1 %setup -q -n bash-%{bversion}%{bextend} -b1
typeset -i level typeset -i level
set +x
for patch in ../bash-%{bversion}-patches/*-*[0-9]; do for patch in ../bash-%{bversion}-patches/*-*[0-9]; do
test -e $patch || break test -e $patch || break
@ -244,6 +251,7 @@ for patch in ../bash-%{bversion}-patches/*-*[0-9]; do
echo Patch $patch echo Patch $patch
patch -s -p$level < $patch patch -s -p$level < $patch
done done
set -x
%patch1 -b .manual %patch1 -b .manual
%patch3 -b .2.4.4 %patch3 -b .2.4.4
%patch4 -b .evalexp %patch4 -b .evalexp
@ -393,6 +401,7 @@ test ${rl1[2]} = ${rl2[2]} || exit 1
--enable-minimal-config \ --enable-minimal-config \
--enable-arith-for-command \ --enable-arith-for-command \
--enable-array-variables \ --enable-array-variables \
--disable-alt-array-implementation \
--enable-brace-expansion \ --enable-brace-expansion \
--enable-casemod-attributes \ --enable-casemod-attributes \
--enable-casemod-expansion \ --enable-casemod-expansion \
@ -410,8 +419,8 @@ test ${rl1[2]} = ${rl2[2]} || exit 1
--disable-strict-posix-default \ --disable-strict-posix-default \
--enable-separate-helpfiles=%{_datadir}/bash/helpfiles \ --enable-separate-helpfiles=%{_datadir}/bash/helpfiles \
$READLINE $READLINE
make Program=sh sh %make_build Program=sh sh
make distclean %make_build distclean
%endif %endif
./configure --build=%{_target_cpu}-suse-linux \ ./configure --build=%{_target_cpu}-suse-linux \
--prefix=%{_prefix} \ --prefix=%{_prefix} \
@ -423,6 +432,7 @@ test ${rl1[2]} = ${rl2[2]} || exit 1
--with-afs \ --with-afs \
--with-gnu-ld \ --with-gnu-ld \
$SYSMALLOC \ $SYSMALLOC \
--enable-threads=posix \
--enable-job-control \ --enable-job-control \
--enable-net-redirections \ --enable-net-redirections \
--enable-alias \ --enable-alias \
@ -436,10 +446,16 @@ test ${rl1[2]} = ${rl2[2]} || exit 1
--enable-help-builtin \ --enable-help-builtin \
--enable-separate-helpfiles \ --enable-separate-helpfiles \
--enable-array-variables \ --enable-array-variables \
%if %{with altarray}
--enable-alt-array-implementation \
%else
--disable-alt-array-implementation \
%endif
--enable-brace-expansion \ --enable-brace-expansion \
--enable-command-timing \ --enable-command-timing \
--enable-disabled-builtins \ --enable-disabled-builtins \
--enable-glob-asciiranges-default \ --enable-glob-asciiranges-default \
--enable-translatable-strings \
--disable-strict-posix-default \ --disable-strict-posix-default \
--enable-multibyte \ --enable-multibyte \
--enable-separate-helpfiles=%{_datadir}/bash/helpfiles \ --enable-separate-helpfiles=%{_datadir}/bash/helpfiles \
@ -457,7 +473,7 @@ test ${rl1[2]} = ${rl2[2]} || exit 1
tail -q -s 0.5 -f $SCREENLOG & pid=$! tail -q -s 0.5 -f $SCREENLOG & pid=$!
env -i HOME=$PWD TERM=$TERM LD_LIBRARY_PATH=$LD_RUN_PATH TMPDIR=$TMPDIR \ env -i HOME=$PWD TERM=$TERM LD_LIBRARY_PATH=$LD_RUN_PATH TMPDIR=$TMPDIR \
SCREENRC=$SCREENRC SCREENDIR=$SCREENDIR \ SCREENRC=$SCREENRC SCREENDIR=$SCREENDIR \
screen -D -m %make_build TESTSCRIPT=%{SOURCE4} check screen -D -m %make_build -j1 TESTSCRIPT=%{SOURCE4} check
kill -TERM $pid kill -TERM $pid
%if 0%{?do_profiling} %if 0%{?do_profiling}
rm -f jobs.gcda rm -f jobs.gcda
@ -467,6 +483,10 @@ test ${rl1[2]} = ${rl2[2]} || exit 1
%make_build $makeopts "$profilecflags" all %make_build $makeopts "$profilecflags" all
%make_build $makeopts -C examples/loadables/ %make_build $makeopts -C examples/loadables/
%make_build $makeopts documentation %make_build $makeopts documentation
grep -F '$'\' doc/bash.html %{nil:test for boo#1203091}
%check
%make_build -j1 check
%install %install
%make_install %make_install
@ -528,6 +548,7 @@ EOF
%find_lang bash %find_lang bash
%fdupes -s %{buildroot}%{_datadir}/bash/helpfiles %fdupes -s %{buildroot}%{_datadir}/bash/helpfiles
sed -ri '1{ s@/bin/sh@/bin/bash@ }' %{buildroot}%{_bindir}/bashbug sed -ri '1{ s@/bin/sh@/bin/bash@ }' %{buildroot}%{_bindir}/bashbug
strip --strip-unneeded %{buildroot}%{_bindir}/bash
%if %{with alternatives} %if %{with alternatives}
%post -p %{_bindir}/bash %post -p %{_bindir}/bash

View File

@ -1,5 +1,6 @@
#!/bin/bash #!/bin/bash
# Note: this file is used in the spec file, do not remove it # Note: this file is used in the spec file, do not remove it
# Print the highest version number of the patches from the archive
sourcedir=$1 sourcedir=$1
test -n "${sourcedir}" || sourcedir=$PWD test -n "${sourcedir}" || sourcedir=$PWD
test -e ${sourcedir}/bash.spec || exit 1 test -e ${sourcedir}/bash.spec || exit 1

View File

@ -1,7 +1,7 @@
boo#1203091 boo#1203091
--- ---
support/man2html.c | 12 ++++++++++++ support/man2html.c | 12 ++++
1 file changed, 12 insertions(+) 1 file changed, 12 insertions(+)
--- support/man2html.c --- support/man2html.c

View File

@ -1,4 +1,18 @@
#! /bin/sh #! /bin/sh
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
: ${TMPDIR:=/tmp} : ${TMPDIR:=/tmp}
export TMPDIR export TMPDIR
@ -6,14 +20,15 @@ export TMPDIR
# basic /bin/sh syntax # basic /bin/sh syntax
SUFFIX=`${THIS_SH} -c 'echo $(( $RANDOM + $BASHPID ))'` SUFFIX=`${THIS_SH} -c 'echo $(( $RANDOM + $BASHPID ))'`
BASH_TSTOUT=${TMPDIR}/bashtst-$SUFFIX # for now BASH_TSTOUT=${TMPDIR}/bashtst-$SUFFIX # for now
export BASH_TSTOUT export BASH_TSTOUT
trap 'rm -f $BASH_TSTOUT' 0 trap 'rm -f $BASH_TSTOUT' 0 1 2 3 15
PATH=.:$PATH # just to get recho/zecho/printenv if not run via `make tests' PATH=.:$PATH # just to get recho/zecho/printenv if not run via `make tests'
export PATH export PATH
# unset BASH_ENV only if it is set # unset BASH_ENV only if it is set
[ "${BASH_ENV+set}" = "set" ] && unset BASH_ENV [ "${BASH_ENV+set}" = "set" ] && unset BASH_ENV
# ditto for SHELLOPTS # ditto for SHELLOPTS
@ -22,9 +37,12 @@ export PATH
: ${THIS_SH:=../bash} : ${THIS_SH:=../bash}
export THIS_SH export THIS_SH
: ${BUILD_DIR:=..}
export BUILD_DIR
${THIS_SH} ./version ${THIS_SH} ./version
rm -f "$BASH_TSTOUT" rm -f ${BASH_TSTOUT}
echo Any output from any test, unless otherwise noted, indicates a possible anomaly echo Any output from any test, unless otherwise noted, indicates a possible anomaly
@ -33,11 +51,11 @@ do
case $x in case $x in
$0|run-all|run-minimal|run-gprof|run-jobs) ;; $0|run-all|run-minimal|run-gprof|run-jobs) ;;
*.orig|*~) ;; *.orig|*~) ;;
*) echo $x ; sh $x ;; *) echo $x ; sh $x ; rm -f ${BASH_TSTOUT} ;;
esac esac
done done
trap 'rm -f $tmp' EXIT TERM INT QUIT trap 'rm -f $tmp' EXIT HUP INT QUIT TERM
tmp=$(mktemp /tmp/hello.XXXXXXXX) || exit 1 tmp=$(mktemp /tmp/hello.XXXXXXXX) || exit 1
echo '#!/bin/sh' > $tmp echo '#!/bin/sh' > $tmp
echo exit >> $tmp echo exit >> $tmp