It's not configuration, so it doesn't belong in udev.
Also, remove the catalog when uninstalling udev.
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
-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\" \
# 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 \
</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>
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;
}
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;
}
}