/[gentoo-x86]/eclass/perl-module.eclass
Gentoo

Diff of /eclass/perl-module.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.86 Revision 1.107
1# Copyright 1999-2004 Gentoo Foundation 1# Copyright 1999-2004 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/perl-module.eclass,v 1.86 2006/04/03 11:16:52 mcummings Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/perl-module.eclass,v 1.107 2007/08/19 11:39:53 ian Exp $
4# 4#
5# Author: Seemant Kulleen <seemant@gentoo.org> 5# Author: Seemant Kulleen <seemant@gentoo.org>
6# Maintained by the Perl herd <perl@gentoo.org> 6# Maintained by the Perl herd <perl@gentoo.org>
7# 7#
8# The perl-module eclass is designed to allow easier installation of perl 8# The perl-module eclass is designed to allow easier installation of perl
9# modules, and their incorporation into the Gentoo Linux system. 9# modules, and their incorporation into the Gentoo Linux system.
10 10
11inherit base
11 12
12EXPORT_FUNCTIONS pkg_setup pkg_preinst pkg_postinst pkg_prerm pkg_postrm src_compile src_install src_test 13EXPORT_FUNCTIONS pkg_setup pkg_preinst pkg_postinst pkg_prerm pkg_postrm src_compile src_install src_test src_unpack
13 14
15# 2005.08.19 ian
16# Added ${myconf} - bug #176818
17#
14# 2005.04.28 mcummings 18# 2005.04.28 mcummings
15# Mounting problems with src_test functions has forced me to make the 19# Mounting problems with src_test functions has forced me to make the
16# compilation of perl modules honor the FEATURES maketest flag rather than what 20# compilation of perl modules honor the FEATURES maketest flag rather than what
17# is generally necessary. I've left a block to make sure we still need to set 21# is generally necessary. I've left a block to make sure we still need to set
18# the SRC_TEST="do" flag on the suspicion that otherwise we will face 10 times 22# the SRC_TEST="do" flag on the suspicion that otherwise we will face 10 times
19# as many bug reports as we have lately. 23# as many bug reports as we have lately.
20 24#
21# 2004.05.10 rac 25# 2004.05.10 rac
22# block on makemaker versions earlier than that in the 5.8.2 core. in 26# block on makemaker versions earlier than that in the 5.8.2 core. in
23# actuality, this should be handled in the perl ebuild, so every perl 27# actuality, this should be handled in the perl ebuild, so every perl
24# ebuild should block versions of MakeMaker older than the one it 28# ebuild should block versions of MakeMaker older than the one it
25# carries. in the meantime, since we have dumped support for MakeMaker 29# carries. in the meantime, since we have dumped support for MakeMaker
58# Fix for proper handling of $mydoc - thanks to stkn for noticing we were 62# Fix for proper handling of $mydoc - thanks to stkn for noticing we were
59# bombing out there 63# bombing out there
60# 64#
61# 2005.07.19 mcummings 65# 2005.07.19 mcummings
62# Providing an override var for the use of Module::Build. While it is being 66# Providing an override var for the use of Module::Build. While it is being
63# incorporated in more and more modules, not module authors have working 67# incorporated in more and more modules, not all module authors have working
64# Build.PL's in place. The override is to allow for a fallback to the "classic" 68# Build.PL's in place. The override is to allow for a fallback to the "classic"
65# Makfile.PL - example is Class::MethodMaker, which provides a Build.PL that is 69# Makfile.PL - example is Class::MethodMaker, which provides a Build.PL that is
66# severely broken. 70# severely broken.
67# 71#
68# 2006.02.11 mcummings 72# 2006.02.11 mcummings
69# Per a conversation with solar, adding a change to the dep/rdep lines for 73# Per a conversation with solar, adding a change to the dep/rdep lines for
70# minimal. Should fix bug 68367 and bug 83622, as well as other embedded builds 74# minimal. Should fix bug 68367 and bug 83622, as well as other embedded builds
71# that use perl components without providing perl 75# that use perl components without providing perl
76#
77# 2006.06.13 mcummings
78# I've reordered and extended the logic on when to invoke module-build versus
79# MakeMaker. The problem that has arisen is that some modules provide a
80# Makefile.PL that passes all arguments on to a Build.PL - including PREFIX,
81# which causes module-build to build with a target of /usr/usr/
82# (how broken is that?). Current logic is if there is a Build.PL and we aren't
83# overriding, use it; otherwise use the Makefile.PL; otherwise return (maybe we
84# want all the functionality of the perl-module eclass without needing to
85# compile??).
72 86
73 87
74IUSE="minimal"
75DEPEND=">=dev-lang/perl-5.8.2 !<perl-core/ExtUtils-MakeMaker-6.17"
76RDEPEND="!minimal? ( ${DEPEND} )"
77SRC_PREP="no" 88SRC_PREP="no"
78SRC_TEST="skip" 89SRC_TEST="skip"
79USE_BUILDER="yes" 90PREFER_BUILDPL="yes"
80 91
81PERL_VERSION="" 92PERL_VERSION=""
82SITE_ARCH="" 93SITE_ARCH=""
83SITE_LIB="" 94SITE_LIB=""
84VENDOR_LIB="" 95VENDOR_LIB=""
85VENDOR_ARCH="" 96VENDOR_ARCH=""
86ARCH_LIB="" 97ARCH_LIB=""
87POD_DIR="" 98POD_DIR=""
88BUILDER_VER="" 99BUILDER_VER=""
100pm_echovar=""
101
102perl-module_src_unpack() {
103 if [[ -n ${PATCHES} ]]; then
104 base_src_unpack unpack
105 base_src_unpack autopatch
106 else
107 base_src_unpack unpack
108 fi
109}
89 110
90perl-module_src_prep() { 111perl-module_src_prep() {
91 112
92 perlinfo 113 perlinfo
93 114
94 export PERL_MM_USE_DEFAULT=1 115 export PERL_MM_USE_DEFAULT=1
116 # Disable ExtUtils::AutoInstall from prompting
117 export PERL_EXTUTILS_AUTOINSTALL="--skipdeps"
95 118
96 119
97 SRC_PREP="yes" 120 SRC_PREP="yes"
98 if [ -f Makefile.PL ]; then 121 find ${S} -type d -name "\.svn" -exec /bin/rm -rf {} \; 2>/dev/null
122 if [ "${PREFER_BUILDPL}" == "yes" ] && ( [ -f Build.PL ] || [ ${PN} == "module-build" ] ); then
123 einfo "Using Module::Build"
124 echo "$pm_echovar" | perl Build.PL ${myconf} --installdirs=vendor --destdir=${D} --libdoc= || die "Unable to build! (are you using USE=\"build\"?)"
125 elif [ -f Makefile.PL ] && [ ! ${PN} == "module-build" ]; then
99 einfo "Using ExtUtils::MakeMaker" 126 einfo "Using ExtUtils::MakeMaker"
100 #perl Makefile.PL ${myconf} \
101 perl Makefile.PL ${myconf} INSTALLMAN3DIR='none'\ 127 echo "$pm_echovar" | perl Makefile.PL ${myconf} INSTALLMAN3DIR='none'\
102 PREFIX=/usr INSTALLDIRS=vendor DESTDIR=${D} 128 PREFIX=/usr INSTALLDIRS=vendor DESTDIR=${D} || die "Unable to build! (are you using USE=\"build\"?)"
103 elif [ -f Build.PL ] && [ "${USE_BUILDER}" == "yes" ]; then
104 einfo "Using Module::Build"
105 if [ -z ${BUILDER_VER} ]; then
106 eerror
107 eerror "Please post a bug on http://bugs.gentoo.org assigned to"
108 eerror "perl@gentoo.org - ${P} was added without a dependancy"
109 eerror "on dev-perl/module-build"
110 eerror "${BUILDER_VER}"
111 eerror
112 die
113 else
114 perl Build.PL installdirs=vendor destdir=${D} libdoc=
115 fi 129 fi
116 else 130 if [ ! -f Build.PL ] && [ ! -f Makefile.PL ]; then
117 einfo "No Make or Build file detect..." 131 einfo "No Make or Build file detected..."
118 return 132 return
119 fi 133 fi
120} 134}
121 135
122perl-module_src_compile() { 136perl-module_src_compile() {
123 137
124 perlinfo 138 perlinfo
125 [ "${SRC_PREP}" != "yes" ] && perl-module_src_prep 139 [ "${SRC_PREP}" != "yes" ] && perl-module_src_prep
126 if [ -z ${BUILDER_VER} ]; then 140 if [ -f Makefile ]; then
127 make ${mymake} || die "compilation failed" 141 make ${mymake} || die "compilation failed"
128 else 142 elif [ -f Build ]; then
129 perl ${S}/Build build 143 perl Build build || die "compilation failed"
130 fi 144 fi
145 fixlocalpod
131 146
132} 147}
133 148
134perl-module_src_test() { 149perl-module_src_test() {
135 if [ "${SRC_TEST}" == "do" ]; then 150 if [ "${SRC_TEST}" == "do" ]; then
136 perlinfo 151 perlinfo
137 if [ -z ${BUILDER_VER} ]; then 152 if [ -f Makefile ]; then
138 make test || die "test failed" 153 make test || die "test failed"
139 else 154 elif [ -f Build ]; then
140 perl ${S}/Build test || die "test failed" 155 perl Build test || die "test failed"
141 fi 156 fi
142 fi 157 fi
143} 158}
144 159
145perl-module_src_install() { 160perl-module_src_install() {
146 161
147 perlinfo 162 perlinfo
148 163
149 test -z ${mytargets} && mytargets="install" 164 test -z ${mytargets} && mytargets="install"
150 165
151 if [ -z ${BUILDER_VER} ]; then 166 if [ -f Makefile ]; then
152 make ${myinst} ${mytargets} || die 167 make ${myinst} ${mytargets} || die
153 else 168 elif [ -f Build ]; then
154 perl ${S}/Build install 169 perl ${S}/Build install
155 fi 170 fi
171
172
173 einfo "Cleaning out stray man files"
174 for FILE in `find ${D} -type f -name "*.3pm*"`; do
175 rm -rf ${FILE}
176 done
177 find ${D}/usr/share/man -depth -type d 2>/dev/null | xargs -r rmdir 2>/dev/null
156 178
157 fixlocalpod 179 fixlocalpod
158 180
159 for FILE in `find ${D} -type f |grep -v '.so'`; do 181 for FILE in `find ${D} -type f |grep -v '.so'`; do
160 STAT=`file $FILE| grep -i " text"` 182 STAT=`file $FILE| grep -i " text"`
181} 203}
182 204
183perl-module_pkg_postinst() { 205perl-module_pkg_postinst() {
184 206
185 einfo "Man pages are not installed for most modules now." 207 einfo "Man pages are not installed for most modules now."
186 einfo "Please use perldoc instad." 208 einfo "Please use perldoc instead."
187 updatepod 209 updatepod
188} 210}
189 211
190perl-module_pkg_prerm() { 212perl-module_pkg_prerm() {
191 213
221 243
222 local installvendorarch 244 local installvendorarch
223 eval `perl '-V:installvendorarch'` 245 eval `perl '-V:installvendorarch'`
224 VENDOR_ARCH=${installvendorarch} 246 VENDOR_ARCH=${installvendorarch}
225 247
226 if [ "${USE_BUILDER}" == "yes" ]; then 248 if [ "${PREFER_BUILDPL}" == "yes" ]; then
227 if [ ! -f ${S}/Makefile.PL ]; then 249 if [ ! -f ${S}/Makefile.PL ] || [ ${PN} == "module-build" ]; then
228 if [ -f ${S}/Build.PL ]; then 250 if [ -f ${S}/Build.PL ]; then
229 if [ ${PN} == "module-build" ]; then 251 if [ ${PN} == "module-build" ]; then
230 BUILDER_VER="1" # A bootstrapping if you will 252 BUILDER_VER="1" # A bootstrapping if you will
231 else 253 else
232 BUILDER_VER=`perl -MModule::Build -e 'print "$Module::Build::VERSION;"' ` 254 BUILDER_VER=`perl -MModule::Build -e 'print "$Module::Build::VERSION;"' `
255 fi
233 fi 256 fi
234 fi 257 fi
235 fi
236 fi 258 fi
237 259
238 if [ -f /usr/bin/perl ] 260 if [ -f /usr/bin/perl ]
239 then 261 then
240 POD_DIR="/usr/share/perl/gentoo-pods/${version}" 262 POD_DIR="/usr/share/perl/gentoo-pods/${version}"
241 fi 263 fi
242} 264}
243 265
244fixlocalpod() { 266fixlocalpod() {
245 perlinfo 267 perlinfo
246 dodir ${POD_DIR}
247 268
248 if [ -f ${D}${ARCH_LIB}/perllocal.pod ]; 269 if [ -f ${D}${ARCH_LIB}/perllocal.pod ];
249 then 270 then
250 touch ${D}/${POD_DIR}/${P}.pod
251 sed -e "s:${D}::g" \
252 ${D}${ARCH_LIB}/perllocal.pod >> ${D}/${POD_DIR}/${P}.pod
253 touch ${D}/${POD_DIR}/${P}.pod.arch
254 cat ${D}/${POD_DIR}/${P}.pod >>${D}/${POD_DIR}/${P}.pod.arch
255 rm -f ${D}/${ARCH_LIB}/perllocal.pod 271 rm -f ${D}/${ARCH_LIB}/perllocal.pod
256 fi 272 fi
257 273
258 if [ -f ${D}${SITE_LIB}/perllocal.pod ]; 274 if [ -f ${D}${SITE_LIB}/perllocal.pod ];
259 then 275 then
260 touch ${D}/${POD_DIR}/${P}.pod
261 sed -e "s:${D}::g" \
262 ${D}${SITE_LIB}/perllocal.pod >> ${D}/${POD_DIR}/${P}.pod
263 touch ${D}/${POD_DIR}/${P}.pod.site
264 cat ${D}/${POD_DIR}/${P}.pod >>${D}/${POD_DIR}/${P}.pod.site
265 rm -f ${D}/${SITE_LIB}/perllocal.pod 276 rm -f ${D}/${SITE_LIB}/perllocal.pod
266 fi 277 fi
267 278
268 if [ -f ${D}${VENDOR_LIB}/perllocal.pod ]; 279 if [ -f ${D}${VENDOR_LIB}/perllocal.pod ];
269 then 280 then
270 touch ${D}/${POD_DIR}/${P}.pod
271 sed -e "s:${D}::g" \
272 ${D}${VENDOR_LIB}/perllocal.pod >> ${D}/${POD_DIR}/${P}.pod
273 touch ${D}/${POD_DIR}/${P}.pod.vendor
274 cat ${D}/${POD_DIR}/${P}.pod >>${D}/${POD_DIR}/${P}.pod.vendor
275 rm -f ${D}/${VENDOR_LIB}/perllocal.pod 281 rm -f ${D}/${VENDOR_LIB}/perllocal.pod
276 fi 282 fi
277} 283}
278 284
279updatepod() { 285updatepod() {
280 perlinfo 286 perlinfo
281 287
282 if [ -d "${POD_DIR}" ] 288 if [ -d "${POD_DIR}" ]
283 then 289 then
284 for FILE in `find ${POD_DIR} -type f -name "*.pod.arch"`; do 290 for FILE in `find ${POD_DIR} -type f -name "*.pod.arch"`; do
285 cat ${FILE} >> ${ARCH_LIB}/perllocal.pod 291 cat ${FILE} >> ${ARCH_LIB}/perllocal.pod
286 rm -f ${FILE} 292 rm -f ${FILE}
287 done 293 done
288 for FILE in `find ${POD_DIR} -type f -name "*.pod.site"`; do 294 for FILE in `find ${POD_DIR} -type f -name "*.pod.site"`; do
289 cat ${FILE} >> ${SITE_LIB}/perllocal.pod 295 cat ${FILE} >> ${SITE_LIB}/perllocal.pod
290 rm -f ${FILE} 296 rm -f ${FILE}
291 done 297 done
292 for FILE in `find ${POD_DIR} -type f -name "*.pod.vendor"`; do 298 for FILE in `find ${POD_DIR} -type f -name "*.pod.vendor"`; do
293 cat ${FILE} >> ${VENDOR_LIB}/perllocal.pod 299 cat ${FILE} >> ${VENDOR_LIB}/perllocal.pod
294 rm -f ${FILE} 300 rm -f ${FILE}
295 done 301 done
296 fi 302 fi
297} 303}

Legend:
Removed from v.1.86  
changed lines
  Added in v.1.107

  ViewVC Help
Powered by ViewVC 1.1.20