--- dkms 2021-12-30 11:32:28.356203108 +0000 +++ dkms.new 2021-12-30 11:53:37.263696123 +0000 @@ -62,13 +62,12 @@ popd >/dev/null } -# list all module name/version for a specific kernel version -# $1: kernel version -all_nv_from_kver() { +# list all module name/versions +all_nv() { local path for path in "$source_tree"/*-*/dkms.conf; do - if [[ -f "$path" && "$path" =~ ^$source_tree/([^/]+)-([^/]+)/dkms\.conf$ ]]; then - echo "${BASH_REMATCH[1]}/${BASH_REMATCH[2]}" + if [[ -f "$path" ]]; then + echo $(source "$path"; printf '%s/%s\n' "$PACKAGE_NAME" "$PACKAGE_VERSION") fi done } @@ -109,7 +108,7 @@ done # add modules for new/updated kernels to the build list for kver in "${!KERNEL_VERSIONS[@]}"; do - for nv in $(all_nv_from_kver "$kver"); do + for nv in $(all_nv); do tobuild["$nv/$kver"]='' done done @@ -280,9 +279,9 @@ # parse stdin paths to guess what we should install/remove while read -r path; do - if [[ "/$path" =~ ^$source_tree/([^/]+)-([^/]+)/dkms\.conf$ ]]; then + if [[ -f "/$path" && "/$path" =~ ^$source_tree/([^/]+)-([^/]+)/dkms\.conf$ ]]; then # we match file updates on dkms modules sources - DKMS_MODULES["${BASH_REMATCH[1]}/${BASH_REMATCH[2]}"]='' + DKMS_MODULES[$(source "/$path"; printf '%s/%s\n' "$PACKAGE_NAME" "$PACKAGE_VERSION")]='' elif [[ "/$path" =~ ^$install_tree/([^/]+)/ ]]; then # we match file updates on kernels install/removal KERNEL_VERSIONS["${BASH_REMATCH[1]}"]=''