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.
This commit is contained in:
parent
4ec24515da
commit
ee623f0d0c
|
@ -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 \
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue