In 'make syntax-check', we have a rule that prevents layering
violations between the various files in src. However, we
forgot to treat conf/ and the more recently-added access/ as
lower-level directories, and were not detecting cases where
they might have used a driver file. Also, it's not nice that
qemu can use storage/ but none of the other drivers could do so.
* cfg.mk (sc_prohibit_cross_inclusion): Tighten rules for conf/
and access/, let all other drivers use storage/.
Signed-off-by: Eric Blake <eblake(a)redhat.com>
---
I noticed this because of my work on domain_conf.h: I want to share
a struct between util/virstoragefile and conf/domain_conf, and ran
into a syntax check when I tried to make util/ depend on conf/. I
fixed things to obey layering with conf/ depending on util/, but in
the process noticed that some layering violations went undetected.
cfg.mk | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/cfg.mk b/cfg.mk
index a4ae978..19537cf 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -760,17 +760,17 @@ sc_prohibit_gettext_markup:
# lower-level code must not include higher-level headers.
cross_dirs=$(patsubst $(srcdir)/src/%.,%,$(wildcard $(srcdir)/src/*/.))
cross_dirs_re=($(subst / ,/|,$(cross_dirs)))
+mid_dirs=access|conf|cpu|locking|network|node_device|rpc|security|storage
sc_prohibit_cross_inclusion:
@for dir in $(cross_dirs); do \
case $$dir in \
util/) safe="util";; \
- locking/) \
- safe="($$dir|util|conf|rpc)";; \
- cpu/ | locking/ | network/ | rpc/ | security/) \
+ access/ | conf/) safe="($$dir|conf|util)";; \
+ locking/) safe="($$dir|util|conf|rpc)";; \
+ cpu/| network/| node_device/| rpc/| security/| storage/) \
safe="($$dir|util|conf)";; \
xenapi/ | xenxs/ ) safe="($$dir|util|conf|xen)";; \
- qemu/ )
safe="($$dir|util|conf|cpu|network|locking|rpc|security|storage)";; \
- *) safe="($$dir|util|conf|cpu|network|locking|rpc|security)";; \
+ *) safe="($$dir|$(mid_dirs)|util)";; \
esac; \
in_vc_files="^src/$$dir" \
prohibit='^# *include .$(cross_dirs_re)' \
--
1.8.5.3