суббота, 9 апреля 2016 г.

[prog] Небольшой пример MxxRu::externals скрипта из реальной жизни

Под катом пример MxxRu::externals-скрипта, посредством которого подтягиваются почти все зависимости для одного из текущих проектов. Почти все потому, что Boost таким образом не подцепишь (пока по крайней мере не пробовали).

В дополнение к тем соображениям по поводу будущих доработок в MxxRu::externals, которые были изложены здесь, добавилась еще одна идея: нужно иметь разные списки externals-ов для разных кусков проекта. Например, делаю библиотеку libX. Для нее нужны spdlog и tinyformat. Посему желательно, чтобы эти зависимости подхватывались автоматически всеми, кто берет libX к себе. Для тестов библиотеки libX нужен Catch. Поэтому Catch должен относиться к зависимостями libX-tests. И нужен Catch будет только тем, кто хочет гонять тесты для libX. Для примеров библиотеки libX может быть нужен rapidjson. Посему rapidjson должен быть в externals-ах libX-samples, но его не должно быть в externals-ах самой библиотеки libX.

В общем, есть над чем покурить.

Ну а пока пример того, что сейчас используется в повседневной работе:

gem 'Mxx_ru''>= 1.6.9'
require 'mxx_ru/externals'

MxxRu::arch_externals :libmosquitto do |e|
  e.url 'http://mosquitto.org/files/source/mosquitto-1.4.8.tar.gz'

  e.map_dir 'lib' => 'dev/libmosquitto'
  e.map_file 'config.h' => 'dev/libmosquitto/*'
end

MxxRu::hg_externals :libmosquitto_mxxru do |e|
  e.url 'https://---censored---/libmosquitto_mxxru_1.0'

  e.map_file 'dev/libmosquitto/prj.rb' => 'dev/libmosquitto/*'
end

MxxRu::arch_externals :tinyformat do |e|
  e.url 'https://github.com/c42f/tinyformat/archive/Release-2.0.1.tar.gz'

  e.map_file 'tinyformat.h' => 'dev/tinyformat/*'
end

MxxRu::git_externals :spdlog do |e|
  e.url 'https://github.com/gabime/spdlog.git'
  e.commit 'a79a045'

  e.map_dir 'include' => 'dev/spdlog'
end

MxxRu::hg_externals :spdlog_mxxru do |e|
  e.url 'https://---censored---/spdlog_mxxru_1.0'
  e.tag '1.0.0'

  e.map_file 'dev/spdlog/prj.rb' => 'dev/spdlog/*'
end

MxxRu::svn_externals :so5 do |e|
  e.url 'http://svn.code.sf.net/p/sobjectizer/repo/tags/so_5/5.5.16'
  e.option '-q'
  e.option '--native-eol''LF'

  e.map_dir 'dev/so_5' => 'dev'
end

MxxRu::svn_externals :timertt do |e|
  e.url 'http://svn.code.sf.net/p/sobjectizer/repo/tags/timertt/1.1.1'
  e.option '-q'
  e.option '--native-eol''LF'

  e.map_dir 'dev/timertt' => 'dev'
end

MxxRu::arch_externals :catch do |e|
  e.url 'https://github.com/philsquared/Catch/archive/v1.3.0.tar.gz'

  e.map_file 'single_include/catch.hpp' => 'dev/catch/*'
end

Комментариев нет: