blob: 8599db39541f73ccf34fd4a28c08e36159764096 [file] [log] [blame]
# 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