On Thu, 2014-10-16 at 12:38 +0200, jcsl wrote:
Hi.
El Jueves, 16 de octubre de 2014 12:21:17 Dimstar / Dominique Leuenberger escribió:
That's actually a real thing: libvte2_90 no longer exists in favor of libvte2_91; and that's the reason why implicit library dependencies on a package are just a bad thing :)
The good news though: the next snapshot has this corrected; virt-manager's spec-file has been updated to perform automatic dependency scanning (using gobject introspection, typelib() Dependencies).
The version that should have that will be 1.0.1-18.1 (or higher).
The changelog mentions: +- Remove hardcoded package dependencies in spec file and instead + use gobject-introspection + virt-manager.spec
Cheers, Dominique
What is necessary to achieve this goal? I have the same problem with Tilda. Do you need BuildRequires: gobject-introspection only or something else too?
'It depends';
BuildRequires gobject-introspection pulls in an dependency scanner that
parses code (currently python and javascript) for known pattern to
import object introspection bindings (packaged as
typelib-1_0-<NAME>-<VERSION>, files installed in
%{_libdir}/girepository-1.0/<NAME>-<VERSION>.typelib
IF your code uses these (in the form of "from gi.repository import Vte"
for example, then, YES, adding gobject-introspection as BuildDep is the
right thing. the .typelib's themselves have a further dependency down to
the actual library, so you don't have to worry about this.
Care is to be given to those imports, as they are 'unversioned'. So a
new library might have a different API/ABI and break silently. Or zypp
might not know which package to install if there is more than one
available..
As an example:
we have typelib-1_0-WebKitGtk-1_0 and typelib-1_0-WebKitGtk-3_0 (the
GTK2 and GTK3 branches)
If you simply specify
from gi.repository import WebKitGtk, this will translate to an RPM
Dependency (typelib(WebKitGtk), which is provided by both packages.
In cae of WebKit, you very often know that you need the one or the
other, so you can 'force' this with
import gi
gi.require_version('WebKitGtk', '3.0')
from gi.repository import WebKitGtk
=> the dep scanner will also interpret this and add a typelib(WebKitGtk)
= 3.0 dependency. (so in short: the dep scanner is as good as the code
it scans; it can't guess anything more or less).
There is usually ONE more Requires to specify, which the scanner can't
do (yet): python-gobject or python3-gobject. The scanner does not know
what your code will be executed with. So we can't add this just as part
of the scan run at the moment.
Cheers,
Dominique
--
Dimstar / Dominique Leuenberger