Bug 1989062

Summary: package xorgxrdp-0.2.16-2.el8.x86_64 requires xorg-x11-server-Xorg(x86-64) = 1.20.10, but none of the providers can be installed
Product: [Fedora] Fedora EPEL Reporter: Enrico Tagliavini <enrico.tagliavini>
Component: xorgxrdpAssignee: Pavel Roskin <plroskin>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: epel8CC: bojan, carl, plroskin, tdawson
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
Whiteboard:
Fixed In Version: xorgxrdp-0.2.16-3.el8 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-08-31 22:19: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 Enrico Tagliavini 2021-08-02 10:16:41 UTC
Description of problem:

xorgxrdp cannot be installed / updated in CentOS 8 Stream

# dnf update
Last metadata expiration check: 0:05:15 ago on Mon 02 Aug 2021 12:09:12 CEST.
Error: 
 Problem: package xorgxrdp-0.2.16-2.el8.x86_64 requires xorg-x11-server-Xorg(x86-64) = 1.20.10, but none of the providers can be installed
  - cannot install both xorg-x11-server-Xorg-1.20.11-2.el8.x86_64 and xorg-x11-server-Xorg-1.20.10-1.el8.x86_64
  - cannot install the best update candidate for package xorgxrdp-0.2.16-2.el8.x86_64
  - cannot install the best update candidate for package xorg-x11-server-Xorg-1.20.10-1.el8.x86_64
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)


Version-Release number of selected component (if applicable):
CentOS 8 Stream, xorgxrdp-0.2.16-2.el8


How reproducible:
always


Steps to Reproduce:
1. Install CentOS 8 Stream
2. dnf install xrdp xorgxrdp

Actual results:
Fails to install due to broken deps


Expected results:
Should install

Comment 1 Bojan Smojver 2021-08-03 03:41:18 UTC
There is unfortunately no xorg-x11-server-Xorg-1.20.11-2.el8 in Fedora's koji yet. I just tried a scratch build and that picked up the .10. It is also not possible to do build overrides with EPEL builds if packages belong to core of RHEL/CentOS. We'll have to wait until this hits koji and they rebuild.

Comment 2 Enrico Tagliavini 2021-08-09 08:11:15 UTC
Sounds like a major problem with EPEL and CentOS 8 stream then. This is quite a significant source of problems for packages compatibility

Comment 3 Troy Dawson 2021-08-20 14:49:15 UTC
Sounds like a problem that's already been solved. :)
https://fedoraproject.org/wiki/EPEL_Next

xorgxrdp needs to be branched and rebuilt on epel8-next.
bojan if you need help with that please let me know.  But the instructions are basically

fedpkg request-branch epel8-next
# wait for the branch to be created
fedpkg switch-branch epel8-next
git merge epel8
fedpkg push
# (optional) bump your release, make edits or whatever you want
fedpkg build
fedpkg update
# follow the usual update steps

Comment 4 Bojan Smojver 2021-08-20 14:58:35 UTC
Yeah, I can try that.

Comment 5 Enrico Tagliavini 2021-08-20 15:09:04 UTC
Hello Bojan,

I asked on the EPEL mailing list and Troy was kind enough to answer. I didn't know about epel-next. Would you consider building xorgxrdp for epel-next please?

Thank you.
Kind regards.

Enrico

Comment 6 Enrico Tagliavini 2021-08-20 15:10:04 UTC
(In reply to Bojan Smojver from comment #4)
> Yeah, I can try that.

Thank you so much! I'll give it a try when ready.

Comment 7 Bojan Smojver 2021-08-20 15:19:08 UTC
Yes, tomorrow, my time.

Comment 8 Carl George 🤠 2021-08-20 16:08:37 UTC
I'm concerned about why xorgxrdp has this strict version requirement.

    [root@rhel8-container:~]# repoquery --quiet --requires xorgxrdp | grep server
    xorg-x11-server-Xorg(x86-64) = 1.20.10

This was implemented here [0], without an explanation as to why it's needed.  This means that any time xorg-x11-server-Xorg gets a new version, xorgxrdp has to be rebuilt.  That is the case here, where rhel8 has 1.20.10, but c8s has updated to 1.20.11.  A rebuild in epel8-next will solve this, but wouldn't it make more sense to relax the requirement instead?  xorg-x11-server-Xorg provides several abi virtual provides, defined in the pkgconfig file, that seem like a better fit for this.

    [root@c8s-container:~]# grep abi /usr/lib64/pkgconfig/xorg-server.pc
    abi_ansic=0.4
    abi_videodrv=24.1
    abi_xinput=24.1
    abi_extension=10.0

    [root@c8s-container:~]# for abi in ansic extension videodrv xinput; do pkgconf --variable abi_$abi xorg-server; done
    0.4
    10.0
    24.1
    24.1

Those abis match across 1.20.10 and 1.20.11.

    [root@rhel8-container:~]# repoquery --quiet --provides xorg-x11-server-Xorg-1.20.10-1.el8 | grep abi
    xserver-abi(ansic-0) = 4
    xserver-abi(extension-10) = 0
    xserver-abi(videodrv-24) = 1
    xserver-abi(xinput-24) = 1

    [root@c8s-container:~]# repoquery --quiet --provides xorg-x11-server-Xorg-1.20.11-2.el8 | grep abi 
    xserver-abi(ansic-0) = 4
    xserver-abi(extension-10) = 0
    xserver-abi(videodrv-24) = 1
    xserver-abi(xinput-24) = 1

If xorgxrdp can be adjusted to require these virtual provides instead of the exact xorg-x11-server-Xorg version, the epel8 package would be compatible with both rhel8 and c8s without needing to rebuild it in epel8-next.  epel8-next would still be an option if c8s ever rebased to a newer version that changes the abi.


[0] https://src.fedoraproject.org/rpms/xorgxrdp/c/972cc469c86c7669c770eb2919665e96eaa7b1f3

Comment 10 Bojan Smojver 2021-08-20 21:44:17 UTC
(In reply to Carl George 🤠 from comment #8)
> I'm concerned about why xorgxrdp has this strict version requirement.

Xorg binary enforces this at runtime, so we just follow that in packaging to avoid disappointment.

Comment 11 Fedora Update System 2021-08-20 22:07:57 UTC
FEDORA-EPEL-NEXT-2021-2f995dcce7 has been submitted as an update to Fedora EPEL 8 Next. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-NEXT-2021-2f995dcce7

Comment 12 Fedora Update System 2021-08-21 01:55:25 UTC
FEDORA-EPEL-NEXT-2021-2f995dcce7 has been pushed to the Fedora EPEL 8 Next testing repository.

You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-NEXT-2021-2f995dcce7

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 13 Carl George 🤠 2021-08-21 03:03:25 UTC
After some investigation, I can see that other xorg modules don't do this.  xorg-x11-server-devel has a script named xserver-sdk-abi-requires that most other xorg module packages use generate the abi requires.  Here is an example from xorg-x11-drv-fbdev [0].

    Requires: Xorg %(xserver-sdk-abi-requires ansic)

Of the abis listed in the pc file, only ABI_CLASS_VIDEODRV and ABI_CLASS_XINPUT are listed in the xorgxrdp code base, so I think you'll just need lines for those.  I've sent a pull request to implement this on rawhide, which can be cherry-picked back to the epel8 branch.


[0] https://src.fedoraproject.org/rpms/xorg-x11-drv-fbdev/blob/6acaeae11f8ae74c02520417a9bf19f485f69ae6/f/xorg-x11-drv-fbdev.spec#_24
[1] https://src.fedoraproject.org/rpms/xorgxrdp/pull-request/1

Comment 14 Bojan Smojver 2021-08-21 03:10:50 UTC
OK, we can try that. Ideally, this package should be rebuilt when underlying dependencies change, automatically. There is an old bug along those lines.

Comment 15 Enrico Tagliavini 2021-08-23 08:08:43 UTC
I gave a quick try to the package in epel-next-testing and the deps are now resolved! The package / system can be installed and upgraded without problems now.

Thank you very much to everybody.

Comment 16 Fedora Update System 2021-08-23 22:55:39 UTC
FEDORA-EPEL-2021-b9a644683c has been submitted as an update to Fedora EPEL 8. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2021-b9a644683c

Comment 17 Fedora Update System 2021-08-24 01:15:54 UTC
FEDORA-EPEL-2021-b9a644683c has been pushed to the Fedora EPEL 8 testing repository.

You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2021-b9a644683c

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 18 Fedora Update System 2021-08-31 22:19:05 UTC
FEDORA-EPEL-2021-b9a644683c has been pushed to the Fedora EPEL 8 stable repository.
If problem still persists, please make note of it in this bug report.