Bug 7537

Summary: Wine-tests: разрешение конфликта в файле VERSION
Product: [Свободные проекты (Open source projects)] WINE-tests Reporter: Виталий Перов <vitperov>
Component: ОбщееAssignee: Виталий Перов <vitperov>
Status: CLOSED FIXED QA Contact:
Severity: minor    
Priority: P4 CC: amorozov, baraka, lav
Version: не указана   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on: 6272    
Bug Blocks: 6264    

Description Виталий Перов 2011-08-15 13:11:36 MSK
При мерже eterwine в eterhack возникает проблема при обновлении версии Wine.
Для корректного обновления требуется:
1) Выставить корректную версию в файле VERSION
2) выполнить autoconf -f
3) исправить *.spec. Изменить в нём текущую версию и добавить changelog.
Comment 1 Александр Морозов 2011-08-15 13:32:52 MSK
> 2) выполнить autoconf -f
Я бы предложил такую последовательность:
tools/make_requests
autoheader
autoconf
Comment 2 Александр Морозов 2011-08-15 13:35:39 MSK
> tools/make_requests
Но с этой штукой есть одна сложность. Она вроде бы всегда обновляет версию в include/wine/server_protocol.h, даже если ничего не изменилось. Поэтому в идеале было бы неплохо если поменялась только версия, то откатывать это изменение назад.
Comment 3 Виталий Перов 2011-08-15 13:40:11 MSK
(В ответ на comment #2)
> > tools/make_requests
> Но с этой штукой есть одна сложность. Она вроде бы всегда обновляет версию в
> include/wine/server_protocol.h, даже если ничего не изменилось. Поэтому в
> идеале было бы неплохо если поменялась только версия, то откатывать это
> изменение назад.

Можно добавить отдельное правило для разрешения конфликта в include/wine/server_protocol.h. Т.е если есть конфликт в этом файле, то вызывать tools/make_requests.
Причём, если я правильно понимаю, делать это нужно в самом конце, когда уже разрешены конфликты в остальных файлах.
Comment 4 Александр Морозов 2011-08-15 13:44:56 MSK
Да, лучше вызывать после правки всего, что не генерируется автоматически. Тут ещё о таком моменте я что-то сразу не подумал: если будут конфликты в include/wine/server_protocol.h, то скорее всего будут и конфликты в server/protocol.def, т.е., видимо, надо либо научиться автоматически править конфликты в protocol.def, либо тогда нет особого смысла запускать tools/make_requests.
Comment 5 Виталий Перов 2011-08-15 13:49:53 MSK
(В ответ на comment #4)
> Да, лучше вызывать после правки всего, что не генерируется автоматически. Тут
> ещё о таком моменте я что-то сразу не подумал: если будут конфликты в
> include/wine/server_protocol.h, то скорее всего будут и конфликты в
> server/protocol.def, т.е., видимо, надо либо научиться автоматически править
> конфликты в protocol.def, либо тогда нет особого смысла запускать
> tools/make_requests.

Я часто встречал, что конфликты только в include/wine/server_protocol.h. Притом конфликты связано только со строкой версии.
И чтобы при этом были конфликты в server/protocol.def - такое бывает очень редко
Comment 6 Александр Морозов 2011-08-15 14:04:41 MSK
> Я часто встречал, что конфликты только в include/wine/server_protocol.h. Притом
> конфликты связано только со строкой версии.
> И чтобы при этом были конфликты в server/protocol.def - такое бывает очень
> редко
Не знаю, подойдёт ли в таком случае tools/make_requests. Она версию просто на единицу увеличивает. А если в этой строке конфликт, то не знаю, как она себя поведёт. Тут лучше проверить.
Comment 7 Виталий Перов 2011-08-15 14:12:37 MSK
(В ответ на comment #6)
> Не знаю, подойдёт ли в таком случае tools/make_requests. Она версию просто на
> единицу увеличивает. А если в этой строке конфликт, то не знаю, как она себя
> поведёт. Тут лучше проверить.
Создал отдельную багу #7539.
Comment 8 Виталий Перов 2011-08-15 14:13:59 MSK
(В ответ на comment #1)
> > 2) выполнить autoconf -f
> Я бы предложил такую последовательность:
> tools/make_requests
> autoheader
> autoconf

Только вот не совсем понимаю зачем вызывать autoheader?
Comment 9 Александр Морозов 2011-08-15 14:20:20 MSK
> Только вот не совсем понимаю зачем вызывать autoheader?
Оно обновляет include/config.h.in при изменении configure.ac
Comment 10 Виталий Перов 2011-08-24 16:22:41 MSK
Сделал отдельный метод resolve_conflict_in() для разрешения конфликтов в специальных файлах.
В классе git_repository этот метод разрешает конфликты никак не связаннаые с wine. Например в configure. В классе wine_repository метод разрешает конфликты связанные с wine
Comment 11 Виталий Перов 2011-08-24 17:54:33 MSK
Реализовал исправления конфликта в файле 'VERSION'
По счастливой случайности он оказался раньше, чем 'configure' (надеюсь так будет каждый раз', поэтому конфликт в configure затем сам исправится.

Ещё нужно разобраться со spec-файлами, и изменять версию там.
Comment 12 Виталий Перов 2011-08-24 19:32:44 MSK
(В ответ на comment #11)
> Ещё нужно разобраться со spec-файлами, и изменять версию там.

Реализовал обновление полей Version и Reliase в спеке.

Осталось добавить Changelog
Comment 13 Виталий Перов 2011-08-24 20:15:12 MSK
(В ответ на comment #12)
> Осталось добавить Changelog

Changelog добавляется.

Осталось только всё проверить на реальном репозитории.
Comment 14 Виталий Перов 2011-08-25 14:55:55 MSK
Проверил. Изменил конфигурацию для builder-robot.

Всё работает!