Gear/specsubst
Материал из ALT Linux Wiki
м (соответственно...) |
(→Использование в произвольном пакете) |
||
(1 промежуточная версия не показана) | |||
Строка 28: | Строка 28: | ||
Первыми пользователями <tt>specsubst</tt> стали шаблоны модулей ядра | Первыми пользователями <tt>specsubst</tt> стали шаблоны модулей ядра | ||
(см. тж. [http://www.altlinux.org/index.php?title=Git.alt/Справочник&diff=0&oldid=22016 task add kmodules]). | (см. тж. [http://www.altlinux.org/index.php?title=Git.alt/Справочник&diff=0&oldid=22016 task add kmodules]). | ||
+ | |||
+ | == Использование в произвольном пакете == | ||
+ | |||
+ | Для примера возьмем пакет {{pkg|blender}}. | ||
+ | |||
+ | В {{path|blender.spec}}: | ||
+ | <source lang="spec">... | ||
+ | Release: @RepoRelease@.1 | ||
+ | ... | ||
+ | * Mon Feb 29 2016 Andrey Cherepanov <cas@altlinux.org> 2.69-@RepoRelease@.1 | ||
+ | - Rebuild with new boost | ||
+ | ...</source> | ||
+ | |||
+ | В {{path|.gear/rules}}: | ||
+ | <source lang="text">specsubst: RepoRelease | ||
+ | ...</source> | ||
+ | |||
+ | Подстановка значения осуществляется <u>при создании тега</u>, в теле описания тега ({{term|-m}}): | ||
+ | <source lang="bash">gear-create-tag -m "blender-2.69-alt1.1 | ||
+ | X-gear-specsubst: RepoRelease=alt1"</source> | ||
+ | |||
+ | Обратите внимание на то, что команда gear-create-tag идёт в две строки. Во второй строке задаётся собственно значение подставляемого параметра: | ||
+ | X-gear-specsubst: RepoRelease=alt1 | ||
+ | |||
+ | Имя созданного тега при этом также будет содержать шаблон подстановки. Не пугайтесь, так и надо: | ||
+ | <source lang="text">git show -s --format=%s 2.69-@RepoRelease@.1 | cat | ||
+ | tag 2.69-@RepoRelease@.1 | ||
+ | Tagger: Andrey Cherepanov <cas@altlinux.org> | ||
+ | |||
+ | blender-2.69-alt1.1 | ||
+ | X-gear-specsubst: RepoRelease=alt1 | ||
+ | -----BEGIN PGP SIGNATURE----- | ||
+ | Version: GnuPG v1 | ||
+ | |||
+ | iEYEABECAAYFAlbULWMACgkQSGPA9Knr8TEMKACfXTcThXrTxeHsGuwISS0KMIKK | ||
+ | XfIAoIwiCsT66o1zlCq+kt/U5TOzG6K4 | ||
+ | =mLVM | ||
+ | -----END PGP SIGNATURE----- | ||
+ | 2.69-alt1.1</source> | ||
+ | |||
+ | после этого пушим тег в репозиторий и собираем с ним: | ||
+ | git push origin sisyphus 2.69-@RepoRelease@.1 | ||
+ | ssh build.alt build blender 2.69-@RepoRelease@.1 | ||
+ | |||
+ | Сборочница через gear подставит значение для {{term|RepoRelease}}. | ||
== Ссылки == | == Ссылки == | ||
Строка 33: | Строка 78: | ||
* [[Справочник по gear]] | * [[Справочник по gear]] | ||
* [[Руководство по gear]] | * [[Руководство по gear]] | ||
+ | |||
{{Category navigation|title=Gear/specsubst|category=Gear|sortkey=*}} | {{Category navigation|title=Gear/specsubst|category=Gear|sortkey=*}} |
Текущая версия на 12:04, 29 февраля 2016
В середине декабря 2012 по мотивам идеи Саши Бокового в gear была реализована возможность управляемым и воспроизводимым образом экспортировать различные варианты исходного кода из одного и того же коммита.
Этот эффект достигается путем подстановки в спек-файле @переменных@, заданных в новой директиве specsubst:, в соответствии с определением переменных в тэге, из которого производится экспорт исходного кода.
При использовании specsubst коммит фактически превращается в шаблон, не предназначенный для непосредственной сборки, но из которого с помощью тэга можно получить реализацию шаблона, которую уже можно собирать.
Новая функциональность активируется только при условии использования specsubst, что гарантирует полную обратную совместимость.
При использовании specsubst команда gear --commit создает не только временный commit object, но и временный tag object, используя для определения подстановочных переменных конфигурационные значения gear.specsubst.* (см. .git/config проекта); например:
[gear "specsubst"] kflavour = un-def
Синтаксис новой директивы и формат описания подстановочных переменных в тэге приведен в gear-rules(5).
Первыми пользователями specsubst стали шаблоны модулей ядра (см. тж. task add kmodules).
Использование в произвольном пакете
Для примера возьмем пакет blender.
В blender.spec:
... Release: @RepoRelease@.1 ... * Mon Feb 29 2016 Andrey Cherepanov <cas@altlinux.org> 2.69-@RepoRelease@.1 - Rebuild with new boost ...
В .gear/rules:
specsubst: RepoRelease ...
Подстановка значения осуществляется при создании тега, в теле описания тега (-m):
gear-create-tag -m "blender-2.69-alt1.1 X-gear-specsubst: RepoRelease=alt1"
Обратите внимание на то, что команда gear-create-tag идёт в две строки. Во второй строке задаётся собственно значение подставляемого параметра:
X-gear-specsubst: RepoRelease=alt1
Имя созданного тега при этом также будет содержать шаблон подстановки. Не пугайтесь, так и надо:
git show -s --format=%s 2.69-@RepoRelease@.1 | cat tag 2.69-@RepoRelease@.1 Tagger: Andrey Cherepanov <cas@altlinux.org> blender-2.69-alt1.1 X-gear-specsubst: RepoRelease=alt1 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iEYEABECAAYFAlbULWMACgkQSGPA9Knr8TEMKACfXTcThXrTxeHsGuwISS0KMIKK XfIAoIwiCsT66o1zlCq+kt/U5TOzG6K4 =mLVM -----END PGP SIGNATURE----- 2.69-alt1.1
после этого пушим тег в репозиторий и собираем с ним:
git push origin sisyphus 2.69-@RepoRelease@.1 ssh build.alt build blender 2.69-@RepoRelease@.1
Сборочница через gear подставит значение для RepoRelease.
Ссылки