/[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.103
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.103 2006/10/14 20:27:21 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 pwd
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
131 142
132} 143}
133 144
134perl-module_src_test() { 145perl-module_src_test() {
135 if [ "${SRC_TEST}" == "do" ]; then 146 if [ "${SRC_TEST}" == "do" ]; then
136 perlinfo 147 perlinfo
137 if [ -z ${BUILDER_VER} ]; then 148 if [ -f Makefile ]; then
138 make test || die "test failed" 149 make test || die "test failed"
139 else 150 elif [ -f Build ]; then
140 perl ${S}/Build test || die "test failed" 151 perl Build test || die "test failed"
141 fi 152 fi
142 fi 153 fi
143} 154}
144 155
145perl-module_src_install() { 156perl-module_src_install() {
146 157
147 perlinfo 158 perlinfo
148 159
149 test -z ${mytargets} && mytargets="install" 160 test -z ${mytargets} && mytargets="install"
150 161
151 if [ -z ${BUILDER_VER} ]; then 162 if [ -f Makefile ]; then
152 make ${myinst} ${mytargets} || die 163 make ${myinst} ${mytargets} || die
153 else 164 elif [ -f Build ]; then
154 perl ${S}/Build install 165 perl ${S}/Build install
155 fi 166 fi
167
168
169 einfo "Cleaning out stray man files"
170 for FILE in `find ${D} -type f -name "*.3pm*"`; do
171 rm -rf ${FILE}
172 done
173 find ${D}/usr/share/man -depth -type d 2>/dev/null | xargs -r rmdir 2>/dev/null
156 174
157 fixlocalpod 175 fixlocalpod
158 176
159 for FILE in `find ${D} -type f |grep -v '.so'`; do 177 for FILE in `find ${D} -type f |grep -v '.so'`; do
160 STAT=`file $FILE| grep -i " text"` 178 STAT=`file $FILE| grep -i " text"`
181} 199}
182 200
183perl-module_pkg_postinst() { 201perl-module_pkg_postinst() {
184 202
185 einfo "Man pages are not installed for most modules now." 203 einfo "Man pages are not installed for most modules now."
186 einfo "Please use perldoc instad." 204 einfo "Please use perldoc instead."
187 updatepod 205 updatepod
188} 206}
189 207
190perl-module_pkg_prerm() { 208perl-module_pkg_prerm() {
191 209
221 239
222 local installvendorarch 240 local installvendorarch
223 eval `perl '-V:installvendorarch'` 241 eval `perl '-V:installvendorarch'`
224 VENDOR_ARCH=${installvendorarch} 242 VENDOR_ARCH=${installvendorarch}
225 243
226 if [ "${USE_BUILDER}" == "yes" ]; then 244 if [ "${PREFER_BUILDPL}" == "yes" ]; then
227 if [ ! -f ${S}/Makefile.PL ]; then 245 if [ ! -f ${S}/Makefile.PL ] || [ ${PN} == "module-build" ]; then
228 if [ -f ${S}/Build.PL ]; then 246 if [ -f ${S}/Build.PL ]; then
229 if [ ${PN} == "module-build" ]; then 247 if [ ${PN} == "module-build" ]; then
230 BUILDER_VER="1" # A bootstrapping if you will 248 BUILDER_VER="1" # A bootstrapping if you will
231 else 249 else
232 BUILDER_VER=`perl -MModule::Build -e 'print "$Module::Build::VERSION;"' ` 250 BUILDER_VER=`perl -MModule::Build -e 'print "$Module::Build::VERSION;"' `
251 fi
233 fi 252 fi
234 fi 253 fi
235 fi
236 fi 254 fi
237 255
238 if [ -f /usr/bin/perl ] 256 if [ -f /usr/bin/perl ]
239 then 257 then
240 POD_DIR="/usr/share/perl/gentoo-pods/${version}" 258 POD_DIR="/usr/share/perl/gentoo-pods/${version}"
241 fi 259 fi
242} 260}
243 261
244fixlocalpod() { 262fixlocalpod() {
245 perlinfo 263 perlinfo
246 dodir ${POD_DIR}
247 264
248 if [ -f ${D}${ARCH_LIB}/perllocal.pod ]; 265 if [ -f ${D}${ARCH_LIB}/perllocal.pod ];
249 then 266 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 267 rm -f ${D}/${ARCH_LIB}/perllocal.pod
256 fi 268 fi
257 269
258 if [ -f ${D}${SITE_LIB}/perllocal.pod ]; 270 if [ -f ${D}${SITE_LIB}/perllocal.pod ];
259 then 271 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 272 rm -f ${D}/${SITE_LIB}/perllocal.pod
266 fi 273 fi
267 274
268 if [ -f ${D}${VENDOR_LIB}/perllocal.pod ]; 275 if [ -f ${D}${VENDOR_LIB}/perllocal.pod ];
269 then 276 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 277 rm -f ${D}/${VENDOR_LIB}/perllocal.pod
276 fi 278 fi
277} 279}
278 280
279updatepod() { 281updatepod() {
280 perlinfo 282 perlinfo
281 283
282 if [ -d "${POD_DIR}" ] 284 if [ -d "${POD_DIR}" ]
283 then 285 then
284 for FILE in `find ${POD_DIR} -type f -name "*.pod.arch"`; do 286 for FILE in `find ${POD_DIR} -type f -name "*.pod.arch"`; do
285 cat ${FILE} >> ${ARCH_LIB}/perllocal.pod 287 cat ${FILE} >> ${ARCH_LIB}/perllocal.pod
286 rm -f ${FILE} 288 rm -f ${FILE}
287 done 289 done
288 for FILE in `find ${POD_DIR} -type f -name "*.pod.site"`; do 290 for FILE in `find ${POD_DIR} -type f -name "*.pod.site"`; do
289 cat ${FILE} >> ${SITE_LIB}/perllocal.pod 291 cat ${FILE} >> ${SITE_LIB}/perllocal.pod
290 rm -f ${FILE} 292 rm -f ${FILE}
291 done 293 done
292 for FILE in `find ${POD_DIR} -type f -name "*.pod.vendor"`; do 294 for FILE in `find ${POD_DIR} -type f -name "*.pod.vendor"`; do
293 cat ${FILE} >> ${VENDOR_LIB}/perllocal.pod 295 cat ${FILE} >> ${VENDOR_LIB}/perllocal.pod
294 rm -f ${FILE} 296 rm -f ${FILE}
295 done 297 done
296 fi 298 fi
297} 299}

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

  ViewVC Help
Powered by ViewVC 1.1.20