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