Думаю, что вот этим уже можно хвастаться:
gem 'Mxx_ru', '>= 1.6.8' require 'mxx_ru/externals' MxxRu::arch_externals :asio do |e| e.url 'https://github.com/chriskohlhoff/asio/archive/asio-1-11-0.tar.gz' e.sha1 '1be2489015a1e1c7b8666a5a803d984cdec4a12b' e.map_dir 'asio/include' => 'sources/asio' e.map_file 'asio/src/asio.cpp' => 'sources/asio/src/asio.cpp' e.map_file 'asio/src/asio_ssl.cpp' => 'sources/asio/src/asio_ssl.cpp' end MxxRu::git_externals :spdlog do |e| e.url 'https://github.com/gabime/spdlog.git' e.commit 'c6f8f1d' e.map 'include/spdlog' => 'sources' end MxxRu::arch_externals :eigen do |e| e.url 'https://bitbucket.org/eigen/eigen/get/3.2.5.tar.bz2' e.sha1 'aa4667f0b134f5688c5dff5f03335d9a19aa9b3d' e.map 'Eigen' => 'sources' end MxxRu::arch_externals :so_5 do |e| e.url 'https://sourceforge.net/projects/sobjectizer/files/sobjectizer/SObjectizer%20Core%20v.5.5/so-5.5.15.2.zip' e.sha1 'd2a4c5e262d8b8ff023f18d93bd742d0b0da4aa1' e.map 'dev/so_5' => 'sources' e.unpacker_option '-q' end |
Что здесь происходит?
Из разных источников берутся исходники четырех разных проектов. После чего нужные мне части этих проектов закидываются внутрь каталога sources.
Первый из нужных мне подпроектов, asio, берется с GitHub-а в виде tar.gz архива. Забираю конкретную версию 1.11.0, что и отражается в имени архива для загрузки.
Второй подпроект, spdlog, так же берется с GitHub-а. Но spdlog пока не имеет зафиксированных тегов, поэтому приходится тащить с GitHub-а ветку master. Но, дабы не зависеть от того, сломается ли совместимость будущих версий в мастере с тем, что использую я, дается указания после клонирования репозитория сделать checkout на конкретный commit. Т.е. если мой код работает с spdlog из конкретного коммита, то он и продолжит работать именно с этой версией spdlog, даже если ветка master на GitHub-е уедет далеко вперед со временем.
Второй подпроект, eigen, вытягивается в виде tar.bz2 архива с BitBucket-а. Мне нужна ветка 3.2.5, ссылку на соответствующий архив я взял с BitBucket-а и зафиксировал у себя в externals.rb.
Четвертый подпроект, so_5, вытягивается в виде zip архива с SourceForge. Ссылка на конкретный архив была взята с соответствующей странички на SourceForge.
Для всех загруженных архивов после скачивания проверяется контрольная сумма (посредством хеша SHA1).
В итоге в подкаталоге sources получается следующее:
sources/ `- asio/ `- include/ `- * `- src/ `- asio.cpp, asio_ssl.cpp `- Eigen/ `- * `- so_5/ `- * `- spdlog/ `- *
Версия, на которой это проверялось, находится в Svn-е. Выкатывать релиз версии 1.6.8 буду, вероятно, уже после праздников, 9-го или 10-го числа.
Комментариев нет:
Отправить комментарий