| # Warn about and/or remove empty directories installed by ebuild. |
| |
| # Rationale: PMS prohibits ebuilds from installing empty directories. |
| # Cleaning them up from the installation image provides an easy way |
| # to make sure that ebuilds are not relying on it while making it easy |
| # for users to override this if they need to. |
| # |
| # The ebuilds that need to preserve empty directories should use keepdir |
| # as documented e.g.: |
| # https://devmanual.gentoo.org/function-reference/install-functions/index.html |
| # |
| # For now, we emit QA warnings for empty directories in /var. |
| # Additionally, if FEATURES=strict-keepdir is enabled we explicitly |
| # remove *all* empty directories to trigger breakage. |
| |
| find_empty_dirs() { |
| local warn_dirs=() |
| local d striparg= |
| |
| [[ ${FEATURES} == *strict-keepdir* ]] && striparg=-delete |
| |
| while IFS= read -r -d $'\0' d; do |
| [[ ${d} == ${ED%/}/var/* ]] && warn_dirs+=( "${d}" ) |
| done < <(find "${ED}" -depth -mindepth 1 -type d -empty -print0 ${striparg} | LC_COLLATE=C sort -z) |
| |
| if [[ ${warn_dirs[@]} ]]; then |
| eqawarn "One or more empty directories installed to /var:" |
| eqawarn |
| for d in "${warn_dirs[@]}"; do |
| eqawarn " ${d#${ED%/}}" |
| done |
| eqawarn |
| eqawarn "If those directories need to be preserved, please make sure to create" |
| eqawarn "or mark them for keeping using 'keepdir'. Future versions of Portage" |
| eqawarn "will strip empty directories from installation image." |
| fi |
| } |
| |
| find_empty_dirs |
| : # guarantee successful exit |
| |
| # vim:ft=sh |