/[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.106
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.106 2007/07/17 11:59:18 swegener 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
14# 2005.04.28 mcummings 15# 2005.04.28 mcummings
15# Mounting problems with src_test functions has forced me to make the 16# 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 17# 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 18# is generally necessary. I've left a block to make sure we still need to set
58# Fix for proper handling of $mydoc - thanks to stkn for noticing we were 59# Fix for proper handling of $mydoc - thanks to stkn for noticing we were
59# bombing out there 60# bombing out there
60# 61#
61# 2005.07.19 mcummings 62# 2005.07.19 mcummings
62# Providing an override var for the use of Module::Build. While it is being 63# 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 64# 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" 65# 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 66# Makfile.PL - example is Class::MethodMaker, which provides a Build.PL that is
66# severely broken. 67# severely broken.
67# 68#
68# 2006.02.11 mcummings 69# 2006.02.11 mcummings
69# Per a conversation with solar, adding a change to the dep/rdep lines for 70# 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 71# minimal. Should fix bug 68367 and bug 83622, as well as other embedded builds
71# that use perl components without providing perl 72# that use perl components without providing perl
73#
74# 2006.06.13 mcummings
75# I've reordered and extended the logic on when to invoke module-build versus
76# MakeMaker. The problem that has arisen is that some modules provide a
77# Makefile.PL that passes all arguments on to a Build.PL - including PREFIX,
78# which causes module-build to build with a target of /usr/usr/
79# (how broken is that?). Current logic is if there is a Build.PL and we aren't
80# overriding, use it; otherwise use the Makefile.PL; otherwise return (maybe we
81# want all the functionality of the perl-module eclass without needing to
82# compile??).
72 83
73 84
74IUSE="minimal"
75DEPEND=">=dev-lang/perl-5.8.2 !<perl-core/ExtUtils-MakeMaker-6.17"
76RDEPEND="!minimal? ( ${DEPEND} )"
77SRC_PREP="no" 85SRC_PREP="no"
78SRC_TEST="skip" 86SRC_TEST="skip"
79USE_BUILDER="yes" 87PREFER_BUILDPL="yes"
80 88
81PERL_VERSION="" 89PERL_VERSION=""
82SITE_ARCH="" 90SITE_ARCH=""
83SITE_LIB="" 91SITE_LIB=""
84VENDOR_LIB="" 92VENDOR_LIB=""
85VENDOR_ARCH="" 93VENDOR_ARCH=""
86ARCH_LIB="" 94ARCH_LIB=""
87POD_DIR="" 95POD_DIR=""
88BUILDER_VER="" 96BUILDER_VER=""
97pm_echovar=""
98
99perl-module_src_unpack() {
100 if [[ -n ${PATCHES} ]]; then
101 base_src_unpack unpack
102 base_src_unpack autopatch
103 else
104 base_src_unpack unpack
105 fi
106}
89 107
90perl-module_src_prep() { 108perl-module_src_prep() {
91 109
92 perlinfo 110 perlinfo
93 111
94 export PERL_MM_USE_DEFAULT=1 112 export PERL_MM_USE_DEFAULT=1
113 # Disable ExtUtils::AutoInstall from prompting
114 export PERL_EXTUTILS_AUTOINSTALL="--skipdeps"
95 115
96 116
97 SRC_PREP="yes" 117 SRC_PREP="yes"
98 if [ -f Makefile.PL ]; then 118 find ${S} -type d -name "\.svn" -exec /bin/rm -rf {} \; 2>/dev/null
119 if [ "${PREFER_BUILDPL}" == "yes" ] && ( [ -f Build.PL ] || [ ${PN} == "module-build" ] ); then
120 einfo "Using Module::Build"
121 echo "$pm_echovar" | perl Build.PL --installdirs=vendor --destdir=${D} --libdoc= || die "Unable to build! (are you using USE=\"build\"?)"
122 elif [ -f Makefile.PL ] && [ ! ${PN} == "module-build" ]; then
99 einfo "Using ExtUtils::MakeMaker" 123 einfo "Using ExtUtils::MakeMaker"
100 #perl Makefile.PL ${myconf} \
101 perl Makefile.PL ${myconf} INSTALLMAN3DIR='none'\ 124 echo "$pm_echovar" | perl Makefile.PL ${myconf} INSTALLMAN3DIR='none'\
102 PREFIX=/usr INSTALLDIRS=vendor DESTDIR=${D} 125 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 126 fi
116 else 127 if [ ! -f Build.PL ] && [ ! -f Makefile.PL ]; then
117 einfo "No Make or Build file detect..." 128 einfo "No Make or Build file detected..."
118 return 129 return
119 fi 130 fi
120} 131}
121 132
122perl-module_src_compile() { 133perl-module_src_compile() {
123 134
124 perlinfo 135 perlinfo
125 [ "${SRC_PREP}" != "yes" ] && perl-module_src_prep 136 [ "${SRC_PREP}" != "yes" ] && perl-module_src_prep
126 if [ -z ${BUILDER_VER} ]; then 137 if [ -f Makefile ]; then
127 make ${mymake} || die "compilation failed" 138 make ${mymake} || die "compilation failed"
128 else 139 elif [ -f Build ]; then
129 perl ${S}/Build build 140 perl Build build || die "compilation failed"
130 fi 141 fi
142 fixlocalpod
131 143
132} 144}
133 145
134perl-module_src_test() { 146perl-module_src_test() {
135 if [ "${SRC_TEST}" == "do" ]; then 147 if [ "${SRC_TEST}" == "do" ]; then
136 perlinfo 148 perlinfo
137 if [ -z ${BUILDER_VER} ]; then 149 if [ -f Makefile ]; then
138 make test || die "test failed" 150 make test || die "test failed"
139 else 151 elif [ -f Build ]; then
140 perl ${S}/Build test || die "test failed" 152 perl Build test || die "test failed"
141 fi 153 fi
142 fi 154 fi
143} 155}
144 156
145perl-module_src_install() { 157perl-module_src_install() {
146 158
147 perlinfo 159 perlinfo
148 160
149 test -z ${mytargets} && mytargets="install" 161 test -z ${mytargets} && mytargets="install"
150 162
151 if [ -z ${BUILDER_VER} ]; then 163 if [ -f Makefile ]; then
152 make ${myinst} ${mytargets} || die 164 make ${myinst} ${mytargets} || die
153 else 165 elif [ -f Build ]; then
154 perl ${S}/Build install 166 perl ${S}/Build install
155 fi 167 fi
168
169
170 einfo "Cleaning out stray man files"
171 for FILE in `find ${D} -type f -name "*.3pm*"`; do
172 rm -rf ${FILE}
173 done
174 find ${D}/usr/share/man -depth -type d 2>/dev/null | xargs -r rmdir 2>/dev/null
156 175
157 fixlocalpod 176 fixlocalpod
158 177
159 for FILE in `find ${D} -type f |grep -v '.so'`; do 178 for FILE in `find ${D} -type f |grep -v '.so'`; do
160 STAT=`file $FILE| grep -i " text"` 179 STAT=`file $FILE| grep -i " text"`
181} 200}
182 201
183perl-module_pkg_postinst() { 202perl-module_pkg_postinst() {
184 203
185 einfo "Man pages are not installed for most modules now." 204 einfo "Man pages are not installed for most modules now."
186 einfo "Please use perldoc instad." 205 einfo "Please use perldoc instead."
187 updatepod 206 updatepod
188} 207}
189 208
190perl-module_pkg_prerm() { 209perl-module_pkg_prerm() {
191 210
221 240
222 local installvendorarch 241 local installvendorarch
223 eval `perl '-V:installvendorarch'` 242 eval `perl '-V:installvendorarch'`
224 VENDOR_ARCH=${installvendorarch} 243 VENDOR_ARCH=${installvendorarch}
225 244
226 if [ "${USE_BUILDER}" == "yes" ]; then 245 if [ "${PREFER_BUILDPL}" == "yes" ]; then
227 if [ ! -f ${S}/Makefile.PL ]; then 246 if [ ! -f ${S}/Makefile.PL ] || [ ${PN} == "module-build" ]; then
228 if [ -f ${S}/Build.PL ]; then 247 if [ -f ${S}/Build.PL ]; then
229 if [ ${PN} == "module-build" ]; then 248 if [ ${PN} == "module-build" ]; then
230 BUILDER_VER="1" # A bootstrapping if you will 249 BUILDER_VER="1" # A bootstrapping if you will
231 else 250 else
232 BUILDER_VER=`perl -MModule::Build -e 'print "$Module::Build::VERSION;"' ` 251 BUILDER_VER=`perl -MModule::Build -e 'print "$Module::Build::VERSION;"' `
252 fi
233 fi 253 fi
234 fi 254 fi
235 fi
236 fi 255 fi
237 256
238 if [ -f /usr/bin/perl ] 257 if [ -f /usr/bin/perl ]
239 then 258 then
240 POD_DIR="/usr/share/perl/gentoo-pods/${version}" 259 POD_DIR="/usr/share/perl/gentoo-pods/${version}"
241 fi 260 fi
242} 261}
243 262
244fixlocalpod() { 263fixlocalpod() {
245 perlinfo 264 perlinfo
246 dodir ${POD_DIR}
247 265
248 if [ -f ${D}${ARCH_LIB}/perllocal.pod ]; 266 if [ -f ${D}${ARCH_LIB}/perllocal.pod ];
249 then 267 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 268 rm -f ${D}/${ARCH_LIB}/perllocal.pod
256 fi 269 fi
257 270
258 if [ -f ${D}${SITE_LIB}/perllocal.pod ]; 271 if [ -f ${D}${SITE_LIB}/perllocal.pod ];
259 then 272 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 273 rm -f ${D}/${SITE_LIB}/perllocal.pod
266 fi 274 fi
267 275
268 if [ -f ${D}${VENDOR_LIB}/perllocal.pod ]; 276 if [ -f ${D}${VENDOR_LIB}/perllocal.pod ];
269 then 277 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 278 rm -f ${D}/${VENDOR_LIB}/perllocal.pod
276 fi 279 fi
277} 280}
278 281
279updatepod() { 282updatepod() {
280 perlinfo 283 perlinfo
281 284
282 if [ -d "${POD_DIR}" ] 285 if [ -d "${POD_DIR}" ]
283 then 286 then
284 for FILE in `find ${POD_DIR} -type f -name "*.pod.arch"`; do 287 for FILE in `find ${POD_DIR} -type f -name "*.pod.arch"`; do
285 cat ${FILE} >> ${ARCH_LIB}/perllocal.pod 288 cat ${FILE} >> ${ARCH_LIB}/perllocal.pod
286 rm -f ${FILE} 289 rm -f ${FILE}
287 done 290 done
288 for FILE in `find ${POD_DIR} -type f -name "*.pod.site"`; do 291 for FILE in `find ${POD_DIR} -type f -name "*.pod.site"`; do
289 cat ${FILE} >> ${SITE_LIB}/perllocal.pod 292 cat ${FILE} >> ${SITE_LIB}/perllocal.pod
290 rm -f ${FILE} 293 rm -f ${FILE}
291 done 294 done
292 for FILE in `find ${POD_DIR} -type f -name "*.pod.vendor"`; do 295 for FILE in `find ${POD_DIR} -type f -name "*.pod.vendor"`; do
293 cat ${FILE} >> ${VENDOR_LIB}/perllocal.pod 296 cat ${FILE} >> ${VENDOR_LIB}/perllocal.pod
294 rm -f ${FILE} 297 rm -f ${FILE}
295 done 298 done
296 fi 299 fi
297} 300}

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

  ViewVC Help
Powered by ViewVC 1.1.20