diff options
-rw-r--r-- | Makefile.am | 8 | ||||
-rw-r--r-- | man/udevadm.xml | 4 | ||||
-rw-r--r-- | src/libudev/libudev-hwdb.c | 10 | ||||
-rw-r--r-- | src/udev/udevadm-hwdb.c | 7 |
4 files changed, 18 insertions, 11 deletions
diff --git a/Makefile.am b/Makefile.am index f3bda0176b..1f30ba8cb8 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 015980a63b..43d2f5bcf6 100644 --- a/man/udevadm.xml +++ b/man/udevadm.xml @@ -424,13 +424,13 @@ </refsect2> <refsect2><title>udevadm hwdb <optional>options</optional></title> - <para>Maintain the hardware database index in /etc/udev/hwdb.bin.</para> + <para>Maintain the hardware database index in <filename>$(localstatedir)/lib/udev/hwdb.bin</filename>.</para> <variablelist> <varlistentry> <term><option>--update</option></term> <listitem> <para>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 <filename>$(localstatedir)/lib/udev/hwdb.bin</filename>. 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.</para> diff --git a/src/libudev/libudev-hwdb.c b/src/libudev/libudev-hwdb.c index 6779e45b4e..12c8214ec5 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 02d8d01f8a..fd288db1cb 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; } } |