Bug 1532293
Summary: | File conflict between cmake-rpm-macros and cmake-data | ||
---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Alexander Todorov <atodorov> |
Component: | cmake | Assignee: | Björn 'besser82' Esser <besser82> |
Status: | CLOSED ERRATA | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
Severity: | high | Docs Contact: | |
Priority: | high | ||
Version: | 26 | CC: | bart, besser82, jreznik, jth, kevin, mikejsmitty, nathan95, orion, pix, rdieter, trailtotale, walter.pete |
Target Milestone: | --- | Keywords: | Reopened |
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | cmake-3.10.1-11.fc27 cmake-3.10.1-11.fc26 | Doc Type: | If docs needed, set a value |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2018-01-17 16:20:05 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Alexander Todorov
2018-01-08 15:33:05 UTC
For the linked build.log: ``` [0mThe command '/bin/sh -c dnf install -y rpm-build && dnf clean all' returned a non-zero code: 1 ``` You should simply update cmake *before* installing rpm-build: `dnf -y upgrade cmake && dnf install -y rpm-build && dnf clean all` %changelog * Sat Jan 13 2018 Rex Dieter <rdieter> 3.10.1-9 - -rpm-macros: Conflicts: cmake < 3.10.1-2 (#1532293) Probably not worth issuing an update just for this, but will be included when/if there is one. Feel free to re-open if workaround suggested in comment #1 is not viable or if problems persist (and we can reconsider an update sooner rather than later) (In reply to Rex Dieter from comment #2) > %changelog > * Sat Jan 13 2018 Rex Dieter <rdieter> 3.10.1-9 > - -rpm-macros: Conflicts: cmake < 3.10.1-2 (#1532293) > > Probably not worth issuing an update just for this, but will be included > when/if there is one. > > Feel free to re-open if workaround suggested in comment #1 is not viable or > if problems persist (and we can reconsider an update sooner rather than > later) I've modified your fix to use rich boolean dependencies instead of a simple Conflicts: # when subpkg introduced, works on new distros only %if 0%{?fedora} || 0%{?rhel} >= 8 Requires: (%{name}-data = %{version}-%{release} if %{name}-data < 3.10.1-2) %endif This has the benefit, that cmake-data (and thus cmake by implicit dependency) will be updated automatically when cmake-rpm-macros is installed and they are out-dated , but are *not* pulled in if they are not installed. Rich boolean dependencies are allowed in Fedora now: https://fedoraproject.org/wiki/Packaging:Guidelines#Rich.2FBoolean_dependencies As this bug affects Fedora 26+, I'll submit an updated package after the builds have finished. cmake-3.10.1-11.fc27 has been submitted as an update to Fedora 27. https://bodhi.fedoraproject.org/updates/FEDORA-2018-2e46af3527 cmake-3.10.1-11.fc26 has been submitted as an update to Fedora 26. https://bodhi.fedoraproject.org/updates/FEDORA-2018-2a1b7a74b7 cmake-3.10.1-11.fc27 has been pushed to the Fedora 27 testing repository. If problems still persist, please make note of it in this bug report. See https://fedoraproject.org/wiki/QA:Updates_Testing for instructions on how to install test updates. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2018-2e46af3527 cmake-3.10.1-11.fc26 has been pushed to the Fedora 26 testing repository. If problems still persist, please make note of it in this bug report. See https://fedoraproject.org/wiki/QA:Updates_Testing for instructions on how to install test updates. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2018-2a1b7a74b7 cmake-3.10.1-11.fc27 has been pushed to the Fedora 27 stable repository. If problems still persist, please make note of it in this bug report. > I've modified your fix to use rich boolean dependencies instead of a simple > Conflicts: > > # when subpkg introduced, works on new distros only > %if 0%{?fedora} || 0%{?rhel} >= 8 > Requires: (%{name}-data = %{version}-%{release} if %{name}-data < 3.10.1-2) > %endif > > This has the benefit, that cmake-data (and thus cmake by implicit dependency) > will be updated automatically when cmake-rpm-macros is installed and they are > out-dated , but are *not* pulled in if they are not installed. Conflicts: %{name}-data < 3.10.1-2 would also achieve the exact same thing. At least in my experience, the depsolvers are smart enough to upgrade a package to resolve such a <-versioned Conflicts. Requires: (%{name}-data = %{version}-%{release} if %{name}-data < 3.10.1-2) just means that we require either %{name}-data = %{version}-%{release} to be installed or %{name}-data < 3.10.1-2 to not be installed or both. (The "if" there is just a boolean "if", which means "or not", with an inclusive "or".) Since dnf won't coinstall 2 versions of the same package (if it is not a kernel), this is equivalent to the Conflicts (because the first option implies the second, so the second is equivalent to the entire disjunction, and the Conflicts just states the second option). cmake-3.10.1-11.fc26 has been pushed to the Fedora 26 stable repository. If problems still persist, please make note of it in this bug report. Not sure if this should be a new bug report, but it looks like there's a circular dependency now, at least in yum/mock on CentOS 7: $ mock -r fedora-27-x86_64 --install cmake ... --> Running transaction check ---> Package cmake.x86_64 0:3.10.1-11.fc27 will be installed --> Processing Dependency: cmake-data = 3.10.1-11.fc27 for package: cmake-3.10.1-11.fc27.x86_64 --> Processing Dependency: cmake-filesystem(x86-64) = 3.10.1-11.fc27 for package: cmake-3.10.1-11.fc27.x86_64 --> Processing Dependency: cmake-rpm-macros = 3.10.1-11.fc27 for package: cmake-3.10.1-11.fc27.x86_64 --> Processing Dependency: libjsoncpp.so.19()(64bit) for package: cmake-3.10.1-11.fc27.x86_64 --> Processing Dependency: librhash.so.0()(64bit) for package: cmake-3.10.1-11.fc27.x86_64 --> Processing Dependency: libuv.so.1()(64bit) for package: cmake-3.10.1-11.fc27.x86_64 --> Running transaction check ---> Package cmake-data.noarch 0:3.10.1-11.fc27 will be installed --> Processing Dependency: emacs-filesystem >= 25.3 for package: cmake-data-3.10.1-11.fc27.noarch ---> Package cmake-filesystem.x86_64 0:3.10.1-11.fc27 will be installed ---> Package cmake-rpm-macros.noarch 0:3.10.1-4.fc27 will be updated ---> Package cmake-rpm-macros.noarch 0:3.10.1-11.fc27 will be an update --> Processing Dependency: (cmake = 3.10.1-11.fc27 if cmake < 3.10.1-11.fc27) for package: cmake-rpm-macros-3.10.1-11.fc27.noarch --> Processing Dependency: (cmake-data = 3.10.1-11.fc27 if cmake-data < 3.10.1-11.fc27) for package: cmake-rpm-macros-3.10.1-11.fc27.noarch ---> Package jsoncpp.x86_64 0:1.8.3-1.fc27 will be installed ---> Package libuv.x86_64 1:1.16.0-1.fc27 will be installed ---> Package rhash.x86_64 0:1.3.5-1.fc27 will be installed --> Running transaction check ---> Package cmake-rpm-macros.noarch 0:3.10.1-11.fc27 will be an update --> Processing Dependency: (cmake = 3.10.1-11.fc27 if cmake < 3.10.1-11.fc27) for package: cmake-rpm-macros-3.10.1-11.fc27.noarch --> Processing Dependency: (cmake-data = 3.10.1-11.fc27 if cmake-data < 3.10.1-11.fc27) for package: cmake-rpm-macros-3.10.1-11.fc27.noarch ---> Package emacs-filesystem.noarch 1:25.3-3.fc27 will be installed --> Finished Dependency Resolution Error: Package: cmake-rpm-macros-3.10.1-11.fc27.noarch (updates) Requires: (cmake-data = 3.10.1-11.fc27 if cmake-data < 3.10.1-11.fc27) Error: Package: cmake-rpm-macros-3.10.1-11.fc27.noarch (updates) Requires: (cmake = 3.10.1-11.fc27 if cmake < 3.10.1-11.fc27) You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest ERROR: Command failed: # /usr/bin/yum --installroot /var/lib/mock/fedora-27-x86_64/root/ --releasever 27 install cmake Should also note that the results are the same if cmake-rpm-macros is removed before installing the new version of cmake and sub-packages. I'm running into the following with my Koji which can't populate its buildroots: DEBUG util.py:479: Error: Package: cmake-rpm-macros-3.10.1-11.fc26.noarch (build) DEBUG util.py:479: Requires: (cmake-data = 3.10.1-11.fc26 if cmake-data < 3.10.1-11.fc26) DEBUG util.py:479: Error: Package: cmake-rpm-macros-3.10.1-11.fc26.noarch (build) DEBUG util.py:479: Requires: (cmake = 3.10.1-11.fc26 if cmake < 3.10.1-11.fc26) DEBUG util.py:617: Child return code was: 1 Does this indicate a problem still exists in this package? Or is it that I need to adjust my private Koji somehow to cope with the rich dependencies? Oddly I only have problems with all builds for F26; those for F27 continue to work just fine. It appears to me, that there still is a circular reference between cmake and cmake-rpm-macros in Fedora 27 When upgrading an older system with an earlier cmake it was not possible to install the cmake-rpm-macros because of the old cmake and vice versa it was not possible to install cmake because of the dependency in cmake-rpm-macros of a newer cmake. At the end I used rpm to install cmake-rpm-macros from the downloaded package file using the --force parameter. Then I could get on with my work. |