* [devel] git submodule + gear*2
@ 2019-12-09 23:21 Vladislav Zavjalov
0 siblings, 0 replies; only message in thread
From: Vladislav Zavjalov @ 2019-12-09 23:21 UTC (permalink / raw)
To: devel
Добрый день!
Я наконец-то тоже наткнулся на проблему с 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 и т.п.) вполне понимаю, без
каких-то новых программ и сложных скриптов.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2019-12-09 23:21 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-09 23:21 [devel] git submodule + gear*2 Vladislav Zavjalov
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git