ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [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