/[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.112
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.112 2008/09/30 08:28:44 robbat2 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
18# the SRC_TEST="do" flag on the suspicion that otherwise we will face 10 times 19# the SRC_TEST="do" flag on the suspicion that otherwise we will face 10 times
19# as many bug reports as we have lately. 20# as many bug reports as we have lately.
20 21#
21# 2004.05.10 rac 22# 2004.05.10 rac
22# block on makemaker versions earlier than that in the 5.8.2 core. in 23# 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 24# actuality, this should be handled in the perl ebuild, so every perl
24# ebuild should block versions of MakeMaker older than the one it 25# ebuild should block versions of MakeMaker older than the one it
25# carries. in the meantime, since we have dumped support for MakeMaker 26# 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 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??).
83#
84# 2007.08.19 ian
85# Added ${myconf} - bug #176818
86#
87# 2007.10.17 robbat2
88# Added the 'MODULE_AUTHOR' variable. Set it before inheriting the eclass
89# and it will set your HOMEPAGE and SRC_URI correctly for a CPAN package.
90#
91# 2008.09.30 robbat2
92# MODULE_A enables variations other than .tar.gz easily. Also Use MY_P if set
93# for MODULE_A and MY_PN in HOMEPAGE, as suggested by tove.
72 94
95[ -z "${SRC_URI}" -a -z "${MODULE_A}" ] && MODULE_A="${MY_P:-${P}}.tar.gz"
96[ -z "${SRC_URI}" -a -n "${MODULE_AUTHOR}" ] && \
97 SRC_URI="mirror://cpan/authors/id/${MODULE_AUTHOR:0:1}/${MODULE_AUTHOR:0:2}/${MODULE_AUTHOR}/${MODULE_SECTION}/${MODULE_A}"
98[ -z "${HOMEPAGE}" ] && \
99 HOMEPAGE="http://search.cpan.org/search?query=${MY_PN:-${PN}}&mode=dist"
73 100
74IUSE="minimal"
75DEPEND=">=dev-lang/perl-5.8.2 !<perl-core/ExtUtils-MakeMaker-6.17"
76RDEPEND="!minimal? ( ${DEPEND} )"
77SRC_PREP="no" 101SRC_PREP="no"
78SRC_TEST="skip" 102SRC_TEST="skip"
79USE_BUILDER="yes" 103PREFER_BUILDPL="yes"
80 104
81PERL_VERSION="" 105PERL_VERSION=""
82SITE_ARCH="" 106SITE_ARCH=""
83SITE_LIB="" 107SITE_LIB=""
84VENDOR_LIB="" 108VENDOR_LIB=""
85VENDOR_ARCH="" 109VENDOR_ARCH=""
86ARCH_LIB="" 110ARCH_LIB=""
87POD_DIR="" 111POD_DIR=""
88BUILDER_VER="" 112BUILDER_VER=""
113pm_echovar=""
114
115perl-module_src_unpack() {
116 if [[ -n ${PATCHES} ]]; then
117 base_src_unpack unpack
118 base_src_unpack autopatch
119 else
120 base_src_unpack unpack
121 fi
122}
89 123
90perl-module_src_prep() { 124perl-module_src_prep() {
91 125
92 perlinfo 126 perlinfo
93 127
94 export PERL_MM_USE_DEFAULT=1 128 export PERL_MM_USE_DEFAULT=1
129 # Disable ExtUtils::AutoInstall from prompting
130 export PERL_EXTUTILS_AUTOINSTALL="--skipdeps"
95 131
96 132
97 SRC_PREP="yes" 133 SRC_PREP="yes"
98 if [ -f Makefile.PL ]; then 134 find ${S} -type d -name "\.svn" -exec /bin/rm -rf {} \; 2>/dev/null
135 if [ "${PREFER_BUILDPL}" == "yes" ] && ( [ -f Build.PL ] || [ ${PN} == "module-build" ] ); then
136 einfo "Using Module::Build"
137 echo "$pm_echovar" | perl Build.PL ${myconf} --installdirs=vendor --destdir=${D} --libdoc= || die "Unable to build! (are you using USE=\"build\"?)"
138 elif [ -f Makefile.PL ] && [ ! ${PN} == "module-build" ]; then
99 einfo "Using ExtUtils::MakeMaker" 139 einfo "Using ExtUtils::MakeMaker"
100 #perl Makefile.PL ${myconf} \
101 perl Makefile.PL ${myconf} INSTALLMAN3DIR='none'\ 140 echo "$pm_echovar" | perl Makefile.PL ${myconf} INSTALLMAN3DIR='none'\
102 PREFIX=/usr INSTALLDIRS=vendor DESTDIR=${D} 141 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 142 fi
116 else 143 if [ ! -f Build.PL ] && [ ! -f Makefile.PL ]; then
117 einfo "No Make or Build file detect..." 144 einfo "No Make or Build file detected..."
118 return 145 return
119 fi 146 fi
120} 147}
121 148
122perl-module_src_compile() { 149perl-module_src_compile() {
123 150
124 perlinfo 151 perlinfo
125 [ "${SRC_PREP}" != "yes" ] && perl-module_src_prep 152 [ "${SRC_PREP}" != "yes" ] && perl-module_src_prep
126 if [ -z ${BUILDER_VER} ]; then 153 if [ -f Makefile ]; then
127 make ${mymake} || die "compilation failed" 154 make ${mymake} || die "compilation failed"
128 else 155 elif [ -f Build ]; then
129 perl ${S}/Build build 156 perl Build build || die "compilation failed"
130 fi 157 fi
158 fixlocalpod
131 159
132} 160}
133 161
134perl-module_src_test() { 162perl-module_src_test() {
135 if [ "${SRC_TEST}" == "do" ]; then 163 if [ "${SRC_TEST}" == "do" ]; then
136 perlinfo 164 perlinfo
137 if [ -z ${BUILDER_VER} ]; then 165 if [ -f Makefile ]; then
138 make test || die "test failed" 166 make test || die "test failed"
139 else 167 elif [ -f Build ]; then
140 perl ${S}/Build test || die "test failed" 168 perl Build test || die "test failed"
141 fi 169 fi
142 fi 170 fi
143} 171}
144 172
145perl-module_src_install() { 173perl-module_src_install() {
146 174
147 perlinfo 175 perlinfo
148 176
149 test -z ${mytargets} && mytargets="install" 177 test -z ${mytargets} && mytargets="install"
150 178
151 if [ -z ${BUILDER_VER} ]; then 179 if [ -f Makefile ]; then
152 make ${myinst} ${mytargets} || die 180 make ${myinst} ${mytargets} || die
153 else 181 elif [ -f Build ]; then
154 perl ${S}/Build install 182 perl ${S}/Build install
155 fi 183 fi
184
185
186 einfo "Cleaning out stray man files"
187 for FILE in `find ${D} -type f -name "*.3pm*"`; do
188 rm -rf ${FILE}
189 done
190 find ${D}/usr/share/man -depth -type d 2>/dev/null | xargs -r rmdir 2>/dev/null
156 191
157 fixlocalpod 192 fixlocalpod
158 193
159 for FILE in `find ${D} -type f |grep -v '.so'`; do 194 for FILE in `find ${D} -type f |grep -v '.so'`; do
160 STAT=`file $FILE| grep -i " text"` 195 STAT=`file $FILE| grep -i " text"`
181} 216}
182 217
183perl-module_pkg_postinst() { 218perl-module_pkg_postinst() {
184 219
185 einfo "Man pages are not installed for most modules now." 220 einfo "Man pages are not installed for most modules now."
186 einfo "Please use perldoc instad." 221 einfo "Please use perldoc instead."
187 updatepod 222 updatepod
188} 223}
189 224
190perl-module_pkg_prerm() { 225perl-module_pkg_prerm() {
191 226
221 256
222 local installvendorarch 257 local installvendorarch
223 eval `perl '-V:installvendorarch'` 258 eval `perl '-V:installvendorarch'`
224 VENDOR_ARCH=${installvendorarch} 259 VENDOR_ARCH=${installvendorarch}
225 260
226 if [ "${USE_BUILDER}" == "yes" ]; then 261 if [ "${PREFER_BUILDPL}" == "yes" ]; then
227 if [ ! -f ${S}/Makefile.PL ]; then 262 if [ ! -f ${S}/Makefile.PL ] || [ ${PN} == "module-build" ]; then
228 if [ -f ${S}/Build.PL ]; then 263 if [ -f ${S}/Build.PL ]; then
229 if [ ${PN} == "module-build" ]; then 264 if [ ${PN} == "module-build" ]; then
230 BUILDER_VER="1" # A bootstrapping if you will 265 BUILDER_VER="1" # A bootstrapping if you will
231 else 266 else
232 BUILDER_VER=`perl -MModule::Build -e 'print "$Module::Build::VERSION;"' ` 267 BUILDER_VER=`perl -MModule::Build -e 'print "$Module::Build::VERSION;"' `
268 fi
233 fi 269 fi
234 fi 270 fi
235 fi
236 fi 271 fi
237 272
238 if [ -f /usr/bin/perl ] 273 if [ -f /usr/bin/perl ]
239 then 274 then
240 POD_DIR="/usr/share/perl/gentoo-pods/${version}" 275 POD_DIR="/usr/share/perl/gentoo-pods/${version}"
241 fi 276 fi
242} 277}
243 278
244fixlocalpod() { 279fixlocalpod() {
245 perlinfo 280 perlinfo
246 dodir ${POD_DIR}
247 281
248 if [ -f ${D}${ARCH_LIB}/perllocal.pod ]; 282 if [ -f ${D}${ARCH_LIB}/perllocal.pod ];
249 then 283 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 284 rm -f ${D}/${ARCH_LIB}/perllocal.pod
256 fi 285 fi
257 286
258 if [ -f ${D}${SITE_LIB}/perllocal.pod ]; 287 if [ -f ${D}${SITE_LIB}/perllocal.pod ];
259 then 288 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 289 rm -f ${D}/${SITE_LIB}/perllocal.pod
266 fi 290 fi
267 291
268 if [ -f ${D}${VENDOR_LIB}/perllocal.pod ]; 292 if [ -f ${D}${VENDOR_LIB}/perllocal.pod ];
269 then 293 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 294 rm -f ${D}/${VENDOR_LIB}/perllocal.pod
276 fi 295 fi
277} 296}
278 297
279updatepod() { 298updatepod() {
280 perlinfo 299 perlinfo
281 300
282 if [ -d "${POD_DIR}" ] 301 if [ -d "${POD_DIR}" ]
283 then 302 then
284 for FILE in `find ${POD_DIR} -type f -name "*.pod.arch"`; do 303 for FILE in `find ${POD_DIR} -type f -name "*.pod.arch"`; do
285 cat ${FILE} >> ${ARCH_LIB}/perllocal.pod 304 cat ${FILE} >> ${ARCH_LIB}/perllocal.pod
286 rm -f ${FILE} 305 rm -f ${FILE}
287 done 306 done
288 for FILE in `find ${POD_DIR} -type f -name "*.pod.site"`; do 307 for FILE in `find ${POD_DIR} -type f -name "*.pod.site"`; do
289 cat ${FILE} >> ${SITE_LIB}/perllocal.pod 308 cat ${FILE} >> ${SITE_LIB}/perllocal.pod
290 rm -f ${FILE} 309 rm -f ${FILE}
291 done 310 done
292 for FILE in `find ${POD_DIR} -type f -name "*.pod.vendor"`; do 311 for FILE in `find ${POD_DIR} -type f -name "*.pod.vendor"`; do
293 cat ${FILE} >> ${VENDOR_LIB}/perllocal.pod 312 cat ${FILE} >> ${VENDOR_LIB}/perllocal.pod
294 rm -f ${FILE} 313 rm -f ${FILE}
295 done 314 done
296 fi 315 fi
297} 316}

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

  ViewVC Help
Powered by ViewVC 1.1.20