Базель билд не уважая мои мерзавцы - PullRequest
0 голосов
/ 22 ноября 2018

Я запускаю bazel build в проекте, который состоит из подмодулей git со следующей структурой:

/work/
├── tensorflow/ [git submodule]
└── train/
    └── DeepSpeech/ [git submodule]
        └── native_client/

Команда сборки выглядит следующим образом:

bazel build \
    --config=monolithic \
    -c opt \
    --copt=-O3 \
    --copt="-D_GLIBCXX_USE_CXX11_ABI=0" \
    --copt=-fvisibility=hidden \
    //native_client:libdeepspeech.so \
    //native_client:generate_trie

и я получаю следующую ошибку:

ERROR: /work/tensorflow/native_client/BUILD:6:1: Executing genrule //native_client:ds_git_version failed (Exit 1)
realpath: /work/train/DeepSpeech/native_client/../.git/: Not a directory

Кажется, что жалуется, что /work/train/DeepSpeech/.git не является каталогом, и это будет правильно, потому что /work/train/DeepSpeech/.git - это файл, содержащий путьк дереву git подмодуля git.

Вот содержимое /work/train/DeepSpeech/.git:

gitdir: ../../.git/modules/train/DeepSpeech

Мой вопрос: есть ли способ заставить базель уважать структуру подмодулямой репозиторий?В идеале, в моей команде bazel build должны быть какие-то флаги, которые заставят ее волшебным образом работать, но я открыт для других опций.

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 22 ноября 2018

Bazel действительно не понимает подмодули Git.

Однако Bazel имеет представление о репозиториях, и вы можете указать структуру своих репозиториев в файле WORKSPACE, который находится в корне вашего рабочего пространства, используятак называемые правила репозитория.

Эта страница объясняет концепцию файла WORKSPACE, и я считаю, это правило , которое вам понадобится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...