24824653 improve gobject-introspection typelib dependency tracking
authorAlan Coopersmith <Alan.Coopersmith@Oracle.COM>
Mon, 10 Oct 2016 13:26:21 -0700
changeset 7081 616e1d8621e7
parent 7080 49b4c7a1ceca
child 7082 c589e79cefef
24824653 improve gobject-introspection typelib dependency tracking
components/desktop/os-welcome/Makefile
components/desktop/os-welcome/os-welcome.p5m
components/gnome/caribou/Makefile
components/gnome/caribou/caribou.p5m
components/gnome/sushi/Makefile
components/gnome/sushi/sushi.p5m
transforms/depends
--- a/components/desktop/os-welcome/Makefile	Mon Oct 10 10:57:41 2016 -0700
+++ b/components/desktop/os-welcome/Makefile	Mon Oct 10 13:26:21 2016 -0700
@@ -46,6 +46,8 @@
 
 REQUIRED_PACKAGES += file/gnu-coreutils
 REQUIRED_PACKAGES += library/desktop/gdk-pixbuf
+REQUIRED_PACKAGES += library/desktop/gobject/gobject-introspection
+REQUIRED_PACKAGES += library/desktop/gtk3
 REQUIRED_PACKAGES += library/python/pygobject-3-27
 REQUIRED_PACKAGES += runtime/python-27
 REQUIRED_PACKAGES += shell/ksh93
--- a/components/desktop/os-welcome/os-welcome.p5m	Mon Oct 10 10:57:41 2016 -0700
+++ b/components/desktop/os-welcome/os-welcome.p5m	Mon Oct 10 13:26:21 2016 -0700
@@ -101,6 +101,17 @@
 # called in os-icons-copy.sh
 depend type=require fmri=__TBD pkg.debug.depend.file=usr/bin/stat
 # pkgdepend doesn't know that importing gi requires the gobject-introspection
-# data files, so we have to list the ones not in pygobject-3-* manually
-depend type=require fmri=__TBD \
-    pkg.debug.depend.file=usr/lib/girepository-1.0/GdkPixbuf-2.0.typelib
+# data files (RFE 24463417), so we have to list them manually
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=GObject-2.0 \
+    pkg.debug.depend.reason=usr/bin/os-about \
+    pkg.debug.depend.reason=usr/bin/os-next-steps
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Gdk-3.0 \
+    pkg.debug.depend.reason=usr/bin/os-about \
+    pkg.debug.depend.reason=usr/bin/os-next-steps
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Gtk-3.0 \
+    pkg.debug.depend.reason=usr/bin/os-about \
+    pkg.debug.depend.reason=usr/bin/os-next-steps
+depend type=require fmri=__TBD pkg.debug.depend.reason=usr/bin/os-next-steps \
+    pkg.tmp.gi-typelib=GdkPixbuf-2.0
+depend type=require fmri=__TBD pkg.debug.depend.reason=usr/bin/os-next-steps \
+    pkg.tmp.gi-typelib=Gio-2.0
--- a/components/gnome/caribou/Makefile	Mon Oct 10 10:57:41 2016 -0700
+++ b/components/gnome/caribou/Makefile	Mon Oct 10 13:26:21 2016 -0700
@@ -59,11 +59,15 @@
 CONFIGURE_OPTIONS += --with-pic
 CONFIGURE_OPTIONS += --libexecdir=$(USRLIBDIR)
 
+PKG_MACROS += PYVER="$(PYTHON_VERSION)"
+
 REQUIRED_PACKAGES += developer/vala
 REQUIRED_PACKAGES += gnome/gsettings-desktop-schemas
 REQUIRED_PACKAGES += library/desktop/at-spi2-atk
 REQUIRED_PACKAGES += library/desktop/at-spi2-core
 REQUIRED_PACKAGES += library/desktop/atk
+REQUIRED_PACKAGES += library/desktop/clutter
+REQUIRED_PACKAGES += library/desktop/gobject/gobject-introspection
 REQUIRED_PACKAGES += library/desktop/gdk-pixbuf
 REQUIRED_PACKAGES += library/desktop/gtk2
 REQUIRED_PACKAGES += library/desktop/gtk3
@@ -71,6 +75,7 @@
 REQUIRED_PACKAGES += library/desktop/libxklavier
 REQUIRED_PACKAGES += library/glib2
 REQUIRED_PACKAGES += library/libxml2
+REQUIRED_PACKAGES += library/python/pygobject-3-27
 REQUIRED_PACKAGES += runtime/python-27
 REQUIRED_PACKAGES += x11/library/libx11
 REQUIRED_PACKAGES += x11/library/libxtst
--- a/components/gnome/caribou/caribou.p5m	Mon Oct 10 10:57:41 2016 -0700
+++ b/components/gnome/caribou/caribou.p5m	Mon Oct 10 13:26:21 2016 -0700
@@ -151,5 +151,32 @@
 file path=usr/share/vala/vapi/caribou-1.0.deps
 file path=usr/share/vala/vapi/caribou-1.0.vapi
 license COPYING license=LGPLv2.1
+depend type=require fmri=__TBD pkg.debug.depend.file=gi/repository/__init__.py \
+    pkg.debug.depend.path=usr/lib/python$(PYVER)/vendor-packages
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=GObject-2.0 \
+    pkg.debug.depend.reason=caribou/antler/keyboard_view.py \
+    pkg.debug.depend.reason=caribou/antler/main.py \
+    pkg.debug.depend.reason=caribou/antler/window.py \
+    pkg.debug.depend.reason=caribou/settings/preferences_window.py \
+    pkg.debug.depend.reason=caribou/settings/setting_types.py
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Gtk-3.0 \
+    pkg.debug.depend.reason=caribou/antler/keyboard_view.py \
+    pkg.debug.depend.reason=caribou/antler/main.py \
+    pkg.debug.depend.reason=caribou/antler/window.py \
+    pkg.debug.depend.reason=caribou/settings/preferences_window.py
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=GLib-2.0 \
+    pkg.debug.depend.reason=caribou/antler/keyboard_view.py \
+    pkg.debug.depend.reason=caribou/antler/main.py \
+    pkg.debug.depend.reason=caribou/settings/setting_types.py
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Gdk-3.0 \
+    pkg.debug.depend.reason=caribou/antler/keyboard_view.py \
+    pkg.debug.depend.reason=caribou/antler/window.py \
+    pkg.debug.depend.reason=caribou/settings/preferences_window.py
+depend type=require fmri=__TBD \
+    pkg.debug.depend.reason=caribou/antler/window.py \
+    pkg.tmp.gi-typelib=Clutter-1.0
+depend type=require fmri=__TBD \
+    pkg.debug.depend.reason=caribou/settings/settings_manager.py \
+    pkg.tmp.gi-typelib=Gio-2.0
 depend type=require fmri=__TBD pkg.debug.depend.reason=libcaribou/scanner.c \
     pkg.tmp.gsettings-schema=org.gnome.caribou
--- a/components/gnome/sushi/Makefile	Mon Oct 10 10:57:41 2016 -0700
+++ b/components/gnome/sushi/Makefile	Mon Oct 10 13:26:21 2016 -0700
@@ -75,6 +75,7 @@
 REQUIRED_PACKAGES += library/desktop/gtk3
 REQUIRED_PACKAGES += library/desktop/gtksourceview3
 REQUIRED_PACKAGES += library/desktop/pango
+REQUIRED_PACKAGES += library/desktop/webkitgtk4
 REQUIRED_PACKAGES += library/glib2
 REQUIRED_PACKAGES += system/library/freetype-2
 REQUIRED_PACKAGES += x11/library/libx11
--- a/components/gnome/sushi/sushi.p5m	Mon Oct 10 10:57:41 2016 -0700
+++ b/components/gnome/sushi/sushi.p5m	Mon Oct 10 13:26:21 2016 -0700
@@ -126,3 +126,86 @@
 file path=usr/share/sushi/js/viewers/image.js
 file path=usr/share/sushi/js/viewers/text.js
 license COPYING license=GPLv2+exceptions
+depend type=require fmri=__TBD \
+    pkg.debug.depend.path=usr/lib/$(MACH64)/sushi/girepository-1.0 \
+    pkg.tmp.gi-typelib=Sushi-1.0 \
+    pkg.debug.depend.reason=src/js/ui/fallbackRenderer.js \
+    pkg.debug.depend.reason=src/js/ui/mainWindow.js \
+    pkg.debug.depend.reason=src/js/viewers/audio.js \
+    pkg.debug.depend.reason=src/js/viewers/evince.js \
+    pkg.debug.depend.reason=src/js/viewers/font.js \
+    pkg.debug.depend.reason=src/js/viewers/html.js \
+    pkg.debug.depend.reason=src/js/viewers/text.js
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Gio-2.0 \
+    pkg.debug.depend.reason=src/js/ui/application.js \
+    pkg.debug.depend.reason=src/js/ui/fallbackRenderer.js \
+    pkg.debug.depend.reason=src/js/ui/mainWindow.js \
+    pkg.debug.depend.reason=src/js/ui/mimeHandler.js \
+    pkg.debug.depend.reason=src/js/viewers/audio.js \
+    pkg.debug.depend.reason=src/js/viewers/text.js
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Gtk-3.0 \
+    pkg.debug.depend.reason=src/js/ui/application.js \
+    pkg.debug.depend.reason=src/js/ui/fallbackRenderer.js \
+    pkg.debug.depend.reason=src/js/ui/mainWindow.js \
+    pkg.debug.depend.reason=src/js/ui/spinnerBox.js \
+    pkg.debug.depend.reason=src/js/ui/utils.js \
+    pkg.debug.depend.reason=src/js/viewers/audio.js \
+    pkg.debug.depend.reason=src/js/viewers/evince.js \
+    pkg.debug.depend.reason=src/js/viewers/font.js \
+    pkg.debug.depend.reason=src/js/viewers/gst.js \
+    pkg.debug.depend.reason=src/js/viewers/html.js \
+    pkg.debug.depend.reason=src/js/viewers/image.js \
+    pkg.debug.depend.reason=src/js/viewers/text.js
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=GLib-2.0 \
+    pkg.debug.depend.reason=src/js/ui/application.js \
+    pkg.debug.depend.reason=src/js/ui/main.js \
+    pkg.debug.depend.reason=src/js/ui/mainWindow.js \
+    pkg.debug.depend.reason=src/js/viewers/font.js \
+    pkg.debug.depend.reason=src/js/viewers/html.js \
+    pkg.debug.depend.reason=src/js/viewers/image.js \
+    pkg.debug.depend.reason=src/js/viewers/text.js
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Gdk-3.0 \
+    pkg.debug.depend.reason=src/js/ui/application.js \
+    pkg.debug.depend.reason=src/js/ui/mainWindow.js \
+    pkg.debug.depend.reason=src/js/ui/utils.js \
+    pkg.debug.depend.reason=src/js/viewers/gst.js \
+    pkg.debug.depend.reason=src/js/viewers/text.js
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=GtkClutter-1.0 \
+    pkg.debug.depend.reason=src/js/ui/fallbackRenderer.js \
+    pkg.debug.depend.reason=src/js/ui/mainWindow.js \
+    pkg.debug.depend.reason=src/js/ui/spinnerBox.js \
+    pkg.debug.depend.reason=src/js/viewers/audio.js \
+    pkg.debug.depend.reason=src/js/viewers/evince.js \
+    pkg.debug.depend.reason=src/js/viewers/font.js \
+    pkg.debug.depend.reason=src/js/viewers/gst.js \
+    pkg.debug.depend.reason=src/js/viewers/html.js \
+    pkg.debug.depend.reason=src/js/viewers/image.js \
+    pkg.debug.depend.reason=src/js/viewers/text.js
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Clutter-1.0 \
+    pkg.debug.depend.reason=src/js/ui/mainWindow.js \
+    pkg.debug.depend.reason=src/js/ui/tweener.js \
+    pkg.debug.depend.reason=src/js/viewers/gst.js
+depend type=require fmri=__TBD pkg.debug.depend.reason=src/js/ui/mainWindow.js \
+    pkg.tmp.gi-typelib=ClutterGdk-1.0
+depend type=require fmri=__TBD pkg.debug.depend.reason=src/js/ui/mainWindow.js \
+    pkg.tmp.gi-typelib=GdkX11-3.0
+depend type=require fmri=__TBD pkg.debug.depend.reason=src/js/ui/mainWindow.js \
+    pkg.tmp.gi-typelib=Pango-1.0
+depend type=require fmri=__TBD pkg.debug.depend.reason=src/js/viewers/audio.js \
+    pkg.tmp.gi-typelib=Gst-1.0
+depend type=require fmri=__TBD \
+    pkg.debug.depend.reason=src/js/viewers/evince.js \
+    pkg.tmp.gi-typelib=EvinceDocument-3.0
+depend type=require fmri=__TBD \
+    pkg.debug.depend.reason=src/js/viewers/evince.js \
+    pkg.tmp.gi-typelib=EvinceView-3.0
+depend type=require fmri=__TBD pkg.debug.depend.reason=src/js/viewers/gst.js \
+    pkg.tmp.gi-typelib=ClutterGst-2.0
+depend type=require fmri=__TBD pkg.debug.depend.reason=src/js/viewers/gst.js \
+    pkg.tmp.gi-typelib=GObject-2.0
+depend type=require fmri=__TBD pkg.debug.depend.reason=src/js/viewers/html.js \
+    pkg.tmp.gi-typelib=WebKit2-4.0
+depend type=require fmri=__TBD pkg.debug.depend.reason=src/js/viewers/image.js \
+    pkg.tmp.gi-typelib=GdkPixbuf-2.0
+depend type=require fmri=__TBD pkg.debug.depend.reason=src/js/viewers/text.js \
+    pkg.tmp.gi-typelib=GtkSource-3.0
--- a/transforms/depends	Mon Oct 10 10:57:41 2016 -0700
+++ b/transforms/depends	Mon Oct 10 13:26:21 2016 -0700
@@ -25,10 +25,13 @@
 
 #
 # Dependency helpers for things pkgdepend(1) doesn't or can't handle
+# These may be eventually replaced if/when the listed RFE's to handle
+# them directly in pkgdepend are implemented.
 #
 
 #
 # gsettings schema files
+#   Bug 24416519 - pkgdepend could look for gsettings schema dependencies
 #
 # Finding these requires looking in source code for calls such as:
 #   g_settings_new ("org.gnome.desktop.interface");
@@ -45,3 +48,36 @@
     delete pkg.tmp.gsettings-schema .*>
 <transform depend fmri=__TBD pkg.debug.depend.file=.*\.gschema\.xml$ -> \
     add pkg.debug.depend.path usr/share/glib-2.0/schemas>
+
+#
+# gobject-introspection typelib files
+#   Bug 24463417 - pkgdepend could look for pygobject dependencies
+#   Bug 24463542 - pkgdepend could look for girepository dependencies
+#
+# These are used as binding layers between the C libraries and other languages
+# such as Python and JavaScript.
+#
+# In python:
+#  gi.require_version('Gtk', '3.0')
+#  from gi.repository import Gtk
+# In javascript:
+#  imports.gi.versions.Gtk = '3.0';
+#  const Gtk = imports.gi.Gtk;
+#
+# When found, add an entry such as:
+#   depend type=require fmri=__TBD pkg.tmp.gi-typelib=Gtk-3.0
+# If no version is specified for the import, the latest version should be used.
+#
+# You may also include pkg.debug.depend.reason=source-file.py as a reference
+# for future updates to record what source file you found the call in.
+#
+# If you need to search application-specific directories for them, you can add
+# an additional pkg.debug.depend.path attribute for each directory.
+#
+
+<transform depend fmri=__TBD pkg.tmp.gi-typelib=(.*) -> \
+    default pkg.debug.depend.file %<1>.typelib>
+<transform depend fmri=__TBD pkg.debug.depend.file=.*\.typelib$ -> \
+    delete pkg.tmp.gi-typelib .*>
+<transform depend fmri=__TBD pkg.debug.depend.file=.*\.typelib$ -> \
+    add pkg.debug.depend.path usr/lib/$(MACH64)/girepository-1.0>