Description of problem: When running a dnf update today, it wanted to update lv2-devel, but the transaction test failed because there were conflicts of the later lv2-devel package with the earlier version of lv2-devel already installed. I give the workaround that allows the newer package below, in additional information. I will be closing this ticket immediately, as it is just a heads up to the package maintainer, and a note of a workaround for anyone else who hits this issue. Version-Release number of selected component (if applicable): Name : lv2-devel Version : 1.18.4 Release : 2.fc37 Architecture: x86_64 Install Date: Wed 27 Jul 2022 12:16:36 AM MST Group : Unspecified Size : 507561 License : ISC Signature : RSA/SHA256, Sun 24 Jul 2022 09:29:35 PM MST, Key ID f55ad3fb5323552a Source RPM : lv2-1.18.4-2.fc37.src.rpm Build Date : Thu 21 Jul 2022 02:08:53 PM MST Build Host : buildvm-x86-16.iad2.fedoraproject.org Packager : Fedora Project How reproducible: Every time Steps to Reproduce: 1. Have lv2-devel-1.18.4-2.fc37.x86_64 installed 2. Run an update to lv2-devel-1.18.8-1.fc37.x86_64 3. Actual results: Error: Transaction test error: file /usr/include/lv2/atom from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/buf-size from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/core from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/data-access from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/dynmanifest from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/event from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/instance-access from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/log from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/midi from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/morph from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/options from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/parameters from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/patch from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/port-groups from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/port-props from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/presets from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/resize-port from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/state from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/time from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/ui from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/units from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/uri-map from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/urid from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 file /usr/include/lv2/worker from install of lv2-devel-1.18.8-1.fc37.x86_64 conflicts with file from package lv2-devel-1.18.4-2.fc37.x86_64 Expected results: lv2-devel updates Additional info: This is the workaround for anyone who hits this problem. I noticed that is was trying to install lv2-devel instead of update it. I removed lv2-devel, taking sratom-devel with it. Then I installed lv2-devel and sratom-devel, and they pulled in the latest lv2 as and update to the currently installed lv2.
Will check. Thanks for reporting.
The problem is a longstanding bug with rpm that can not convert from links/folders to files and viceversa during an upgrade... https://bugzilla.redhat.com/show_bug.cgi?id=975909#c13
I'm definitely in the camp that thinks that this must be solved in rpm and the "solution" of forcing packagers to create very ugly workaround in each package and tripping users and packagers up all the time, over and over, is very very pointless. But things are as they are, and for now this must be fixed in the package. Please release the fix, as this bug will break upgrades for people. And since the issue only happens *after* all packages have been downloaded, this is very unpleasant.
So, following https://docs.fedoraproject.org/en-US/packaging-guidelines/Directory_Replacement/ , actually at least for me the following works: https://src.fedoraproject.org/rpms/lv2/pull-request/2
I would appreciate it if someone can review the above pull request.
The package maintainer has reverted back the package to the old deprecated header structure, so not sure this applies anymore: https://src.fedoraproject.org/rpms/lv2/c/c593d97f5cce9e8c940b0c956c5277fc5afdc18e?branch=rawhide
I'm doing some testo, I will merge if it's ok. The patch applies because it's after the revert
Sorry, I meant "apply" as in relevant if the headers are back in the same layout as they were.