Bug 36628

Summary: Добавить поддержку %pretrans скриптов
Product: Sisyphus Reporter: Gleb F-Malinovskiy <glebfm>
Component: rpm-buildAssignee: placeholder <placeholder>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: aen, antohami, arseny, asy, bircoph, glebfm, ildar, imz, iv, lav, ldv, placeholder, rider, vseleznv, vt
Version: unstable   
Hardware: all   
OS: Linux   
See Also: https://bugzilla.altlinux.org/show_bug.cgi?id=43806
https://bugzilla.altlinux.org/show_bug.cgi?id=34619
Bug Depends on:    
Bug Blocks: 33095, 34231, 35492, 36676    

Description Gleb F-Malinovskiy 2019-04-19 12:50:52 MSK
В rpm 4.0.4 проблему замены каталогов на симлинки и симлинков на каталоги можно было обойти %pre-скриптом.  rpm 4.x проверяет замену каталогов на симлинки заранее (до %pre) и отказывается начинать транзакцию.
Пользователи rpm 4.x для решения этой задачи используют %pretrans, который не реализован в нашем rpm-build.
Comment 1 Dmitry V. Levin 2019-04-19 12:56:24 MSK
Так-то оно так, но гораздо лучше было бы реализовать корректную замену каталогов на симлинки и симлинков на каталоги непосредственно в rpm 4.x, тогда и грязные хаки в %pre/%pretrans были бы менее востребованы.
Comment 2 Sergey Y. Afonin 2019-04-24 12:05:37 MSK
(In reply to comment #0)

> В rpm 4.0.4 проблему замены каталогов на симлинки и симлинков на каталоги можно
> было обойти %pre-скриптом.  rpm 4.x проверяет замену каталогов на симлинки
> заранее (до %pre) и отказывается начинать транзакцию.

О как. То есть, старое решение из спека в сизифных пакетах можно смело убирать, по-старому уже и не вернётся? В принципе, если изменение было в p8, или ранее, то в Сизифе может и не надо, но в будущем-то тоже явно необходимость у кого-то возникнет...
Comment 3 Anton Farygin 2019-04-24 13:08:02 MSK
не надо убирать, не спешите. 
Дима как раз пишет про то, что возможен алгоритм обновления с помощью старого rpm.
Comment 4 Антон Мидюков 2022-10-05 05:30:24 MSK
Проблема добралась до пакета, который есть почти у каждого:
https://bugzilla.altlinux.org/43806

О резоне добавления %pretrans написал здесь:
https://bugzilla.altlinux.org/show_bug.cgi?id=34619#c30
Comment 5 Dmitry V. Levin 2022-10-05 14:57:35 MSK
(In reply to Dmitry V. Levin from comment #1)
> Так-то оно так, но гораздо лучше было бы реализовать корректную замену
> каталогов на симлинки и симлинков на каталоги непосредственно в rpm 4.x,
> тогда и грязные хаки в %pre/%pretrans были бы менее востребованы.

Так-то оно так, но, к сожалению, не всё, что лучше, реализуемо за конечное время.
Comment 6 Vitaly Chikunov 2022-10-07 22:01:46 MSK
(In reply to Dmitry V. Levin from comment #1)
> корректную замену каталогов на симлинки и симлинков на каталоги
> непосредственно в rpm 4.x

1. В апстриме это не реализовано?
2. Это не решаемая задача или простая задача, которую всем лень сделать?
Comment 7 Dmitry V. Levin 2022-10-07 22:51:35 MSK
(In reply to Vitaly Chikunov from comment #6)
> (In reply to Dmitry V. Levin from comment #1)
> > корректную замену каталогов на симлинки и симлинков на каталоги
> > непосредственно в rpm 4.x
> 
> 1. В апстриме это не реализовано?

Нет, в апстриме это не реализовано, см. handleRemovalConflict().

> 2. Это не решаемая задача или простая задача, которую всем лень сделать?

Видимо, это очень сложная задача.
Comment 8 Dmitry V. Levin 2022-10-07 23:15:42 MSK
(In reply to Dmitry V. Levin from comment #7)
> (In reply to Vitaly Chikunov from comment #6)
> > 2. Это не решаемая задача или простая задача, которую всем лень сделать?
> 
> Видимо, это очень сложная задача.

Даже постановка задачи является непростой задачей.
Comment 9 Repository Robot 2022-11-13 18:58:40 MSK
rpm-build-4.0.4.185-alt1 -> sisyphus:

 Tue Oct 11 2022 Vitaly Chikunov <vt@altlinux> 4.0.4.185-alt1
 - Backport packaging '%pretrans' Lua scriptlets (ALT#36628).
Comment 10 Anton Farygin 2022-11-13 19:57:56 MSK
Виталий, спасибо! Уже можно использовать ? Есть примеры ?
Comment 11 Vitaly Chikunov 2022-11-13 20:04:35 MSK
(In reply to Anton Farygin from comment #10)
> Виталий, спасибо! Уже можно использовать ? Есть примеры ?

Можно попробовать. Примеры тут

https://docs.fedoraproject.org/en-US/packaging-guidelines/Directory_Replacement/