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

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

  ViewVC Help
Powered by ViewVC 1.1.20