Bug 18140 - [FR] gear-changelog: implement a new option to incorporate add_changelog's output
Summary: [FR] gear-changelog: implement a new option to incorporate add_changelog's ou...
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: gear (show other bugs)
Version: unstable
Hardware: all Linux
: P2 enhancement
Assignee: Alexey Gladkov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-12-08 14:23 MSK by inger@altlinux.org
Modified: 2016-05-11 07:46 MSK (History)
8 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description inger@altlinux.org 2008-12-08 14:23:01 MSK
Хочется ставить один gear для того чтобы заниматься разработкой.
Из rpm-utils уже использую только add_changelog, стало быть ему самое место в gear ;)

При переносе предлагаю сделать следующее изменение: Имя пользователя брать не из .rpmmacros, а из .gitconfig.
Comment 1 Dmitry V. Levin 2008-12-08 14:42:15 MSK
(In reply to comment #0)
> Хочется ставить один gear для того чтобы заниматься разработкой.
> Из rpm-utils уже использую только add_changelog, стало быть ему самое место в gear ;)

Другому для разработки понадобится другой пакет, и он попросит перенести add_changelog туда.  Ну уж нет. ;)

> При переносе предлагаю сделать следующее изменение: Имя пользователя брать
> не из .rpmmacros, а из .gitconfig.

Зачем?  У тебя имя меняется в зависимости от репозитория? :)
Comment 2 Mikhail Gusarov 2008-12-08 14:45:23 MSK
(In reply to comment #1)

> Зачем?  У тебя имя меняется в зависимости от репозитория? :)

Почтовый адрес может меняться. Да и имя - тоже, если под псевдонимом работать :)
Comment 3 inger@altlinux.org 2008-12-08 14:46:40 MSK
(In reply to comment #1)
> (In reply to comment #0)
> > Хочется ставить один gear для того чтобы заниматься разработкой.
> > Из rpm-utils уже использую только add_changelog, стало быть ему самое место в gear ;)
> 
> Другому для разработки понадобится другой пакет, и он попросит перенести
> add_changelog туда.  Ну уж нет. ;)
Неверная аналогия. Можно читать не "перенести", а "добавить аналог".

Вот тебе use-case. Я ставлю систему, ставлю hasher/gear и помимо этого приходится ставить rpm-utils.

Далее, я настраиваю .gitconfig, а потом ещё лезу в .rpmmacros.

То есть налицо двойная работа. Одно дело, когда у тебя уже всё настроено, а я вот поднимал сборочную среду с нуля и прочувствовал всю двойную работу ;)

> > При переносе предлагаю сделать следующее изменение: Имя пользователя брать
> > не из .rpmmacros, а из .gitconfig.
> 
> Зачем?  У тебя имя меняется в зависимости от репозитория? :)
Кстати хорошая идея ;)

Comment 4 Mikhail Gusarov 2008-12-08 14:49:50 MSK
А как насчёт сборки без git? :)
Comment 5 inger@altlinux.org 2008-12-08 14:51:05 MSK
(In reply to comment #4)
> А как насчёт сборки без git? :)
> 
А для них пусть остаётся rpm-utils ;)


Comment 6 Mikhail Gusarov 2008-12-08 14:58:00 MSK
Тогда, раз это инструмент для работы с git, может быть gear-changelog дописать слегка?
Comment 7 Alexey Gladkov 2008-12-08 15:00:13 MSK
(In reply to comment #6)
> Тогда, раз это инструмент для работы с git, может быть gear-changelog дописать
> слегка?

Не против :)
Я его почти для этого и делал ... кстати, gear-changelog генерит changelog по стандарту add_changelog.
Comment 8 Dmitry V. Levin 2008-12-08 15:10:29 MSK
(In reply to comment #7)
> (In reply to comment #6)
> > Тогда, раз это инструмент для работы с git, может быть gear-changelog дописать
> > слегка?
> 
> Не против :)
> Я его почти для этого и делал ... кстати, gear-changelog генерит changelog по стандарту
> add_changelog.

Поскольку gear-changelog, в отличие от add_changelog, знает, как зовут spec-файл, им будет удобнее пользоваться.

P.S.  Пора пилить gear на 2 части: то что нужно только для извлечения из gear (для последующей сборки), и то что нужно для разработки под gear.
Comment 9 Alexey Gladkov 2008-12-08 15:39:36 MSK
(In reply to comment #8)

> 
> Поскольку gear-changelog, в отличие от add_changelog, знает, как зовут spec-файл, им будет
> удобнее пользоваться.

Вот бы понять какой ещё функционал от этой утилиты нужен (inger@?)

> P.S.  Пора пилить gear на 2 части: то что нужно только для извлечения из gear (для
> последующей сборки), и то что нужно для разработки под gear.

А нужно ли проводить эту границу ?
Comment 10 inger@altlinux.org 2008-12-08 16:39:50 MSK
(In reply to comment #9)
> (In reply to comment #8)
> 
> > 
> > Поскольку gear-changelog, в отличие от add_changelog, знает, как зовут spec-файл, им будет
> > удобнее пользоваться.
> 
> Вот бы понять какой ещё функционал от этой утилиты нужен (inger@?)
Я пока использую только как добавлялку строчки для changelog ;)

Comment 11 Alexey Gladkov 2010-06-02 12:12:09 MSD
(В ответ на комментарий №10)
> Я пока использую только как добавлялку строчки для changelog ;)

Эта бага ещё актуальна ?
Comment 12 Ivan Zakharyaschev 2016-05-04 16:51:17 MSK
Есть такая неприятность, что VERSION RELEASE, которые попадают в заголовок changelog entry, берутся из commit-а в то время, как их значения скорее всего были отредактированы как раз на этом этапе подготовки пакета.

Т.е. changelog оказывается неправильным.

В связи с этим сложилась такая практика -- просто обрезать первую строчку от gear-changelog и добавлять с помощью add_changelog или команд в vi/emacs или т.п., которые читают текущий файл. (Спрашивал у sem@, glebfm@, ldv@, себя.)

Когда хочется совсем автоматизировать процесс, это мешает.

По-быстрому поправил самым незатратным с точки зрения переписывания кода способом в http://git.altlinux.org/people/imz/packages/gear.git

Судя по небольшому опросу, сохранение опции для старого поведения не очень-то кому-то и нужно.

Кажется, такое тяжеловатое в работе решение для исправления этого уже хорошо, потому что убирает лишнее неудобство при использовании. Комбинировать с add_changelog больше не придётся. Предлагаю опубликовать.

Проверил работу gear-changelog --no-rules и просто функции gear_describe_current() с эпохами и без, вне git-репозитория и без .gear (сообщает об ошибке тогда). Как-то так:

$ (set -e; . gear-sh-functions; . gear-sh-functions-describe-current; cd ~/tests/test-git/; gear_describe_current || echo $?; echo "$pkg_name" "$pkg_epoch" "$pkg_version" "$pkg_release"; )


Собирается в http://git.altlinux.org/tasks/164290/
Comment 13 Alexey Gladkov 2016-05-05 13:45:41 MSK
Тут конечно не лучшее место чтобы делать review, но за неимением другого...

> +  --describe-nevr      describe as "%{NAME} [%{EPOCH}:]%{VERSION} %{RELEASE}"

Вы добавили эпоху через двоеточее чтобы потом искать это двоеточее и разделять второй аргумент на части. Не лучше ли не вводить новый разделитель, а использовать имеющийся (проблел) ? В этом случае весь парсинг будет состоять из подсчёта количества аргументов.

> +++ b/gear-sh-functions-describe-current

Зачем создавать ещё один sh-functions ради двух функций ?
Описание в этом файле лучше было бы приложить как описание к patchset'у.

> +gear_describe_current()
> +{
> +    set_NVR $(gear --commit --describe-nevr)
> +}

Нужно использовать результат get_NVR_from_spec. Как найти specfile есть в gear-commit.

> +++ b/gear-changelog

Вам всего лишь нужно было заменить в этой утилите find_specfile на эвристику из gear-commit, возможно вынеся её в общий файл. Это не требует создания дополнительных опций в gear (--describe-nevr).
Comment 14 Alexey Gladkov 2016-05-05 13:46:55 MSK
Попробую реализовать в ближайшие дни.
Comment 15 Ivan Zakharyaschev 2016-05-05 14:00:26 MSK
(In reply to comment #13)
> Тут конечно не лучшее место чтобы делать review, но за неимением другого...

Спасибо!

> 
> > +  --describe-nevr      describe as "%{NAME} [%{EPOCH}:]%{VERSION} %{RELEASE}"
> 
> Вы добавили эпоху через двоеточее чтобы потом искать это двоеточее и разделять
> второй аргумент на части. Не лучше ли не вводить новый разделитель, а
> использовать имеющийся (проблел) ? В этом случае весь парсинг будет состоять из
> подсчёта количества аргументов.

Да, так и есть. Склонился в сторону от подсчёта количества аргументов, не имея сильных предпочтений. (Отчасти из-за того, что двоеточие уже было в предыдущей реализации -- изменения поведения --describe.)

> 
> > +++ b/gear-sh-functions-describe-current
> 
> Зачем создавать ещё один sh-functions ради двух функций ?

Хотелось явно отделить от тех функций, на которые можно будет рассчитывать всегда, мой временный хак (до поры реализации чтения нужной мета-информации напрямую из рабочей директории).

> Описание в этом файле лучше было бы приложить как описание к patchset'у.
> 
> > +gear_describe_current()
> > +{
> > +    set_NVR $(gear --commit --describe-nevr)
> > +}
> 
> Нужно использовать результат get_NVR_from_spec. Как найти specfile есть в
> gear-commit.
> 
> > +++ b/gear-changelog
> 
> Вам всего лишь нужно было заменить в этой утилите find_specfile на эвристику из
> gear-commit, возможно вынеся её в общий файл. Это не требует создания
> дополнительных опций в gear (--describe-nevr).

Да, такой вариант кажется мне более разумным с самого начала, и я буду рад его реализации, заранее спасибо, если у Вас получится!
Comment 16 Alexey Gladkov 2016-05-06 00:35:42 MSK
(In reply to comment #14)
> Попробую реализовать в ближайшие дни.

http://git.altlinux.org/people/legion/packages/gear.git

Дим, посмотри пожалуйста.
Comment 17 Ivan Zakharyaschev 2016-05-06 02:44:32 MSK
(In reply to comment #16)
> (In reply to comment #14)
> > Попробую реализовать в ближайшие дни.

Спасибо!

> http://git.altlinux.org/people/legion/packages/gear.git
> 
> Дим, посмотри пожалуйста.

К http://git.altlinux.org/people/legion/packages/gear.git?p=gear.git;a=commitdiff;h=9fce6fe2e85a0faaaf8d12e6c7ee5b6ca5a76752 :

ещё эпоха нужна для RPM changelog-а -- http://git.altlinux.org/people/legion/packages/gear.git?p=gear.git;a=commitdiff;h=542604480dfcbb60cc9d47fef4498899d13478b6
Comment 18 Alexey Gladkov 2016-05-06 13:05:02 MSK
(In reply to comment #17)
> ещё эпоха нужна для RPM changelog-а --
> http://git.altlinux.org/people/legion/packages/gear.git?p=gear.git;a=commitdiff;h=542604480dfcbb60cc9d47fef4498899d13478b6

Исправил.
Comment 19 Repository Robot 2016-05-11 07:46:37 MSK
gear-2.0.7-alt1 -> sisyphus:

* Fri May 06 2016 Dmitry V. Levin <ldv@altlinux> 2.0.7-alt1
- gear-changelog, gear-edit-spec: look for specfile using the same
  algorithm as gear-commit (by Alexey Gladkov and me; closes: #18140).