[valadoc] doclets/gtkdoc: Call pkg-config only for existing packages



commit 959c7946a0123fa68c4d4cbf00cd776fd1a13b71
Author: Luca Bruno <lethalman88 gmail com>
Date:   Mon Aug 2 22:22:45 2010 +0200

    doclets/gtkdoc: Call pkg-config only for existing packages

 src/doclets/gtkdoc/doclet.vala |    2 +-
 src/doclets/gtkdoc/utils.vala  |   15 +++++++++++++++
 2 files changed, 16 insertions(+), 1 deletions(-)
---
diff --git a/src/doclets/gtkdoc/doclet.vala b/src/doclets/gtkdoc/doclet.vala
index bb518c6..ae89212 100644
--- a/src/doclets/gtkdoc/doclet.vala
+++ b/src/doclets/gtkdoc/doclet.vala
@@ -216,7 +216,7 @@ public class Gtkdoc.Director : Valadoc.Doclet, Object {
 
 		string[] pc = { "pkg-config" };
 		foreach (var package in tree.get_package_list()) {
-			if (package.is_package) {
+			if (package.is_package && package_exists (package.name)) {
 				pc += package.name;
 			}
 		}
diff --git a/src/doclets/gtkdoc/utils.vala b/src/doclets/gtkdoc/utils.vala
index 3d883d2..40f388e 100644
--- a/src/doclets/gtkdoc/utils.vala
+++ b/src/doclets/gtkdoc/utils.vala
@@ -1,6 +1,7 @@
 /* utils.vala
  *
  * Copyright (C) 2010 Luca Bruno
+ * Copyright (C) 2007-2009  Jürg Billeter
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -148,6 +149,20 @@ namespace Gtkdoc {
 	public string to_docbook_id (string name) {
 		return name.replace(".", "-").replace("_", "-");
 	}
+
+	public bool package_exists (string package_name) {
+		// copied from vala/codegen/valaccodecompiler.vala
+		string pc = "pkg-config --exists " + package_name;
+		int exit_status;
+
+		try {
+			Process.spawn_command_line_sync (pc, null, null, out exit_status);
+			return (0 == exit_status);
+		} catch (SpawnError e) {
+			warning ("GtkDoc: Error pkg-config --exists %s: %s", package_name, e.message);
+			return false;
+		}
+	}
 }
 
 



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