[Buildroot] [PATCH 2/3] graph-depends: split off get_version/get_depends into pkgutil.py

Yann E. MORIN yann.morin.1998 at free.fr
Wed Nov 7 19:39:03 UTC 2018

Thomas, All,

On 2018-11-07 20:06 +0100, Thomas De Schampheleire spake thusly:
> El mié., 7 nov. 2018 a las 19:07, Yann E. MORIN
> (<yann.morin.1998 at free.fr>) escribió:
> > On 2017-02-03 21:57 +0100, Thomas De Schampheleire spake thusly:
> > > From: Thomas De Schampheleire <thomas.de_schampheleire at nokia.com>
> > >
> > > Functions to obtain the version and dependencies of a package from Python
> > > can be useful for several scripts. Extract this logic out of graph-depends
> > > into pkgutil.py.
> >
> > Coming back to this script, because I'm rewriting the way graph-depends
> > gets the dependency tree. When you said "useful for several scripts,"
> > did you expect it to be useful to scripts that are not in Buildroot
> > (e.g. user-local scripts)?
> Yes, exactly. We are using the logic from pkgutil from another python
> script and want to avoid code duplication.
> This particular script is not something that upstream accepts, i.e.
> generating opkg files for specific packages (and for that, we need to
> know the dependencies and versions of each package).

So, if you were to get a new function that would return basically the
same, but in another format, but much quicker (~4s instead of ~45s),
would that be something you could adapt to?

I'm changing the way the dependency tree is extracted from the Makefile
data, and the function now has this API (function name yet to be
bike-shedded about):

    dict_deps, dict_types = get_dependency_tree(direction)


  - direction is either string 'forward' or 'back',

  - dict_deps is a dictionnary, which keys are the package names, and
    which values are lists of packages that are direct dependencies of
    the key package (basically, what get_all_depends() currently
    returns, but the whole dependency tree)

  - dict_types is a dictionnary, which keys are the package names, and
    the values are string representing whtehr the packages are target or
    host, and virtual or not, e.g.: 'target', 'target-virtual', 'host',

If needed, I could very easily make it return a three-tuple, with the
third one being dict_versions, keyed by package names, with values the
package version.

Would that be something that would be usable in your use case?

Yann E. MORIN.

|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |

More information about the buildroot mailing list