summaryrefslogtreecommitdiff
path: root/eclass/dist-kernel-utils.eclass
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-12-30 17:41:14 +0000
committerV3n3RiX <venerix@koprulu.sector>2023-12-30 17:41:14 +0000
commit35e3ee5faf74dc69409f957f81a6848d4d24c49f (patch)
treed6bc6dbf01adb34336a16db816df491d45013f2d /eclass/dist-kernel-utils.eclass
parentab3caa4e3adb16caadd7e9e1d9f606b34f20d2b3 (diff)
gentoo auto-resync : 30:12:2023 - 17:41:14
Diffstat (limited to 'eclass/dist-kernel-utils.eclass')
-rw-r--r--eclass/dist-kernel-utils.eclass37
1 files changed, 37 insertions, 0 deletions
diff --git a/eclass/dist-kernel-utils.eclass b/eclass/dist-kernel-utils.eclass
index 67cb802151b2..8ccffd038474 100644
--- a/eclass/dist-kernel-utils.eclass
+++ b/eclass/dist-kernel-utils.eclass
@@ -210,5 +210,42 @@ dist-kernel_PV_to_KV() {
echo "${kv}"
}
+# @FUNCTION: dist-kernel_compressed_module_cleanup
+# @USAGE: <path>
+# @DESCRIPTION:
+# Traverse path for duplicate (un)compressed modules and remove all
+# but the newest variant.
+dist-kernel_compressed_module_cleanup() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ [[ ${#} -ne 1 ]] && die "${FUNCNAME}: invalid arguments"
+ local path=${1}
+ local basename f
+
+ while read -r basename; do
+ local prev=
+ for f in "${path}/${basename}"{,.gz,.xz,.zst}; do
+ if [[ ! -e ${f} ]]; then
+ continue
+ elif [[ -z ${prev} ]]; then
+ prev=${f}
+ elif [[ ${f} -nt ${prev} ]]; then
+ rm -v "${prev}" || die
+ prev=${f}
+ else
+ rm -v "${f}" || die
+ fi
+ done
+ done < <(
+ cd "${path}" &&
+ find -type f \
+ \( -name '*.ko' \
+ -o -name '*.ko.gz' \
+ -o -name '*.ko.xz' \
+ -o -name '*.ko.zst' \
+ \) | sed -e 's:[.]\(gz\|xz\|zst\)$::' | sort | uniq -d || die
+ )
+}
+
_DIST_KERNEL_UTILS=1
fi