Conflict in openSUSE-2023-116-1: Recommended update for llvm15

Hello, everyone!

I faced a problem on leap-15.4 with official repos, that the recent recommended update openSUSE-2023-116-1 conflicts with qt5-creator:

the installed qt5-creator-7.0.2-bp154.2.3.1.x86_64 requires 'libclang13 = 13.0.1', but this requirement cannot be provided
    [ ] break qt5-creator-7.0.2-bp154.2.3.1.x86_64 by ignoring some of its dependencies
    [ ] deinstallation of qt5-creator-7.0.2-bp154.2.3.1.x86_64
    [ ] do not install patch:openSUSE-2023-116-1.noarch

The update is really making a strange change - libclang13 goes from 13.0.1 to 15.0.7 (sic!). Probably it’s ok, meaning clang13 ABI implemented in clang15. But then, the qt5-creator dependency is too strict, as it requires libclang13 of 13.0.1 version namely…

Does anybody faced the same issue? Where can we fill the bugreport for qt-creator?

The problem would be absent by using zypper instead:

# zypper -v --no-refresh in qt5-creator
...
Selecting 'qt5-creator-7.0.2-bp154.2.3.1.x86_64' from repository 'UpdateBP' for installation.
Resolving package dependencies...
Force resolution: No

The following 7 NEW packages are going to be installed:
  libKF5SyntaxHighlighting5  5.90.0-bp154.1.138
  libQt5Quick3D5             5.15.2+kde19-150400.1.4
  libQt5Quick3DAssetImport5  5.15.2+kde19-150400.1.4
  libclang-cpp13             13.0.1-bp154.2.18
  libclang13                 13.0.1-bp154.2.18
  libqt5-qtquicktimeline     5.15.2+kde3-bp154.1.43
  qt5-creator                7.0.2-bp154.2.3.1

7 new packages to install.
Overall download size: 49.3 MiB. Already cached: 0 B. After the operation, additional 210.8 MiB will be used.
Continue? [y/n/v/...? shows all options] (y): 

Shared library SO version is not directly related to package (or project) version.

It seems to be intentional

# clangcodemodel hardcodes clang include paths: QTCREATORBUG-21972
%requires_eq    libclang%{_llvm_sonum}

You file bug report on openSUSE bugzilla, select openSUSE Distribution, Version: Leap 15.4 and Component: Maintenance.

Instead of what? Are you sure you understand the question?

The patch keeps the package name libclang13 and still provides libclang.so.13. SO-number is not changed. So if I break qt-creator requirement it continues to work flawlessly.

Thanks! Done it here: 1211973 – openSUSE-2023-116-1 (recommended update for llvm15) conflicts with qt{5,6}-creator

Unfortunately not. I you apply the patch in consideration, then

# zypper -v in qt5-creator
Verbosity: 2
Non-option program arguments: 'qt5-creator'.
Initializing Target
Loading repository data...
Reading installed packages...
Selecting 'qt5-creator-7.0.2-bp154.2.3.1.x86_64' from repository 'Update repository of openSUSE
Resolving package dependencies...
Force resolution: No

Problem: the to be installed qt5-creator-7.0.2-bp154.2.3.1.x86_64 requires 'libclang13 = 13.0.1
  not installable providers: libclang13-13.0.1-bp154.2.18.x86_64[repo-oss-mirror]
 Solution 1: downgrade of libclang13-15.0.7-bp154.2.1.x86_64 to libclang13-13.0.1-bp154.2.18.x8
 Solution 2: do not install qt5-creator-7.0.2-bp154.2.3.1.x86_64
 Solution 3: break qt5-creator-7.0.2-bp154.2.3.1.x86_64 by ignoring some of its dependencies

By the way, is there a community repo, where qt-creator of more recent version can be found? The software.opensuse.org/ doesn’t find any, even the standard one.

Leap 15.5 has version 9.0.2. Leap 15.5 is released now, so you may consider upgrade.

Given OP references to patches, I supposed he was using something other than zypper up. Zypper -v up is how I nearly always update Leap, and since I don’t remember ever seeing the string “patch” as a result of local zypper command output, or seeing zypper “recommend” particular updates to any of my Leaps or TWs, I surmised he was using something other than zypper up to do at least some his updating.

Not entirely, since installing here with -D proposed to encounter no conflicts. I supposed he had either repo conflict(s), or was using something other than zypper up, causing his libclang13 trouble.

BTW, 15.5 will be officially released on this coming Wednesday 7 June. But because its repos have long been on the mirrors, upgrading to it has been possible for quite some time. I currently have 20 of them installed on 20 PCs, none on VMs.

It’s actually just the standard yast2 online_update and also package-update-indicator that checks for updates periodically. These are preinstalled and enabled by default.

Generally, I don’t use zypper for updates, but it appears that it also can search for “important patches” - zypper patch-check. And those patches do not shown via regular zypper up

The reason for my first post in this thread is that over and over again in mailing lists and online help forums I have seen reports of conflicts reported trying to update other than with zypper up that have been solved by simply using zypper up instead of whatever other updater. Zypper up doesn’t apply delta patches, at least, not here. My systems don’t have deltarpm installed, keeping patches out of solver equations. When I want to know what updates are available, I use zypper lu. Otherwise, I simply zypper up, except that I use an “alias” to make running it more to my liking, including simpler to start:

# cat /usr/local/bin/zup
#!/bin/sh
echo 'time zypper -v up'
time zypper -v up

No conflict, no bug report:

leap154:~ # zypper -n update 
Loading repository data...
Reading installed packages...
Nothing to do.
leap154:~ # zypper -n install -D qt-creator
Loading repository data...
Reading installed packages...
'qt-creator' not found in package names. Trying capabilities.
Resolving package dependencies...

The following 5 recommended packages were automatically selected:
  libqt5-qtbase-common-devel libqt5-qtbase-devel libqt5-qtdeclarative-devel libqt5-qtdoc-qch make-lang

The following 76 NEW packages are going to be installed:
  Mesa-KHR-devel Mesa-libEGL-devel Mesa-libGL-devel cmake cmake-full cmake-man gcc gcc-c++ gcc7 gcc7-c++ glibc-devel kbproto-devel libQt5Concurrent-devel libQt5Core-devel libQt5DBus-devel libQt5Designer5 libQt5DesignerComponents5 libQt5Gui-devel libQt5Help5
  libQt5Network-devel libQt5OpenGL-devel libQt5PlatformHeaders-devel libQt5PrintSupport-devel libQt5Quick3D5 libQt5Quick3DAssetImport5 libQt5SerialPort5 libQt5Sql-devel libQt5Test-devel libQt5Widgets-devel libQt5Xml-devel libX11-devel libXau-devel libXext-devel
  libXrandr-devel libXrender-devel libasan4 libatomic1 libcilkrts5 libclang13 libdrm-devel libglvnd-devel libitm1 libjsoncpp19 liblsan0 libmpx2 libmpxwrappers2 libpciaccess-devel libqt5-qtbase-common-devel libqt5-qtbase-devel libqt5-qtdeclarative-devel
  libqt5-qtdeclarative-tools libqt5-qtdoc-qch libqt5-qtquicktimeline librhash0 libstdc++6-devel-gcc7 libtsan0 libubsan0 libxcb-devel libxcb-screensaver0 libxcb-xf86dri0 libxcb-xtest0 libxcb-xvmc0 libxcrypt-devel linux-glibc-devel make make-lang pthread-stubs-devel
  qt5-creator randrproto-devel renderproto-devel site-config vulkan-devel vulkan-headers wayland-devel xextproto-devel xproto-devel

76 new packages to install.
Overall download size: 197.7 MiB. Already cached: 0 B. After the operation, additional 510.0 MiB will be used.
Continue? [y/n/v/...? shows all options] (y): y

Checking for file conflicts: (1 skipped) ...............................................................................................................................................................................................................................[done]
Warning: 76 packages had to be excluded from file conflicts check because they are not yet downloaded.

    Note: Checking for file conflicts requires not installed packages to be downloaded in advance in
    order to access their file lists. See option '--download-in-advance / --dry-run --download-only'
    in the zypper manual page for details.

leap154:~ # 

It seems that zypper update by default doesn’t care about recommended and security patches distributed by the SUSE team:

# zypper list-updates
Loading repository data...
Reading installed packages...
No updates found.

But these patches are found by YaST2 online update GUI tool and strongly encouraged to be applied by auto update indicator that turned red. Actually, zypper may also search for those:

# zypper list-updates -t patch    [or the same # zypper list-patches]
Loading repository data...
Reading installed packages...

Repository                              | Name              | Category    | Severity | Interactive | Status | Since | Summary
----------------------------------------+-------------------+-------------+----------+-------------+--------+-------+------------------------------
Update repository of openSUSE Backports | openSUSE-2023-116 | recommended | moderate | ---         | needed | -     | Recommended update for llvm15

Found 1 applicable patch:
1 patch needed (0 security patches)

And the attempt to apply this patch leads to the conflict I’ve faced with:

# zypper patch
...
Problem: the installed qt5-creator-7.0.2-bp154.2.3.1.x86_64 requires 'libclang13 = 13.0.1', but this requirement cannot be provided
 Solution 1: deinstallation of qt5-creator-7.0.2-bp154.2.3.1.x86_64
 Solution 2: do not install patch:openSUSE-2023-116-1.noarch
 Solution 3: break qt5-creator-7.0.2-bp154.2.3.1.x86_64 by ignoring some of its dependencies

Moreover, this conflict may be triggered without touching any patches:

# zypper -v update libclang13
...
Selecting 'libclang13-15.0.7-bp154.2.1.x86_64' from repository 'Update repository of openSUSE Backports' for installation.
Resolving package dependencies...
Force resolution: No

Problem: the installed qt5-creator-7.0.2-bp154.2.3.1.x86_64 requires 'libclang13 = 13.0.1', but this requirement cannot be provided
 Solution 1: deinstallation of qt5-creator-7.0.2-bp154.2.3.1.x86_64
 Solution 2: do not install libclang13-15.0.7-bp154.2.1.x86_64
 Solution 3: break qt5-creator-7.0.2-bp154.2.3.1.x86_64 by ignoring some of its dependencies

What is strange here, is that simple zypper update doesn’t find any updates for this package, but direct specifying the name does.

That is a bit a strange name of a repo. It could be you named an otherwise sound repo with this name. But it is probably better to see the real definition (URL), thus please post

zypper lr -d

I am not sure you have this correct, but zypper patch is equivalent to YaST > Software > Online Update.

And zypper up includes what a zypper patch would do in the same situation and also it will update packages to newer versions when these are offered on the non-standard repos (like Packman). Without any change of vendor of course.

No, it does not. Two commands use different logic and rules to handle dependency resolution. The end result is the same as long as there are no conflicts but it does not mean they are identical.

Updates are not installable without breaking installed packages (libclang13-15 cannot be installed due to qt5-creator and the rest of ``llvm15cannot be installed because it depends onlibcalng13-15`). You should have seen “the following packages will not be installed” or similar.

Zypper offers several strategies and you can force it to offer removal of installed package(s) to satisfy dependency conflicts instead of minimizing changes and keeping installed packages.

When you use zypper patch you explicitly request installing package versions contained in this patch, so zypper is using more aggressive strategy for conflicts resolution and offers removal of installed packages.

1 Like

I honestly envy your blissful childish self-assurance.

Yes, closer look do reveals libclang13 listed as not going to be installed:

# zypper up
...
The following 82 package updates will NOT be installed:
  catfish catfish-lang exo-data exo-lang exo-tools [...] libclang13 [...]

There are a lot of XFCE related packages as I use community repo for the recent XFCE-4.18. I just missed that libclang13 among them. But what confused me also, is that zypper list-updates don’t show any updated packages at all. It’s clear for me now, that this is because a different logic. I should read the mans thoroughly. :slight_smile:

Thank you very much for the detailed clarification!

It’s not the repo name actually, but the patch name. And it is from the pretty standard repo:

# zypper lr -d
...
 # | Alias                 | Name                                    | Enabled | GPG Check | Refresh | Priority | Type   | URI                                                                     | Service
---+-----------------------+-----------------------------------------+---------+-----------+---------+----------+--------+-------------------------------------------------------------------------+--------
 8 | repo-backports-update | Update repository of openSUSE Backports | Yes     | (r ) Yes  | Yes     |   99     | rpm-md | http://download.opensuse.org/update/leap/15.4/backports/                | 

They are equivalent for me also, and both show that patch ‘patch:openSUSE-2023-116-1’ conflicting with qt5-creator.

It seems that we need explicitly specify an option zypper up -t patch, otherwise it will not search for patches and will not force updates they bring.

Just for your information. Once a week (in the maintenance window), I do a YaST > Software > Online Update, then a YaST > Software > Software Management; the Repository view (from the View menu), choose Packman and then at right: Right-Click > Update when a newer version is available.

I have only Packman as extra repo.

This is what’s behind my response in post #2 that was objected to. If there’s a way to success, zypper offers it, typically among a selection of choices. For me, with no enabled community repos, it found no conflicts, so only presented one choice.

You still do not understand the question nor the actual problem.