Hello community, here is the log from the commit of package bash for openSUSE:Factory checked in at 2015-10-28 17:15:10 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/bash (Old) and /work/SRC/openSUSE:Factory/.bash.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "bash" Changes: -------- --- /work/SRC/openSUSE:Factory/bash/bash.changes 2015-09-11 09:00:04.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.bash.new/bash.changes 2015-10-28 17:15:12.000000000 +0100 @@ -1,0 +2,15 @@ +Mon Oct 19 13:38:58 UTC 2015 - wer...@suse.de + +- Define the USE_MKTEMP and USE_MKSTEMP cpp macros as the + implementation is already there. +- Add patch bash-4.3-pathtemp.patch to allow root to clear the + file systems. Otherwise the completion does not work if /tmp + if full (ENOSPC for here documents) + +------------------------------------------------------------------- +Fri Oct 16 13:02:27 UTC 2015 - wer...@suse.de + +- Remove --hash-size options as there is no any change in the final + binary nor library anymore + +------------------------------------------------------------------- New: ---- bash-4.3-pathtemp.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ bash.spec ++++++ --- /var/tmp/diff_new_pack.g96QeS/_old 2015-10-28 17:15:13.000000000 +0100 +++ /var/tmp/diff_new_pack.g96QeS/_new 2015-10-28 17:15:13.000000000 +0100 @@ -99,6 +99,8 @@ Patch47: bash-4.3-perl522.patch # PATCH-FIX-SUSE Patch48: bash-4.3-extra-import-func.patch +# PATCH-EXTEND-SUSE Allow root to clean file system if filled up +Patch49: bash-4.3-pathtemp.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %global _sysconfdir /etc %global _incdir %{_includedir} @@ -319,6 +321,7 @@ %if %{with import_function} %patch48 %endif +%patch49 %patch0 -p0 -b .0 pushd ../readline-%{rl_vers}%{extend} for patch in ../readline-%{rl_vers}-patches/*; do @@ -397,13 +400,7 @@ esac set +o noclobber } - echo 'int main () { return !(sizeof(void*) >= 8); }' | gcc -x c -o test64 - - if ./test64 ; then - LARGEFILE="" - else - LARGEFILE="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" - fi - rm -f ./test64 + LARGEFILE="$(getconf LFS_CFLAGS)" (cat > dyn.map)<<-'EOF' { *; @@ -442,7 +439,6 @@ cflags -DIMPORT_FUNCTIONS_DEF=0 CFLAGS cflags -Wl,--as-needed LDFLAGS cflags -Wl,-O2 LDFLAGS - cflags -Wl,--hash-size=8599 LDFLAGS cflags -Wl,-rpath,%{_ldldir}/%{bash_vers} LDFLAGS cflags -Wl,--version-script=${PWD}/rl.map LDFLAGS cflags -Wl,--dynamic-list=${PWD}/dyn.map LDFLAGS @@ -474,7 +470,6 @@ ln -sf ../readline-%{rl_vers} readline LD_LIBRARY_PATH=$PWD/../readline-%{rl_vers} export LD_LIBRARY_PATH - LDFLAGS="${LDFLAGS/hash-size=8599/hash-size=16699}" CC="gcc -I$PWD -L$PWD/../readline-%{rl_vers}" %if %_minsh cflags -Os CFLAGS ++++++ bash-4.3-pathtemp.patch ++++++ --- lib/sh/tmpfile.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) --- lib/sh/tmpfile.c +++ lib/sh/tmpfile.c 2015-10-19 13:35:30.869518731 +0000 @@ -36,6 +36,14 @@ #include <stdio.h> #include <errno.h> +#if defined(__linux__) +# include <sys/statfs.h> +# include <unistd.h> +# ifndef TMPFS_MAGIC +# define TMPFS_MAGIC 0x01021994 +# endif +#endif + #include <shell.h> #ifndef errno @@ -60,6 +68,8 @@ static unsigned long filenum = 1L; static char * get_sys_tmpdir () { + static int doshm; + if (sys_tmpdir) return sys_tmpdir; @@ -86,6 +96,31 @@ get_sys_tmpdir () return sys_tmpdir; } +#if defined(__linux__) +static int +emergency_sys_tmpdir () +{ + static char *shm = "/dev/shm"; + static size_t pgsz; + struct statfs fs; + static int doshm; + + if (getuid() != 0) + return 0; + + if (doshm) + return 0; + + doshm++; + + if (statfs(shm, &fs) < 0 || fs.f_type != TMPFS_MAGIC || eaccess(shm, W_OK|X_OK)) + return 0; + + sys_tmpdir = shm; + return 1; +} +#endif + static char * get_tmpdir (flags) int flags; @@ -164,6 +199,7 @@ sh_mktmpfd (nameroot, flags, namep) int fd, tdlen; filename = (char *)xmalloc (PATH_MAX + 1); +enospace: tdir = get_tmpdir (flags); tdlen = strlen (tdir); @@ -177,6 +213,10 @@ sh_mktmpfd (nameroot, flags, namep) free (filename); filename = NULL; } + + if (fd < 0 && errno == ENOSPC && emergency_sys_tmpdir()) + goto enospace; + if (namep) *namep = filename; return fd; @@ -194,6 +234,9 @@ sh_mktmpfd (nameroot, flags, namep) } while (fd < 0 && errno == EEXIST); + if (fd < 0 && errno == ENOSPC && emergency_sys_tmpdir()) + goto enospace; + if (namep) *namep = filename; else ++++++ bash-4.3.dif ++++++ --- /var/tmp/diff_new_pack.g96QeS/_old 2015-10-28 17:15:14.000000000 +0100 +++ /var/tmp/diff_new_pack.g96QeS/_new 2015-10-28 17:15:14.000000000 +0100 @@ -49,6 +49,17 @@ /* Define if you want the case-capitalizing operators (~[~]) and the `capcase' variable attribute (declare -c). */ +@@ -132,3 +136,10 @@ + /* Define to 1 if you want to be able to export indexed arrays to processes + using the foo=([0]=one [1]=two) and so on */ + /* #define ARRAY_EXPORT 1 */ ++ ++#ifndef USE_MKTEMP ++# define USE_MKTEMP ++#endif ++#ifndef USE_MKSTEMP ++# define USE_MKSTEMP ++#endif --- doc/Makefile.in +++ doc/Makefile.in 2006-03-27 12:15:25.000000000 +0000 @@ -146,7 +146,7 @@ BASHREF_FILES = $(srcdir)/bashref.texi $