On Fri, Nov 20, 2020 at 06:49:15PM +0100, Andrea Bolognani wrote: > On Fri, 2020-11-20 at 17:31 +0100, Pavel Hrdina wrote: > > On Fri, Nov 20, 2020 at 04:38:20PM +0100, Andrea Bolognani wrote: > > > If you did that, then you wouldn't have simplified meson.build much > > > while at the same time you'd have ended up with a far less nuanced > > > check that does not catch scenarios ranging from the command simply > > > not being installed on the build machine to the package not being > > > available, perhaps temporarily, for the specific Linux architecture > > > in use. Doesn't really sound like an improvement to me. > > > > I personally don't see any issue with this. The binary is simply runtime > > dependency, there is no need to have it present when building libvirt. > > > > If someone is building any project from source code manually you can > > consider these users advanced enough to figure all of this out or they > > are following some tutorial where they most likely installed all > > required build and runtime dependencies mentioned in the tutorial. > > > > As Martin mentioned this would mostly affect only maintainers of > > downstream libvirt packages where they have to have some understanding > > of the project and it's dependencies in order to create the package > > properly. > > I feel like "some understanding" is an understatement considering the > sheer size of libvirt: it's entirely possible to have a pretty good > understanding of it and still get some of the details wrong. > > In my opinion this move would place a significant burden upon > downstreams and users while taking very little burden away from > upstream developers because, regardless of whether or not build time > checks are performed, the task of maintaining the list of runtime > dependencies in *some* form still falls upon upstream: you would just > have changed it from updating three files to updating two.
I would say that nobody is arguing about the responsibility of providing list of runtime dependencies. In fact IMHO the ideal solution would be to have a complete list of all our dependencies with links to the respective upstream projects to make it clear. Having checks for runtime dependencies in our build system and use these to figure out if the feature should be enabled or disabled is wrong and should be removed completely and where needed replaced with different checks for targeted OS, architecture, etc. It's not only about the burden. The feature can be compiled without the presence of the binary and the binary can be provided later. The same way it can be present during the compilation but missing when libvirt is actually running. For downstream maintainers having a list of dependencies is IMO way better then running the build system several times to figure out what else they need to add to the package dependencies in order to successfully build the package. Obviously this applies to non-RPM based distributions. Like Martin already wrote, the current situation is already broken as most of the runtime dependencies are optional and the build will not fail if they are missing, so there is already a requirement for that knowledge. Only if few cases the runtime dependency is used to enable/disable some libvirt feature. And there are other runtime dependencies that are not even mentioned in our build system. Like I wrote, end-users compiling libvirt directly are usually following some tutorial where the list of dependencies is already present and even with the build time check they can still shoot themselves by removing the runtime dependency once libvirt is compiled and/or installed so there is no guarantee that it will solve all the scenarios for end users. The possibility to provide explicit absolute path to the runtime dependencies is related but completely different issue. Again IMHO I don't think that it's necessary to have these options. Pavel
signature.asc
Description: PGP signature