On Thu, 26 Jul 2012, Olivier Thauvin wrote:

I do think the way we enforce the need of migrate to /usr fs is just an
abuse of rpm.

Agreed, I think it even changes the rpmlib ABI/API. rpmlib() deps are used for features supplied by rpmlib itself, while rpm does not maintain /bin /lib etc. Technically, all rpmlib() provides are implemented in rpmdsRpmlib() but filesystem checks cannot be done there because they depend on the rootdir used, which is not supplied to this function.

By using the a rpmlib() dependency we create in fact this dependency
tree:
filesystem => rpm with X-CheckUnifiedSystemdir patch => check fs
whereas we want:
filesystem => check fs

THere another to perform the check w/o needing patch in rpm (so w/o
needing a specific rpm first): using pre script.

If the %pre script failed rpm will refuse to install the rpm, so
something like that:

Does that cancel the whole transaction?

Another option is to use a dummy package, e.g. usrmovecheck-1-1.mga3.noarch.rpm whis is *not* put in the repository. Instead, the dracut conversion script installs it from /usr/share/... after a succesful filesystem conversion. The installer must also install this dummy package before regular package installation(...). The filesystem pkg can then depend on (for example) "usr_move_required-see_mga3_release_notes" which usrmovecheck provides. The latter pkg has a pre check on /bin /lib etc. not being real directories, but maybe it should not complain if they're missing (they are formally provided by the filesystem pkg which depends on the check pkg, creating a circular dep).


    Christiaan

Reply via email to