Должна ли зависимость быть включена в хранилище?
Я думаю, что зависимости всегда должны быть включены в репозиторий, если их включение не нарушает никаких условий использования. Немногие вещи раздражают больше, чем необходимость вручную найти правильные версии нужных зависимостей, прежде чем вы сможете сделать сборку. Конечно, это легко, когда у вас есть автоматизированные инструменты, которые могут сделать это для вас, которые могут найти и загрузить нужную зависимость, но что делать, если вы в данный момент не подключены к сети, или сервер не работает, или проект зависимости был полностью прекращен и переведен в автономный режим? Всегда включайте зависимости, если это возможно.
Должна ли зависимость быть построена из того же сценария сборки, что и остальная часть проекта, или из отдельного сценария сборки?
Если нет веской причины для компиляции из исходного кода, используйте предварительно скомпилированные версии.
А почему бы не предоставить опции в скрипте сборки? Простой переключатель, чтобы выбрать, следует ли компилировать зависимости или нет. Если пользователь также решил скомпилировать зависимости, просто вызовите свои собственные сценарии сборки из сценария сборки вашего продукта. Таким образом, пользователь может вызвать сценарии сборки зависимостей вручную или выбрать создание полной сборки всего. Но я бы просто поставил зависимости в виде двоичных файлов, если нет веской причины для их компиляции из исходных текстов. Я думаю, что в мире Open Source некоторые лицензии требуют, чтобы вы распространяли источники вместе с вашим продуктом, но это не значит, что вы не можете предварительно их скомпилировать.
Вкратце: Предоставьте, по возможности, целый автономный рабочий пакет. Это обеспечит максимальное удобство для ваших пользователей.