PY_LOG_COMPILER = $(PYTHON)
DISABLE_HARD_ERRORS = yes
if ENABLE_TESTS
-noinst_PROGRAMS = $(manual_tests) $(tests)
+noinst_PROGRAMS = $(manual_tests) $(tests) $(unsafe_tests)
TESTS = $(tests)
+if ENABLE_UNSAFE_TESTS
+TESTS += \
+ $(unsafe_tests)
+endif
else
noinst_PROGRAMS =
TESTS =
systemd-ac-power \
systemd-sysctl \
systemd-sleep \
- systemd-bus-proxyd \
systemd-socket-proxyd \
systemd-update-done
libbasic_la_SOURCES = \
src/basic/missing.h \
+ src/basic/missing_syscall.h \
src/basic/capability-util.c \
src/basic/capability-util.h \
src/basic/c-rbtree.c \
src/basic/exit-status.h \
src/basic/virt.c \
src/basic/virt.h \
+ src/basic/architecture.c \
+ src/basic/architecture.h \
src/basic/smack-util.c \
src/basic/smack-util.h \
src/basic/device-nodes.c \
src/shared/initreq.h \
src/shared/dns-domain.c \
src/shared/dns-domain.h \
- src/shared/architecture.c \
- src/shared/architecture.h \
src/shared/efivars.c \
src/shared/efivars.h \
src/shared/fstab-util.c \
manual_tests += \
test-ns \
- test-loopback \
- test-hostname \
- test-daemon \
test-cgroup \
test-install \
- test-watchdog \
- test-log \
- test-ipcrm \
test-btrfs \
test-acd \
test-ipv4ll-manual \
test-ask-password-api
+unsafe_tests = \
+ test-hostname \
+ test-ipcrm
+
if HAVE_LIBIPTC
manual_tests += \
test-firewall-util
endif
tests += \
+ test-daemon \
+ test-log \
+ test-loopback \
test-engine \
+ test-watchdog \
test-cgroup-mask \
test-job-type \
test-env-replace \
test-utf8 \
test-ellipsize \
test-util \
+ test-cpu-set-util \
+ test-hexdecoct \
+ test-escape \
+ test-alloc-util \
+ test-proc-cmdline \
+ test-io-util \
+ test-glob-util \
+ test-xattr-util \
+ test-fs-util \
+ test-web-util \
+ test-stat-util \
+ test-fd-util \
test-string-util \
test-extract-word \
test-parse-util \
test-prioq \
test-fileio \
test-time \
+ test-clock \
test-hashmap \
test-set \
test-bitmap \
test-ratelimit \
test-condition \
test-uid-range \
- test-bus-policy \
test-locale-util \
test-execute \
test-copy \
test-af-list \
test-arphrd-list \
test-dns-domain \
- test-resolve-tables \
test-install-root \
test-rlimit-util \
- test-signal-util
+ test-signal-util \
+ test-selinux \
+ test-sizeof
if HAVE_ACL
tests += \
test/test-execute/exec-passenvironment-repeated.service \
test/test-execute/exec-passenvironment.service \
test/test-execute/exec-group.service \
+ test/test-execute/exec-group-nfsnobody.service \
test/test-execute/exec-ignoresigpipe-no.service \
test/test-execute/exec-ignoresigpipe-yes.service \
test/test-execute/exec-personality-x86-64.service \
test/test-execute/exec-privatedevices-yes.service \
test/test-execute/exec-privatetmp-no.service \
test/test-execute/exec-privatetmp-yes.service \
+ test/test-execute/exec-spec-interpolation.service \
test/test-execute/exec-systemcallerrornumber.service \
test/test-execute/exec-systemcallfilter-failing2.service \
test/test-execute/exec-systemcallfilter-failing.service \
test/test-execute/exec-systemcallfilter-not-failing2.service \
test/test-execute/exec-systemcallfilter-not-failing.service \
+ test/test-execute/exec-systemcallfilter-system-user.service \
+ test/test-execute/exec-systemcallfilter-system-user-nfsnobody.service \
test/test-execute/exec-user.service \
+ test/test-execute/exec-user-nfsnobody.service \
test/test-execute/exec-workingdirectory.service \
test/test-execute/exec-umask-0177.service \
test/test-execute/exec-umask-default.service \
test/test-execute/exec-capabilityboundingset-merge.service \
test/test-execute/exec-capabilityboundingset-reset.service \
test/test-execute/exec-capabilityboundingset-simple.service \
+ test/test-execute/exec-capabilityambientset.service \
+ test/test-execute/exec-capabilityambientset-nfsnobody.service \
+ test/test-execute/exec-capabilityambientset-merge.service \
+ test/test-execute/exec-capabilityambientset-merge-nfsnobody.service \
+ test/test-execute/exec-runtimedirectory.service \
+ test/test-execute/exec-runtimedirectory-mode.service \
+ test/test-execute/exec-runtimedirectory-owner.service \
+ test/test-execute/exec-runtimedirectory-owner-nfsnobody.service \
test/bus-policy/hello.conf \
test/bus-policy/methods.conf \
test/bus-policy/ownerships.conf \
libsystemd-network.la \
libshared.la
-test_resolve_tables_SOURCES = \
- src/resolve/test-resolve-tables.c \
- src/shared/test-tables.h \
- src/resolve/dns-type.c \
- src/resolve/dns-type.h \
- src/resolve/dns_type-from-name.h \
- src/resolve/dns_type-to-name.h
-
-test_resolve_tables_LDADD = \
- libshared.la
if ENABLE_EFI
-manual_tests += \
- test-boot-timestamp
+tests += \
+ test-boot-timestamps
-test_boot_timestamp_SOURCES = \
+test_boot_timestamps_SOURCES = \
src/test/test-boot-timestamps.c
-test_boot_timestamp_LDADD = \
+test_boot_timestamps_LDADD = \
libshared.la
endif
test_util_LDADD = \
libshared.la
+test_hexdecoct_SOURCES = \
+ src/test/test-hexdecoct.c
+
+test_hexdecoct_LDADD = \
+ libbasic.la
+
+test_alloc_util_SOURCES = \
+ src/test/test-alloc-util.c
+
+test_alloc_util_LDADD = \
+ libbasic.la
+
+test_xattr_util_SOURCES = \
+ src/test/test-xattr-util.c
+
+test_xattr_util_LDADD = \
+ libbasic.la
+
+test_io_util_SOURCES = \
+ src/test/test-io-util.c
+
+test_io_util_LDADD = \
+ libbasic.la
+
+test_glob_util_SOURCES = \
+ src/test/test-glob-util.c
+
+test_glob_util_LDADD = \
+ libbasic.la
+
+test_fs_util_SOURCES = \
+ src/test/test-fs-util.c
+
+test_fs_util_LDADD = \
+ libbasic.la
+
+test_proc_cmdline_SOURCES = \
+ src/test/test-proc-cmdline.c
+
+test_proc_cmdline_LDADD = \
+ libbasic.la
+
+test_fd_util_SOURCES = \
+ src/test/test-fd-util.c
+
+test_fd_util_LDADD = \
+ libbasic.la
+
+test_web_util_SOURCES = \
+ src/test/test-web-util.c
+
+test_web_util_LDADD = \
+ libbasic.la
+
+test_cpu_set_util_SOURCES = \
+ src/test/test-cpu-set-util.c
+
+test_cpu_set_util_LDADD = \
+ libbasic.la
+
+test_stat_util_SOURCES = \
+ src/test/test-stat-util.c
+
+test_stat_util_LDADD = \
+ libbasic.la
+
+test_escape_SOURCES = \
+ src/test/test-escape.c
+
+test_escape_LDADD = \
+ libbasic.la
+
test_string_util_SOURCES = \
src/test/test-string-util.c
test_signal_util_LDADD = \
libshared.la
+test_selinux_SOURCES = \
+ src/test/test-selinux.c
+
+test_selinux_LDADD = \
+ libshared.la
+
+test_sizeof_SOURCES = \
+ src/test/test-sizeof.c
+
+test_sizeof_LDADD = \
+ libshared.la
+
BUILT_SOURCES += \
src/test/test-hashmap-ordered.c
test_tables_SOURCES = \
src/test/test-tables.c \
src/shared/test-tables.h \
- src/bus-proxyd/bus-xml-policy.c \
- src/bus-proxyd/bus-xml-policy.h \
src/journal/journald-server.c \
src/journal/journald-server.h
test_tables_CPPFLAGS = \
- $(AM_CPPFLAGS) \
- -I$(top_srcdir)/src/bus-proxyd
+ $(AM_CPPFLAGS)
test_tables_CFLAGS = \
$(AM_CFLAGS) \
test_time_LDADD = \
libshared.la
+test_clock_SOURCES = \
+ src/test/test-clock.c
+
+test_clock_LDADD = \
+ libshared.la
+
test_architecture_SOURCES = \
src/test/test-architecture.c
test_conf_parser_LDADD = \
libshared.la
-test_bus_policy_SOURCES = \
- src/bus-proxyd/test-bus-xml-policy.c
-
-test_bus_policy_LDADD = \
- libbus-proxy-core.la \
- libshared.la
-
test_af_list_SOURCES = \
src/test/test-af-list.c
libshared.la
# ------------------------------------------------------------------------------
-noinst_LTLIBRARIES += \
- libbus-proxy-core.la
-
-libbus_proxy_core_la_SOURCES = \
- src/bus-proxyd/bus-xml-policy.c \
- src/bus-proxyd/bus-xml-policy.h \
- src/bus-proxyd/driver.c \
- src/bus-proxyd/driver.h \
- src/bus-proxyd/proxy.c \
- src/bus-proxyd/proxy.h \
- src/bus-proxyd/synthesize.c \
- src/bus-proxyd/synthesize.h
-
-libbus_proxy_core_la_LIBADD = \
- libshared.la
-
-systemd_bus_proxyd_SOURCES = \
- src/bus-proxyd/bus-proxyd.c
-
-systemd_bus_proxyd_LDADD = \
- libbus-proxy-core.la \
- libshared.la
-
systemd_stdio_bridge_SOURCES = \
- src/bus-proxyd/stdio-bridge.c
+ src/stdio-bridge/stdio-bridge.c
systemd_stdio_bridge_LDADD = \
- libbus-proxy-core.la \
libshared.la
-nodist_systemunit_DATA += \
- units/systemd-bus-proxyd.service
-
-dist_systemunit_DATA += \
- units/systemd-bus-proxyd.socket
-
-nodist_userunit_DATA += \
- units/user/systemd-bus-proxyd.service
-
-dist_userunit_DATA += \
- units/user/systemd-bus-proxyd.socket
-
-EXTRA_DIST += \
- units/systemd-bus-proxyd.service.m4.in \
- units/user/systemd-bus-proxyd.service.in
-
-if HAVE_SMACK
-bus-proxyd-set-cap-hook:
- -$(SETCAP) cap_mac_admin+ei $(DESTDIR)$(rootlibexecdir)/systemd-bus-proxyd
-
-INSTALL_EXEC_HOOKS += bus-proxyd-set-cap-hook
-endif
-
# ------------------------------------------------------------------------------
systemd_tty_ask_password_agent_SOURCES = \
src/tty-ask-password-agent/tty-ask-password-agent.c
test-bus-cleanup \
test-bus-server \
test-bus-match \
- test-bus-proxy \
test-bus-kernel \
test-bus-kernel-bloom \
test-bus-zero-copy \
test_bus_match_LDADD = \
libshared.la
-test_bus_proxy_SOURCES = \
- src/libsystemd/sd-bus/test-bus-proxy.c
-
-test_bus_proxy_LDADD = \
- libshared.la
-
test_bus_kernel_SOURCES = \
src/libsystemd/sd-bus/test-bus-kernel.c
src/libsystemd-network/dhcp-identifier.h \
src/libsystemd-network/dhcp-identifier.c \
src/libsystemd-network/lldp.h \
- src/libsystemd-network/lldp-tlv.h \
- src/libsystemd-network/lldp-tlv.c \
+ src/libsystemd-network/lldp-internal.h \
src/libsystemd-network/lldp-network.h \
src/libsystemd-network/lldp-network.c \
- src/libsystemd-network/lldp-port.h \
- src/libsystemd-network/lldp-port.c \
- src/libsystemd-network/lldp-internal.h \
- src/libsystemd-network/lldp-internal.c \
+ src/libsystemd-network/lldp-neighbor.h \
+ src/libsystemd-network/lldp-neighbor.c \
src/libsystemd-network/sd-lldp.c
libsystemd_network_la_LIBADD = \
libshared.la
test_lldp_SOURCES = \
- src/libsystemd-network/lldp.h \
- src/libsystemd-network/lldp-tlv.h \
- src/libsystemd-network/lldp-tlv.c \
src/libsystemd-network/test-lldp.c
test_lldp_LDADD = \
endif
endif
+tests += \
+ test-libudev
+
manual_tests += \
- test-libudev \
test-udev
test_libudev_SOURCES = \
# ------------------------------------------------------------------------------
-rootlibexec_PROGRAMS += \
- systemd-activate
+bin_PROGRAMS += \
+ systemd-socket-activate
-systemd_activate_SOURCES = \
+systemd_socket_activate_SOURCES = \
src/activate/activate.c
-systemd_activate_LDADD = \
+systemd_socket_activate_LDADD = \
libshared.la
# ------------------------------------------------------------------------------
systemd_cat_LDADD = \
libjournal-core.la
+if HAVE_LIBCURL
+rootlibexec_PROGRAMS += \
+ systemd-journal-upload
+
+systemd_journal_upload_SOURCES = \
+ src/journal-remote/journal-upload.h \
+ src/journal-remote/journal-upload.c \
+ src/journal-remote/journal-upload-journal.c
+
+systemd_journal_upload_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(LIBCURL_CFLAGS)
+
+systemd_journal_upload_LDADD = \
+ libshared.la \
+ $(LIBCURL_LIBS)
+
+nodist_systemunit_DATA += \
+ units/systemd-journal-upload.service
+
+nodist_pkgsysconf_DATA += \
+ src/journal-remote/journal-upload.conf
+endif
+
+EXTRA_DIST += \
+ units/systemd-journal-upload.service.in \
+ src/journal-remote/journal-upload.conf.in
+
if HAVE_MICROHTTPD
rootlibexec_PROGRAMS += \
systemd-journal-remote
src/journal-remote/log-generator.py
endif
-if HAVE_LIBCURL
-rootlibexec_PROGRAMS += \
- systemd-journal-upload
-
-systemd_journal_upload_SOURCES = \
- src/journal-remote/journal-upload.h \
- src/journal-remote/journal-upload.c \
- src/journal-remote/journal-upload-journal.c
-
-systemd_journal_upload_CFLAGS = \
- $(AM_CFLAGS) \
- $(LIBCURL_CFLAGS)
-
-systemd_journal_upload_LDADD = \
- libshared.la \
- $(LIBCURL_LIBS)
-
-nodist_systemunit_DATA += \
- units/systemd-journal-upload.service
-
-nodist_pkgsysconf_DATA += \
- src/journal-remote/journal-upload.conf
-endif
-
-EXTRA_DIST += \
- units/systemd-journal-upload.service.in \
- src/journal-remote/journal-upload.conf.in
-
# using _CFLAGS = in the conditional below would suppress AM_CFLAGS
journalctl_CFLAGS = \
$(AM_CFLAGS)
UNINSTALL_DATA_HOOKS += \
catalog-remove-hook
-manual_tests += \
- test-journal-enum
-
tests += \
test-journal \
+ test-journal-enum \
test-journal-send \
test-journal-syslog \
test-journal-match \
src/journal/journal-authenticate.c \
src/journal/journal-authenticate.h \
src/journal/fsprg.c \
- src/journal/fsprg.h
+ src/journal/fsprg.h \
+ src/shared/gcrypt-util.c \
+ src/shared/gcrypt-util.h
libsystemd_journal_internal_la_LIBADD += \
$(GCRYPT_LIBS)
src/vconsole/90-vconsole.rules.in \
units/systemd-vconsole-setup.service.in
-# ------------------------------------------------------------------------------
-if ENABLE_BOOTCHART
-systemd_bootchart_SOURCES = \
- src/bootchart/bootchart.c \
- src/bootchart/bootchart.h \
- src/bootchart/store.c \
- src/bootchart/store.h \
- src/bootchart/svg.c \
- src/bootchart/svg.h
-
-systemd_bootchart_LDADD = \
- libshared.la
-
-rootlibexec_PROGRAMS += \
- systemd-bootchart
-
-dist_pkgsysconf_DATA += \
- src/bootchart/bootchart.conf
-
-nodist_systemunit_DATA += \
- units/systemd-bootchart.service
-endif
-
-EXTRA_DIST += \
- units/systemd-bootchart.service.in
-
# ------------------------------------------------------------------------------
if ENABLE_QUOTACHECK
rootlibexec_PROGRAMS += \
# ------------------------------------------------------------------------------
if ENABLE_RESOLVED
+basic_dns_sources = \
+ src/resolve/resolved-dns-dnssec.c \
+ src/resolve/resolved-dns-dnssec.h \
+ src/resolve/resolved-dns-packet.c \
+ src/resolve/resolved-dns-packet.h \
+ src/resolve/resolved-dns-rr.c \
+ src/resolve/resolved-dns-rr.h \
+ src/resolve/resolved-dns-answer.c \
+ src/resolve/resolved-dns-answer.h \
+ src/resolve/resolved-dns-question.c \
+ src/resolve/resolved-dns-question.h \
+ src/resolve/dns-type.c \
+ src/resolve/dns-type.h
+
systemd_resolved_SOURCES = \
src/resolve/resolved.c \
src/resolve/resolved-manager.c \
src/resolve/resolved-mdns.h \
src/resolve/resolved-mdns.c \
src/resolve/resolved-def.h \
- src/resolve/resolved-dns-rr.h \
- src/resolve/resolved-dns-rr.c \
- src/resolve/resolved-dns-question.h \
- src/resolve/resolved-dns-question.c \
- src/resolve/resolved-dns-answer.h \
- src/resolve/resolved-dns-answer.c \
- src/resolve/resolved-dns-packet.h \
- src/resolve/resolved-dns-packet.c \
+ $(basic_dns_sources) \
src/resolve/resolved-dns-query.h \
src/resolve/resolved-dns-query.c \
src/resolve/resolved-dns-synthesize.h \
src/resolve/resolved-dns-zone.c \
src/resolve/resolved-dns-stream.h \
src/resolve/resolved-dns-stream.c \
- src/resolve/resolved-dns-dnssec.h \
- src/resolve/resolved-dns-dnssec.c \
src/resolve/resolved-dns-trust-anchor.h \
src/resolve/resolved-dns-trust-anchor.c \
src/resolve/resolved-etc-hosts.h \
src/resolve/resolved-etc-hosts.c \
- src/resolve/dns-type.c \
- src/resolve/dns-type.h
+ src/shared/gcrypt-util.c \
+ src/shared/gcrypt-util.h
nodist_systemd_resolved_SOURCES = \
src/resolve/dns_type-from-name.h \
systemd_resolve_SOURCES = \
src/resolve/resolve-tool.c \
- src/resolve/resolved-dns-dnssec.c \
- src/resolve/resolved-dns-dnssec.h \
- src/resolve/resolved-dns-packet.c \
- src/resolve/resolved-dns-packet.h \
- src/resolve/resolved-dns-rr.c \
- src/resolve/resolved-dns-rr.h \
- src/resolve/resolved-dns-answer.c \
- src/resolve/resolved-dns-answer.h \
- src/resolve/resolved-dns-question.c \
- src/resolve/resolved-dns-question.h \
- src/resolve/dns-type.c \
- src/resolve/dns-type.h
+ $(basic_dns_sources) \
+ src/shared/gcrypt-util.c \
+ src/shared/gcrypt-util.h
nodist_systemd_resolve_SOURCES = \
src/resolve/dns_type-from-name.h \
bin_PROGRAMS += \
systemd-resolve
+dist_bashcompletion_data += \
+ shell-completion/bash/systemd-resolve
+
+dist_zshcompletion_data += \
+ shell-completion/zsh/_systemd-resolve
+
tests += \
- test-dns-domain \
+ test-dns-packet \
+ test-resolve-tables \
test-dnssec
manual_tests += \
test-dnssec-complex
+test_resolve_tables_SOURCES = \
+ src/resolve/test-resolve-tables.c \
+ src/resolve/dns_type-from-name.h \
+ src/resolve/dns_type-to-name.h \
+ $(basic_dns_sources) \
+ src/shared/test-tables.h
+
+test_resolve_tables_LDADD = \
+ libshared.la
+
+test_dns_packet_SOURCES = \
+ src/resolve/test-dns-packet.c \
+ $(basic_dns_sources)
+
+test_dns_packet_CPPFLAGS = \
+ $(AM_CPPFLAGS) \
+ -DRESOLVE_TEST_DIR=\"$(abs_top_srcdir)/src/resolve/test-data\"
+
+test_dns_packet_LDADD = \
+ libshared.la
+
+EXTRA_DIST += \
+ src/resolve/test-data/_openpgpkey.fedoraproject.org.pkts \
+ src/resolve/test-data/fedoraproject.org.pkts \
+ src/resolve/test-data/gandi.net.pkts \
+ src/resolve/test-data/google.com.pkts \
+ src/resolve/test-data/root.pkts \
+ src/resolve/test-data/sw1a1aa-sw1a2aa-sw1a2ab-sw1a2ac.find.me.uk.pkts \
+ src/resolve/test-data/teamits.com.pkts \
+ src/resolve/test-data/zbyszek@fedoraproject.org.pkts \
+ src/resolve/test-data/_443._tcp.fedoraproject.org.pkts \
+ src/resolve/test-data/kyhwana.org.pkts \
+ src/resolve/test-data/fake-caa.pkts
+
test_dnssec_SOURCES = \
src/resolve/test-dnssec.c \
- src/resolve/resolved-dns-packet.c \
- src/resolve/resolved-dns-packet.h \
- src/resolve/resolved-dns-rr.c \
- src/resolve/resolved-dns-rr.h \
- src/resolve/resolved-dns-answer.c \
- src/resolve/resolved-dns-answer.h \
- src/resolve/resolved-dns-question.c \
- src/resolve/resolved-dns-question.h \
- src/resolve/resolved-dns-dnssec.c \
- src/resolve/resolved-dns-dnssec.h \
- src/resolve/dns-type.c \
- src/resolve/dns-type.h
+ $(basic_dns_sources)
test_dnssec_LDADD = \
libshared.la
libnetworkd_core_la_SOURCES = \
src/libsystemd-network/network-internal.h \
src/network/networkd.h \
+ src/network/networkd-conf.h \
+ src/network/networkd-conf.c \
src/network/networkd-link.h \
src/network/networkd-link.c \
src/network/networkd-netdev.h \
src/network/networkd-address-pool.h \
src/network/networkd-address-pool.c \
src/network/networkd-util.h \
- src/network/networkd-util.c
+ src/network/networkd-util.c \
+ src/network/networkd-lldp-tx.h \
+ src/network/networkd-lldp-tx.c
nodist_libnetworkd_core_la_SOURCES = \
+ src/network/networkd-gperf.c \
src/network/networkd-network-gperf.c \
src/network/networkd-netdev-gperf.c
endif
gperf_gperf_sources += \
+ src/network/networkd-gperf.gperf \
src/network/networkd-network-gperf.gperf \
src/network/networkd-netdev-gperf.gperf
'|PYTHON=$(PYTHON)|' \
'|NTP_SERVERS=$(NTP_SERVERS)|' \
'|DNS_SERVERS=$(DNS_SERVERS)|' \
+ '|DEFAULT_DNSSEC_MODE=$(DEFAULT_DNSSEC_MODE)|' \
'|systemuidmax=$(SYSTEM_UID_MAX)|' \
'|systemgidmax=$(SYSTEM_GID_MAX)|' \
'|TTY_GID=$(TTY_GID)|' \
endif
.PHONY: dist-check-help
-
dist-check-help: $(rootbin_PROGRAMS) $(bin_PROGRAMS)
for i in $(abspath $^); do \
if $$i --help | grep -v 'default:' | grep -E -q '.{80}.' ; then \
exit 1; \
fi; done
+include_compilers = "$(CC)" "$(CC) -ansi" "$(CC) -std=iso9899:1990"
+public_headers = $(filter-out src/systemd/_sd-common.h, $(pkginclude_HEADERS) $(include_HEADERS))
+.PHONY: dist-check-includes
+dist-check-includes: $(public_headers)
+ @res=0; \
+ for i in $(abspath $^); do \
+ for cc in $(include_compilers); do \
+ echo "$$cc -o/dev/null -c -x c -include "$$i" - </dev/null"; \
+ $$cc -o/dev/null -c -x c -include "$$i" - </dev/null || res=1; \
+ done; \
+ done; exit $$res
+
.PHONY: hwdb-update
hwdb-update:
( cd $(top_srcdir)/hwdb && \