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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
|
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI="4"
inherit eutils flag-o-matic prefix toolchain-funcs user
DESCRIPTION="Standard commands to read man pages"
HOMEPAGE="http://primates.ximian.com/~flucifredi/man/"
SRC_URI="http://primates.ximian.com/~flucifredi/man/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="alpha amd64 arm ~arm64 ~hppa ia64 ~m68k ~mips ~ppc ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd"
KEYWORDS+="~ppc-aix ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
IUSE="+lzma nls selinux"
DEPEND="nls? ( sys-devel/gettext )"
RDEPEND="|| ( >=sys-apps/groff-1.19.2-r1 app-doc/heirloom-doctools )
!sys-apps/man-db
!<app-arch/lzma-4.63
lzma? ( app-arch/xz-utils )
selinux? ( sec-policy/selinux-makewhatis )"
pkg_setup() {
enewgroup man 15
enewuser man 13 -1 "${EPREFIX}"/usr/share/man man
}
src_prepare() {
epatch "${FILESDIR}"/man-1.6f-man2html-compression-2.patch
epatch "${FILESDIR}"/man-1.6-cross-compile.patch
epatch "${FILESDIR}"/man-1.6f-unicode.patch #146315
epatch "${FILESDIR}"/man-1.6c-cut-duplicate-manpaths.patch
epatch "${FILESDIR}"/man-1.5m2-apropos.patch
epatch "${FILESDIR}"/man-1.6g-fbsd.patch #138123
epatch "${FILESDIR}"/man-1.6e-headers.patch
epatch "${FILESDIR}"/man-1.6f-so-search-2.patch
epatch "${FILESDIR}"/man-1.6g-compress.patch #205147
epatch "${FILESDIR}"/man-1.6f-parallel-build.patch #207148 #258916
epatch "${FILESDIR}"/man-1.6g-xz.patch #302380
epatch "${FILESDIR}"/man-1.6f-makewhatis-compression-cleanup.patch #331979
epatch "${FILESDIR}"/man-1.6g-echo-escape.patch #523874
# make sure `less` handles escape sequences #287183
sed -i -e '/^DEFAULTLESSOPT=/s:"$:R":' configure
# This patch could be easily merged with the FreeBSD one, but we don't
# because the files have no CVS header and then auto syncing overwrites the
# local difference we make. <grobian@gentoo.org>
epatch "${FILESDIR}"/man-1.6g-bsdish.patch
# Solaris needs fcntl.h included for O_CREAT etc, like SYSV
epatch "${FILESDIR}"/man-1.6e-solaris.patch
# hpux does not have setenv()
epatch "${FILESDIR}"/man-1.6e-hpux.patch
# irix support is a bit messed up in defines
epatch "${FILESDIR}"/man-1.6f-irix.patch
# Results in grabbing as much tools from the prefix, instead of main
# system in a prefixed environment
epatch "${FILESDIR}"/man-1.6g-prefix-path.patch
# Fix the makewhatis script for prefix.
cp "${FILESDIR}"/makewhatis.cron "${T}"/
pushd "${T}" > /dev/null
epatch "${FILESDIR}"/makewhatis.cron-prefix.patch
popd > /dev/null
eprefixify "${T}"/makewhatis.cron
epatch "${FILESDIR}"/man-1.6g-makemsg-headers.patch
# fix man.conf file, bug #351245
sed -i \
-e "/^MANPATH\t/s:\t/:\t${EPREFIX}/:" \
-e "/^MANPATH_MAP\t/s:\t/:\t${EPREFIX}/:g" \
src/man.conf.in || die
if use prefix ; then
ebegin "Allowing unpriviliged install"
sed -i \
-e 's/@man_install_flags@//g' \
"${S}"/src/Makefile.in
eend $?
(
local d cat=() dflt
dflt=( $(sed -n '/^tmpsections=/s/^[^"]\+"\([^"]\+\)".*$/\1/p' \
configure) )
IFS=:
for d in /usr/share/man/man* ; do
[[ -d ${d} ]] || continue
[[ ":${dflt[*]}:" == *":${d##*man}:"* ]] \
|| cat+=( ${d##*man} )
done
if [[ ${#cat[@]} -gt 0 ]] ; then
einfo "Adding host manpage sections: ${cat[*]}"
sed -i -e "/^MANSECT\t/s/\$/:${cat[*]}/" src/man.conf.in || die
fi
)
fi
}
echoit() { echo "$@" ; "$@" ; }
src_configure() {
strip-linguas $(eval $(grep ^LANGUAGES= configure) ; echo ${LANGUAGES//,/ })
unset NLSPATH #175258
tc-export CC BUILD_CC
local mylang=
if use nls ; then
if [[ -z ${LINGUAS} ]] ; then
mylang="all"
else
mylang="${LINGUAS// /,}"
fi
else
mylang="none"
fi
export COMPRESS
if use lzma ; then
COMPRESS="${EPREFIX}"/usr/bin/xz
else
COMPRESS="${EPREFIX}"/bin/bzip2
fi
local myconf=
use prefix || myconf="${myconf} +sgid"
if [[ -n ${EPREFIX} ]]; then
hprefixify configure || die
sed -i \
-e "s/man_user=root/man_user=$(id -u)/" \
-e "s/man_group=man/man_group=$(id -g)/" \
configure || die "Failed to disable suid/sgid options for prefix man"
sed -i -e 's:/usr/bin:@bindir@:' man2html/Makefile.in || die
fi
echoit \
./configure \
-prefix="${EPREFIX}/usr" \
-confdir="${EPREFIX}"/etc \
${myconf} \
+fhs \
+lang ${mylang} \
|| die "configure failed"
}
src_install() {
unset NLSPATH #175258
emake DESTDIR="${D}" install || die "make install failed"
dosym man /usr/bin/manpath
dodoc LSM README* TODO
# Make all Solaris man-pages available
if [[ ${CHOST} == *-solaris* && -e /usr/share/man/man.cf ]] ; then
source /usr/share/man/man.cf
sed -i -e 's/^\(MANSECT.*\)$/\1:'"${MANSECTS//,/:}"'/' \
"${ED}"/etc/man.conf || die "failed to adapt to Solaris"
fi
# makewhatis only adds man-pages from the last 24hrs
exeinto /etc/cron.daily
newexe "${T}"/makewhatis.cron makewhatis
keepdir /var/cache/man
if use prefix; then
diropts -m0775
else
diropts -m0775 -g man
fi
local mansects=$(grep ^MANSECT "${ED}"/etc/man.conf | cut -f2-)
for x in ${mansects//:/ } ; do
keepdir /var/cache/man/cat${x}
done
}
pkg_postinst() {
if use !prefix ; then
einfo "Forcing sane permissions onto ${EROOT}var/cache/man (Bug #40322)"
chown -R root:man "${EROOT}"/var/cache/man
[[ -e ${EROOT}/var/cache/man/whatis ]] \
&& chown root:0 "${EROOT}"/var/cache/man/whatis
fi # end lame indenting
chmod -R g+w "${EROOT}"/var/cache/man
echo
local f files=$(ls "${EROOT}"/etc/cron.{daily,weekly}/makewhatis{,.cron} 2>/dev/null)
for f in ${files} ; do
[[ ${f} == */etc/cron.daily/makewhatis ]] && continue
[[ $(md5sum "${f}") == "8b2016cc778ed4e2570b912c0f420266 "* ]] \
&& rm -f "${f}"
done
files=$(ls "${EROOT}"etc/cron.{daily,weekly}/makewhatis{,.cron} 2>/dev/null)
if [[ ${files/$'\n'} != ${files} ]] ; then
ewarn "You have multiple makewhatis cron files installed."
ewarn "You might want to delete all but one of these:"
ewarn ${files}
fi
if has_version app-doc/heirloom-doctools; then
ewarn "Please note that the /etc/man.conf file installed will not"
ewarn "work with heirloom's nroff by default (yet)."
ewarn ""
ewarn "Check app-doc/heirloom-doctools elog messages for the proper"
ewarn "configuration."
fi
}
# vi: set diffopt=iwhite,filler:
|