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 <ebl...@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

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to