Bug 2254933

Summary: Review Request: perl-Future-HTTP - Future::HTTP Perl module
Product: [Fedora] Fedora Reporter: Chris Adams <linux>
Component: Package ReviewAssignee: Petr Pisar <ppisar>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: package-review, ppisar
Target Milestone: ---Flags: ppisar: fedora-review+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2024-04-15 01:12:12 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: 2254914, 2254915, 2254923, 2254927, 2254929, 2254931    
Bug Blocks: 2254934    

Description Chris Adams 2023-12-17 23:05:42 UTC
Spec URL: https://cmadams.fedorapeople.org/perl-Future-HTTP/perl-Future-HTTP.spec
SRPM URL: https://cmadams.fedorapeople.org/perl-Future-HTTP/perl-Future-HTTP-0.16-1.fc39.src.rpm
Description:
Provide the most appropriate HTTP client with a Future API

Fedora Account System Username: cmadams

Comment 1 Chris Adams 2023-12-17 23:06:57 UTC
Note: depends on
perl-AnyEvent-Future (review BZ 2254914)
perl-Filter-signatures (review BZ 2254915)
perl-Future-Mojo (review BZ 2254927)
perl-HTTP-Tiny-Paranoid (review BZ 2254929)
perl-Net-Async-HTTP (review BZ 2254931)
perl-Test-HTTP-LocalServer (review BZ 2254923)

Comment 5 Petr Pisar 2024-04-02 14:12:19 UTC
URL and Source0 addresses are usable. Ok.
TODO: Remove a trailing slash from the URL value.

Source0 archive (SHA512: f9cb5d039d1b56f1939f4562b3e3a544412458a9b39d4c596f63f085399d03cd10e82fef1dc3ab3d77b71a33836e10d4babcc9f6ab94980e58a36c48c476a6dc) is original. Ok.

FIX: The current summary is not well descriptive. Use e.g. "HTTP client with a Future API" (see lib/Future/HTTP.pm POD).
FIX: Description text is not a sentence, it's missing a full stop.
TODO: Description text is too brief. I recommend copying a paragraph from Synopsis in lib/Future/HTTP.pm POD.

License verified from: Makefile.PL, README.mkdn, lib/Future/HTTP.pm, lib/Future/HTTP/Mojo.pm, lib/Future/HTTP/Tiny/Paranoid.pm, lib/Future/HTTP/NetAsync.pm, lib/Future/HTTP/Tiny.pm, lib/Future/HTTP/AnyEvent.pm, README. Ok.
Note: LICENSE file is an Artistic-2.0 copy.

No XS code, noarch BuildArch is Ok.

TODO: Declare _with_network_tests build condition using %bcond or %bcond_without macro.

perl(AnyEvent) is in optional dependency for the tests. Ok.

FIX: Do not depend on 'perl(CGI)'. It's not used anywhere.
FIX: Do not depend on 'perl(HTTP::Headers) >= 6.07'. It's not used. Instead apply the version constraint to 'perl(HTTP::Request)'. Upstream mistaken the two modules.
FIX: Do not depend on 'perl(HTTP::Request::AsCGI)' It.s not used.
TODO: Constrain 'perl(HTTP::Tiny::Paranoid)' dependency with '>= 0.07' (lib/Future/HTTP/Tiny/Paranoid.pm:4).
FIX: Do not depend on 'perl(IO::Async)'. It's not used.
FIX: Do not depend on 'perl(Mojo::IOLoop)'. It's not used.

All tests pass. Ok.

$ rpmlint perl-Future-HTTP.spec ../SRPMS/perl-Future-HTTP-0.16-4.fc41.src.rpm ../RPMS/noarch/perl-Future-HTTP-0.16-4.fc41.noarch.rpm 
======================================== rpmlint session starts =======================================
rpmlint: 2.5.0
configuration:
    /usr/lib/python3.12/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora-legacy-licenses.toml
    /etc/xdg/rpmlint/fedora-spdx-licenses.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
checks: 32, packages: 3

perl-Future-HTTP.spec:82: W: macro-in-comment %license
perl-Future-HTTP.spec:82: W: macro-in-comment %license
=== 2 packages and 1 specfiles checked; 0 errors, 2 warnings, 6 filtered, 0 badness; has taken 0.3 s ==
FIX: Escape a per-cent character in the comment.

$ rpm -q -lv -p ../RPMS/noarch/perl-Future-HTTP-0.16-4.fc41.noarch.rpm 
drwxr-xr-x    2 root     root                        0 Mar  8 01:00 /usr/share/doc/perl-Future-HTTP
-rw-r--r--    1 root     root                     2697 Mar  8 01:00 /usr/share/doc/perl-Future-HTTP/Changes
-rw-r--r--    1 root     root                     1079 Jul 21  2023 /usr/share/doc/perl-Future-HTTP/README
-rw-r--r--    1 root     root                     2047 Mar  8 01:00 /usr/share/man/man3/Future::HTTP.3pm.gz
-rw-r--r--    1 root     root                      857 Mar  8 01:00 /usr/share/man/man3/Future::HTTP::API::HTTPTiny.3pm.gz
-rw-r--r--    1 root     root                     1820 Mar  8 01:00 /usr/share/man/man3/Future::HTTP::AnyEvent.3pm.gz
-rw-r--r--    1 root     root                      856 Mar  8 01:00 /usr/share/man/man3/Future::HTTP::Handler.3pm.gz
-rw-r--r--    1 root     root                     1876 Mar  8 01:00 /usr/share/man/man3/Future::HTTP::Mojo.3pm.gz
-rw-r--r--    1 root     root                     1873 Mar  8 01:00 /usr/share/man/man3/Future::HTTP::NetAsync.3pm.gz
-rw-r--r--    1 root     root                     2063 Mar  8 01:00 /usr/share/man/man3/Future::HTTP::Tiny.3pm.gz
-rw-r--r--    1 root     root                     2206 Mar  8 01:00 /usr/share/man/man3/Future::HTTP::Tiny::Paranoid.3pm.gz
drwxr-xr-x    2 root     root                        0 Mar  8 01:00 /usr/share/perl5/vendor_perl/Future/HTTP
-rw-r--r--    1 root     root                     5301 Jul 21  2023 /usr/share/perl5/vendor_perl/Future/HTTP.pm
drwxr-xr-x    2 root     root                        0 Mar  8 01:00 /usr/share/perl5/vendor_perl/Future/HTTP/API
-rw-r--r--    1 root     root                     3716 Jul 21  2023 /usr/share/perl5/vendor_perl/Future/HTTP/API/HTTPTiny.pm
-rw-r--r--    1 root     root                     3898 Jul 21  2023 /usr/share/perl5/vendor_perl/Future/HTTP/AnyEvent.pm
-rw-r--r--    1 root     root                     5278 Jul 21  2023 /usr/share/perl5/vendor_perl/Future/HTTP/Handler.pm
-rw-r--r--    1 root     root                     5191 Jul 21  2023 /usr/share/perl5/vendor_perl/Future/HTTP/Mojo.pm
-rw-r--r--    1 root     root                     5298 Jul 21  2023 /usr/share/perl5/vendor_perl/Future/HTTP/NetAsync.pm
drwxr-xr-x    2 root     root                        0 Mar  8 01:00 /usr/share/perl5/vendor_perl/Future/HTTP/Tiny
-rw-r--r--    1 root     root                     5568 Jul 21  2023 /usr/share/perl5/vendor_perl/Future/HTTP/Tiny.pm
-rw-r--r--    1 root     root                     3880 Jul 21  2023 /usr/share/perl5/vendor_perl/Future/HTTP/Tiny/Paranoid.pm
File layout and permissions are Ok.

$ rpm -q --requires -p ../RPMS/noarch/perl-Future-HTTP-0.16-4.fc41.noarch.rpm | sort -f | uniq -c
      1 perl(AnyEvent::Future)
      1 perl(AnyEvent::HTTP)
      1 perl(Data::Dumper)
      1 perl(Fcntl)
      1 perl(feature)
      1 perl(Filter::signatures)
      1 perl(Future)
      1 perl(Future::Mojo)
      1 perl(HTTP::Request)
      1 perl(HTTP::Tiny)
      1 perl(HTTP::Tiny::Paranoid) >= 0.07
      1 perl(IO::Async::Future)
      1 perl(IO::Async::Loop)
      1 perl(IO::Uncompress::Bunzip2)
      1 perl(IO::Uncompress::Gunzip)
      1 perl(IO::Uncompress::Inflate)
      1 perl(IO::Uncompress::RawInflate)
      1 perl(MIME::Base64)
      1 perl(MIME::QuotedPrint)
      1 perl(Mojo::UserAgent)
      1 perl(Moo) >= 2
      1 perl(Moo::Role)
      1 perl(Net::Async::HTTP)
      1 perl(strict)
      1 perl(URI)
      1 perl(warnings)
      1 perl-libs
      1 rpmlib(CompressedFileNames) <= 3.0.4-1
      1 rpmlib(FileDigests) <= 4.6.0-1
      1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
      1 rpmlib(PayloadIsZstd) <= 5.4.18-1
TODO: Constrain 'perl(HTTP::Request)' with '>= 6.07' (Makefile.PL:76).

$ rpm -q --provides -p ../RPMS/noarch/perl-Future-HTTP-0.16-4.fc41.noarch.rpm | sort -f | uniq -c
      1 perl(Future::HTTP) = 0.16
      1 perl(Future::HTTP::AnyEvent) = 0.16
      1 perl(Future::HTTP::Handler) = 0.16
      1 perl(Future::HTTP::Mojo) = 0.16
      1 perl(Future::HTTP::NetAsync) = 0.16
      1 perl(Future::HTTP::Tiny) = 0.16
      1 perl(Future::HTTP::Tiny::Paranoid) = 0.16
      1 perl-Future-HTTP = 0.16-4.fc41
Binary provides are Ok.

$ resolvedeps rawhide ../RPMS/noarch/perl-Future-HTTP-0.16-4.fc41.noarch.rpm 
Binary dependencies are resolvable. Ok.

The package builds in Fedora 41 <https://koji.fedoraproject.org/koji/taskinfo?taskID=115787008>. Ok.

Otherwise, the package is in line with Fedora and Perl packaging guidelines.
Please correct FIX items, consider fixing TODO items and provide an updated spec file.

Comment 7 Petr Pisar 2024-04-04 11:03:34 UTC
Changes in the spec file:

--- perl-Future-HTTP.spec.old   2024-03-08 01:00:00.000000000 +0100
+++ perl-Future-HTTP.spec       2024-04-03 02:00:00.000000000 +0200
@@ -1,28 +1,27 @@
+# some tests require Internet access, don't enable by default
+%bcond network_tests 0
+
 Name:           perl-Future-HTTP
 Version:        0.16
-Release:        4%{?dist}
+Release:        5%{?dist}
 Summary:        Future::HTTP Perl module
 License:        GPL-1.0-or-later OR Artistic-1.0-Perl
-URL:            https://metacpan.org/dist/Future-HTTP/
+URL:            https://metacpan.org/dist/Future-HTTP
 Source0:        https://cpan.metacpan.org/authors/id/C/CO/CORION/Future-HTTP-%{version}.tar.gz
 BuildArch:      noarch
 BuildRequires:  make perl-interpreter perl-generators coreutils
 BuildRequires:  perl(AnyEvent)
 BuildRequires:  perl(AnyEvent::Future)
 BuildRequires:  perl(AnyEvent::HTTP)
-BuildRequires:  perl(CGI)
 BuildRequires:  perl(Data::Dumper)
 BuildRequires:  perl(ExtUtils::MakeMaker) >= 6.76
 BuildRequires:  perl(Fcntl)
 BuildRequires:  perl(Filter::signatures) >= 0.13
 BuildRequires:  perl(Future) >= 0.31
 BuildRequires:  perl(Future::Mojo)
-BuildRequires:  perl(HTTP::Headers) >= 6.07
-BuildRequires:  perl(HTTP::Request)
-BuildRequires:  perl(HTTP::Request::AsCGI)
+BuildRequires:  perl(HTTP::Request) >= 6.07
 BuildRequires:  perl(HTTP::Tiny)
-BuildRequires:  perl(HTTP::Tiny::Paranoid)
-BuildRequires:  perl(IO::Async)
+BuildRequires:  perl(HTTP::Tiny::Paranoid) >= 0.07
 BuildRequires:  perl(IO::Async::Future)
 BuildRequires:  perl(IO::Async::Loop)
 BuildRequires:  perl(IO::Uncompress::Bunzip2)
@@ -31,7 +30,6 @@
 BuildRequires:  perl(IO::Uncompress::RawInflate)
 BuildRequires:  perl(MIME::Base64)
 BuildRequires:  perl(MIME::QuotedPrint)
-BuildRequires:  perl(Mojo::IOLoop)
 BuildRequires:  perl(Mojo::UserAgent)
 BuildRequires:  perl(Mojolicious)
 BuildRequires:  perl(Moo) >= 2
@@ -57,11 +55,15 @@
 Requires:       perl(warnings)
 
 %description
-Provide the most appropriate HTTP client with a Future API
+This module is a wrapper combining Future with the API provided by
+AnyEvent::HTTP. The backend used for the HTTP protocols depends on
+whether one of the event loops is loaded.
 
 %prep
 %setup -q -n Future-HTTP-%{version}
-%{!?_with_network_tests: rm t/01-http-tiny-paranoid.t }
+%if %{without network_tests}
+rm t/01-http-tiny-paranoid.t
+%endif
 perl -pi -e 's/\r//' Changes
 
 %build
@@ -79,11 +81,14 @@
 %doc Changes README
 # note: files all say perl_5 which is GPLv1/Artistic but file is Artistic-2
 # https://rt.cpan.org/Ticket/Display.html?id=152217
-#%license LICENSE
+#license LICENSE
 %{perl_vendorlib}/Future/HTTP*
 %{_mandir}/man3/Future::HTTP*
 
 %changelog
+* Wed Apr 03 2024 Chris Adams <linux> 0.16-5
+- additional spec file cleanups
+
 * Fri Mar 08 2024 Chris Adams <linux> 0.16-4
 - additional spec file cleanups


FIX: The current summary is not well descriptive. Use e.g. "HTTP client with a Future API" (see lib/Future/HTTP.pm POD).

$ rpmlint perl-Future-HTTP.spec ../SRPMS/perl-Future-HTTP-0.16-5.fc41.src.rpm  ../RPMS/noarch/perl-Future-HTTP-0.16-5.fc41.noarch.rpm 
======================================== rpmlint session starts =======================================
rpmlint: 2.5.0
configuration:
    /usr/lib/python3.12/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora-legacy-licenses.toml
    /etc/xdg/rpmlint/fedora-spdx-licenses.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
checks: 32, packages: 3

=== 2 packages and 1 specfiles checked; 0 errors, 0 warnings, 8 filtered, 0 badness; has taken 0.4 s ==
rpmlint is Ok.

$ rpm -q --requires -p ../RPMS/noarch/perl-Future-HTTP-0.16-5.fc41.noarch.rpm | sort -f | uniq -c
      1 perl(AnyEvent::Future)
      1 perl(AnyEvent::HTTP)
      1 perl(Data::Dumper)
      1 perl(Fcntl)
      1 perl(feature)
      1 perl(Filter::signatures)
      1 perl(Future)
      1 perl(Future::Mojo)
      1 perl(HTTP::Request)
      1 perl(HTTP::Tiny)
      1 perl(HTTP::Tiny::Paranoid) >= 0.07
      1 perl(IO::Async::Future)
      1 perl(IO::Async::Loop)
      1 perl(IO::Uncompress::Bunzip2)
      1 perl(IO::Uncompress::Gunzip)
      1 perl(IO::Uncompress::Inflate)
      1 perl(IO::Uncompress::RawInflate)
      1 perl(MIME::Base64)
      1 perl(MIME::QuotedPrint)
      1 perl(Mojo::UserAgent)
      1 perl(Moo) >= 2
      1 perl(Moo::Role)
      1 perl(Net::Async::HTTP)
      1 perl(strict)
      1 perl(URI)
      1 perl(warnings)
      1 perl-libs
      1 rpmlib(CompressedFileNames) <= 3.0.4-1
      1 rpmlib(FileDigests) <= 4.6.0-1
      1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
      1 rpmlib(PayloadIsZstd) <= 5.4.18-1
TODO: Constrain 'perl(HTTP::Request)' with '>= 6.07' (Makefile.PL:76).

The package builds in Fedora 41 (https://koji.fedoraproject.org/koji/taskinfo?taskID=115865838). Ok..

Please correct the FIX item and consider fixing the TODO item before building this package.
This package is APPROVED.

Comment 8 Fedora Admin user for bugzilla script actions 2024-04-04 12:30:22 UTC
The Pagure repository was created at https://src.fedoraproject.org/rpms/perl-Future-HTTP

Comment 9 Fedora Update System 2024-04-06 12:46:17 UTC
FEDORA-2024-f021b361eb (perl-Future-HTTP-0.16-5.fc39) has been submitted as an update to Fedora 39.
https://bodhi.fedoraproject.org/updates/FEDORA-2024-f021b361eb

Comment 10 Fedora Update System 2024-04-07 02:23:34 UTC
FEDORA-2024-f021b361eb has been pushed to the Fedora 39 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf install --enablerepo=updates-testing --refresh --advisory=FEDORA-2024-f021b361eb \*`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2024-f021b361eb

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

Comment 11 Fedora Update System 2024-04-15 01:12:12 UTC
FEDORA-2024-f021b361eb (perl-Future-HTTP-0.16-5.fc39) has been pushed to the Fedora 39 stable repository.
If problem still persists, please make note of it in this bug report.