commit:     dc858f6a75f94c0a1b3d6e5c6e83a874e8b57d8b
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 19 17:50:00 2015 +0000
Commit:     Andreas Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Sat Dec 19 17:50:00 2015 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=dc858f6a

perl-module.eclass and perl-functions.eclass: Add infrastructure to build 
.packlist files and keep/fix them in EAPI=6

 eclass/perl-functions.eclass | 35 ++++++++++++++++++++++++++++++++---
 eclass/perl-module.eclass    |  9 +++++++--
 2 files changed, 39 insertions(+), 5 deletions(-)

diff --git a/eclass/perl-functions.eclass b/eclass/perl-functions.eclass
index c38ed6c..7568473 100644
--- a/eclass/perl-functions.eclass
+++ b/eclass/perl-functions.eclass
@@ -106,17 +106,46 @@ perl_delete_packlist() {
        debug-print-function $FUNCNAME "$@"
        perl_set_version
        if [[ -d ${D}/${VENDOR_ARCH} ]] ; then
-               find "${D}/${VENDOR_ARCH}" -type f -a \( -name .packlist \
-                       -o \( -name '*.bs' -a -empty \) \) -delete
+               find "${D}/${VENDOR_ARCH}" -type f -a -name .packlist -delete
+               perl_delete_emptybsdir
+       fi
+}
+
+# @FUNCTION: perl_delete_emptybsdir
+# @USAGE: perl_delete_emptybsdir
+# @DESCRIPTION:
+# Look through ${D} for empty .bs files and empty directories,
+# and get rid of items found.
+perl_delete_emptybsdir() {
+       debug-print-function $FUNCNAME "$@"
+       perl_set_version
+       if [[ -d ${D}/${VENDOR_ARCH} ]] ; then
+               find "${D}/${VENDOR_ARCH}" -type f \
+                       -a -name '*.bs' -a -empty -delete
                find "${D}" -depth -mindepth 1 -type d -empty -delete
        fi
 }
 
+# @FUNCTION: perl_fix_packlist
+# @USAGE: perl_fix_packlist
+# @DESCRIPTION:
+# Look through ${D} for .packlist text files containing the temporary 
installation
+# folder (i.e. ${D}). If the pattern is found, silently replace it with `/'.
+perl_fix_packlist() {
+       debug-print-function $FUNCNAME "$@"
+
+       find "${D}" -type f -name '.packlist' -print0 | while read -rd '' f ; do
+               if file "${f}" | grep -q -i " text" ; then
+                       sed -i -e "s:${D}:/:g" "${f}"
+               fi
+       done
+}
+
 # @FUNCTION: perl_remove_temppath
 # @USAGE: perl_remove_temppath
 # @DESCRIPTION:
 # Look through ${D} for text files containing the temporary installation
-# folder (i.e. ${D}). If the pattern is found (i.e. " text"), replace it with 
`/'.
+# folder (i.e. ${D}). If the pattern is found, replace it with `/' and warn.
 perl_remove_temppath() {
        debug-print-function $FUNCNAME "$@"
 

diff --git a/eclass/perl-module.eclass b/eclass/perl-module.eclass
index 80a829d..8b2f3a4 100644
--- a/eclass/perl-module.eclass
+++ b/eclass/perl-module.eclass
@@ -244,7 +244,7 @@ perl-module_src_configure() {
                        --installdirs=vendor \
                        --libdoc= \
                        --destdir="${D}" \
-                       --create_packlist=0 \
+                       --create_packlist=1 \
                        "${myconf_local[@]}"
                einfo "perl Build.PL" "$@"
                perl Build.PL "$@" <<< "${pm_echovar}" \
@@ -407,7 +407,12 @@ perl-module_src_install() {
 
        perl_delete_module_manpages
        perl_delete_localpod
-       perl_delete_packlist
+       if [[ ${EAPI:-0} == 5 ]] ; then
+               perl_delete_packlist
+       else
+               perl_fix_packlist
+               perl_delete_emptybsdir
+       fi
        perl_remove_temppath
 
        for f in Change* CHANGES README* TODO FAQ ${mydoc}; do

Reply via email to