Accepting request 821442 from Base:System

- add upstream keyring and verify source signature
- change custom handling of official upstream patches to standard,
  and verify signatures on official patches (forwarded request 821348 from AndreasStieger)

OBS-URL: https://build.opensuse.org/request/show/821442
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/readline?expand=0&rev=8
This commit is contained in:
Dominique Leuenberger 2020-08-02 10:27:26 +00:00 committed by Git OBS Bridge
commit 50a33a3730
13 changed files with 312 additions and 66 deletions

View File

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

BIN
readline-8.0.tar.gz.sig Normal file

Binary file not shown.

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Thu Jul 16 19:13:54 UTC 2020 - Andreas Stieger <andreas.stieger@gmx.de>
- add upstream keyring and verify source signature
- change custom handling of official upstream patches to standard,
and verify signatures on official patches
------------------------------------------------------------------- -------------------------------------------------------------------
Thu Feb 13 11:10:31 UTC 2020 - Dr. Werner Fink <werner@suse.de> Thu Feb 13 11:10:31 UTC 2020 - Dr. Werner Fink <werner@suse.de>

24
readline.keyring Normal file
View File

@ -0,0 +1,24 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.4 (Darwin)
mQGiBEEOsGwRBACFa0A1oa71HSZLWxAx0svXzhOZNQZOzqHmSuGOG92jIpQpr8Dp
vgRh40YpAwdcXb8QG1J5yGAKeevNE1zCFaA725vGSdHUyypHouV0xoWwukYO6qly
yX+2BZU+okBUqoWQkoWxiYaCSfzB2Ln7pmdys1fJhcgBKf3VjWCjd2XJTwCgoFJO
wyBFJdugjfwjSoRSwDOIMf0D/iQKqlWhIO1LGpMrGX0il0/x4zj0NAcSwAk7LaPZ
bN4UPjn5pqGEHBlf1+xDDQCkAoZ/VqESGZragl4VqJfxBr29Ag0UDvNbUbXoxQsA
Rdero1M8GiAIRc50hj7HXFoERwenbNDJL86GPLAQOTGOCa4W2o29nFfFjQrsrrYH
zVtyA/9oyKvTeEMJ7NA3VJdWcmn7gOu0FxEmSNhSoV1T4vP21Wf7f5niCCRKQLNy
Uy0wEApQi4tSysdz+AbgAc0b/bHYVzIf2uO2lIEZQNNt+3g2bmXgloWmW5fsm/di
50Gm1l1Na63d3RZ00SeFQos6WEwLUHEB0yp6KXluXLLIZitEJLQaQ2hldCBSYW1l
eSA8Y2hldEBjd3J1LmVkdT6IXgQTEQIAHgUCQQ6wbAIbAwYLCQgHAwIDFQIDAxYC
AQIeAQIXgAAKCRC7WGnwZOp0q87NAJ99FEzFvDdYzqCczXF6KKXi7YN5OACfacDY
soZcnnsy7EjBZL0zwGwb/sG5AQ0EQQ6wbxAEAJCukwDigRDPhAuI+lf+6P64lWan
IFOXIndqhvU13cDbQ/Wt5LwPzm2QTvd7F+fcHOgZ8KOFScbDpjJaRqwIybMTcIN0
B2pBLX/C10W1aY+cUrXZgXUGVISEMmpaP9v02auToo7XXVEHC+XLO9IU7/xaU98F
L69l6/K4xeNSBRM/AAMHA/wNAmRBpcyK0+VggZ5esQaIP/LyolAm2qwcmrd3dZi+
g24s7yjV0EUwvRP7xHRDQFgkAo6++QbuecU/J90lxrVnQwucZmfz9zgWDkT/MpfB
/CNRSKLFjhYq2yHmHWT6vEjw9Ry/hF6Pc0oh1a62USdfaKAiim0nVxxQmPmiRvtC
mYhJBBgRAgAJBQJBDrBvAhsMAAoJELtYafBk6nSr43AAn2ZZFQg8Gs/zUzvXMt7e
vaFqVTzcAJ0cHtKpP1i/4H4R9+OsYeQdxxWxTQ==
=2MjR
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -16,51 +16,61 @@
# #
%define rl_major 8
Name: readline Name: readline
BuildRequires: autoconf
BuildRequires: fdupes
%if %suse_version > 1220
BuildRequires: makeinfo
%endif
BuildRequires: ncurses-devel
BuildRequires: patchutils
BuildRequires: pkg-config
BuildRequires: sed
%define rextend %nil
Version: 8.0 Version: 8.0
Release: 0 Release: 0
Summary: The readline library Summary: The readline library
License: GPL-3.0-or-later License: GPL-3.0-or-later
Group: Development/Libraries/C and C++ Group: Development/Libraries/C and C++
URL: http://www.gnu.org/software/readline/ URL: https://www.gnu.org/software/readline/
# Git: http://git.savannah.gnu.org/cgit/bash.git # Git: http://git.savannah.gnu.org/cgit/bash.git
Source0: ftp://ftp.gnu.org/gnu/readline/readline-%{version}%{rextend}.tar.gz Source0: ftp://ftp.gnu.org/gnu/readline/readline-%{version}.tar.gz
Source1: readline-%{version}-patches.tar.bz2 Source1: ftp://ftp.gnu.org/gnu/readline/readline-%{version}.tar.gz.sig
Source2: baselibs.conf Source2: baselibs.conf
Patch0: readline-%{version}.dif Source4: https://tiswww.case.edu/php/chet/gpgkey.asc#/%{name}.keyring
Patch1: readline-6.3-input.dif # signatures for official patches
Patch2: readline-5.2-conf.patch Source101: ftp://ftp.gnu.org/gnu/readline/readline-%{version}-patches/readline80-001.sig
Patch3: readline-6.2-metamode.patch Source102: ftp://ftp.gnu.org/gnu/readline/readline-%{version}-patches/readline80-002.sig
Patch5: readline-6.2-xmalloc.dif Source103: ftp://ftp.gnu.org/gnu/readline/readline-%{version}-patches/readline80-003.sig
Patch6: readline-6.3-destdir.patch Source104: ftp://ftp.gnu.org/gnu/readline/readline-%{version}-patches/readline80-004.sig
Patch7: readline-6.3-rltrace.patch # official patches
Patch8: readline-7.0-screen.patch Patch101: ftp://ftp.gnu.org/gnu/readline/readline-%{version}-patches/readline80-001
%{expand: %%global rl_major %(echo %{version} | sed -r 's/.[0-9]+//g')} Patch102: ftp://ftp.gnu.org/gnu/readline/readline-%{version}-patches/readline80-002
Patch103: ftp://ftp.gnu.org/gnu/readline/readline-%{version}-patches/readline80-003
Patch104: ftp://ftp.gnu.org/gnu/readline/readline-%{version}-patches/readline80-004
# local patches
Patch200: readline-%{version}.dif
Patch201: readline-6.3-input.dif
Patch202: readline-5.2-conf.patch
Patch203: readline-6.2-metamode.patch
Patch205: readline-6.2-xmalloc.dif
Patch206: readline-6.3-destdir.patch
Patch207: readline-6.3-rltrace.patch
Patch208: readline-7.0-screen.patch
BuildRequires: autoconf
BuildRequires: fdupes
BuildRequires: ncurses-devel
BuildRequires: pkgconfig
#
%if 0%{?suse_version} > 1220
BuildRequires: makeinfo
%endif
%description %description
The readline library is used by the Bourne Again Shell (bash, the The readline library is used by the Bourne Again Shell (bash, the
standard command interpreter) for easy editing of command lines. This standard command interpreter) for easy editing of command lines. This
includes history and search functionality. includes history and search functionality.
%package -n libreadline8 %package -n libreadline%{rl_major}
Summary: The Readline Library Summary: The Readline Library
Group: System/Libraries Group: System/Libraries
Provides: bash:/%{_lib}/libreadline.so.%{rl_major}
Suggests: readline-doc = %{version} Suggests: readline-doc = %{version}
Provides: readline = %{version} Provides: bash:/%{_lib}/libreadline.so.%{rl_major}
Provides: readline = %{version}
Obsoletes: readline <= 6.3 Obsoletes: readline <= 6.3
%description -n libreadline8 %description -n libreadline%{rl_major}
The readline library is used by the Bourne Again Shell (bash, the The readline library is used by the Bourne Again Shell (bash, the
standard command interpreter) for easy editing of command lines. This standard command interpreter) for easy editing of command lines. This
includes history and search functionality. includes history and search functionality.
@ -68,7 +78,7 @@ includes history and search functionality.
%package devel %package devel
Summary: Development files for readline Summary: Development files for readline
Group: Development/Libraries/C and C++ Group: Development/Libraries/C and C++
Requires: libreadline8 = %{version} Requires: libreadline%{rl_major} = %{version}
Requires: ncurses-devel Requires: ncurses-devel
Recommends: readline-doc = %{version} Recommends: readline-doc = %{version}
@ -88,9 +98,10 @@ This package contains the static library for the readline library.
%package doc %package doc
Summary: Documentation how to Use and Program with the Readline Library Summary: Documentation how to Use and Program with the Readline Library
Group: Documentation/Other Group: Documentation/Other
Requires(post): %{install_info_prereq}
Requires(preun): %{install_info_prereq}
Supplements: (libreadline%{rl_major} and patterns-base-documentation)
Provides: readline:%{_infodir}/readline.info.gz Provides: readline:%{_infodir}/readline.info.gz
Supplements: packageand(libreadline8:patterns-base-documentation)
PreReq: %install_info_prereq
BuildArch: noarch BuildArch: noarch
%description doc %description doc
@ -98,27 +109,21 @@ This package contains the documentation for using the readline library
as well as programming with the interface of the readline library. as well as programming with the interface of the readline library.
%prep %prep
%setup -q -n readline-%{version}%{rextend} -b1 %setup -q
for patch in ../readline-%{version}-patches/*; do # official patches
test -e $patch || break %patch101 -b .001
let level=0 || true %patch102 -b .002
file=$(lsdiff --files=1 $patch) %patch103 -b .003
if test ! -e $file ; then %patch104 -b .004
file=${file#*/} # local patches
let level++ || true %patch201 -p2 -b .zerotty
fi %patch202 -p2 -b .conf
sed -ri '/^\*\*\* \.\./{ s@\.\./readline-%{version}[^/]*/@@ }' $patch %patch203 -p2 -b .metamode
echo Patch $patch %patch205 -b .xm
patch -s -p$level < $patch %patch206 -b .destdir
done %patch207 -p2 -b .tmp
%patch1 -p2 -b .zerotty %patch208 -p2 -b .screen
%patch2 -p2 -b .conf %patch200 -b .0
%patch3 -p2 -b .metamode
%patch5 -p0 -b .xm
%patch6 -p0 -b .destdir
%patch7 -p2 -b .tmp
%patch8 -p2 -b .screen
%patch0 -p0 -b .0
%build %build
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects %global _lto_cflags %{_lto_cflags} -ffat-lto-objects
@ -193,6 +198,7 @@ CC_FOR_BUILD="$CC"
CFLAGS_FOR_BUILD="$CFLAGS" CFLAGS_FOR_BUILD="$CFLAGS"
LDFLAGS_FOR_BUILD="$LDFLAGS" LDFLAGS_FOR_BUILD="$LDFLAGS"
export CC_FOR_BUILD CFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD CFLAGS LDFLAGS CC export CC_FOR_BUILD CFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD CFLAGS LDFLAGS CC
# FIXME: you should use the %%configure macro
./configure --build=%{_target_cpu}-suse-linux \ ./configure --build=%{_target_cpu}-suse-linux \
--enable-static \ --enable-static \
--enable-shared \ --enable-shared \
@ -203,8 +209,8 @@ export CC_FOR_BUILD CFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD CFLAGS LDFLAGS CC
--infodir=%{_infodir} \ --infodir=%{_infodir} \
--docdir=%{_docdir}/%{name} \ --docdir=%{_docdir}/%{name} \
--libdir=%{_libdir} --libdir=%{_libdir}
make %make_build
make documentation %make_build documentation
%install %install
%make_install htmldir=%{_docdir}/%{name} installdir=%{_docdir}/%{name}/examples \ %make_install htmldir=%{_docdir}/%{name} installdir=%{_docdir}/%{name}/examples \
@ -219,15 +225,13 @@ mkdir -p %{buildroot}/%{_libdir}/pkgconfig
ln -sf /%{_lib}/libhistory.so.%{version} %{buildroot}/%{_libdir}/libhistory.so ln -sf /%{_lib}/libhistory.so.%{version} %{buildroot}/%{_libdir}/libhistory.so
ln -sf /%{_lib}/libreadline.so.%{version} %{buildroot}/%{_libdir}/libreadline.so ln -sf /%{_lib}/libreadline.so.%{version} %{buildroot}/%{_libdir}/libreadline.so
mv -vf %{buildroot}/%{_lib}/libhistory.a %{buildroot}/%{_libdir}/libhistory.a mv -vf %{buildroot}/%{_lib}/libhistory.a %{buildroot}/%{_libdir}/libhistory.a
mv -vf %{buildroot}/%{_lib}/libreadline.a %{buildroot}/%{_libdir}/libreadline.a mv -vf %{buildroot}/%{_lib}/libreadline.a %{buildroot}/%{_libdir}/libreadline.a
mv -vf %{buildroot}/%{_lib}/pkgconfig/readline.pc \ mv -vf %{buildroot}/%{_lib}/pkgconfig/readline.pc \
%{buildroot}/%{_libdir}/pkgconfig/readline.pc %{buildroot}/%{_libdir}/pkgconfig/readline.pc
rm -vrf %{buildroot}%{_datadir}/readline/ rm -vrf %{buildroot}%{_datadir}/readline/
%post -n libreadline8 -p /sbin/ldconfig %post -n libreadline%{rl_major} -p /sbin/ldconfig
%postun -n libreadline%{rl_major} -p /sbin/ldconfig
%postun -n libreadline8 -p /sbin/ldconfig
%post doc %post doc
%install_info --info-dir=%{_infodir} %{_infodir}/history.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/history.info.gz
%install_info --info-dir=%{_infodir} %{_infodir}/readline.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/readline.info.gz
@ -238,7 +242,7 @@ rm -vrf %{buildroot}%{_datadir}/readline/
%install_info_delete --info-dir=%{_infodir} %{_infodir}/readline.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/readline.info.gz
%install_info_delete --info-dir=%{_infodir} %{_infodir}/rluserman.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/rluserman.info.gz
%files -n libreadline8 %files -n libreadline%{rl_major}
%license COPYING %license COPYING
/%{_lib}/libhistory.so.%{rl_major} /%{_lib}/libhistory.so.%{rl_major}
/%{_lib}/libhistory.so.%{version} /%{_lib}/libhistory.so.%{version}
@ -256,11 +260,11 @@ rm -vrf %{buildroot}%{_datadir}/readline/
%{_libdir}/libreadline.a %{_libdir}/libreadline.a
%files doc %files doc
%doc %{_infodir}/history.info* %{_infodir}/history.info%{?ext_info}
%doc %{_infodir}/readline.info* %{_infodir}/readline.info%{?ext_info}
%doc %{_infodir}/rluserman.info* %{_infodir}/rluserman.info%{?ext_info}
%doc %{_mandir}/man3/history.3* %{_mandir}/man3/history.3%{?ext_man}
%doc %{_mandir}/man3/readline.3* %{_mandir}/man3/readline.3%{?ext_man}
%doc %{_docdir}/%{name}/ %doc %{_docdir}/%{name}/
%changelog %changelog

38
readline80-001 Normal file
View File

@ -0,0 +1,38 @@
READLINE PATCH REPORT
=====================
Readline-Release: 8.0
Patch-ID: readline80-001
Bug-Reported-by: chet.ramey@case.edu
Bug-Reference-ID:
Bug-Reference-URL:
Bug-Description:
The history file reading code doesn't close the file descriptor open to
the history file when it encounters a zero-length file.
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
***************
*** 306,309 ****
--- 312,316 ----
{
free (input);
+ close (file);
return 0; /* don't waste time if we don't have to */
}
*** ../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
! 0
--- 1,3 ----
# Do not edit -- exists only for use by patch
! 1

BIN
readline80-001.sig Normal file

Binary file not shown.

60
readline80-002 Normal file
View File

@ -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

BIN
readline80-002.sig Normal file

Binary file not shown.

69
readline80-003 Normal file
View File

@ -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

BIN
readline80-003.sig Normal file

Binary file not shown.

47
readline80-004 Normal file
View File

@ -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

BIN
readline80-004.sig Normal file

Binary file not shown.