]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
vapigen: Warn if the library argument doesn't match any package attribute
authorRico Tzschichholz <ricotz@ubuntu.com>
Sun, 9 Sep 2018 16:12:03 +0000 (18:12 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Mon, 17 Sep 2018 12:09:59 +0000 (14:09 +0200)
GIR files can contain a package key referring to the pkg-config name which
is the recommended and even required naming of a vapi.

Fixes https://gitlab.gnome.org/GNOME/vala/issues/669

vapigen/valavapigen.vala

index 9fe8ea6f003a13b67dfb8a6236b024b06be1bc5c..f4ae9a50e295786f60b88fea14b7b7d9b6a72c59 100644 (file)
@@ -170,6 +170,9 @@ class Vala.VAPIGen {
                        return quit ();
                }
 
+               // candidates to match library against
+               string[] package_names = {};
+
                // interface writer ignores external packages
                foreach (SourceFile file in context.get_source_files ()) {
                        if (file.filename.has_suffix (".vapi")) {
@@ -187,10 +190,18 @@ class Vala.VAPIGen {
                                                        }
                                                }
                                        }
+                                       if (file.explicit && file.package_name != null) {
+                                               package_names += file.package_name;
+                                       }
                                }
                        }
                }
 
+               var library_name = Path.get_basename (library);
+               if (package_names.length > 0 && !(library_name in package_names)) {
+                       Report.warning (null, "Given library name `%s' does not match pkg-config name `%s'".printf (library_name, string.join ("', `", package_names)));
+               }
+
                var interface_writer = new CodeWriter (CodeWriterType.VAPIGEN);
                var vapi_filename = "%s.vapi".printf (library);
                if (directory != null) {