Базельский запрос по любому виду, кроме исходных файлов, т.е. поиск по инвертированному - PullRequest
0 голосов
/ 01 ноября 2019

Я выполнял базовый запрос deps с выходом, настроенным как --output label_kind, и обнаружил массу обращений к исходному файлу. Существует ли механизм исключения исходных файлов из результатов, какой-то обратный поиск, сохраняющий все виды, кроме исходных? Я представляю себе что-то вроде

bazel query "kind( ! source , deps(...))"

. Я сделал быструю подсчет значений на label_kinds, используемом в одном приложении, и обнаружил, что большая часть deps была просто исходными файлами.

> bazel query "deps(//my_package/my_subpackage:my_target_app)" --output rankmin | awk '{print $1}' | sort | uniq -c | sort -nr

8634 source
  20 cc_library
  11 filegroup
   3 config_setting
   3 cc_binary
   3 alias
   1 sh_binary
   1 py_binary
   1 package
   1 genrule
   1 bind

На самом деле была куча других собственных внутренних правил, и что нет, я не могу сделать явное объединение видов, так как в репо могут быть дополнения, с которыми мне придется поспевать.

1 Ответ

2 голосов
/ 02 ноября 2019

Это немного многословно, но вы можете сделать что-то вроде этого (разбито на несколько строк для удобства чтения):

bazel query 'deps(//my_package/my_subpackage:my_target_app)
             except kind("source file", deps(//my_package/my_subpackage:my_target_app))'
             --output rankmin

Функции запроса deps() и kind() возвращают наборы целей, поэтому здесьмы в значительной степени вычитаем из полного набора зависимостей набор, содержащий зависимости типа «исходный файл» .

...