summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2012-11-16 23:10:13 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2012-11-16 23:29:56 +0100
commitee623f0d0c04a9c8da4953ddc29862c8c4945458 (patch)
tree87e686c8fd1ad0b94d8cb804c2f43edf569c9987
parent4ec24515daa780118709e04cd78dae93f25a8428 (diff)
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.
-rw-r--r--Makefile.am8
-rw-r--r--man/udevadm.xml4
-rw-r--r--src/libudev/libudev-hwdb.c10
-rw-r--r--src/udev/udevadm-hwdb.c7
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;
}
}