Bug 2304283 - perl-Net-Server-2.014-6.fc41 FTBFS: t/Port_Configuration.t fails with perl-Net-SSLeay ≥ 1.94-7.fc41
Summary: perl-Net-Server-2.014-6.fc41 FTBFS: t/Port_Configuration.t fails with perl-Ne...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: perl-Net-Server
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Michal Josef Spacek
QA Contact: Fedora Extras Quality Assurance
URL: https://koschei.fedoraproject.org/pac...
Whiteboard:
Depends On:
Blocks: F41FTBFS
TreeView+ depends on / blocked
 
Reported: 2024-08-13 09:02 UTC by Petr Pisar
Modified: 2024-10-27 20:31 UTC (History)
4 users (show)

Fixed In Version: perl-Net-Server-2.014-7.fc41
Clone Of:
Environment:
Last Closed: 2024-10-27 20:31:51 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
CPAN 154333 0 None None None 2024-08-13 09:03:40 UTC

Description Petr Pisar 2024-08-13 09:02:00 UTC
perl-Net-Server-2.014-6.fc41 fails to build in Fedora 41 because a t/Port_Configuration.t test fails:

$ prove -l -v  t/Port_Configuration.t
t/Port_Configuration.t ..
1..51
ok 1 - use Net::Server
ok 2 - run ( )  ==>  [ '*|20203|TCP|ipv4' ]
ok 3 - run ( port => 20201 )  ==>  [ '*|20201|TCP|ipv4' ]
ok 4 - run ( port => 'localhost:20202' )  ==>  [ 'localhost|20202|TCP|ipv4' ]
ok 5 - run ( port => ['localhost:20202/tcp'] )  ==>  [ 'localhost|20202|TCP|ipv4' ]
ok 6 - run ( port => 'localhost:20202/ipv4' )  ==>  [ 'localhost|20202|TCP|ipv4' ]
ok 7 - run ( port => ['localhost:20201/ipv4/tcp', 'localhost:20202/tcp/IPv4'] )  ==>  [ 'localhost|20201|TCP|ipv4', 'localhost|20202|TCP|ipv4' ]
ok 8 - run ( port => ['localhost|20201|ipv4|tcp', 'localhost,20202,tcp,IPv4'] )  ==>  [ 'localhost|20201|TCP|ipv4', 'localhost|20202|TCP|ipv4' ]
ok 9 - run ( port => ['localhost 20201 ipv4 tcp', 'localhost, 20202, tcp, IPv4'] )  ==>  [ 'localhost|20201|TCP|ipv4', 'localhost|20202|TCP|ipv4' ]
ok 10 - run ( port => 'localhost:20202/udp' )  ==>  [ 'localhost|20202|UDP|ipv4' ]
ok 11 - run ( listen => 5, port => 20202 )  ==>  [ '*|20202|TCP|ipv4' ]
ok 12 - run ( port => ['bar.com:20201/udp', 'foo.com:20202/tcp'] )  ==>  [ 'bar.com|20201|UDP|ipv4', 'foo.com|20202|TCP|ipv4' ]
ok 13 - run ( host => 'bar.com', port => 20201, proto => 'UDP' )  ==>  [ 'bar.com|20201|UDP|ipv4' ]
ok 14 - run { host => 'bar.com', port => 20201, proto => 'UDP', udp_recv_len => 400 }  ==>  [ 'bar.com|20201|UDP|ipv4' ]
ok 15 - new ( host => 'bar.com', port => 20201, proto => 'UDP' )  ==>  [ 'bar.com|20201|UDP|ipv4' ]
ok 16 - new { host => 'bar.com', port => 20201, proto => 'UDP' }  ==>  [ 'bar.com|20201|UDP|ipv4' ]
ok 17 - run ( host => 'bar.com', port => [20201, 'foo.com:20202/tcp'], proto => 'UDP' )  ==>  [ 'bar.com|20201|UDP|ipv4', 'foo.com|20202|TCP|ipv4' ]
ok 18 - run ( port => ['localhost|20202|tcp'] )  ==>  [ 'localhost|20202|TCP|ipv4' ]
ok 19 - run ( port => ['localhost,20202,tcp'] )  ==>  [ 'localhost|20202|TCP|ipv4' ]
ok 20 - run ( port => ['[localhost]:20202/tcp'] )  ==>  [ 'localhost|20202|TCP|ipv4' ]
ok 21 - run ( port => ['localhost,20202,Net::Server::Proto::TCP'] )  ==>  [ 'localhost|20202|TCP|ipv4' ]
ok 22 - run ( port => { host => '*', port => 20201, proto => 'tcp' } )  ==>  [ '*|20201|TCP|ipv4' ]
ok 23 - run ( port => [{ host => '*', port => 20201, proto => 'tcp' }] )  ==>  [ '*|20201|TCP|ipv4' ]
ok 24 - run ( port => [{ host => 'foo.com', port => 20201, proto => 'udp' }] )  ==>  [ 'foo.com|20201|UDP|ipv4' ]
ok 25 - run ( host => 'foo.com', port => [{ host => 'foo.com', port => 20201, proto => 'udp' }], proto => 'udp' )  ==>  [ 'foo.com|20201|UDP|ipv4' ]
ok 26 - run ( port => [{ host => '*', listen => 6, port => 20202, proto => 'tcp' }] )  ==>  [ '*|20202|TCP|ipv4' ]
ok 27 - run ( port => 'foo/bar/unix' )  ==>  [ '*|foo/bar|UNIX|*' ]
ok 28 - run ( port => '/foo/bar|unix', udp_recv_len => 500 )  ==>  [ '*|/foo/bar|UNIX|*' ]
ok 29 - run ( port => '/foo/bar|unixdgram', udp_recv_len => 500 )  ==>  [ '*|/foo/bar|UNIXDGRAM|*' ]
ok 30 - run ( port => 'foo/bar|sock_dgram|unix' )  ==>  [ '*|foo/bar|UNIXDGRAM|*' ]
ok 31 - run ( port => { host => '*', listen => 7, port => '/foo/bar', proto => 'unix', unix_type => 'sock_stream' } )  ==>  [ '*|/foo/bar|UNIX|*' ]
ok 32 - run ( port => { host => '*', port => '/foo/bar', proto => 'unix', unix_type => 'sock_dgram' } )  ==>  [ '*|/foo/bar|UNIXDGRAM|*' ]
ok 33 - run ( port => { host => '*', port => '/foo/bar', proto => 'unixdgram' } )  ==>  [ '*|/foo/bar|UNIXDGRAM|*' ]
ok 34 - run ( ipv => '*', port => 'foo/bar/unix' )  ==>  [ '*|foo/bar|UNIX|*' ]
# Unable to load module for proto "Net::Server::Proto::SSLEAY": Can't use an undefined value as a subroutine reference at /home/test/fedora/perl-Net-Server/perl-Net-Server-2.014-build/Net-Server-2.014/lib/Net/Server/Proto/SSLEAY.pm line 31.
BEGIN failed--compilation aborted at /home/test/fedora/perl-Net-Server/perl-Net-Server-2.014-build/Net-Server-2.014/lib/Net/Server/Proto/SSLEAY.pm line 34.
Compilation failed in require at /home/test/fedora/perl-Net-Server/perl-Net-Server-2.014-build/Net-Server-2.014/lib/Net/Server/Proto.pm line 195.
 at line 318
# Failed at line 318
not ok 35 - run ( proto => 'ssleay' )  ==>  [ '' ]
#   failed at t/Port_Configuration.t line 73
#        got: {
  bind => undef
}
#   expected: {
  bind => [{
  host => '*',
  ipv => 4,
  port => 20203,
  proto => 'ssleay'
}],
  sock => [{
  NS_host => '*',
  NS_ipv => 4,
  NS_listen => 4096,
  NS_port => 20203,
  NS_proto => 'SSLEAY',
  SSL_cert_file => 'somecert'
}]
}
# number of tests ran 35 did not match number of specified tests 51
Failed 17/51 subtests

A difference between passing and failing build root is at <https://koschei.fedoraproject.org/build/18334743>.

The test fails at:

BEGIN {
    eval { require Net::SSLeay; 1 }
        or warn "Module Net::SSLeay is required for SSLeay.";
    for my $sub (qw(load_error_strings SSLeay_add_ssl_algorithms ENGINE_load_builtin_engines ENGINE_register_all_complete randomize)) {
→       Net::SSLeay->can($sub)->();
    }
    eval { [Fcntl::F_GETFL(), Fcntl::F_SETFL(), Fcntl::O_NONBLOCK()] } || die "Could not access Fcntl constant while loading ".__PACKAGE__.": $@";
}

When using ENGINE_load_builtin_engines():

$ perl -e 'require Net::SSLeay; Net::SSLeay->can(q{ENGINE_load_builtin_engines})->()'
Can't use an undefined value as a subroutine reference at -e line 1.

This is an intentional change in perl-Net-SSLeay-1.94-7.fc41:

* Tue Jul 23 2024 Paul Howarth <paul> - 1.94-7
- Build without OpenSSL ENGINE support on Fedora 41 onwards

I guess the code for initializing Net::SSLeay should be rewritten to skip unavailable ENGINE_load_builtin_engines() and ENGINE_register_all_complete() calls.

Comment 1 Petr Pisar 2024-08-14 08:31:09 UTC
I posted a fix to the upstream bug report.

Comment 2 Fedora Update System 2024-10-18 15:36:59 UTC
FEDORA-2024-bdcb38ee2d (perl-Net-Server-2.014-7.fc41) has been submitted as an update to Fedora 41.
https://bodhi.fedoraproject.org/updates/FEDORA-2024-bdcb38ee2d

Comment 3 Fedora Update System 2024-10-19 02:11:06 UTC
FEDORA-2024-bdcb38ee2d has been pushed to the Fedora 41 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2024-bdcb38ee2d`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2024-bdcb38ee2d

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

Comment 4 Fedora Update System 2024-10-27 20:31:51 UTC
FEDORA-2024-bdcb38ee2d (perl-Net-Server-2.014-7.fc41) has been pushed to the Fedora 41 stable repository.
If problem still persists, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.