[gentoo-dev] perl eclass review - EAPI=3 + new helper eclass

2010-03-30 Thread Torsten Veller
The perl-module.eclass must be updated to support EAPI=3 [1] and
a new eclass will be added which does contain some (more or less) useful
stand-alone functions split from the old perl-module.eclass without
exporting phase functions.
Functions used in ebuilds that don't need the exported default phases
are perlinfo() and fixlocalpod().


Below is the new eclass, working title is perl-helper.eclass.
A diff between the the current and the new perl-module.eclass can be
found at [2]. Both are in use in the perl-experimental overlay [3].


Please review! If someone can come up with better names, either the
perl-helper.eclass or the functions named perl_*, please tell me.
I tried to make the perl-helper functions more unique but the
meaningfulness is open to question.


Thanks


[1] https://bugs.gentoo.org/310453
[2] http://dev.gentoo.org/~tove/files/perl-module.diff
[3] 
http://git.overlays.gentoo.org/gitweb/?p=proj/perl-overlay.git;a=tree;f=eclass;hb=HEAD



# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

[[ ${CATEGORY} == perl-core ]]  inherit alternatives

perlinfo() {
debug-print-function $FUNCNAME $@
perl_set_version
}

perl_set_version() {
debug-print-function $FUNCNAME $@
debug-print $FUNCNAME: perlinfo_done=${perlinfo_done}
${perlinfo_done}  return 0
perlinfo_done=true

local f version install{{site,vendor}{arch,lib},archlib}
eval $(perl -V:{version,install{{site,vendor}{arch,lib},archlib}} )
PERL_VERSION=${version}
SITE_ARCH=${installsitearch}
SITE_LIB=${installsitelib}
ARCH_LIB=${installarchlib}
VENDOR_LIB=${installvendorlib}
VENDOR_ARCH=${installvendorarch}
}

fixlocalpod() {
debug-print-function $FUNCNAME $@
perl_delete_localpod
}

perl_delete_localpod() {
debug-print-function $FUNCNAME $@

find ${D} -type f -name perllocal.pod -delete
find ${D} -depth -mindepth 1 -type d -empty -delete
}

perl_fix_osx_extra() {
debug-print-function $FUNCNAME $@

# Remove AppleDouble encoded Macintosh file
local f
find ${S} -type f -name ._* -print0 | while read -rd '' f ; do
einfo Removing AppleDouble encoded Macintosh file: ${f#${S}/}
rm -f ${f}
f=${f#${S}/}
#   f=${f//\//\/}
#   f=${f//\./\.}
#   sed -i /${f}/d ${S}/MANIFEST || die
grep -q ${f} ${S}/MANIFEST  \
elog AppleDouble encoded Macintosh file in MANIFEST: 
${f#${S}/}
done
}

perl_delete_module_manpages() {
debug-print-function $FUNCNAME $@

perl_set_eprefix

if [[ -d ${ED}/usr/share/man ]] ; then
#   einfo Cleaning out stray man files
find ${ED}/usr/share/man -type f -name *.3pm -delete
find ${ED}/usr/share/man -depth -type d -empty -delete
fi
}

perl_delete_packlist() {
debug-print-function $FUNCNAME $@
perl_set_version
if [[ -d ${D}/${VENDOR_LIB} ]] ; then
find ${D}/${VENDOR_LIB} -type f -a \( -name .packlist \
-o \( -name '*.bs' -a -empty \) \) -delete
find ${D}/${VENDOR_LIB} -depth -mindepth 1 -type d -empty 
-delete
fi
}

perl_remove_temppath() {
debug-print-function $FUNCNAME $@

find ${D} -type f -not -name '*.so' -print0 | while read -rd '' f ; do
if file ${f} | grep -q -i  text ; then
grep -q ${D} ${f}  ewarn QA: File contains a 
temporary path ${f}
sed -i -e s:${D}:/:g ${f}
fi
done
}

perl_link_duallife_scripts() {
debug-print-function $FUNCNAME $@
if [[ ${CATEGORY} != perl-core ]] || ! has_version 
=dev-lang/perl-5.8.8-r8 ; then
return 0
fi

perl_set_eprefix

local i ff
if has ${EBUILD_PHASE:-none} postinst postrm ; then
for i in ${duallifescrip...@]} ; do
alternatives_auto_makesym /usr/bin/${i} 
/usr/bin/${i}-[0-9]*
ff=`echo 
${EROOT}/usr/share/man/man1/${i}-${PV}-${P}.1*`
ff=${ff##*.1}
alternatives_auto_makesym 
/usr/share/man/man1/${i}.1${ff} /usr/share/man/man1/${i}-[0-9]*
done
else
pushd ${ED}  /dev/null
for i in $(find usr/bin -maxdepth 1 -type f 2/dev/null) ; do
mv ${i}{,-${PV}-${P}} || die
DUALLIFESCRIPTS[${#DUALLIFESCRIPTS[*]}]=${i##*/}
if [[ -f usr/share/man/man1/${i##*/}.1 ]] ; then
mv 
usr/share/man/man1/${i##*/}{.1,-${PV}-${P}.1} || die
fi
done
popd  /dev/null
fi
}

perl_set_eprefix() {

Re: [gentoo-dev] perl eclass review - EAPI=3 + new helper eclass

2010-03-30 Thread Alec Warner
On Tue, Mar 30, 2010 at 4:11 AM, Torsten Veller ml...@veller.net wrote:
 The perl-module.eclass must be updated to support EAPI=3 [1] and
 a new eclass will be added which does contain some (more or less) useful
 stand-alone functions split from the old perl-module.eclass without
 exporting phase functions.
 Functions used in ebuilds that don't need the exported default phases
 are perlinfo() and fixlocalpod().


 Below is the new eclass, working title is perl-helper.eclass.
 A diff between the the current and the new perl-module.eclass can be
 found at [2]. Both are in use in the perl-experimental overlay [3].


 Please review! If someone can come up with better names, either the
 perl-helper.eclass or the functions named perl_*, please tell me.
 I tried to make the perl-helper functions more unique but the
 meaningfulness is open to question.

It is obvious what many of the functions do (I can read shell, yay!)
but it is not obvious to me why they exist or why I would want to call
them.  Why do I want to delete AppleDouble files?  What are dual-life
scripts and why do I want to symlink them?  Why would I want to delete
packfiles?  Some documentation would be nice h ere.

-A



 Thanks


 [1] https://bugs.gentoo.org/310453
 [2] http://dev.gentoo.org/~tove/files/perl-module.diff
 [3] 
 http://git.overlays.gentoo.org/gitweb/?p=proj/perl-overlay.git;a=tree;f=eclass;hb=HEAD



 # Copyright 1999-2010 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 # $Header: $

 [[ ${CATEGORY} == perl-core ]]  inherit alternatives

 perlinfo() {
        debug-print-function $FUNCNAME $@
        perl_set_version
 }

 perl_set_version() {
        debug-print-function $FUNCNAME $@
        debug-print $FUNCNAME: perlinfo_done=${perlinfo_done}
        ${perlinfo_done}  return 0
        perlinfo_done=true

        local f version install{{site,vendor}{arch,lib},archlib}
        eval $(perl -V:{version,install{{site,vendor}{arch,lib},archlib}} )
        PERL_VERSION=${version}
        SITE_ARCH=${installsitearch}
        SITE_LIB=${installsitelib}
        ARCH_LIB=${installarchlib}
        VENDOR_LIB=${installvendorlib}
        VENDOR_ARCH=${installvendorarch}
 }

 fixlocalpod() {
        debug-print-function $FUNCNAME $@
        perl_delete_localpod
 }

 perl_delete_localpod() {
        debug-print-function $FUNCNAME $@

        find ${D} -type f -name perllocal.pod -delete
        find ${D} -depth -mindepth 1 -type d -empty -delete
 }

 perl_fix_osx_extra() {
        debug-print-function $FUNCNAME $@

        # Remove AppleDouble encoded Macintosh file
        local f
        find ${S} -type f -name ._* -print0 | while read -rd '' f ; do
                einfo Removing AppleDouble encoded Macintosh file: ${f#${S}/}
                rm -f ${f}
                f=${f#${S}/}
        #       f=${f//\//\/}
        #       f=${f//\./\.}
        #       sed -i /${f}/d ${S}/MANIFEST || die
                grep -q ${f} ${S}/MANIFEST  \
                        elog AppleDouble encoded Macintosh file in MANIFEST: 
 ${f#${S}/}
        done
 }

 perl_delete_module_manpages() {
        debug-print-function $FUNCNAME $@

        perl_set_eprefix

        if [[ -d ${ED}/usr/share/man ]] ; then
 #               einfo Cleaning out stray man files
                find ${ED}/usr/share/man -type f -name *.3pm -delete
                find ${ED}/usr/share/man -depth -type d -empty -delete
        fi
 }

 perl_delete_packlist() {
        debug-print-function $FUNCNAME $@
        perl_set_version
        if [[ -d ${D}/${VENDOR_LIB} ]] ; then
                find ${D}/${VENDOR_LIB} -type f -a \( -name .packlist \
                        -o \( -name '*.bs' -a -empty \) \) -delete
                find ${D}/${VENDOR_LIB} -depth -mindepth 1 -type d -empty 
 -delete
        fi
 }

 perl_remove_temppath() {
        debug-print-function $FUNCNAME $@

        find ${D} -type f -not -name '*.so' -print0 | while read -rd '' f ; 
 do
                if file ${f} | grep -q -i  text ; then
                        grep -q ${D} ${f}  ewarn QA: File contains a 
 temporary path ${f}
                        sed -i -e s:${D}:/:g ${f}
                fi
        done
 }

 perl_link_duallife_scripts() {
        debug-print-function $FUNCNAME $@
        if [[ ${CATEGORY} != perl-core ]] || ! has_version 
 =dev-lang/perl-5.8.8-r8 ; then
                return 0
        fi

        perl_set_eprefix

        local i ff
        if has ${EBUILD_PHASE:-none} postinst postrm ; then
                for i in ${duallifescrip...@]} ; do
                        alternatives_auto_makesym /usr/bin/${i} 
 /usr/bin/${i}-[0-9]*
                        ff=`echo 
 ${EROOT}/usr/share/man/man1/${i}-${PV}-${P}.1*`
                        ff=${ff##*.1}
                        alternatives_auto_makesym 
 /usr/share/man/man1/${i}.1${ff} /usr/share/man/man1/${i}-[0-9]*
                done
        else
                pushd ${ED}  /dev/null
                for i in 

[gentoo-dev] RFC: Google Apps Standard Edition @ gentoo.org

2010-03-30 Thread Alec Warner
Hello,

Currently a number of developers have engaged Google Apps Team Edition
for gentoo.org.  However Team Edition does not come with gmail and a
subset of Team Edition users would like to host their gentoo.org mail
on gmail.
Activating Standard Edition is free and likely requires minimal
configuration on dev.gentoo.org to setup.  Standard Edition comes with
Google Docs, Google Calendar, Google Mail, Google Sites, Google Video,
and probably a bunch of other stuff we could turn on.

This service would be opt-in (only devs that want an account get one).
 Infra should continue to offer standard mail services on
smtp.gentoo.org.

All content that is what I would term 'of value' to the community
should be available anonymously; that is you should not need to sign
up for a Google Account to be able to access documents in a read-only
fashion.  Writing documents will require sign-in (similarly to how the
calendar works in a previous thread.)

This thread is primarily engaged in gauging interest in such a setup.
Please reply if you are interested (or go vote on the bug.)

[1] http://bugs.gentoo.org/312037

-A