$ git diff --patch-with-stat --summary 8e7cd989e7228a37d7a8234acebbbd7e1531e4db..fc16f6334540e61ef181a03784b7b7a2ed01c8c9
readline.spec | 138 ++++++++++++++++++++++++++++++++------
readline8.0-001 => readline80-001 | 0
readline80-002 | 60 +++++++++++++++++
readline80-003 | 69 +++++++++++++++++++
readline80-004 | 47 +++++++++++++
5 files changed, 294 insertions(+), 20 deletions(-)
rename readline8.0-001 => readline80-001 (100%)
create mode 100644 readline80-002
create mode 100644 readline80-003
create mode 100644 readline80-004
diff --git a/readline.spec b/readline.spec
index bb70878..43b4b42 100644
--- a/readline.spec
+++ b/readline.spec
@@ -1,3 +1,8 @@
+# Readline is used by various wine dependencies
+%ifarch %{x86_64}
+%bcond_without compat32
+%endif
+
%define major 8
%define libname %mklibname %{name} %{major}
%define libhist %mklibname history %{major}
@@ -8,9 +13,18 @@
%define libname7 %mklibname %{name} 7
%define libhist7 %mklibname history 7
%define devname %mklibname %{name} -d
-%define patchlevel 1
+%define lib32name %mklib32name %{name} %{major}
+%define lib32hist %mklib32name history %{major}
+%define lib32name6 %mklib32name %{name} 6
+%define lib32hist6 %mklib32name history 6
+%define lib32name7 %mklib32name %{name} 7
+%define lib32hist7 %mklib32name history 7
+%define dev32name %mklib32name %{name} -d
+%define patchlevel 4
%define pre %{nil}
+%global optflags %{optflags} -Oz
+
Summary: Library for reading lines from a terminal
Name: readline
Version: 8.0
@@ -18,7 +32,7 @@ Version: 8.0
Release: 0.%{pre}.1
Source0: ftp://ftp.cwru.edu/pub/bash/%{name}-%{version}-%{pre}.tar.gz
%else
-Release: 2
+Release: 5
Source0: ftp://ftp.gnu.org/gnu/readline/%{name}-%{version}.tar.gz
%endif
License: GPLv2+
@@ -26,7 +40,7 @@ Group: System/Libraries
Url: http://tiswww.case.edu/php/chet/readline/rltop.html
# Upstream patches
%if 0%{patchlevel}
-%(for i in $(seq 1 %{patchlevel}); do echo Patch$i: ftp://ftp.gnu.org/pub/gnu/readline/readline-%{version}-patches/readline$(echo %{version} |sed -e 's,\\.,,g')-$(echo 000$i |rev |cut -b1-3 |rev); done)
+%(for i in $(seq 1 %{patchlevel}); do echo Patch$i: ftp://ftp.gnu.org/pub/gnu/readline/readline-%{version}-patches/readline$(echo %{version} |sed -e 's,\.,,g')-$(echo 000$i |rev |cut -b1-3 |rev); done)
%endif
Patch1000: readline-4.3-no_rpath.patch
Patch1003: readline-4.1-outdated.patch
@@ -34,6 +48,9 @@ Patch1004: rl-header.patch
Patch1005: rl-attribute.patch
Patch1008: readline-6.2-fix-missing-linkage.patch
BuildRequires: ncurses-devel
+%if %{with compat32}
+BuildRequires: devel(libncurses)
+%endif
%description
The "readline" library will read a line from the terminal and return it,
@@ -47,8 +64,8 @@ Group: System/Libraries
Provides: %{name} = %{EVRD}
Conflicts: %{_lib}history < 6.2-13
Obsoletes: %{_lib}history < 6.2-13
-%rename %{libname6}
-%rename %{libname7}
+%rename %{libname6}
+%rename %{libname7}
%if "%{_lib}" == "lib64"
Provides: libreadline.so.6()(64bit)
Provides: libreadline.so.7()(64bit)
@@ -68,8 +85,8 @@ Summary: Shared libhistory library for readline
Group: System/Libraries
Conflicts: %{_lib}readline6 < 6.2-13
Obsoletes: %{_lib}readline6 < 6.2-13
-%rename %{libhist6}
-%rename %{libhist7}
+%rename %{libhist6}
+%rename %{libhist7}
%if "%{_lib}" == "lib64"
Provides: libhistory.so.6()(64bit)
Provides: libhistory.so.7()(64bit)
@@ -107,6 +124,45 @@ line returned is allocated with malloc(3), so the caller must free it when
finished. The line returned has the final newline removed, so only the
text of the line remains.
+%if %{with compat32}
+%package -n %{lib32name}
+Summary: Shared libreadline library for readline (32-bit)
+Group: System/Libraries
+%rename %{lib32name6}
+%rename %{lib32name7}
+Provides: libreadline.so.6
+Provides: libreadline.so.7
+
+%description -n %{lib32name}
+This package contains the library needed to run programs dynamically
+linked to readline.
+
+%package -n %{lib32hist}
+Summary: Shared libhistory library for readline (32-bit)
+Group: System/Libraries
+%rename %{lib32hist6}
+%rename %{lib32hist7}
+Provides: libhistory.so.6
+Provides: libhistory.so.7
+
+%description -n %{lib32hist}
+This package contains the libhistory library from readline.
+
+%package -n %{dev32name}
+Summary: Files for developing programs that use the readline library (32-bit)
+Group: Development/C
+Requires: %{devname} = %{EVRD}
+Requires: %{lib32name} = %{EVRD}
+Requires: %{lib32hist} = %{EVRD}
+
+%description -n %{dev32name}
+The "readline" library will read a line from the terminal and return it,
+using prompt as a prompt. If prompt is null, no prompt is issued. The
+line returned is allocated with malloc(3), so the caller must free it when
+finished. The line returned has the final newline removed, so only the
+text of the line remains.
+%endif
+
%prep
%if "%{pre}" != ""
%setup -qn %{name}-%{version}-%{pre}
@@ -129,35 +185,60 @@ find . -name "*.orig" |xargs rm
sed -e 's#/usr/local#%{_prefix}#g' -i doc/texi2html
libtoolize --copy --force
-%build
+export CONFIGURE_TOP="$(pwd)"
+
+%if %{with compat32}
+mkdir build32
+cd build32
+%configure32 \
+ --enable-static=no \
+ --with-curses \
+ --enable-multibyte
+cd ..
+%endif
+
+mkdir build
+cd build
%configure \
--enable-static=no \
--with-curses \
--enable-multibyte
-%make_build
+%build
+%if %{with compat32}
+%make_build -C build32
+%endif
+%make_build -C build
%install
mkdir -p %{buildroot}%{_libdir}/pkgconfig
-%make_install
+%if %{with compat32}
+mkdir -p %{buildroot}%{_prefix}/lib/pkgconfig
+%make_install -C build32
+%endif
+%make_install -C build
if [ -e %{buildroot}%{_includedir}/readline/rlmbutil.h ]; then
- echo "rlmbutil.h is installed now -- please remove the workaround from the spec"
- exit 1
+ printf '%ss\n' "rlmbutil.h is installed now -- please remove the workaround from the spec"
+ exit 1
else
- cp rlmbutil.h %{buildroot}%{_includedir}/readline/
+ cp rlmbutil.h %{buildroot}%{_includedir}/readline/
fi
# put all libs in /lib because some package needs it
# before /usr is mounted
install -d %{buildroot}/%{_lib}
for l in libhistory.so libreadline.so; do
- rm %{buildroot}%{_libdir}/${l}
- mv %{buildroot}%{_libdir}/${l}.%{major}* %{buildroot}/%{_lib}
- ln -sr %{buildroot}/%{_lib}/${l}.%{major}.* %{buildroot}%{_libdir}/${l}
- # Unfortunately, readline uses version numbers as sonames,
- # even if the ABI remains stable...
- ln -s ${l}.%{major} %{buildroot}/%{_lib}/${l}.6
- ln -s ${l}.%{major} %{buildroot}/%{_lib}/${l}.7
+ rm %{buildroot}%{_libdir}/${l}
+ mv %{buildroot}%{_libdir}/${l}.%{major}* %{buildroot}/%{_lib}
+ ln -sr %{buildroot}/%{_lib}/${l}.%{major}.* %{buildroot}%{_libdir}/${l}
+# Unfortunately, readline uses version numbers as sonames,
+# even if the ABI remains stable...
+ ln -s ${l}.%{major} %{buildroot}/%{_lib}/${l}.6
+ ln -s ${l}.%{major} %{buildroot}/%{_lib}/${l}.7
+%if %{with compat32}
+ ln -s ${l}.%{major} %{buildroot}%{_prefix}/lib/${l}.6
+ ln -s ${l}.%{major} %{buildroot}%{_prefix}/lib/${l}.7
+%endif
done
rm -rf %{buildroot}%{_docdir}/readline/{CHANGES,INSTALL,README}
@@ -185,3 +266,20 @@ rm -rf %{buildroot}%{_docdir}/readline/{CHANGES,INSTALL,README}
%{_libdir}/libhistory.so
%{_libdir}/libreadline.so
%{_libdir}/pkgconfig/readline.pc
+
+%if %{with compat32}
+%files -n %{lib32hist}
+%{_prefix}/lib/libhistory.so.%{major}*
+%{_prefix}/lib/libhistory.so.7
+%{_prefix}/lib/libhistory.so.6
+
+%files -n %{lib32name}
+%{_prefix}/lib/libreadline.so.%{major}*
+%{_prefix}/lib/libreadline.so.7
+%{_prefix}/lib/libreadline.so.6
+
+%files -n %{dev32name}
+%{_prefix}/lib/libhistory.so
+%{_prefix}/lib/libreadline.so
+%{_prefix}/lib/pkgconfig/readline.pc
+%endif
diff --git a/readline8.0-001 b/readline80-001
similarity index 100%
rename from readline8.0-001
rename to readline80-001
diff --git a/readline80-002 b/readline80-002
new file mode 100644
index 0000000..7923d9d
--- /dev/null
+++ b/readline80-002
@@ -0,0 +1,60 @@
+ READLINE PATCH REPORT
+ =====================
+
+Readline-Release: 8.0
+Patch-ID: readline80-002
+
+Bug-Reported-by: lessbug@qq.com
+Bug-Reference-ID: <tencent_6AA531D9A5CC4121D86BD5CDA2E0DA98C605@qq.com>
+Bug-Reference-URL:
+
+Bug-Description:
+
+When using previous-history to go back beyond the beginning of the history list,
+it's possible to move to an incorrect partial line.
+
+Patch (apply with `patch -p0'):
+
+*** ../readline-8.0-patched/misc.c 2017-07-07 17:30:12.000000000 -0400
+--- misc.c 2019-05-16 11:43:46.000000000 -0400
+***************
+*** 577,580 ****
+--- 590,594 ----
+ {
+ HIST_ENTRY *old_temp, *temp;
++ int had_saved_line;
+
+ if (count < 0)
+***************
+*** 589,592 ****
+--- 603,607 ----
+
+ /* If we don't have a line saved, then save this one. */
++ had_saved_line = _rl_saved_line_for_history != 0;
+ rl_maybe_save_line ();
+
+***************
+*** 612,616 ****
+ if (temp == 0)
+ {
+! rl_maybe_unsave_line ();
+ rl_ding ();
+ }
+--- 627,632 ----
+ if (temp == 0)
+ {
+! if (had_saved_line == 0)
+! _rl_free_saved_history_line ();
+ rl_ding ();
+ }
+*** ../readline-8.0/patchlevel 2013-11-15 08:11:11.000000000 -0500
+--- patchlevel 2014-03-21 08:28:40.000000000 -0400
+***************
+*** 1,3 ****
+ # Do not edit -- exists only for use by patch
+
+! 1
+--- 1,3 ----
+ # Do not edit -- exists only for use by patch
+
+! 2
diff --git a/readline80-003 b/readline80-003
new file mode 100644
index 0000000..b371458
--- /dev/null
+++ b/readline80-003
@@ -0,0 +1,69 @@
+ READLINE PATCH REPORT
+ =====================
+
+Readline-Release: 8.0
+Patch-ID: readline80-003
+
+Bug-Reported-by: HIROSE Masaaki <hirose31@gmail.com>
+Bug-Reference-ID: <CAGSOfA-RqiTe=+GsXsDKyZrrMWH4bDbXgMVVegMa6OjqC5xbnQ@mail.gmail.com>
+Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2019-05/msg00038.html
+
+Bug-Description:
+
+Reading history entries with timestamps can result in history entries joined
+by linefeeds.
+
+Patch (apply with `patch -p0'):
+
+*** ../readline-8.0-patched/histfile.c 2018-06-11 09:14:52.000000000 -0400
+--- histfile.c 2019-05-16 15:55:57.000000000 -0400
+***************
+*** 370,376 ****
+
+ has_timestamps = HIST_TIMESTAMP_START (buffer);
+! history_multiline_entries += has_timestamps && history_write_timestamps;
+
+ /* Skip lines until we are at FROM. */
+ for (line_start = line_end = buffer; line_end < bufend && current_line < from; line_end++)
+ if (*line_end == '\n')
+--- 370,378 ----
+
+ has_timestamps = HIST_TIMESTAMP_START (buffer);
+! history_multiline_entries += has_timestamps && history_write_timestamps;
+
+ /* Skip lines until we are at FROM. */
++ if (has_timestamps)
++ last_ts = buffer;
+ for (line_start = line_end = buffer; line_end < bufend && current_line < from; line_end++)
+ if (*line_end == '\n')
+***************
+*** 381,385 ****
+--- 383,398 ----
+ if (HIST_TIMESTAMP_START(p) == 0)
+ current_line++;
++ else
++ last_ts = p;
+ line_start = p;
++ /* If we are at the last line (current_line == from) but we have
++ timestamps (has_timestamps), then line_start points to the
++ text of the last command, and we need to skip to its end. */
++ if (current_line >= from && has_timestamps)
++ {
++ for (line_end = p; line_end < bufend && *line_end != '\n'; line_end++)
++ ;
++ line_start = (*line_end == '\n') ? line_end + 1 : line_end;
++ }
+ }
+
+
+*** ../readline-8.0/patchlevel 2013-11-15 08:11:11.000000000 -0500
+--- patchlevel 2014-03-21 08:28:40.000000000 -0400
+***************
+*** 1,3 ****
+ # Do not edit -- exists only for use by patch
+
+! 2
+--- 1,3 ----
+ # Do not edit -- exists only for use by patch
+
+! 3
diff --git a/readline80-004 b/readline80-004
new file mode 100644
index 0000000..8a40ebe
--- /dev/null
+++ b/readline80-004
@@ -0,0 +1,47 @@
+ READLINE PATCH REPORT
+ =====================
+
+Readline-Release: 8.0
+Patch-ID: readline80-004
+
+Bug-Reported-by: auroralanes@protonmail.ch
+Bug-Reference-ID: <WikEDKluAyoha9IDLp83rbN7_Uinr2rrpvSV_z4wmt9qur9piN-FNOn17P0cAizEVah1Fvc9d641vIIWX_7SC6EUTz0CatnOH-C-UK3rPYc=@protonmail.ch>
+Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2020-01/msg00008.html
+
+Bug-Description:
+
+If writing the history file fails, and renaming the backup history file fails,
+it's possible for readline's history code to return the wrong error to its
+caller.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-20200124/lib/readline/histfile.c 2019-11-19 10:31:58.000000000 -0500
+--- histfile.c 2020-02-01 16:28:29.000000000 -0500
+***************
+*** 621,624 ****
+--- 621,625 ----
+ if (rv != 0)
+ {
++ rv = errno;
+ if (tempname)
+ unlink (tempname);
+***************
+*** 768,771 ****
+--- 769,773 ----
+ if (rv != 0)
+ {
++ rv = errno;
+ if (tempname)
+ unlink (tempname);
+*** ../readline-8.0/patchlevel 2013-11-15 08:11:11.000000000 -0500
+--- patchlevel 2014-03-21 08:28:40.000000000 -0400
+***************
+*** 1,3 ****
+ # Do not edit -- exists only for use by patch
+
+! 3
+--- 1,3 ----
+ # Do not edit -- exists only for use by patch
+
+! 4