use .deps files to satisfy dependencies, patch by Alberto Ruiz, fixes bug
authorJuerg Billeter <j@bitron.ch>
Mon, 27 Aug 2007 19:04:22 +0000 (19:04 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Mon, 27 Aug 2007 19:04:22 +0000 (19:04 +0000)
2007-08-27  Juerg Billeter  <j@bitron.ch>

* vapigen/valavapigen.vala: use .deps files to satisfy dependencies,
  patch by Alberto Ruiz, fixes bug 470756

* vapi/packages/clutter-0.3/clutter-0.3.deps,
  vapi/packages/gnome-desktop-2.0/gnome-desktop-2.0.deps,
  vapi/packages/gtksourceview-2.0/gtksourceview-2.0.deps,
  vapi/packages/libglade-2.0/libglade-2.0.deps,
  vapi/packages/libwnck-1.0/libwnck-1.0.deps: add missing dependencies

svn path=/trunk/; revision=509

ChangeLog
vapi/packages/clutter-0.3/clutter-0.3.deps
vapi/packages/gnome-desktop-2.0/gnome-desktop-2.0.deps
vapi/packages/gtksourceview-2.0/gtksourceview-2.0.deps [new file with mode: 0644]
vapi/packages/libglade-2.0/libglade-2.0.deps [new file with mode: 0644]
vapi/packages/libwnck-1.0/libwnck-1.0.deps
vapigen/valavapigen.vala

index 0dbd573..9735bb2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2007-08-27  Jürg Billeter  <j@bitron.ch>
+
+       * vapigen/valavapigen.vala: use .deps files to satisfy dependencies,
+         patch by Alberto Ruiz, fixes bug 470756
+
+       * vapi/packages/clutter-0.3/clutter-0.3.deps,
+         vapi/packages/gnome-desktop-2.0/gnome-desktop-2.0.deps,
+         vapi/packages/gtksourceview-2.0/gtksourceview-2.0.deps,
+         vapi/packages/libglade-2.0/libglade-2.0.deps,
+         vapi/packages/libwnck-1.0/libwnck-1.0.deps: add missing dependencies
+
 2007-08-27  Mathias Hasselmann  <mathias.hasselmann@gmx.de>
 
        * vapi/packages/pango/pango-custom.vala, vapi/pango.vala: 
diff --git a/vapi/packages/gtksourceview-2.0/gtksourceview-2.0.deps b/vapi/packages/gtksourceview-2.0/gtksourceview-2.0.deps
new file mode 100644 (file)
index 0000000..41a2aa1
--- /dev/null
@@ -0,0 +1,5 @@
+atk
+cairo
+gdk-2.0
+pango
+gtk+-2.0
diff --git a/vapi/packages/libglade-2.0/libglade-2.0.deps b/vapi/packages/libglade-2.0/libglade-2.0.deps
new file mode 100644 (file)
index 0000000..41a2aa1
--- /dev/null
@@ -0,0 +1,5 @@
+atk
+cairo
+gdk-2.0
+pango
+gtk+-2.0
index 1f1ebc3..1343a50 100644 (file)
@@ -80,6 +80,11 @@ class Vala.VAPIGen {
        }
        
        private bool add_package (string! pkg) {
+               if (context.has_package (pkg)) {
+                       // ignore multiple occurences of the same package
+                       return true;
+               }
+
                var package_path = get_package_path (pkg);
                
                if (package_path == null) {
@@ -91,6 +96,14 @@ class Vala.VAPIGen {
                return true;
        }
        
+       private static string[] get_packages_from_depsfile (string depsfile) {
+               string contents;
+               if (FileUtils.get_contents (depsfile, out contents)) {
+                       return contents.strip ().split ("\n");
+               }
+               return null;
+       }
+
        private int run () {
                context = new CodeContext ();
                
@@ -99,6 +112,25 @@ class Vala.VAPIGen {
                        Report.error (null, "glib-2.0 not found in specified Vala API directories");
                }
                
+               /* load packages from .deps file */
+               foreach (string source in sources) {
+                       if (!source.has_suffix (".gidl")) {
+                               continue;
+                       }
+
+                       var depsfile = source.substring (0, source.len () - 4) + "deps";
+
+                       if (!FileUtils.test (depsfile, FileTest.EXISTS)) continue;
+                       
+                       string[] deps = get_packages_from_depsfile (depsfile);
+                       
+                       foreach (string dep in deps) {
+                               if (!add_package (dep)) {
+                                       Report.error (null, "%s not found in specified Vala API directories".printf (dep));
+                               }
+                       }
+               }
+               
                if (packages != null) {
                        foreach (string package in packages) {
                                if (!add_package (package)) {