ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Vladislav Zavjalov <slazav@altlinux.org>
To: devel@lists.altlinux.org
Subject: [devel] git submodule + gear*2
Date: Tue, 10 Dec 2019 02:21:11 +0300
Message-ID: <20191209232111.GB9971@imap.altlinux.org> (raw)

Добрый день!

Я наконец-то тоже наткнулся на проблему с 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 и т.п.) вполне понимаю, без
каких-то новых программ и сложных скриптов.




                 reply	other threads:[~2019-12-09 23:21 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191209232111.GB9971@imap.altlinux.org \
    --to=slazav@altlinux.org \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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