From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yann E. MORIN Date: Wed, 7 Nov 2018 20:39:03 +0100 Subject: [Buildroot] [PATCH 2/3] graph-depends: split off get_version/get_depends into pkgutil.py In-Reply-To: References: <20170203205745.14488-1-patrickdepinguin@gmail.com> <20170203205745.14488-4-patrickdepinguin@gmail.com> <20181107180753.GA4702@scaer> Message-ID: <20181107193903.GC4702@scaer> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net 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 > () escribi?: > > On 2017-02-03 21:57 +0100, Thomas De Schampheleire spake thusly: > > > From: Thomas De Schampheleire > > > > > > 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) where: - 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', 'host-virtual'. 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? Regards, 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. | '------------------------------^-------^------------------^--------------------'