Skip to content

Conversation

@jwharm
Copy link
Owner

@jwharm jwharm commented Sep 6, 2025

I've reorganized the modules:

  • GLib, GObject, GIO and GModule are bundled in one module org.gnome.glib
  • Gdk, Graphene, Gsk and Gtk are bundled in one module org.gnome.gtk
  • Pango and PangoCairo are bundled in org.gnome.pango
  • Gst, GstBase, GstAudio, GstVideo and GstPbUtils are bundled in module org.freedesktop.gstreamer
  • WebKit, WebKitWebProcessExtension and JavaScriptCore are bundled in module org.webkitgtk
  • The test modules GIMarshallingTests, Regress, WarnLib and Utility are bundled in module org.gnome.gobjectintrospectiontests
  • The remaining modules (Adw, GdkPixbuf, GtkSourceView, HarfBuzz and Soup) are unchanged.

Reasons for this change:

  • The new setup is more in line with the upstream project structure. For example, GLib, Gio, GObject and GModule are all in the same repository in GNOME GitLab.
  • Fewer modules mean fewer artifacts to publish on Maven and a simpler dependency tree.
  • Fewer modules means faster Gradle build/configuration speed for java-gi.

I don't expact that this change breaks existing code much, because most apps will depend on Adw or Gtk, and that still works unchanged.

java-gi offers a Type.toString() method that calls g_type_name(), but
because that function is in GObject, it wasn't available for the alias
that java-gi has in GLib. Now that the packages are combined in one
module, it's possible to call a GObject function from the GLib side.

This change uncovered a bug in the metadata functionality, that caused
an immutable attributes map in GirElement. The metadata matcher
requires a mutable map, so this is now fixed.
@jwharm jwharm merged commit b983747 into main Sep 6, 2025
@jwharm jwharm deleted the module-reorganization branch September 6, 2025 09:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants