From: Zbigniew Jędrzejewski-Szmek Date: Fri, 16 Nov 2012 22:10:13 +0000 (+0100) Subject: hwdb: use $(localstatedir)/lib/udev/hwdb.bin for the binary database X-Git-Tag: v196~37 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=ee623f0d0c04a9c8da4953ddc29862c8c4945458 hwdb: use $(localstatedir)/lib/udev/hwdb.bin for the binary database It's not configuration, so it doesn't belong in udev. Also, remove the catalog when uninstalling udev. --- diff --git a/Makefile.am b/Makefile.am index f3bda0176..1f30ba8cb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -65,6 +65,8 @@ sysvinitdir=$(SYSTEM_SYSVINIT_PATH) varlogdir=$(localstatedir)/log systemdstatedir=$(localstatedir)/lib/systemd catalogstatedir=$(systemdstatedir)/catalog +udevstatedir=$(localstatedir)/lib/udev +hwdb_bin=$(udevstatedir)/hwdb.bin # Our own, non-special dirs pkgsysconfdir=$(sysconfdir)/systemd @@ -130,6 +132,7 @@ AM_CPPFLAGS = \ -DUSER_CONFIG_UNIT_PATH=\"$(pkgsysconfdir)/user\" \ -DUSER_DATA_UNIT_PATH=\"$(userunitdir)\" \ -DCATALOG_PATH=\"$(catalogstatedir)\" \ + -DHWDB_BIN=\"$(hwdb_bin)\" \ -DSYSTEMD_CGROUP_AGENT_PATH=\"$(rootlibexecdir)/systemd-cgroups-agent\" \ -DSYSTEMD_BINARY_PATH=\"$(rootlibexecdir)/systemd\" \ -DSYSTEMD_SHUTDOWN_BINARY_PATH=\"$(rootlibexecdir)/systemd-shutdown\" \ @@ -1962,11 +1965,14 @@ udevadm_LDADD = \ # Update hwdb on installation. Do not bother if installing # in DESTDIR, since this is likely for packaging purposes. hwdb-update-hook: - -test -n "$(DESTDIR)" || udevadm hwdb --update + -test -n "$(DESTDIR)" || $(bindir)/udevadm hwdb --update INSTALL_DATA_HOOKS += \ hwdb-update-hook +hwdb-remove-hook: + -test -n "$(DESTDIR)" || rm -f $(HWDB_BIN) + # ------------------------------------------------------------------------------ TESTS += \ test/udev-test.pl \ diff --git a/man/udevadm.xml b/man/udevadm.xml index 015980a63..43d2f5bcf 100644 --- a/man/udevadm.xml +++ b/man/udevadm.xml @@ -424,13 +424,13 @@ udevadm hwdb <optional>options</optional> - Maintain the hardware database index in /etc/udev/hwdb.bin. + Maintain the hardware database index in $(localstatedir)/lib/udev/hwdb.bin. Compile the hardware dabase information located in /usr/lib/udev/hwdb.d/, - /etc/udev/hwdb.d/ and store it in /etc/udev/hwdb.bin. This should be done with + /etc/udev/hwdb.d/ and store it in $(localstatedir)/lib/udev/hwdb.bin. This should be done with any update to the source files, it will not be called automatically. The running udev daemon will detect a new database on its own and does not need to be notified about it. diff --git a/src/libudev/libudev-hwdb.c b/src/libudev/libudev-hwdb.c index 6779e45b4..12c8214ec 100644 --- a/src/libudev/libudev-hwdb.c +++ b/src/libudev/libudev-hwdb.c @@ -271,30 +271,30 @@ _public_ struct udev_hwdb *udev_hwdb_new(struct udev *udev) { hwdb->refcount = 1; udev_list_init(udev, &hwdb->properties_list, true); - hwdb->f = fopen("/etc/udev/hwdb.bin", "re"); + hwdb->f = fopen(HWDB_BIN, "re"); if (!hwdb->f) { - log_debug("error reading /etc/udev/hwdb.bin: %m"); + log_debug("error reading %s: %m", HWDB_BIN); udev_hwdb_unref(hwdb); return NULL; } if (fstat(fileno(hwdb->f), &hwdb->st) < 0 || (size_t)hwdb->st.st_size < offsetof(struct trie_header_f, strings_len) + 8) { - log_debug("error reading /etc/udev/hwdb.bin: %m"); + log_debug("error reading %s: %m", HWDB_BIN); udev_hwdb_unref(hwdb); return NULL; } hwdb->map = mmap(0, hwdb->st.st_size, PROT_READ, MAP_SHARED, fileno(hwdb->f), 0); if (hwdb->map == MAP_FAILED) { - log_debug("error mapping /etc/udev/hwdb.bin: %m"); + log_debug("error mapping %s: %m", HWDB_BIN); udev_hwdb_unref(hwdb); return NULL; } if (memcmp(hwdb->map, sig, sizeof(hwdb->head->signature)) != 0 || (size_t)hwdb->st.st_size != le64toh(hwdb->head->file_size)) { - log_debug("error recognizing the format of /etc/udev/hwdb.bin"); + log_debug("error recognizing the format of %s", HWDB_BIN); udev_hwdb_unref(hwdb); return NULL; } diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c index 02d8d01f8..fd288db1c 100644 --- a/src/udev/udevadm-hwdb.c +++ b/src/udev/udevadm-hwdb.c @@ -565,10 +565,11 @@ static int adm_hwdb(struct udev *udev, int argc, char *argv[]) { log_debug("strings dedup'ed: %8zu bytes (%8zu)\n", trie->strings->dedup_len, trie->strings->dedup_count); - mkdir_parents("/etc/udev/hwdb.bin", 0755); - err = trie_store(trie, "/etc/udev/hwdb.bin"); + mkdir_parents(HWDB_BIN, 0755); + err = trie_store(trie, HWDB_BIN); if (err < 0) { - log_error("Failure writing hardware database '%s': %s", "/etc/udev/hwdb.bin", strerror(-err)); + log_error("Failure writing hardware database '%s': %s", + HWDB_BIN, strerror(-err)); rc = EXIT_FAILURE; } }