[Buildroot] [PATCH 50/50 v2] support/scripts: don't draw most of busybox' dependencies

Carlos Santos casantos at datacom.com.br
Mon Jul 9 01:41:25 UTC 2018


> From: "Yann Morin" <yann.morin.1998 at free.fr>
> To: "buildroot" <buildroot at buildroot.org>
> Cc: "Yann Morin" <yann.morin.1998 at free.fr>, "DATACOM" <casantos at datacom.com.br>
> Sent: Sunday, July 8, 2018 6:46:15 AM
> Subject: [PATCH 50/50 v2] support/scripts: don't draw most of busybox' dependencies

> Since most dependencies of busybox' are there to guarantee that busybox
> does not install applets that are already provided by other packages,
> they are not really functional dependencies, and mostly clutter the
> dependency graph.
> 
> Only the dependencies on libraries are interesting, so that is all we
> keep.
> 
> Even though that function is only called with pkg set to 'busybox', we
> still pass it as an argument, for symetry with the other functions that
> removes the dependencies of a package.
> 
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
> Reviewed-by: Matt Weber <matthew.weber at rockwellcollins.com>
> Cc: Carlos Santos <casantos at datacom.com.br>
> 
> ---
> Changes v1 -> v2:
>  - carry tag from Matt
>  - clarify linux-pam case  (Carlos)
> ---
> support/scripts/graph-depends | 11 +++++++++++
> 1 file changed, 11 insertions(+)
> 
> diff --git a/support/scripts/graph-depends b/support/scripts/graph-depends
> index 621e603278..0a3bc11be7 100755
> --- a/support/scripts/graph-depends
> +++ b/support/scripts/graph-depends
> @@ -181,6 +181,15 @@ def remove_mandatory_deps(pkg, deps):
>     return [p for p in deps[pkg] if p not in ['toolchain', 'skeleton']]
> 
> 
> +# This function removes all dependencies of busybox, except its
> +# dependencies on libraries (of which libpam, from linux-pam) and
> +# host-pkgconf.
> +def remove_busybox_deps(pkg, deps):
> +    busybox_dep_whitelist = ['linux-pam', 'host-pkgconf']
> +    return [p for p in deps[pkg]
> +            if p.startswith('lib') or p in busybox_dep_whitelist]
> +
> +
> # This function will check that there is no loop in the dependency chain
> # As a side effect, it builds up the dependency cache.
> def check_circular_deps(deps):
> @@ -211,6 +220,8 @@ def check_circular_deps(deps):
> # This functions trims down the dependency list of all packages.
> # It applies in sequence all the dependency-elimination methods.
> def remove_extra_deps(deps, transitive):
> +    if 'busybox' in list(deps.keys()):
> +        deps['busybox'] = remove_busybox_deps('busybox', deps)
>     for pkg in list(deps.keys()):
>         if not pkg == 'all':
>             deps[pkg] = remove_mandatory_deps(pkg, deps)
> --
> 2.14.1

Reviewed-by: Carlos Santos <casantos at datacom.com.br>

-- 
Carlos Santos (Casantos) - DATACOM, P&D
“Marched towards the enemy, spear upright, armed with the certainty
that only the ignorant can have.” — Epitaph of a volunteer



More information about the buildroot mailing list