Update to bash 5.1 patch 4

OBS-URL: https://build.opensuse.org/package/show/Base:System/bash?expand=0&rev=324
This commit is contained in:
Dr. Werner Fink 2021-01-11 12:18:34 +00:00 committed by Git OBS Bridge
parent 253474743b
commit 41951cf33e
15 changed files with 456 additions and 106 deletions

View File

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

View File

@ -12,7 +12,7 @@
#include "../bashtypes.h"
@@ -662,12 +663,20 @@ printf_builtin (list)
@@ -661,12 +662,20 @@ printf_builtin (list)
case 'A':
#endif
{

View File

@ -1,55 +0,0 @@
---
variables.c | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
--- variables.c
+++ variables.c 2018-12-21 13:24:48.757352405 +0000
@@ -1324,6 +1324,7 @@ static int seeded_subshell = 0;
# define BASH_RAND_MAX 0x7fffffff /* 32 bits */
#endif
+#if !defined(linux)
/* Returns a pseudo-random number between 0 and 32767. */
static int
brand ()
@@ -1380,6 +1381,40 @@ seedrand ()
#endif
}
+#else
+/* Use ISO C Random Number Functions of the glibc */
+static int
+brand (void)
+{
+ if (rseed == 0)
+ seedrand ();
+ return ((unsigned int)(rand() & BASH_RAND_MAX)); /* was % BASH_RAND_MAX+1 */
+}
+
+static void
+sbrand (unsigned long seed)
+{
+ rseed = seed;
+ srand(seed);
+}
+
+static void
+seedrand (void)
+{
+ struct timeval tv;
+#ifdef _EXTENDTHIS
+ SHELL_VAR *v;
+#endif
+ gettimeofday (&tv, NULL);
+#ifdef _EXTENDTHIS
+ v = find_variable ("BASH_VERSION");
+ sbrand (tv.tv_sec ^ tv.tv_usec ^ getpid () ^ ((u_bits32_t)&v & 0x7fffffff));
+#else
+ srand (tv.tv_sec ^ tv.tv_usec ^ getpid ());
+#endif
+}
+#endif
+
static SHELL_VAR *
assign_random (self, value, unused, key)
SHELL_VAR *self;

View File

@ -12,7 +12,7 @@
/* The current domain for textdomain(3). */
static char *default_domain;
@@ -339,11 +340,21 @@ get_locale_var (var)
@@ -359,11 +360,21 @@ get_locale_var (var)
if (locale == 0 || *locale == 0)
locale = lang;
if (locale == 0 || *locale == 0)

View File

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

View File

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

View File

@ -1,15 +1,17 @@
---
array.c | 2 +-
examples/loadables/tee.c | 3 ++-
hashlib.c | 2 +-
hashlib.c | 4 ++--
jobs.c | 9 +++++++++
sig.c | 4 ++--
sig.h | 4 ++--
6 files changed, 17 insertions(+), 7 deletions(-)
trap.c | 2 +-
trap.h | 2 +-
8 files changed, 20 insertions(+), 10 deletions(-)
--- array.c
+++ array.c 2018-11-29 08:10:37.098634355 +0000
@@ -965,7 +965,7 @@ char *s, *sep;
+++ array.c 2020-10-12 16:00:37.207185803 +0000
@@ -1028,7 +1028,7 @@ char *s, *sep;
* To make a running version, compile -DTEST_ARRAY and link with:
* xmalloc.o syntax.o lib/malloc/libmalloc.a lib/sh/libsh.a
*/
@ -19,7 +21,7 @@
int
signal_is_trapped(s)
--- examples/loadables/tee.c
+++ examples/loadables/tee.c 2018-11-29 08:10:37.098634355 +0000
+++ examples/loadables/tee.c 2020-10-12 16:00:37.267184666 +0000
@@ -35,6 +35,7 @@
#include "bashansi.h"
@ -38,19 +40,21 @@
extern char *strerror ();
--- hashlib.c
+++ hashlib.c 2018-11-29 08:10:37.098634355 +0000
@@ -391,7 +391,7 @@ hash_pstats (table, name)
+++ hashlib.c 2020-10-12 16:02:31.677016331 +0000
@@ -473,8 +473,8 @@ hash_pstats (table, name)
HASH_TABLE *table, *ntable;
-int interrupt_immediately = 0;
-int running_trap = 0;
+volatile sig_atomic_t interrupt_immediately = 0;
+volatile sig_atomic_t running_trap = 0;
int
signal_is_trapped (s)
--- jobs.c
+++ jobs.c 2018-11-29 08:10:37.102634281 +0000
@@ -1999,6 +1999,15 @@ make_child (command, async_p)
+++ jobs.c 2020-10-12 16:00:37.267184666 +0000
@@ -2221,6 +2221,15 @@ make_child (command, flags)
child process, go back and change callers who free `command' in
the child process when this returns. */
mypid = getpid ();
@ -67,7 +71,7 @@
/* Close default_buffered_input if it's > 0. We don't close it if it's
0 because that's the file descriptor used when redirecting input,
--- sig.c
+++ sig.c 2018-11-29 08:10:37.102634281 +0000
+++ sig.c 2020-10-12 16:00:37.267184666 +0000
@@ -83,10 +83,10 @@ sigset_t top_level_mask;
#endif /* JOB_CONTROL */
@ -82,7 +86,7 @@
#if defined (SIGWINCH)
static SigHandler *old_winch = (SigHandler *)SIG_DFL;
--- sig.h
+++ sig.h 2018-11-29 08:10:37.102634281 +0000
+++ sig.h 2020-10-12 16:03:44.403637781 +0000
@@ -109,8 +109,8 @@ do { \
extern volatile sig_atomic_t sigwinch_received;
extern volatile sig_atomic_t sigterm_received;
@ -93,4 +97,26 @@
+extern volatile sig_atomic_t terminate_immediately;
/* Functions from sig.c. */
extern sighandler termsig_sighandler __P((int));
extern sighandler termsig_sighandler PARAMS((int));
--- trap.c
+++ trap.c 2020-10-12 16:08:10.102600477 +0000
@@ -111,7 +111,7 @@ int pending_traps[NSIG];
Used in execute_cmd.c and builtins/common.c to clean up when
parse_and_execute does not return normally after executing the
trap command (e.g., when `return' is executed in the trap command). */
-int running_trap;
+volatile sig_atomic_t running_trap;
/* Set to last_command_exit_value before running a trap. */
int trap_saved_exit_value;
--- trap.h
+++ trap.h 2020-10-12 16:05:57.105122164 +0000
@@ -62,7 +62,7 @@ extern char *trap_list[];
extern int trapped_signal_received;
extern int wait_signal_received;
-extern int running_trap;
+extern volatile sig_atomic_t running_trap;
extern int trap_saved_exit_value;
extern int suppress_debug_trap_verbose;

View File

@ -1,16 +1,16 @@
---
examples/loadables/finfo.c | 9 ++++-----
examples/loadables/finfo.c | 3 +--
examples/loadables/head.c | 2 --
examples/loadables/id.c | 2 --
examples/loadables/mkdir.c | 2 +-
examples/loadables/pathchk.c | 2 --
examples/loadables/print.c | 2 +-
examples/loadables/tee.c | 2 --
7 files changed, 6 insertions(+), 15 deletions(-)
7 files changed, 3 insertions(+), 12 deletions(-)
--- examples/loadables/finfo.c
+++ examples/loadables/finfo.c 2018-09-20 08:07:43.739129083 +0000
@@ -102,7 +102,7 @@ int argc;
@@ -108,7 +108,7 @@ int argc;
char **argv;
{
register int i;
@ -19,24 +19,7 @@
sh_optind = 0; /* XXX */
prog = base_pathname(argv[0]);
@@ -334,13 +334,13 @@ int flags;
else
printf("%ld\n", st->st_ctime);
} else if (flags & OPT_DEV)
- printf("%d\n", st->st_dev);
+ printf("%lu\n", (unsigned long)st->st_dev);
else if (flags & OPT_INO)
printf("%lu\n", (unsigned long)st->st_ino);
else if (flags & OPT_FID)
- printf("%d:%lu\n", st->st_dev, (unsigned long)st->st_ino);
+ printf("%lu:%lu\n", (unsigned long)st->st_dev, (unsigned long)st->st_ino);
else if (flags & OPT_NLINK)
- printf("%d\n", st->st_nlink);
+ printf("%lu\n", (unsigned long)st->st_nlink);
else if (flags & OPT_LNKNAM) {
#ifdef S_ISLNK
b = xmalloc(4096);
@@ -390,7 +390,6 @@ finfo_builtin(list)
@@ -396,7 +396,6 @@ finfo_builtin(list)
{
int c, r;
char **v;

View File

@ -60,7 +60,7 @@
static char *
get_tmpdir (flags)
int flags;
@@ -186,7 +221,8 @@ sh_mktmpfd (nameroot, flags, namep)
@@ -194,7 +229,8 @@ sh_mktmpfd (nameroot, flags, namep)
{
char *filename, *tdir, *lroot;
int fd, tdlen;
@ -70,7 +70,7 @@
filename = (char *)xmalloc (PATH_MAX + 1);
tdir = get_tmpdir (flags);
tdlen = strlen (tdir);
@@ -201,6 +237,10 @@ sh_mktmpfd (nameroot, flags, namep)
@@ -217,6 +253,10 @@ sh_mktmpfd (nameroot, flags, namep)
free (filename);
filename = NULL;
}
@ -81,7 +81,7 @@
if (namep)
*namep = filename;
return fd;
@@ -219,6 +259,13 @@ sh_mktmpfd (nameroot, flags, namep)
@@ -235,6 +275,13 @@ sh_mktmpfd (nameroot, flags, namep)
}
while (fd < 0 && errno == EEXIST);

View File

@ -4,7 +4,7 @@
--- sig.c
+++ sig.c 2018-11-29 08:13:00.103944580 +0000
@@ -761,6 +761,8 @@ set_signal_handler (sig, handler)
@@ -788,6 +788,8 @@ set_signal_handler (sig, handler)
if (sig == SIGCHLD)
act.sa_flags |= SA_RESTART; /* XXX */
#endif
@ -13,7 +13,7 @@
/* Let's see if we can keep SIGWINCH from interrupting interruptible system
calls, like open(2)/read(2)/write(2) */
#if defined (SIGWINCH)
@@ -771,6 +773,10 @@ set_signal_handler (sig, handler)
@@ -798,6 +800,10 @@ set_signal_handler (sig, handler)
it to be as close to SIG_IGN as possible. */
if (sig == SIGTERM && handler == sigterm_sighandler)
act.sa_flags |= SA_RESTART; /* XXX */

BIN
bash-5.1-patches.tar.bz2 (Stored with Git LFS) Normal file

Binary file not shown.

240
bash-5.1.dif Normal file
View File

@ -0,0 +1,240 @@
---
Makefile.in | 2 +-
config-top.h | 16 ++++++++++------
doc/Makefile.in | 2 +-
doc/bash.1 | 7 +++++--
general.h | 3 +++
parse.y | 2 +-
shell.c | 6 +++++-
support/man2html.c | 1 +
support/rlvers.sh | 6 +++---
support/shobj-conf | 5 +++--
tests/glob.tests | 4 ++--
tests/run-intl | 2 +-
tests/run-read | 2 +-
13 files changed, 37 insertions(+), 21 deletions(-)
--- Makefile.in
+++ Makefile.in 2020-11-23 07:50:41.491908452 +0000
@@ -457,7 +457,7 @@ SOURCES = $(CSOURCES) $(HSOURCES) $(BUI
# 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 \
variables.h array.h assoc.h arrayfunc.h quit.h dispose_cmd.h \
- make_cmd.h subst.h sig.h externs.h builtins.h \
+ make_cmd.h subst.h sig.h externs.h builtins.h bashline.h \
bashtypes.h xmalloc.h config-top.h config-bot.h \
bashintl.h bashansi.h bashjmp.h alias.h hashlib.h \
conftypes.h unwind_prot.h jobs.h siglist.h
--- config-top.h
+++ config-top.h 2020-11-23 07:52:34.257749719 +0000
@@ -60,10 +60,14 @@
due to EPIPE. */
/* #define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS */
+#ifndef _PATH_DEFPATH
+# include <paths.h>
+#endif
+
/* The default value of the PATH variable. */
#ifndef DEFAULT_PATH_VALUE
#define DEFAULT_PATH_VALUE \
- "/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:."
+ "/usr/local/bin:" _PATH_DEFPATH ":."
#endif
/* If you want to unconditionally set a value for PATH in every restricted
@@ -74,7 +78,7 @@
the Posix.2 confstr () function, or CS_PATH define are not present. */
#ifndef STANDARD_UTILS_PATH
#define STANDARD_UTILS_PATH \
- "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc"
+ _PATH_STDPATH
#endif
/* Default primary and secondary prompt strings. */
@@ -91,20 +95,20 @@
#define DEFAULT_BASHRC "~/.bashrc"
/* System-wide .bashrc file for interactive shells. */
-/* #define SYS_BASHRC "/etc/bash.bashrc" */
+#define SYS_BASHRC "/etc/bash.bashrc"
/* System-wide .bash_logout for login shells. */
-/* #define SYS_BASH_LOGOUT "/etc/bash.bash_logout" */
+#define SYS_BASH_LOGOUT "/etc/bash.bash_logout"
/* Define this to make non-interactive shells begun with argv[0][0] == '-'
run the startup files when not in posix mode. */
-/* #define NON_INTERACTIVE_LOGIN_SHELLS */
+#define NON_INTERACTIVE_LOGIN_SHELLS
/* Define this if you want bash to try to check whether it's being run by
sshd and source the .bashrc if so (like the rshd behavior). This checks
for the presence of SSH_CLIENT or SSH2_CLIENT in the initial environment,
which can be fooled under certain not-uncommon circumstances. */
-/* #define SSH_SOURCE_BASHRC */
+#define SSH_SOURCE_BASHRC
/* Define if you want the case-toggling operators (~[~]) and the
`capcase' variable attribute (declare -c). */
--- doc/Makefile.in
+++ doc/Makefile.in 2020-11-23 07:50:41.491908452 +0000
@@ -154,7 +154,7 @@ BASHREF_FILES = $(srcdir)/bashref.texi $
# $(RM) $@
# -${TEXI2PDF} $<
-all: ps info dvi text html $(MAN2HTML)
+all: info html $(MAN2HTML)
nodvi: ps info text html
everything: all pdf
--- doc/bash.1
+++ doc/bash.1 2020-11-23 07:50:41.491908452 +0000
@@ -5520,8 +5520,8 @@ file (the \fIinputrc\fP file).
The name of this file is taken from the value of the
.SM
.B INPUTRC
-variable. If that variable is unset, the default is
-.IR ~/.inputrc .
+environment variable. If that variable is unset, readline will read both
+.IR /etc/inputrc " and " ~/.inputrc .
If that file does not exist or cannot be read, the ultimate default is
.IR /etc/inputrc .
When a program which uses the readline library starts up, the
@@ -11241,6 +11241,9 @@ The individual login shell cleanup file,
.TP
.FN ~/.inputrc
Individual \fIreadline\fP initialization file
+.TP
+.FN /etc/inputrc
+System \fBreadline\fP initialization file
.PD
.SH AUTHORS
Brian Fox, Free Software Foundation
--- general.h
+++ general.h 2020-11-23 07:50:41.491908452 +0000
@@ -21,10 +21,13 @@
#if !defined (_GENERAL_H_)
#define _GENERAL_H_
+#include <time.h>
+#include <sys/types.h>
#include "stdc.h"
#include "bashtypes.h"
#include "chartypes.h"
+#include "bashline.h"
#if defined (HAVE_SYS_RESOURCE_H) && defined (RLIMTYPE)
# if defined (HAVE_SYS_TIME_H)
--- parse.y
+++ parse.y 2020-11-23 07:50:41.491908452 +0000
@@ -1458,7 +1458,7 @@ input_file_descriptor ()
#if defined (READLINE)
char *current_readline_prompt = (char *)NULL;
-char *current_readline_line = (char *)NULL;
+unsigned char *current_readline_line = (unsigned char *)NULL;
int current_readline_line_index = 0;
static int
--- shell.c
+++ shell.c 2020-11-23 07:50:41.491908452 +0000
@@ -45,6 +45,7 @@
#if defined (HAVE_UNISTD_H)
# include <sys/types.h>
# include <unistd.h>
+# include <grp.h>
#endif
#include "bashintl.h"
@@ -503,7 +504,7 @@ main (argc, argv, env)
if (dump_translatable_strings)
read_but_dont_execute = 1;
- if (running_setuid && privileged_mode == 0)
+ if (running_setuid && privileged_mode == 0 /* && act_like_sh == 0 */)
disable_priv_mode ();
/* Need to get the argument to a -c option processed in the
@@ -1310,6 +1311,9 @@ disable_priv_mode ()
{
int e;
+ if (!current_user.user_name)
+ get_current_user_info();
+ initgroups (current_user.user_name, current_user.gid);
#if HAVE_SETRESUID
if (setresuid (current_user.uid, current_user.uid, current_user.uid) < 0)
#else
--- support/man2html.c
+++ support/man2html.c 2020-11-23 07:50:41.491908452 +0000
@@ -78,6 +78,7 @@
#include <time.h>
#include <sys/time.h>
#include <errno.h>
+#include <unistd.h>
#define NULL_TERMINATED(n) ((n) + 1)
--- support/rlvers.sh
+++ support/rlvers.sh 2020-11-23 07:50:41.495908376 +0000
@@ -27,10 +27,10 @@ TDIR=$TMPDIR/rlvers
# defaults
CC=cc
-RL_LIBDIR=/usr/local/lib
-RL_INCDIR=/usr/local/include
+RL_LIBDIR=/lib
+RL_INCDIR=/usr/include
-TERMCAP_LIB="-ltermcap"
+echo 'int main () { return 0; }' | gcc -ltinfo -o /dev/null -xc - > /dev/null 2>&1 && TERMCAP_LIB="-ltinfo" || TERMCAP_LIB="-lncurses"
# cannot rely on the presence of getopts
while [ $# -gt 0 ]; do
--- support/shobj-conf
+++ support/shobj-conf 2020-11-23 07:50:41.495908376 +0000
@@ -126,10 +126,11 @@ sunos5*|solaris2*)
linux*-*|gnu*-*|k*bsd*-gnu-*|freebsd*|dragonfly*)
SHOBJ_CFLAGS=-fPIC
SHOBJ_LD='${CC}'
- SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
+ SHOBJ_LDFLAGS='-shared'
- SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
+ SHLIB_XLDFLAGS='-Wl,-rpath-link,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
+ echo 'int main () { return 0; }' | gcc -ltinfo -o /dev/null -xc - > /dev/null 2>&1 && SHLIB_LIBS=-ltinfo || SHLIB_LIBS=-lncurses
;;
# Darwin/MacOS X
--- tests/glob.tests
+++ tests/glob.tests 2020-11-23 07:50:41.495908376 +0000
@@ -33,8 +33,8 @@ ${THIS_SH} ./glob9.sub
MYDIR=$PWD # save where we are
-TESTDIR=$TMPDIR/glob-test-$$
-mkdir $TESTDIR
+TESTDIR=${TMPDIR:=/tmp}/glob-test-$$
+mkdir -p $TESTDIR
builtin cd $TESTDIR || { echo $0: cannot cd to $TESTDIR >&2 ; exit 1; }
rm -rf *
--- tests/run-intl
+++ tests/run-intl 2020-11-23 07:50:41.495908376 +0000
@@ -5,4 +5,4 @@ echo "warning: some of these tests will
echo "warning: locales installed on your system." >&2
${THIS_SH} ./intl.tests > ${BASH_TSTOUT}
-diff $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 2020-11-23 07:50:41.495908376 +0000
@@ -1,4 +1,4 @@
echo "warning: please do not consider output differing only in the amount of" >&2
echo "warning: white space to be an error." >&2
${THIS_SH} ./read.tests > ${BASH_TSTOUT} 2>&1
-diff ${BASH_TSTOUT} read.right && rm -f ${BASH_TSTOUT}
+diff -w ${BASH_TSTOUT} read.right && rm -f ${BASH_TSTOUT}

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

Binary file not shown.

View File

@ -1,13 +1,165 @@
-------------------------------------------------------------------
Mon Jan 11 12:00:19 UTC 2021 - Dr. Werner Fink <werner@suse.de>
- Update to final bash 5.1
* Which is mainly the last rc3 veresion
- Add official patch bash51-001
There is a missing dependency on a constructed file, which can cause highly
parellel builds to fail.
- Add official patch bash51-002
If there are no jobs, and the `-n' and `-p' options are both supplied to
`wait', bash can assign a value to the variable name specified with `-p'
instead of leaving it unset.
- Add official patch bash51-003
Bash does not put a command substitution process that is started to perform an
expansion in a child process into the right process group where it can receive
keyboard-generated signals.
- Add official patch bash51-004
If a key-value compound array assignment to an associative array is supplied
as an assignment statement argument to the `declare' command that declares the
array, the assignment doesn't perform the correct word expansions.
This patch makes key-value assignment and subscript assignment perform the
same expansions when they're supplied as an argument to `declare'.
-------------------------------------------------------------------
Mon Nov 23 08:28:20 UTC 2020 - Dr. Werner Fink <werner@suse.de>
- Update to bash 5.1 rc3
* The `assoc_expand_once' option now affects the evaluation of the -v primary
to test and the [[ compound command.
-------------------------------------------------------------------
Thu Nov 19 15:47:13 UTC 2020 - Ludwig Nussel <lnussel@suse.de>
- remove obsolete info macros
-------------------------------------------------------------------
Tue Nov 10 13:31:20 UTC 2020 - Dr. Werner Fink <werner@suse.de>
- Update to bash 5.1 rc2
* Process substitutions started from an interactive shell no longer have their
standard input implicitly redirected from /dev/null.
* Fixed an issue with setting the SIGINT trap handler in an interactive shell
when temporarily running $PROMPT_COMMAND non-interactively.
-------------------------------------------------------------------
Fri Oct 16 07:08:31 UTC 2020 - Ludwig Nussel <lnussel@suse.de>
- prepare usrmerge (boo#1029961)
-------------------------------------------------------------------
Mon Oct 12 17:19:06 UTC 2020 - Dr. Werner Fink <werner@suse.de>
- Update to bash 5.1 rc1
* `bind -x' now supports different bindings for different editing modes and
keymaps.
* Bash attempts to optimize the number of times it forks when executing
commands in subshells and from `bash -c'.
* Here documents and here strings now use pipes for the expanded document if
it's smaller than the pipe buffer size, reverting to temporary files if it's
larger.
* There are new loadable builtins: mktemp, accept, mkfifo, csv, cut/lcut
* In posix mode, `trap -p' now displays signals whose disposition is SIG_DFL
and those that were SIG_IGN when the shell starts.
* The shell now expands the history number (e.g., in PS1) even if it is not
currently saving commands to the history list.
* `read -e' may now be used with arbitrary file descriptors (`read -u N').
* The `select' builtin now runs traps if its internal call to the read builtin
is interrupted by a signal.
* SRANDOM: a new variable that expands to a 32-bit random number that is not
produced by an LCRNG, and uses getrandom/getentropy, falling back to
/dev/urandom or arc4random if available. There is a fallback generator if
none of these are available.
* shell-transpose-words: a new bindable readline command that uses the same
definition of word as shell-forward-word, etc.
* The shell now adds default bindings for shell-forward-word,
shell-backward-word, shell-transpose-words, and shell-kill-word.
* Bash now allows ARGV0 appearing in the initial shell environment to set $0.
* If `unset' is executed without option arguments, bash tries to unset a shell
function if a name argument cannot be a shell variable name because it's not
an identifier.
* The `test -N' operator uses nanosecond timestamp granularity if it's
available.
* Bash posix mode now treats assignment statements preceding shell function
definitions the same as in its default mode, since POSIX has changed and
no longer requires those assignments to persist after the function returns
(POSIX interp 654).
* BASH_REMATCH is no longer readonly.
* wait: has a new -p VARNAME option, which stores the PID returned by `wait -n'
or `wait' without arguments.
* Sorting the results of pathname expansion now uses byte-by-byte comparisons
if two strings collate equally to impose a total order; the result of a
POSIX interpretation.
* Bash now allows SIGINT trap handlers to execute recursively.
* Bash now saves and restores state around setting and unsetting posix mode,
instead of having unsetting posix mode set a known state.
* Process substitution is now available in posix mode.
* READLINE_MARK: a new variable available while executing commands bound with
`bind -x', contains the value of the mark.
* Bash removes SIGCHLD from the set of blocked signals if it's blocked at shell
startup.
* `test -v N' can now test whether or not positional parameter N is set.
* `local' now honors the `-p' option to display all local variables at the
current context.
* The `@a' variable transformation now prints attributes for unset array
variables.
* The `@A' variable transformation now prints a declare command that sets a
variable's attributes if the variable has attributes but is unset.
* `declare' and `local' now have a -I option that inherits attributes and
value from a variable with the same name at a previous scope.
* When run from a -c command, `jobs' now reports the status of completed jobs.
* New `U', `u', and `L' parameter transformations to convert to uppercase,
convert first character to uppercase, and convert to lowercase,
respectively.
* PROMPT_COMMAND: can now be an array variable, each element of which can
contain a command to be executed like a string PROMPT_COMMAND variable.
* `ulimit' has a -R option to report and set the RLIMIT_RTTIME resource.
* Associative arrays may be assigned using a list of key-value pairs within
a compound assignment. Compound assignments where the words are not of
the form [key]=value are assumed to be key-value assignments. A missing or
empty key is an error; a missing value is treated as NULL. Assignments may
not mix the two forms.
* New `K' parameter transformation to display associative arrays as key-
value pairs.
* Writing history to syslog now handles messages longer than the syslog max
length by writing multiple messages with a sequence number.
* SECONDS and RANDOM may now be assigned using arithmetic expressions, since
they are nominally integer variables. LINENO is not an integer variable.
* Bash temporarily suppresses the verbose option when running the DEBUG trap
while running a command from the `fc' builtin.
* `wait -n' now accepts a list of job specifications as arguments and will
wait for the first one in the list to change state.
* The associative array implementation can now dynamically increase the
size of the hash table based on insertion patterns.
* HISTFILE is now readonly in a restricted shell.
* The bash malloc now returns memory that is 16-byte aligned on 64-bit
systems.
* If the hash builtin is listing hashed filenames portably, don't print
anything if the table is empty.
* GLOBIGNORE now ignores `.' and `..' as a terminal pathname component.
* Bash attempts to optimize away forks in the last command in a function body
under appropriate circumstances.
* The globbing code now uses fnmatch(3) to check collation elements (if
available) even in cases without multibyte characters.
* The `fg' and `bg' builtins now return an error in a command substitution
when asked to restart a job inherited from the parent shell.
* The shell now attempts to unlink all FIFOs on exit, whether a consuming
process has finished with them or not.
* There is a new contributed loadable builtin: asort.
- Remove patch bash-4.0-security.patch as now solved upstream
- Port and modify patches
* bash-2.03-manual.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
* bash-4.3-pathtemp.patch
* bash-4.3-sigrestart.patch
- Port and rename patch bash-5.0.dif which is now bash-5.1.dif
-------------------------------------------------------------------
Wed Sep 23 16:30:31 UTC 2020 - Stefan Dirsch <sndirsch@suse.com>

View File

@ -1,7 +1,7 @@
#
# spec file for package bash
#
# Copyright (c) 2020 SUSE LLC
# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -21,8 +21,8 @@
Name: bash
%define bextend %nil
%define bversion 5.0
%define bpatchlvl 18
%define bversion 5.1
%define bpatchlvl 4
Version: %{bversion}.%{bpatchlvl}
Release: 0
Summary: The GNU Bourne-Again Shell
@ -49,7 +49,6 @@ Source8: baselibs.conf
Source9: bash-4.2-history-myown.dif.bz2
Patch0: bash-%{bversion}.dif
Patch1: bash-2.03-manual.patch
Patch2: bash-4.0-security.patch
Patch3: bash-4.3-2.4.4.patch
Patch4: bash-3.0-evalexp.patch
Patch5: bash-3.0-warn-locale.patch
@ -82,7 +81,7 @@ BuildRequires: ncurses-devel
BuildRequires: patchutils
BuildRequires: pkg-config
# This has to be always the same version as included in the bash its self
BuildRequires: readline-devel == 8.0
BuildRequires: readline-devel == 8.1
BuildRequires: screen
BuildRequires: sed
BuildRequires: update-alternatives
@ -229,7 +228,6 @@ for patch in ../bash-%{bversion}-patches/*; do
done
set -x
%patch1 -p0 -b .manual
%patch2 -p0 -b .security
%patch3 -p0 -b .2.4.4
%patch4 -p0 -b .evalexp
%patch5 -p0 -b .warnlc