Gear/specsubst

Материал из ALT Linux Wiki

< Gear(Различия между версиями)
Перейти к: навигация, поиск
м (minor wikification)
(Использование в произвольном пакете)
 
(2 промежуточные версии не показаны)
Строка 18: Строка 18:
временный commit object, но и временный tag object, используя для
временный commit object, но и временный tag object, используя для
определения подстановочных переменных конфигурационные значения
определения подстановочных переменных конфигурационные значения
-
<tt>gear.specsubst.*</tt>
+
<tt>gear.specsubst.*</tt> (см. {{path|.git/config}} проекта); например:
 +
 
 +
  [gear "specsubst"]
 +
          kflavour = un-def
Синтаксис новой директивы и формат описания подстановочных переменных в
Синтаксис новой директивы и формат описания подстановочных переменных в
тэге приведен в <tt>gear-rules(5)</tt>.
тэге приведен в <tt>gear-rules(5)</tt>.
-
Первыми пользователями <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}}.
== Ссылки ==
== Ссылки ==
Строка 30: Строка 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.

Ссылки


 
Личные инструменты