blob: b05e7c910d491a8ab9c16fb223a7dd1f8616bb59 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-libs/readline/readline-6.2_p5-r1.ebuild,v 1.5 2014/01/18 02:22:43 vapier Exp $
EAPI="4"
inherit eutils multilib toolchain-funcs flag-o-matic multilib-minimal
# Official patches
# See ftp://ftp.cwru.edu/pub/bash/readline-6.2-patches/
PLEVEL=${PV##*_p}
MY_PV=${PV/_p*}
MY_PV=${MY_PV/_/-}
MY_P=${PN}-${MY_PV}
[[ ${PV} != *_p* ]] && PLEVEL=0
patches() {
[[ ${PLEVEL} -eq 0 ]] && return 1
local opt=$1
eval set -- {1..${PLEVEL}}
set -- $(printf "${PN}${MY_PV/\.}-%03d " "$@")
if [[ ${opt} == -s ]] ; then
echo "${@/#/${DISTDIR}/}"
else
local u
for u in ftp://ftp.cwru.edu/pub/bash mirror://gnu/${PN} ; do
printf "${u}/${PN}-${MY_PV}-patches/%s " "$@"
done
fi
}
DESCRIPTION="Another cute console display library"
HOMEPAGE="http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html"
SRC_URI="mirror://gnu/${PN}/${MY_P}.tar.gz $(patches)"
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux"
IUSE="static-libs"
RDEPEND=">=sys-libs/ncurses-5.2-r2[${MULTILIB_USEDEP}]
abi_x86_32? (
!app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)]
!<=app-emulation/emul-linux-x86-baselibs-20131008-r7
)"
DEPEND="${RDEPEND}"
S=${WORKDIR}/${MY_P}
src_unpack() {
unpack ${MY_P}.tar.gz
}
src_prepare() {
[[ ${PLEVEL} -gt 0 ]] && epatch $(patches -s)
epatch "${FILESDIR}"/${PN}-5.0-no_rpath.patch
epatch "${FILESDIR}"/${PN}-5.2-no-ignore-shlib-errors.patch #216952
epatch "${FILESDIR}"/${PN}-6.2-rlfe-tgoto.patch #385091
# Force ncurses linking. #71420
# Use pkg-config to get the right values. #457558
local ncurses_libs=$($(tc-getPKG_CONFIG) ncurses --libs)
sed -i \
-e "/^SHLIB_LIBS=/s:=.*:='${ncurses_libs}':" \
support/shobj-conf || die
sed -i \
-e "/^[[:space:]]*LIBS=.-lncurses/s:-lncurses:${ncurses_libs}:" \
examples/rlfe/configure || die
# fix building under Gentoo/FreeBSD; upstream FreeBSD deprecated
# objformat for years, so we don't want to rely on that.
sed -i -e '/objformat/s:if .*; then:if true; then:' support/shobj-conf || die
ln -s ../.. examples/rlfe/readline # for local readline headers
}
src_configure() {
# fix implicit decls with widechar funcs
append-cppflags -D_GNU_SOURCE
# http://lists.gnu.org/archive/html/bug-readline/2010-07/msg00013.html
append-cppflags -Dxrealloc=_rl_realloc -Dxmalloc=_rl_malloc -Dxfree=_rl_free
# Make sure configure picks a better ar than `ar`. #484866
export ac_cv_prog_AR=$(tc-getAR)
# Force the test since we used sed above to force it.
export bash_cv_termcap_lib=ncurses
# This is for rlfe, but we need to make sure LDFLAGS doesn't change
# so we can re-use the config cache file between the two.
append-ldflags -L.
multilib-minimal_src_configure
}
multilib_src_configure() {
ECONF_SOURCE=${S} \
econf \
--cache-file="${BUILD_DIR}"/config.cache \
--with-curses \
$(use_enable static-libs static)
if multilib_build_binaries && ! tc-is-cross-compiler ; then
# code is full of AC_TRY_RUN()
mkdir -p examples/rlfe || die
cd examples/rlfe || die
ECONF_SOURCE=${S}/examples/rlfe \
econf --cache-file="${BUILD_DIR}"/config.cache
fi
}
multilib_src_compile() {
emake
if multilib_build_binaries && ! tc-is-cross-compiler ; then
# code is full of AC_TRY_RUN()
cd examples/rlfe || die
local l
for l in readline history ; do
ln -s ../../shlib/lib${l}$(get_libname)* lib${l}$(get_libname)
ln -sf ../../lib${l}.a lib${l}.a
done
emake
fi
}
multilib_src_install() {
default
if multilib_build_binaries ; then
gen_usr_ldscript -a readline history #4411
if ! tc-is-cross-compiler; then
dobin examples/rlfe/rlfe
fi
fi
}
multilib_src_install_all() {
einstalldocs
dodoc USAGE
dohtml -r doc/.
docinto ps
dodoc doc/*.ps
}
pkg_preinst() {
preserve_old_lib /$(get_libdir)/lib{history,readline}.so.{4,5} #29865
}
pkg_postinst() {
preserve_old_lib_notify /$(get_libdir)/lib{history,readline}.so.{4,5}
}
|