[arch-projects] [mkinitcpio][PATCH 1/3] Handle softdeps in modules

Dave Reisner d at falconindy.com
Mon Jun 27 12:27:40 UTC 2016


On Mon, Jun 27, 2016 at 08:19:35AM -0400, Dave Reisner wrote:
> modinfo outputs softdeps which we can add if they exist (failing
> quietly on not-found). this obviates the need for some of our own
> module quirks.
> 
> The output of modinfo can take many forms, as it's nearly freeform text
> in the  .modinfo section of the kernel module. The basic form is:
> 
>   softdep:        pre: foo
> 
> But it might also be:
> 
>   softdep:        pre: foo bar post: baz
> 
> Or:
> 
>   softdep:        pre: foo
>   softdep:        post: bar
> 
> So just parse the entire line, discarding anything that ends with a ':'.
> ---

Replying to myself, because apparently I'm bad at rebasing my own work.

>  functions | 17 ++++++++++++-----
>  1 file changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/functions b/functions
> index 362d07b..500dcc0 100644
> --- a/functions
> +++ b/functions
> @@ -348,7 +348,7 @@ add_module() {
>      # discovered and added.
>      #   $1: module name
>  
> -    local module= path= deps= field= value= firmware=()
> +    local module= path= softdeps= deps= field= value= firmware=()
>      local ign_errors=0
>  
>      [[ $KERNELVERSION == none ]] && return 0
> @@ -375,6 +375,14 @@ add_module() {
>              firmware)
>                  firmware+=("$value")
>                  ;;
> +            softdep)
> +                read -ra softdeps <<<"$value"
> +                for module in "${softdeps[@]}"; do
> +                    [[ $module == *: ]] && continue
> +                    add_module "$module"

The arg to add_module needs to be suffixed with '?'

> +                done
> +                add_module "$softdep?"

This add_module call doesn't belong here...

> +                ;;
>          esac
>      done < <(modinfo -b "$_optmoduleroot" -k "$KERNELVERSION" -0 "$module" 2>/dev/null)
>  
> @@ -403,9 +411,8 @@ add_module() {
>          ocfs2)
>              add_module "configfs?"
>              ;;
> -        btrfs|libcrc32c)
> -            add_module "crc32c_intel?"
> -            add_module "crc32c?"
> +        btrfs)
> +            add_module "libcrc32c?"
>              ;;
>      esac
>  }
> @@ -780,7 +787,7 @@ install_modules() {
>      depmod -b "$BUILDROOT" "$KERNELVERSION"
>  
>      # remove all non-binary module.* files (except devname for on-demand module loading)
> -    rm "$moduledest"/modules.!(*.bin|devname)
> +    rm "$moduledest"/modules.!(*.bin|devname|softdep)
>  }
>  
>  # vim: set ft=sh ts=4 sw=4 et:
> -- 
> 2.8.3


More information about the arch-projects mailing list