sys-libs/ncurses: update to 6.2_p20210619

Update sys-libs/ncurses to 6.2_p20210619, mainly to address
CVE-2021-39537.
This commit is contained in:
Dongsu Park 2021-10-28 12:14:53 +02:00
parent 49eaaefc82
commit da0f8fde32
6 changed files with 61 additions and 149 deletions

View File

@ -1 +1,2 @@
DIST ncurses-6.2-20210619-patch.sh.bz2 836967 BLAKE2B f210bf25c33f11d67e54a6f416aae75f0a976880ea543408780fd3a8dc992ee8d9999bf15c925c79504be0f30ade4bbfaed763abedd2b2d6b35de65b353a6314 SHA512 b8392bf6c0b7570766ae31a043df311660201265dfe3e2e49425b1e2aa08c72030b5f5b6c7871532897596262c88a7192e3ff2adfdc618f1b9c13c22c373eeb3
DIST ncurses-6.2.tar.gz 3425862 BLAKE2B 6680cd7a369a4cb8234442a70869c283f0db6db9d7da1da2a7a5c519eb862a2c9b9411957d99f9ebb5089cad00b42e1ca6bc0784327461113df2eeaec695913c SHA512 4c1333dcc30e858e8a9525d4b9aefb60000cfc727bc4a1062bace06ffc4639ad9f6e54f6bdda0e3a0e5ea14de995f96b52b3327d9ec633608792c99a1e8d840d

View File

@ -1,46 +0,0 @@
https://bugs.gentoo.org/545114
extracted from the upstream change (which had many unrelated commits in one)
From 97bb4678dc03e753290b39bbff30ba2825df9517 Mon Sep 17 00:00:00 2001
From: "Thomas E. Dickey" <dickey@invisible-island.net>
Date: Sun, 7 Dec 2014 03:10:09 +0000
Subject: [PATCH] ncurses 5.9 - patch 20141206
+ modify MKlib_gen.sh to work around change in development version of
gcc introduced here:
https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02185.html
https://gcc.gnu.org/ml/gcc-patches/2014-07/msg00236.html
(reports by Marcus Shawcroft, Maohui Lei).
diff --git a/ncurses/base/MKlib_gen.sh b/ncurses/base/MKlib_gen.sh
index d8cc3c9..b91398c 100755
--- a/ncurses/base/MKlib_gen.sh
+++ b/ncurses/base/MKlib_gen.sh
@@ -474,11 +474,22 @@ sed -n -f $ED1 \
-e 's/gen_$//' \
-e 's/ / /g' >>$TMP
+cat >$ED1 <<EOF
+s/ / /g
+s/^ //
+s/ $//
+s/P_NCURSES_BOOL/NCURSES_BOOL/g
+EOF
+
+# A patch discussed here:
+# https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02185.html
+# introduces spurious #line markers. Work around that by ignoring the system's
+# attempt to define "bool" and using our own symbol here.
+sed -e 's/bool/P_NCURSES_BOOL/g' $TMP > $ED2
+cat $ED2 >$TMP
+
$preprocessor $TMP 2>/dev/null \
-| sed \
- -e 's/ / /g' \
- -e 's/^ //' \
- -e 's/_Bool/NCURSES_BOOL/g' \
+| sed -f $ED1 \
| $AWK -f $AW2 \
| sed -f $ED3 \
| sed \

View File

@ -1,40 +0,0 @@
From be554be06475b36da2f69aabfd873ad55f7ef95c Mon Sep 17 00:00:00 2001
From: Lars Wendler <polynomial-c@gentoo.org>
Date: Thu, 13 Feb 2020 11:51:09 +0100
Subject: [PATCH] Don't bleed user LDFLAGS into Libs
Signed-off-by: Lars Wendler <polynomial-c@gentoo.org>
---
misc/gen-pkgconfig.in | 2 +-
misc/ncurses-config.in | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/misc/gen-pkgconfig.in b/misc/gen-pkgconfig.in
index 8f00b824..009d2156 100644
--- a/misc/gen-pkgconfig.in
+++ b/misc/gen-pkgconfig.in
@@ -80,7 +80,7 @@ if [ "$includedir" != "/usr/include" ]; then
fi
lib_flags=
-for opt in -L$libdir @LDFLAGS@ @EXTRA_LDFLAGS@ @LIBS@
+for opt in -L$libdir @LIBS@
do
case $opt in
-l*) # LIBS is handled specially below
diff --git a/misc/ncurses-config.in b/misc/ncurses-config.in
index 7f8ba697..2f1915cd 100644
--- a/misc/ncurses-config.in
+++ b/misc/ncurses-config.in
@@ -101,7 +101,7 @@ fi
# There is no portable way to find the list of standard library directories.
# Require a POSIX shell anyway, to keep this simple.
lib_flags=
-for opt in -L$libdir @LDFLAGS@ @EXTRA_LDFLAGS@ $LIBS
+for opt in -L$libdir $LIBS
do
case $opt in
-specs*) # ignore linker specs-files which were used to build library
--
2.25.0

View File

@ -14,22 +14,22 @@ one; it should mirror what the first patch tries to achieve and works for me.
--- a/configure
+++ b/configure
@@ -2938,10 +2938,6 @@
echo "$as_me:2938: checking if $CXX works" >&5
@@ -3459,10 +3459,6 @@
echo "$as_me:3459: checking if $CXX works" >&5
echo $ECHO_N "checking if $CXX works... $ECHO_C" >&6
- save_CPPFLAGS="$CPPFLAGS"
- eval cf_includedir=${includedir}
- CPPFLAGS="$CPPFLAGS -I${cf_includedir}"
-
cat >conftest.$ac_ext <<_ACEOF
#line 2946 "configure"
cat >"conftest.$ac_ext" <<_ACEOF
#line 3467 "configure"
#include "confdefs.h"
@@ -2978,7 +2974,6 @@
@@ -3499,7 +3495,6 @@
cf_cxx_works=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
rm -f "conftest.$ac_objext" "conftest.$ac_ext"
- CPPFLAGS="$save_CPPFLAGS"
echo "$as_me:2983: result: $cf_cxx_works" >&5
echo "$as_me:3504: result: $cf_cxx_works" >&5
echo "${ECHO_T}$cf_cxx_works" >&6

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<maintainer type="project">
<email>base-system@gentoo.org</email>
<name>Gentoo Base System</name>
</maintainer>
<use>
</maintainer>
<use>
<flag name="ada">Add bindings for the ADA programming language</flag>
<flag name="tinfo">
Build curses library (libncurses) sep from the low-level terminfo
@ -13,8 +13,9 @@
it is binary compatible in either mode
</flag>
<flag name="trace">Enable test trace() support in ncurses calls</flag>
</use>
<upstream>
</use>
<upstream>
<changelog>https://invisible-island.net/ncurses/NEWS.html</changelog>
<remote-id type="cpe">cpe:/a:gnu:ncurses</remote-id>
</upstream>
</upstream>
</pkgmetadata>

View File

@ -3,7 +3,7 @@
EAPI=7
inherit flag-o-matic toolchain-funcs multilib-minimal preserve-libs usr-ldscript
inherit toolchain-funcs multilib multilib-minimal preserve-libs usr-ldscript
MY_PV="${PV:0:3}"
MY_P="${PN}-${MY_PV}"
@ -14,13 +14,14 @@ SRC_URI="mirror://gnu/ncurses/${MY_P}.tar.gz"
if [[ "${PV}" == *_p* ]] ; then
SRC_URI+=" ftp://ftp.invisible-island.net/${PN}/${PV/_p*}/${P/_p/-}-patch.sh.bz2
https://invisible-mirror.net/archives/${PN}/${PV/_p*}/${P/_p/-}-patch.sh.bz2"
#SRC_URI+=" https://dev.gentoo.org/~polynomial-c/dist/${P}.patch.xz"
fi
LICENSE="MIT"
# The subslot reflects the SONAME.
SLOT="0/6"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
IUSE="ada +cxx debug doc gpm minimal profile static-libs symlink-usr test threads tinfo trace unicode"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
IUSE="ada +cxx debug doc gpm minimal profile static-libs test tinfo trace"
RESTRICT="!test? ( test )"
DEPEND="gpm? ( sys-libs/gpm[${MULTILIB_USEDEP}] )"
@ -34,25 +35,18 @@ RDEPEND="${DEPEND}
S="${WORKDIR}/${MY_P}"
MINIMAL_TERMINFO=(
ansi console dumb linux rxvt rxvt-256color rxvt-unicode rxvt-unicode-256color
screen screen-16color screen-256color sun vt{52,100,102,200,220}
xterm xterm-color xterm-256color xterm-xfree86
)
PATCHES=(
"${FILESDIR}/${PN}-5.7-nongnu.patch"
"${FILESDIR}/${PN}-6.0-rxvt-unicode-9.15.patch" #192083 #383871
"${FILESDIR}/${PN}-6.0-pkg-config.patch"
"${FILESDIR}/${PN}-5.9-gcc-5.patch" #545114
"${FILESDIR}/${PN}-6.0-ticlib.patch" #557360
"${FILESDIR}/${PN}-6.0-cppflags-cross.patch" #601426
"${FILESDIR}/${PN}-6.2-no_user_ldflags_in_libs.patch"
"${FILESDIR}/${PN}-6.2_p20210123-cppflags-cross.patch" #601426
)
src_prepare() {
if [[ "${PV}" == *_p* ]] ; then
eapply "${WORKDIR}"/${P/_p/-}-patch.sh
#eapply "${WORKDIR}/${P}.patch"
fi
default
}
@ -69,9 +63,9 @@ src_configure() {
# checking configure flags.
NCURSES_TARGETS=(
ncurses
$(usex unicode 'ncursesw' '')
$(usex threads 'ncursest' '')
$(use unicode && usex threads 'ncursestw' '')
ncursesw
ncursest
ncursestw
)
# When installing ncurses, we have to use a compatible version of tic.
@ -93,6 +87,7 @@ src_configure() {
# We can't re-use the multilib BUILD_DIR because we run outside of it.
BUILD_DIR="${WORKDIR}" \
CC=${BUILD_CC} \
CHOST=${CBUILD} \
CFLAGS=${BUILD_CFLAGS} \
CXXFLAGS=${BUILD_CXXFLAGS} \
@ -111,10 +106,6 @@ multilib_src_configure() {
}
do_configure() {
# Flatcar: Also allow writes to /dev/ptmx, which sometimes
# causes the sandbox to fail Jenkins builds.
addwrite /dev/ptmx
local target=$1
shift
@ -168,6 +159,7 @@ do_configure() {
$(use_with trace)
$(use_with tinfo termlib)
--disable-stripping
--disable-pkg-ldflags
)
if [[ ${target} == ncurses*w ]] ; then
@ -197,7 +189,7 @@ do_configure() {
# Force bash until upstream rebuilds the configure script with a newer
# version of autotools. #545532
CONFIG_SHELL=${EPREFIX}/bin/bash \
#CONFIG_SHELL=${EPREFIX}/bin/bash \
ECONF_SOURCE="${S}" \
econf "${conf[@]}" "$@"
}
@ -258,8 +250,7 @@ multilib_src_install() {
if multilib_is_native_abi ; then
gen_usr_ldscript -a \
"${NCURSES_TARGETS[@]}" \
$(use tinfo && usex unicode 'tinfow' '') \
$(usev tinfo)
$(usex tinfo 'tinfow tinfo' '')
fi
if ! tc-is-static-only ; then
# Provide a link for -lcurses.
@ -280,13 +271,24 @@ multilib_src_install() {
}
multilib_src_install_all() {
# Flatcar: Add a symlink-usr USE flag for keeping a minimal
# set of terminfo files in /usr/share/terminfo.
if ! use symlink-usr ; then
# if ! use berkdb ; then
# We need the basic terminfo files in /etc for embedded/recovery. #37026
einfo "Installing basic terminfo files in /etc..."
local terms=(
# Dumb/simple values that show up when using the in-kernel VT.
ansi console dumb linux
vt{52,100,102,200,220}
# [u]rxvt users used to be pretty common. Probably should drop this
# since upstream is dead and people are moving away from it.
rxvt{,-unicode}{,-256color}
# xterm users are common, as is terminals re-using/spoofing it.
xterm xterm-{,256}color
# screen is common (and reused by tmux).
screen{,-256color}
screen.xterm-256color
)
local x
for x in "${MINIMAL_TERMINFO[@]}"; do
for x in "${terms[@]}"; do
local termfile=$(find "${ED}"/usr/share/terminfo/ -name "${x}" 2>/dev/null)
local basedir=$(basename "$(dirname "${termfile}")")
@ -297,19 +299,13 @@ multilib_src_install_all() {
"/usr/share/terminfo/${basedir}/${x}"
fi
done
# fi
echo "CONFIG_PROTECT_MASK=\"/etc/terminfo\"" | newenvd - 50ncurses
use minimal && rm -r "${ED}"/usr/share/terminfo*
# Because ncurses5-config --terminfo returns the directory we keep it
keepdir /usr/share/terminfo #245374
elif use minimal; then
# prune all files and symlinks not listed in MINIMAL_TERMINFO
find "${D}"/usr/share/terminfo ! -type d \
${MINIMAL_TERMINFO[@]/#/! -name } \
-delete || die
find "${D}"/usr/share/terminfo -type d -empty -delete || die
fi
cd "${S}" || die
dodoc ANNOUNCE MANIFEST NEWS README* TO-DO doc/*.doc
@ -321,10 +317,10 @@ multilib_src_install_all() {
pkg_preinst() {
preserve_old_lib /$(get_libdir)/libncurses.so.5
use unicode && preserve_old_lib /$(get_libdir)/libncursesw.so.5
preserve_old_lib /$(get_libdir)/libncursesw.so.5
}
pkg_postinst() {
preserve_old_lib_notify /$(get_libdir)/libncurses.so.5
use unicode && preserve_old_lib_notify /$(get_libdir)/libncursesw.so.5
preserve_old_lib_notify /$(get_libdir)/libncursesw.so.5
}