| #! /bin/bash |
| |
| |
| rpm_buildroot="$1" |
| module_dir="$2" |
| module_list="$3" |
| |
| blacklist_conf_files="$(mktemp)" |
| |
| blacklist() |
| { |
| mkdir -p "$rpm_buildroot/etc/modprobe.d/" |
| cat > "$rpm_buildroot/etc/modprobe.d/$1-blacklist.conf" <<-__EOF__ |
| |
| |
| |
| |
| |
| |
| blacklist $1 |
| __EOF__ |
| echo "%config(noreplace) /etc/modprobe.d/$1-blacklist.conf" >> "$blacklist_conf_files" |
| } |
| |
| check_blacklist() |
| { |
| mod="$rpm_buildroot/$1" |
| [ ! "$mod" ] && return 0 |
| if modinfo "$mod" | grep -q '^alias:\s\+net-'; then |
| mod="${1##*/}" |
| mod="${mod%.ko*}" |
| echo "$mod has an alias that allows auto-loading. Blacklisting." |
| blacklist "$mod" |
| fi |
| } |
| |
| foreachp() |
| { |
| P=$(nproc) |
| bgcount=0 |
| while read -r mod; do |
| $1 "$mod" & |
| |
| bgcount=$((bgcount + 1)) |
| if [ $bgcount -eq "$P" ]; then |
| wait -n |
| bgcount=$((bgcount - 1)) |
| fi |
| done |
| |
| wait |
| } |
| |
| |
| |
| |
| |
| |
| floppylist=("$rpm_buildroot"/"$module_dir"/kernel/drivers/block/floppy.ko*) |
| if [[ -n ${floppylist[0]} && -f ${floppylist[0]} ]]; then |
| blacklist "floppy" |
| fi |
| |
| foreachp check_blacklist < "$module_list" |
| |
| cat "$blacklist_conf_files" >> "$module_list" |
| rm -f "$blacklist_conf_files" |