On Fri, Feb 05, 2021 at 03:03:07PM +0200, Andrius Merkys wrote: > On 2021-02-05 04:11, Jelmer Vernooij wrote: > > * Package name : ognibuild > > Version : 0.0.1 > > Upstream Author : Jelmer Vernooij > > * URL : https://github.com/jelmer/ognibuild > > * License : GPL > > Programming Lang: Python > > Description : Wrapper with common interface for invoking any kind of > > build tool > > > > Ognibuild is a simple wrapper with a common interface for invoking any kind > > of > > build tool. > > > > The ideas is that it can be run to build and install any source code > > directory > > by detecting the build system that is in use and invoking that with the > > correct > > parameters. > > Just curious: does it share code/logic with debhelper? AFAIK, debhelper > also applies many heuristics to build/install packages. It doesn't share any code with debhelper today; there are some similarities in what they're trying to do but their constraints are quite different.
Within a compat level debhelper needs to be consistent in its behaviour, and predictable. ognibuild provides no such guarantees and newer versions may behave slightly differently, as support for more build systems is added or tweaked. debhelper is specific Debian, ognibuild is not. > > It can also detect and install missing dependencies. > Do you mean Debian packages? That's what it's currently used for, but it's not specific to Debian. It uses a two-tier approach. It detects "upstream dependencies" from both upstream build configuration (e.g. setup.py) and build logs (e.g. "ModuleNotFoundError: unable to find module blah"). As a second step, it can then attempt to translate the upstream dependency (e.g. {'family': 'python', 'module': 'blah'} to a Debian package name by using apt-file or some other set of rules. That Debian package name can then be added to the build dependencies and (in the case of an error extract from a build log) the build retried to verify that the new dependency addresses the build error. It could also do something else as the second step, like invoke "pip install blah", or perhaps translate the upstream dependency to a RPM package name. Cheers, Jelmer
signature.asc
Description: PGP signature