[devel] Муть moodle в cronbild (was: Угрозы развитию дистрибутива. Пути решения.)

Aleksey Avdeev solo на solin.spb.ru
Вт Окт 4 20:53:10 UTC 2011


01.10.2011 19:08, Aleksey Avdeev пишет:
> 01.10.2011 11:34, Денис Смирнов пишет:
...
>> Так в .gear кладутся скрипты для cronbuild. Если есть какие-то общие
>> компоненты -- так их можно вынести отдельно и использовать.
>>
>> Сейчас-то у нас пакетов собирающихся с помощью cronbuild ой как мало.
> 
>   Сейчас в эту компанию я moodle* добавляю.
> 
> PS: Похоже мне придётся патчить cronbuild-rear для этого.

  Прототип cronbuild`овских скриптов готов (см.
<http://git.altlinux.org/people/solo/packages/?p=moodle.git;a=tree;f=.gear;h=9e9b7b43b93dd705a12bddb0f7547ea194e23b98;hb=3df59e6b4bb7498697a01cabd919cd6166cc2d30>)
и тестовое обновление сборочного бранча gear-cronbuild`ом выполнено (см.
<http://git.altlinux.org/people/solo/packages/?p=moodle.git;a=commit;h=40041eb6e5a8ed63743a928969b3dfe8993b3145>).

  По свежим следам:

1. Всю логику пришлось выносить в cronbuild-update-source (см.
<http://git.altlinux.org/people/solo/packages/?p=moodle.git;a=blob;f=.gear/cronbuild-update-source;h=e65098fe3c6a1241c593ac61c4756ace0b5a3f10;hb=3df59e6b4bb7498697a01cabd919cd6166cc2d30>),
а cronbuild-{update-version,add-changelog} -- низводить до состаяния
заглушек, тупо выполняющих exit 0 (см.
<http://git.altlinux.org/people/solo/packages/?p=moodle.git;a=blob;f=.gear/cronbuild-update-version;h=a3c4c486aa2464f097cd5716ea817121b8ad44d6;hb=3df59e6b4bb7498697a01cabd919cd6166cc2d30>).
Причины опишу ниже.

2. При использовании gear-commit -m <msg> _необходимо_ учитывать
находящийся в потрохах gear-commit`а eval => сложные <msg> нужно квотить
=> это нужно учитывать в cronbuild-commitmsg (в моём случаи -- см.
<http://git.altlinux.org/people/solo/packages/?p=moodle.git;a=commitdiff;h=3df59e6b4bb7498697a01cabd919cd6166cc2d30>)...
Думаю, стоит перенести оквочивание на уровень gear-cronbuild*.

3. Думаю, в скрипты cronbuild-{commitmsg,tag{name,msg}} стоить
передавать имя спека.

  Для п. п. 2-3 готов подготовить патчи.

  По п. 1 (обещание данное выше).

  gear-cronbuild заточен на реализацию следующего алгоритма:

1. Обновление сорцов (cronbuild-update-source).

2. Правка спека на предмет версий (cronbuild-update-version).

3. Обновление changelog`а (cronbuild-add-changelog).

4. Финальный (сборочный) коммит (gear-commit).

  Причём, подразумевается что всё действо происходит в одном бранче
(если cronbuild-update-source не внесёт изменений в начальный бранч --
git diff изменений не покажет => gear-cronbuild-apply-hooks обновления
сорцов не заметит). П. 3 должен выполнить подготовку к коммиту, но не
выполнять его (иначе gear-commit в п. 4 завершиться с ошибкой).

  Я же использую пачку бранчей, и следующий алгоритм:

1. Обновление бранчей с сорцами. Это последовательность pull`ов и
мержей, _не_затрагивающая_ основной (сборочный) бранч.

2. Правка спека на предмет версий в основном бранче (в конечном итоге).

3. Мерж сорцовых бранчей в основной (-s ours).

4. Выставление тегов на исходники.

5. gear-update-tag

6. Финальный (сборочный) коммит.

  В общем, законопачивание п. п. 1-5 в cronbuild-update-source (хотя, по
хорошему, там только п. 1 место) позволило применить данный алгоритм
cronbuild`ом, и реализовать откат на исходное состояние бранчей (если
что-то пошло не так) малой кровью.

-- 

С уважением. Алексей.


----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : signature.asc
Тип     : application/pgp-signature
Размер  : 900 байтов
Описание: OpenPGP digital signature
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20111005/f47a0b14/attachment.bin>


Подробная информация о списке рассылки Devel