[Libosinfo] [PATCH 2/4] Remove osinfo-db-validate tool
Daniel P. Berrange
berrange at redhat.com
Fri Jul 29 10:21:25 UTC 2016
Remove the osinfo-db-validate tool which is now available
via osinfo-db-tools. Add a RPM dep on osinfo-db-tools to
pull it in for upgradability.
Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
---
libosinfo.spec.in | 3 +-
mingw-libosinfo.spec.in | 4 +-
po/POTFILES.in | 1 -
tools/Makefile.am | 11 +-
tools/osinfo-db-validate.c | 350 ---------------------------------------------
5 files changed, 5 insertions(+), 364 deletions(-)
delete mode 100644 tools/osinfo-db-validate.c
diff --git a/libosinfo.spec.in b/libosinfo.spec.in
index d1ba0be..42b32b0 100644
--- a/libosinfo.spec.in
+++ b/libosinfo.spec.in
@@ -21,6 +21,7 @@ BuildRequires: /usr/bin/pod2man
BuildRequires: hwdata
BuildRequires: gobject-introspection-devel
Requires: hwdata
+Requires: osinfo-db-tools
%description
libosinfo is a library that allows virtualization provisioning tools to
@@ -84,7 +85,6 @@ rm -fr %{buildroot}
%defattr(-, root, root)
%doc AUTHORS ChangeLog COPYING.LIB NEWS README
%{_bindir}/osinfo-detect
-%{_bindir}/osinfo-db-validate
%{_bindir}/osinfo-query
%{_bindir}/osinfo-install-script
%dir %{_datadir}/libosinfo/
@@ -96,7 +96,6 @@ rm -fr %{buildroot}
%{_datadir}/libosinfo/db/platform
%{_datadir}/libosinfo/db/install-script
%{_datadir}/libosinfo/schemas/libosinfo.rng
-%{_mandir}/man1/osinfo-db-validate.1*
%{_mandir}/man1/osinfo-detect.1*
%{_mandir}/man1/osinfo-query.1*
%{_mandir}/man1/osinfo-install-script.1*
diff --git a/mingw-libosinfo.spec.in b/mingw-libosinfo.spec.in
index 24d7b0c..054f009 100644
--- a/mingw-libosinfo.spec.in
+++ b/mingw-libosinfo.spec.in
@@ -42,6 +42,7 @@ combination.
Summary: %{summary}
Requires: pkgconfig
+Requires: mingw32-osinfo-db-tools
%description -n mingw32-libosinfo
libosinfo is a library that allows virtualization provisioning tools to
@@ -52,6 +53,7 @@ combination.
Summary: %{summary}
Requires: pkgconfig
+Requires: mingw64-osinfo-db-tools
%description -n mingw64-libosinfo
libosinfo is a library that allows virtualization provisioning tools to
@@ -91,7 +93,6 @@ rm -rf $RPM_BUILD_ROOT%{mingw64_datadir}/gtk-doc
%files -n mingw32-libosinfo
%doc AUTHORS ChangeLog COPYING.LIB NEWS README
%{mingw32_bindir}/osinfo-detect.exe
-%{mingw32_bindir}/osinfo-db-validate.exe
%{mingw32_bindir}/osinfo-install-script.exe
%{mingw32_bindir}/osinfo-query.exe
%{mingw32_bindir}/libosinfo-1.0-1.dll
@@ -116,7 +117,6 @@ rm -rf $RPM_BUILD_ROOT%{mingw64_datadir}/gtk-doc
%files -n mingw64-libosinfo
%doc AUTHORS ChangeLog COPYING.LIB NEWS README
%{mingw64_bindir}/osinfo-detect.exe
-%{mingw64_bindir}/osinfo-db-validate.exe
%{mingw64_bindir}/osinfo-install-script.exe
%{mingw64_bindir}/osinfo-query.exe
%{mingw64_bindir}/libosinfo-1.0-1.dll
diff --git a/po/POTFILES.in b/po/POTFILES.in
index bf4afb9..91efc7b 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -432,7 +432,6 @@ osinfo/osinfo_product.c
osinfo/osinfo_resources.c
osinfo/osinfo_tree.c
osinfo/osinfo_os_variant.c
-tools/osinfo-db-validate.c
tools/osinfo-detect.c
tools/osinfo-install-script.c
tools/osinfo-query.c
diff --git a/tools/Makefile.am b/tools/Makefile.am
index 7f7249f..60515e6 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -8,9 +8,9 @@ AM_CFLAGS = $(GOBJECT_CFLAGS) \
-I$(top_srcdir) \
$(NULL)
-bin_PROGRAMS = osinfo-detect osinfo-db-validate osinfo-query osinfo-install-script
+bin_PROGRAMS = osinfo-detect osinfo-query osinfo-install-script
-man1_MANS = osinfo-db-validate.1 osinfo-detect.1 osinfo-query.1 osinfo-install-script.1
+man1_MANS = osinfo-detect.1 osinfo-query.1 osinfo-install-script.1
CLEANFILES = $(man1_MANS)
@@ -26,13 +26,6 @@ osinfo_detect_LDADD = $(GOBJECT_LIBS) \
$(LIBXML_LIBS) \
$(top_builddir)/osinfo/libosinfo-1.0.la
-osinfo_db_validate_SOURCES = osinfo-db-validate.c
-osinfo_db_validate_LDADD = $(GOBJECT_LIBS) \
- $(GIO_LIBS) \
- $(GLIB_LIBS) \
- $(LIBXML_LIBS) \
- $(top_builddir)/osinfo/libosinfo-1.0.la
-
osinfo_query_SOURCES = osinfo-query.c
osinfo_query_LDADD = $(GOBJECT_LIBS) \
$(GIO_LIBS) \
diff --git a/tools/osinfo-db-validate.c b/tools/osinfo-db-validate.c
deleted file mode 100644
index 965ed0e..0000000
--- a/tools/osinfo-db-validate.c
+++ /dev/null
@@ -1,350 +0,0 @@
-/*
- * Copyright (C) 2012 Red Hat, Inc
- *
- * osinfo-validate: validate that XML file(s) follows the published schema
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Authors:
- * Daniel P. Berrange <berrange at redhat.com>
- */
-
-#include <config.h>
-
-#include <glib.h>
-#include <gio/gio.h>
-#include <libxml/relaxng.h>
-#include <locale.h>
-#include <glib/gi18n.h>
-
-#define SCHEMA PKGDATADIR "/schemas/libosinfo.rng"
-
-static gboolean verbose = FALSE;
-
-static const GOptionEntry entries[] = {
- { "verbose", 'v', 0, G_OPTION_ARG_NONE, (void*)&verbose,
- N_("Verbose progress information"), NULL, },
- { NULL, 0, 0, 0, NULL, NULL, NULL }
-};
-
-
-static void validate_generic_error_nop(void *userData G_GNUC_UNUSED,
- const char *msg G_GNUC_UNUSED,
- ...)
-{
-}
-
-static void validate_structured_error_nop(void *userData G_GNUC_UNUSED,
- xmlErrorPtr error G_GNUC_UNUSED)
-{
- if (error->file)
- g_printerr("%s:%d %s", error->file, error->line, error->message);
- else
- g_printerr(_("Schema validity error %s"), error->message);
-}
-
-static xmlDocPtr parse_file(GFile *file, GError **error)
-{
- xmlDocPtr doc = NULL;
- xmlParserCtxtPtr pctxt;
- gchar *data = NULL;
- gsize length;
- gchar *uri = g_file_get_uri(file);
-
- if (!g_file_load_contents(file, NULL, &data, &length, NULL, error))
- goto cleanup;
-
- if (!(pctxt = xmlNewParserCtxt())) {
- g_set_error(error, 0, 0, "%s",
- _("Unable to create libxml parser"));
- goto cleanup;
- }
-
- if (!(doc = xmlCtxtReadDoc(pctxt, (const xmlChar*)data, uri, NULL,
- XML_PARSE_NOENT | XML_PARSE_NONET |
- XML_PARSE_NOWARNING))) {
- g_set_error(error, 0, 0,
- _("Unable to parse XML document '%s'"),
- uri);
- goto cleanup;
- }
-
- cleanup:
- g_free(uri);
- g_free(data);
- return doc;
-}
-
-static gboolean validate_file(xmlRelaxNGValidCtxtPtr rngValid, GFile *file, GFileInfo *info, GError **error);
-
-
-static gboolean validate_file_regular(xmlRelaxNGValidCtxtPtr rngValid,
- GFile *file,
- GError **error)
-{
- gboolean ret = FALSE;
- xmlDocPtr doc = NULL;
- gchar *uri = g_file_get_uri(file);
-
- if (!g_str_has_suffix(uri, ".xml")) {
- ret = TRUE;
- goto cleanup;
- }
-
- if (!(doc = parse_file(file, error)))
- goto cleanup;
-
- if (xmlRelaxNGValidateDoc(rngValid, doc) != 0) {
- g_set_error(error, 0, 0,
- _("Unable to validate XML document '%s'"),
- uri);
- goto cleanup;
- }
-
- ret = TRUE;
-
- cleanup:
- //g_free(uri);
- xmlFreeDoc(doc);
- return ret;
-}
-
-
-static gboolean validate_file_directory(xmlRelaxNGValidCtxtPtr rngValid, GFile *file, GError **error)
-{
- gboolean ret = FALSE;
- GFileEnumerator *children = NULL;
- GFileInfo *info = NULL;
-
- if (!(children = g_file_enumerate_children(file, "standard::*", 0, NULL, error)))
- goto cleanup;
-
- while ((info = g_file_enumerator_next_file(children, NULL, error))) {
- GFile *child = g_file_get_child(file, g_file_info_get_name(info));
- if (!validate_file(rngValid, child, info, error)) {
- g_object_unref(child);
- goto cleanup;
- }
- g_object_unref(child);
- }
-
- if (*error)
- goto cleanup;
-
- ret = TRUE;
-
- cleanup:
- g_object_unref(children);
- return ret;
-}
-
-
-static gboolean validate_file(xmlRelaxNGValidCtxtPtr rngValid, GFile *file, GFileInfo *info, GError **error)
-{
- gboolean ret = FALSE;
- GFileInfo *thisinfo = NULL;
- gchar *uri = g_file_get_uri(file);
-
- if (verbose)
- g_print(_("Processing '%s'...\n"), uri);
-
- if (!info) {
- if (!(thisinfo = g_file_query_info(file, "standard::*",
- G_FILE_QUERY_INFO_NONE,
- NULL, error)))
- goto cleanup;
- info = thisinfo;
- }
-
- if (g_file_info_get_file_type(info) == G_FILE_TYPE_DIRECTORY) {
- if (!validate_file_directory(rngValid, file, error))
- goto cleanup;
- } else if (g_file_info_get_file_type(info) == G_FILE_TYPE_REGULAR) {
- if (!validate_file_regular(rngValid, file, error))
- goto cleanup;
- } else {
- g_set_error(error, 0, 0,
- "Unable to handle file type for %s",
- uri);
- goto cleanup;
- }
-
- g_print(_("Processed '%s'.\n"), uri);
- ret = TRUE;
-
- cleanup:
- g_free(uri);
- if (thisinfo)
- g_object_unref(thisinfo);
- return ret;
-}
-
-
-static gboolean validate_files(gint argc, gchar **argv, GError **error)
-{
- xmlRelaxNGParserCtxtPtr rngParser = NULL;
- xmlRelaxNGPtr rng = NULL;
- xmlRelaxNGValidCtxtPtr rngValid = NULL;
- gboolean ret = FALSE;
- gsize i;
-
- xmlSetGenericErrorFunc(NULL, validate_generic_error_nop);
- xmlSetStructuredErrorFunc(NULL, validate_structured_error_nop);
-
- rngParser = xmlRelaxNGNewParserCtxt(SCHEMA);
- if (!rngParser) {
- g_set_error(error, 0, 0,
- _("Unable to create RNG parser for %s"),
- SCHEMA);
- goto cleanup;
- }
-
- rng = xmlRelaxNGParse(rngParser);
- if (!rng) {
- g_set_error(error, 0, 0,
- _("Unable to parse RNG %s"),
- SCHEMA);
- goto cleanup;
- }
-
- rngValid = xmlRelaxNGNewValidCtxt(rng);
- if (!rngValid) {
- g_set_error(error, 0, 0,
- _("Unable to create RNG validation context %s"),
- SCHEMA);
- goto cleanup;
- }
-
- for (i = 0; i < argc; i++) {
- GFile *file = g_file_new_for_commandline_arg(argv[i]);
- if (!validate_file(rngValid, file, NULL, error)) {
- g_object_unref(file);
- goto cleanup;
- }
- g_object_unref(file);
- }
-
- ret = TRUE;
-
- cleanup:
- xmlRelaxNGFreeValidCtxt(rngValid);
- xmlRelaxNGFreeParserCtxt(rngParser);
- xmlRelaxNGFree(rng);
- return ret;
-}
-
-gint main(gint argc, gchar **argv)
-{
- GOptionContext *context;
- GError *error = NULL;
- gint ret = EXIT_FAILURE;
-
- setlocale(LC_ALL, "");
- textdomain(GETTEXT_PACKAGE);
- bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
- bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
-
- context = g_option_context_new(_("- Validate XML documents "));
-
- g_option_context_add_main_entries(context, entries, GETTEXT_PACKAGE);
-
- if (!g_option_context_parse(context, &argc, &argv, &error)) {
- g_printerr(_("Error while parsing commandline options: %s\n"),
- error->message);
- g_printerr("%s\n", g_option_context_get_help(context, FALSE, NULL));
- goto error;
- }
-
- if (!validate_files(argc - 1, argv + 1, &error)) {
- g_printerr("%s\n", error->message);
- goto error;
- }
-
- ret = EXIT_SUCCESS;
-
- error:
- g_clear_error(&error);
- g_option_context_free(context);
-
- return ret;
-}
-
-/*
-=pod
-
-=head1 NAME
-
-osinfo-db-validate - Validate libosinfo XML data files
-
-=head1 SYNOPSIS
-
-osinfo-db-validate [OPTIONS...] LOCAL-PATH1 [LOCAL-PATH2...]
-
-osinfo-db-validate [OPTIONS...] URI1 [URI2...]
-
-=head1 DESCRIPTION
-
-Check that all files (C<LOCAL-PATH1> or C<URI1>) comply with the
-libosinfo XML schema. The local path may point to a directory
-containing XML files, or directly to an XML file. The uris must
-point directly to remote XML files
-
-Any validation errors will be displayed on the console when
-detected.
-
-=head1 OPTIONS
-
-=over 8
-
-=item B<-v>, B<--verbose>
-
-Display verbose progress information when validating files
-
-=back
-
-=head1 EXIT STATUS
-
-The exit status will be 0 if all files passed validation,
-or 1 if a validation error was hit.
-
-=head1 SEE ALSO
-
-C<xmllint(1)>
-
-=head1 AUTHORS
-
-Daniel P. Berrange <berrange at redhat.com>
-
-=head1 COPYRIGHT
-
-Copyright (C) 2012, 2014 Red Hat, Inc.
-
-=head1 LICENSE
-
-C<osinfo-db-validate> is distributed under the termsof the GNU LGPL v2+
-license. This is free software; see the source for copying conditions.
-There is NO warranty; not even for MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE
-
-=cut
-*/
-
-/*
- * Local variables:
- * indent-tabs-mode: nil
- * c-indent-level: 4
- * c-basic-offset: 4
- * End:
- */
--
2.7.4
More information about the Libosinfo
mailing list