From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Tue, 10 Dec 2019 02:21:11 +0300 From: Vladislav Zavjalov To: devel@lists.altlinux.org Message-ID: <20191209232111.GB9971@imap.altlinux.org> MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit User-Agent: Mutt/1.10.1 (2018-07-13) Subject: [devel] git submodule + gear*2 X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Dec 2019 23:21:11 -0000 Archived-At: List-Archive: List-Post: Добрый день! Я наконец-то тоже наткнулся на проблему с gear и git submodule: https://bugzilla.altlinux.org/show_bug.cgi?id=17914 Как-то ее для себя решил и хочу поделиться этим вариантом. Вдруг кому-то пригодится, или какие-то замечания появятся. Моя задача немного отличается от сборки чужих пакетов. Я иногда пишу разнородные программы по разным поводам и для этого часто использую одни и те же куски кода. Мне оказалось очень удобным иметь некую "библиотеку исходного кода", состоящую из разнородных модулей (наверное, что-то типа gnulib). И, конечно, оказалось очень удобно подключать такую библиотеку в виде git submodule. Вся работа происходит в рамках того проекта, которым я занимаюсь в данный момент, при этом изменения в "библиотеке" правильно уходят в ее репозиторий (с git subtree так чисто, кажется, не получится). Мне важно, чтобы у меня в репозитории submodulе присутствовал в своем исходном виде, не слитый в subtree или отдельный бранч. В этом случае я могу запускать make, что-то отлаживать, что-то коммитить. Но после этого мне хочется сказать `gear-rpm -ba [--commit]` и поставить собранный пакет в систему. Решение такое: - В библиотеке (сабмодуле) я завожу тривиальный .gear-rules (`tar: . name=mylibrary`) и тривиальный spec-file. - В репозитории храню отдельно тарбол с библиотекой, полученный с помощью gear. Для этого у меня там лежит скрипт update_mylibrary: ``` #/bin/sh cd mylibrary gear --export-dir .. $@ rm -f ../mylibrary.spec ``` - В спек-файле в начале секции %build ставлю: tar -xvf mylibrary.tar И все работает. Тонкое место - следить за тем, чтобы тарбол был правильно и во-время обновлен и закоммичен. Перед сборкой через gear я должен запустить скрипт (возможно, с --commit), саму сборку тоже можно после этого сделать с --commit. А перед сборкой новой версии тарболл коммитится. Преимущество метода - что все сделано из простых элементов, каждый из которых я (далекий от тонкостей git и т.п.) вполне понимаю, без каких-то новых программ и сложных скриптов.