diff --git a/eclass/perl-functions.eclass b/eclass/perl-functions.eclass index 7568473..9509622 100644 --- a/eclass/perl-functions.eclass +++ b/eclass/perl-functions.eclass @@ -131,12 +131,22 @@ perl_delete_emptybsdir() { # @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 `/'. +# Then validate all entries in the packlist against ${D} and prune +# missing ones. perl_fix_packlist() { debug-print-function $FUNCNAME "$@" + local packlist_temp="${T}/.gentoo_packlist_temp" 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}" + cat "${f}" | while read -r entry; do + if [ ! -e "${D}/${entry}" ]; then + einfo "Pruning redundant packlist entry ${entry}" + grep -v -x -F "${entry}" "${f}" > "${packlist_temp}" + mv "${packlist_temp}" "${f}" + fi + done fi done }