Gear/specsubst

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

< Gear(Различия между версиями)
Перейти к: навигация, поиск
(fix Category)
(Использование в произвольном пакете)
 
(3 промежуточные версии не показаны)
Строка 1: Строка 1:
-
Цитата:
+
В середине декабря 2012 по мотивам [https://bugzilla.altlinux.org/show_bug.cgi?id=20912 идеи Саши Бокового]
-
  http://lists.altlinux.org/pipermail/devel/2012-December/196170.html
+
в {{pkg|gear}} была реализована возможность управляемым и воспроизводимым образом
-
 
+
-
На прошлой неделе, по мотивам идеи Саши Бокового (см.
+
-
https://bugzilla.altlinux.org/show_bug.cgi?id=20912) в gear была
+
-
реализована возможность управляемым и воспроизводимым образом
+
экспортировать различные варианты исходного кода из одного и того же
экспортировать различные варианты исходного кода из одного и того же
коммита.
коммита.
-
Этот эффект достигается путем подстановки в спек-файле @переменных@,
+
Этот эффект достигается путем подстановки в спек-файле <tt>@переменных@</tt>,
-
заданных в новой директиве "specsubst:", в соответствии с определением
+
заданных в новой директиве <tt>specsubst:</tt>, в соответствии с определением
переменных в тэге, из которого производится экспорт исходного кода.
переменных в тэге, из которого производится экспорт исходного кода.
-
При использовании specsubst коммит фактически превращается в шаблон, не
+
При использовании <tt>specsubst</tt> коммит фактически превращается в шаблон, не
предназначенный для непосредственной сборки, но из которого с помощью тэга
предназначенный для непосредственной сборки, но из которого с помощью тэга
можно получить реализацию шаблона, которую уже можно собирать.
можно получить реализацию шаблона, которую уже можно собирать.
Новая функциональность активируется только при условии использования
Новая функциональность активируется только при условии использования
-
specsubst, что гарантирует полную обратную совместимость.
+
<tt>specsubst</tt>, что гарантирует полную обратную совместимость.
-
При использовании specsubst команда gear --commit создает не только
+
При использовании <tt>specsubst</tt> команда {{cmd|gear --commit}} создает не только
временный commit object, но и временный tag object, используя для
временный commit object, но и временный tag object, используя для
определения подстановочных переменных конфигурационные значения
определения подстановочных переменных конфигурационные значения
-
gear.specsubst.*
+
<tt>gear.specsubst.*</tt> (см. {{path|.git/config}} проекта); например:
 +
 
 +
  [gear "specsubst"]
 +
          kflavour = un-def
Синтаксис новой директивы и формат описания подстановочных переменных в
Синтаксис новой директивы и формат описания подстановочных переменных в
-
тэге приведен в gear-rules(5).
+
тэге приведен в <tt>gear-rules(5)</tt>.
-
Первыми пользователями specsubst, судя по всему, станут шаблоны модулей
+
Первыми пользователями <tt>specsubst</tt> стали шаблоны модулей ядра
-
ядра.
+
(см. тж. [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}}.
 +
 +
== Ссылки ==
 +
* [http://lists.altlinux.org/pipermail/devel/2012-December/196170.html ldv@ in devel@]
* [[Справочник по 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.

Ссылки


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