[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Fixing the Gobject Introspection mess



Hi,

with an increasing number of packages providing introspection data for
Gobject, each one doing things its own way, it’s starting to be a big
mess. I’d like to fix this mess before we have a hundred different
packages, all behaving differently.

Which is why I’m proposing a Gobject-introspection mini-policy. And of
course, to implement it in existing packages.


1. Package layout

GObject-introspection packages provide introspection data
in /usr/share/gir-1.0/Foo-X.Y.gir, and the
optional /usr/lib/girepository-1.0/Foo-X.Y.typelib.

The packages should be architecture-dependent.


2. Naming scheme

The package should be named gir1.0-foo-X.Y. For example, the package
containing WebKit-1.0.gir will be named gir1.0-webkit-1.0.

Giant repositories of dozens of unrelated introspection data should be
avoided. (Under this rationale, gobject-introspection-repository will be
split.) However, related libraries that are known to evolve together can
live in the same package (example: Gst*-0.10).

If, alternatively, the introspection data belongs in the same source
package as the library it references, it can be put in the same binary
package. In this case, it must feature a Provides: field corresponding
to the name of the introspection data. For example, libfoo2.0-2
containing libfoo-2.0.so.2 and Foo-2.0.gir must provide gir1.0-foo-2.0.

Introspection packages belong in section libs for the moment. If there
are enough packages to justify it, a new section will be requested to
the FTP masters.


3. Dependencies of introspection packages

Introspection packages must depend on the libraries they reference, with
a sufficient version for the symbols they reference.

For that effect, I propose to introduce a new helper, dh_gir, in the
gobject-introspection package (which is already a build-dependency for
introspection packages). It would wrap dpkg-shlibdeps (possibly using
its internals until the needed interfaces are exported) so that the
dependencies are the same as those of similar ELF binaries.

Introspection packages must depend on other introspection packages that
are referenced through <include> statements. The helper should generate
such dependencies as well.


4. Dependencies on introspection packages

Currently, there are only Seed (JavaScript) scripts to use these
introspection packages. In the future, there might also be Python or
other interpreted languages.

Generating dependencies automatically for interpreted languages is not
reliable. Therefore, these packages must depend by hand on the
appropriate gir1.0-* packages. The interpreters themselves don’t need to
depend on packages they don’t use directly.



Thoughts anyone? I’ll start working on dh_gir as described if there is
consensus on the proposed policy. Once implemented in a few packages,
the policy would be put in a more formal way and added to
gobject-introspection.

Cheers,
-- 
 .''`.      Josselin Mouette
: :' :
`. `'   “I recommend you to learn English in hope that you in
  `-     future understand things”  -- Jörg Schilling

Attachment: signature.asc
Description: Ceci est une partie de message =?ISO-8859-1?Q?num=E9riquement?= =?ISO-8859-1?Q?_sign=E9e?=


Reply to: