Bug 2244212

Summary: Review Request: rubygem-faraday2 - HTTP/REST API client library
Product: [Fedora] Fedora Reporter: Benson Muite <benson_muite>
Component: Package ReviewAssignee: Nobody's working on this, feel free to take it <nobody>
Status: CLOSED WONTFIX QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: unspecified    
Version: rawhideCC: jprokop, package-review, vondruch
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2023-10-16 16:24:00 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 2244194, 2244197    
Bug Blocks: 2244463    

Comment 1 Jarek Prokop 2023-10-16 10:59:54 UTC
Unofficial review.

* I don't think `Conflicts: rubygem-faraday` makes sense with a regular Rubygem, as all the directories are namespaced with a version, therefore there should be no file conflicts, or other kind of conflicts, the packages rubygem-faraday and rubygem-faraday2 should be parallel installable without a problem.

There also isn't provides(rubygem-faraday) = %{version}
so even less chances for a conflict. (And not sure if the Fedora Packaging guide has any rules about this)

* Test suite isn't running *at all*, that's not great, nor desired state.

* There are also missing dependencies (maybe only rubygem-faraday-net_http?), that should definitely reach fedora before this package does, IOW a review request should exist for it and this ticket should depend on it.
If you'd try to require any part rubygem-faraday2, it will fail without the dependency.

Comment 2 Vít Ondruch 2023-10-16 11:19:10 UTC
Just as I said in the Ruby-SIG ML [1] I'd much rather see rubygem-faraday1 (as long as we need it) and keep the rubygem-faraday to follow the latest version.

(In reply to Jarek Prokop from comment #1)
> There also isn't provides(rubygem-faraday) = %{version}

There is autogenerated one:

~~~
$ rpm -qpP https://kojipkgs.fedoraproject.org//work/tasks/4444/107494444/rubygem-faraday2-2.7.11-1.fc40.noarch.rpm
rubygem(faraday) = 2.7.11
rubygem-faraday2 = 2.7.11-1.fc40
~~~

However I concur that there is no reason for conflicts.

> If you'd try to require any part rubygem-faraday2, it will fail without the dependency.

I don't think the package is installable due to missing dependency:

~~~
$ sudo dnf install https://kojipkgs.fedoraproject.org//work/tasks/4444/107494444/rubygem-faraday2-2.7.11-1.fc40.noarch.rpm
Repositories loaded.
 https://kojipkgs.fedoraproject.org//work/tasks/4444/107494444/rubygem-faraday2-2.7.11-1.fc40.noarch.rpm                                                                                              100% |  65.6 KiB/s |  37.4 KiB |  00m01sFailed to resolve the transaction:
Problem: conflicting requests
  - nothing provides rubygem(base64) needed by rubygem-faraday2-2.7.11-1.fc40.noarch
  - nothing provides (rubygem(faraday-net_http) >= 2.0 with rubygem(faraday-net_http) < 3.1) needed by rubygem-faraday2-2.7.11-1.fc40.noarch
  - nothing provides rubygem(ruby2_keywords) >= 0.0.4 needed by rubygem-faraday2-2.7.11-1.fc40.noarch
~~~


[1]: https://lists.fedoraproject.org/archives/list/ruby-sig@lists.fedoraproject.org/message/4DVEDKWQVACYNQN2JMWUNLWASHRB4M7N/(In reply to Jarek Prokop from comment #1)

Comment 3 Benson Muite 2023-10-16 14:30:47 UTC
Thanks for the suggestions. Copr with all needed dependencies:
https://copr.fedorainfracloud.org/coprs/fed500/rubygem-licensee/packages/

faraday-net_http requires faraday to build, but faraday only needs faraday-net_http to run.

Review request for faraday-net_http
https://bugzilla.redhat.com/show_bug.cgi?id=2244463

Comment 4 Jarek Prokop 2023-10-16 14:53:55 UTC
> I don't think the package is installable due to missing dependency:

Yeah DNF will scream much sooner than there will even be chance to try it as an user.

BTW base64 and ruby2_keywords can be removed from dependencies via the %gemspec_remove_dep macro and review requests dropped (for the sake of bringing and maintaining less packages).

These 2 packages have gemspecs provided by the ruby-default-gems and files are provided by ruby-libs.

Those libraries are probably low to none maintenance, but it is something that can be avoided completely.

> faraday-net_http requires faraday to build, but faraday only needs faraday-net_http to run.

Bootstrapping is the way to go usually, there are a few examples around the rubygem-* packages, cucumber is the first one that comes to mind: https://src.fedoraproject.org/rpms/rubygem-cucumber/blob/rawhide/f/rubygem-cucumber.spec#_3

It even has similar circular dependency problem. Here with aruba: https://src.fedoraproject.org/rpms/rubygem-cucumber/blob/rawhide/f/rubygem-cucumber.spec#_21

Aruba requires cucumber to run but cucumber requires aruba only for build, sounds like a similar situation for inspiration.

Comment 5 Vít Ondruch 2023-10-16 15:14:36 UTC
(In reply to Jarek Prokop from comment #4)
> BTW base64 and ruby2_keywords can be removed from dependencies via the
> %gemspec_remove_dep macro and review requests dropped (for the sake of
> bringing and maintaining less packages).

It depends. It might or might not be true. Less intrusive workaround is:

~~~
%global __requires_exclude ruby2_keywords
~~~

Used e.g. here:

https://src.fedoraproject.org/rpms/rubygem-mocha/blob/9138921e0c2e7cea4a5b24e6af591f4c1debb513/f/rubygem-mocha.spec#_21

Comment 6 Benson Muite 2023-10-16 16:24:00 UTC
Closing this. Rename request for current rubygem-faraday
https://bugzilla.redhat.com/show_bug.cgi?id=2244510
to allow it to be upgraded to the latest version.