У меня есть система сборки на основе Make для всех моих приложений C / C ++ (как для ПК, так и для различных встроенных проектов), и хотя мне нравится иметь возможность создавать сборки верхнего уровня на новой машине и проверять все существуют зависимости (я проверяю свои наборы инструментов для контроля версий: D), я разочарован тем, что не сделал то же самое для интерпретируемых языков, которые в настоящее время не имеют make-файла в моей системе сборки.
Я испытываю желание написать скрипт, который:
- ищет в моем репозитории контроля версий файлы с расширением .pl или .pm
- работает
perl -d:Modlist
на них (спасибо Vagnerr!)
- объединяет его со списком необходимых модулей
- и, наконец, сравнение его со списком установленных модулей.
Затем я выполнил бы этот сценарий как часть моей сборки верхнего уровня, так что любой, кто собирает что-либо, будет знать, есть ли у него все, что ему нужно для запуска каждого сценария perl, который он получил от контроля версий. Если есть какой-нибудь Perl-скрипт, который они никогда не запускают и не хотят, чтобы CPAN установил то, что требуется для его запуска, им пришлось бы удалить нежелательный скрипт из своего жесткого диска, чтобы средство проверки зависимостей не могло их найти. Я знаю, как изменить клиент перформанса, чтобы пропустить определенные подкаталоги, когда вы выполняете «синхронизацию», мне придется выяснить это для подрывной деятельности ...
Я бы предложил сделать средство проверки зависимостей одним скриптом, который ищет pl-файлы, в отличие от отдельного make-файла для проверки зависимостей для каждого скрипта или на основе жестко закодированного списка имен скриптов. Если вы выберете метод, требующий от пользователя действий для проверки сценария на наличие зависимостей, люди забудут выполнить это действие, так как они смогут запустить сценарий, даже если они не выполняют проверку зависимостей.
Как я уже сказал, я еще не реализовал вышеизложенное, но этот вопрос побудил меня попытаться это сделать. Я вернусь с моим опытом после того, как я закончу.