[Libosinfo] [libosinfo] Allow to use system pci.ids/usb.ids files

Christophe Fergeau cfergeau at redhat.com
Tue Mar 5 17:11:15 UTC 2013


Most distros already ship copies of pci.ids/usb.ids. This commit
allows to make use of these rather than the ones shipped with
libosinfo. This is achieved through the use of
--with-usb-ids-path and --with-pci-ids-path configure flags.
---
 configure.ac      | 21 +++++++++++++++++++++
 data/Makefile.am  | 37 ++++++++++++++++++++++++++-----------
 libosinfo.spec.in |  2 +-
 3 files changed, 48 insertions(+), 12 deletions(-)

diff --git a/configure.ac b/configure.ac
index 1e255c1..5ad9b6d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -7,6 +7,7 @@ AC_CONFIG_SRCDIR([osinfo/osinfo_db.c])
 AC_CONFIG_HEADERS([config.h])
 AC_PROG_LIBTOOL
 AC_PROG_CC
+AC_PROG_LN_S
 
 LIBOSINFO_COMPILE_WARNINGS
 GNOME_MAINTAINER_MODE_DEFINES
@@ -171,6 +172,26 @@ fi
 AC_SUBST(COVERAGE_CFLAGS)
 AC_SUBST(COVERAGE_LDFLAGS)
 
+# Path to the usb.ids file -- to know if we use one shipped with another
+# package, or an internal file
+AC_ARG_WITH(usb-ids-path,
+              [AC_HELP_STRING([--with-usb-ids-path],
+                              [Specify the path to usb.ids @<:@default=(internal)@:>@])],,
+                              [with_usb_ids_path="\${usb_databasedir}/usb.ids"])
+
+AM_CONDITIONAL(USE_INTERNAL_USB_IDS, test "x$with_usb_ids_path" = "x\${usb_databasedir}/usb.ids")
+AC_SUBST([USB_IDS], ["$with_usb_ids_path"])
+
+# Path to the pci.ids file -- to know if we use one shipped with another
+# package, or an internal file
+AC_ARG_WITH(pci-ids-path,
+              [AC_HELP_STRING([--with-pci-ids-path],
+                              [Specify the path to pci.ids @<:@default=(internal)@:>@])],,
+                              [with_pci_ids_path="\${pci_databasedir}/pci.ids"])
+
+AM_CONDITIONAL(USE_INTERNAL_PCI_IDS, test "x$with_pci_ids_path" = "x\${pci_databasedir}/pci.ids")
+AC_SUBST([PCI_IDS], ["$with_pci_ids_path"])
+
 # Setup GLIB_MKENUMS to use glib-mkenums even if GLib is uninstalled.
 GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
 AC_SUBST(GLIB_MKENUMS)
diff --git a/data/Makefile.am b/data/Makefile.am
index 747f0e9..77ad889 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -1,10 +1,30 @@
+INSTALL_DATA_HOOK_DEPS =
 
 SUBDIRS = datamaps devices oses hypervisors install-scripts schemas
-
 EXTRA_DIST = usb.ids pci.ids 95-osinfo.rules.in
+CLEANFILES = usb.ids pci.ids
+
+if USE_INTERNAL_USB_IDS
+usb_database_DATA = usb.ids
+usb_databasedir = $(pkgdatadir)/db/
+usb.ids:
+	-wget -q -O $@ http://www.linux-usb.org/usb.ids
+else
+usb_ids_install:
+	$(LN_S) $(USB_IDS) $(pkgdatadir)/db/usb.ids
+INSTALL_DATA_HOOK_DEPS += usb_ids_install
+endif
 
-databasedir = $(pkgdatadir)/db/
-database_DATA = usb.ids pci.ids
+if USE_INTERNAL_PCI_IDS
+pci_database_DATA = pci.ids
+pci_databasedir = $(pkgdatadir)/db/
+pci.ids:
+	-wget -q -O $@ http://pciids.sourceforge.net/v2.2/pci.ids
+else
+pci_ids_install:
+	$(LN_S) $(PCI_IDS) $(pkgdatadir)/db/pci.ids
+INSTALL_DATA_HOOK_DEPS += pci_ids_install
+endif
 
 if WITH_UDEV
 BUILT_SOURCES = 95-osinfo.rules
@@ -12,16 +32,11 @@ BUILT_SOURCES = 95-osinfo.rules
 95-osinfo.rules: 95-osinfo.rules.in
 	sed 's,\@bindir\@,$(exec_prefix)/bin,' $< > $@
 
-install-data-hook: 95-osinfo.rules
+95-osinfo.rules-install: 95-osinfo.rules
 	mkdir -p $(DESTDIR)$(UDEV_RULESDIR)
 	$(INSTALL) -m 0644 95-osinfo.rules $(DESTDIR)$(UDEV_RULESDIR)
 
+INSTALL_DATA_HOOK_DEPS += 95-osinfo.rules-install
 endif
 
-CLEANFILES = usb.ids pci.ids
-
-usb.ids:
-	-wget -q -O $@ http://www.linux-usb.org/usb.ids
-
-pci.ids:
-	-wget -q -O $@ http://pciids.sourceforge.net/v2.2/pci.ids
+install-data-hook: $(INSTALL_DATA_HOOK_DEPS)
diff --git a/libosinfo.spec.in b/libosinfo.spec.in
index 75de896..0864a2b 100644
--- a/libosinfo.spec.in
+++ b/libosinfo.spec.in
@@ -85,7 +85,7 @@ This package provides the Vala bindings for libosinfo library.
 %define udev_arg --enable-udev=no
 %endif
 
-%configure %{gir_arg} %{udev_arg} --enable-vala=yes
+%configure %{gir_arg} %{udev_arg} --enable-vala=yes --with-usb-ids-path=/usr/share/hwdata/usb.ids --with-pci-ids-path=/usr/share/hwdata/pci.ids
 %__make %{?_smp_mflags} V=1
 
 chmod a-x examples/*.js examples/*.py
-- 
1.8.1.4




More information about the Libosinfo mailing list