Opened 17 months ago

Closed 3 months ago

#55207 closed defect (fixed)

perl5.2[468]: failed db-hash test on 10.13

Reported by: mojca (Mojca Miklavec) Owned by: mojca (Mojca Miklavec)
Priority: Normal Milestone:
Component: ports Version:
Keywords: highsierra Cc: dbevans (David B. Evans)
Port: perl5.24 perl5.26 perl5.28

Description (last modified by mojca (Mojca Miklavec))

One test from perl5.24 fails on 10.13:

PERL_DL_NONLAZY=1 "../../perl" "-I../../lib" "-I../../lib" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, '../../lib', '../../lib')" t/*.t
t/db-btree.t .. ok       
t/db-hash.t ... 84/166 Use of uninitialized value $value in string eq at t/db-hash.t line 225.
Use of uninitialized value $values[0] in string eq at t/db-hash.t line 225.
Use of uninitialized value $value in lc at t/db-hash.t line 225.
Use of uninitialized value $h{""} in string eq at t/db-hash.t line 244.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 253.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 253.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 253.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 253.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 253.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 253.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 253.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 253.
Use of uninitialized value $foo[18] in join or string at t/db-hash.t line 262.
Use of uninitialized value $foo[36] in join or string at t/db-hash.t line 262.
Use of uninitialized value $foo[48] in join or string at t/db-hash.t line 262.
Use of uninitialized value $foo[58] in join or string at t/db-hash.t line 262.
Use of uninitialized value $foo[59] in join or string at t/db-hash.t line 262.
Use of uninitialized value $foo[60] in join or string at t/db-hash.t line 262.
Use of uninitialized value $foo[62] in join or string at t/db-hash.t line 262.
Use of uninitialized value $foo[63] in join or string at t/db-hash.t line 262.
Use of uninitialized value $foo[92] in join or string at t/db-hash.t line 262.
Use of uninitialized value $foo[114] in join or string at t/db-hash.t line 262.
Use of uninitialized value $foo[140] in join or string at t/db-hash.t line 262.
Use of uninitialized value $foo[187] in join or string at t/db-hash.t line 262.
Use of uninitialized value $foo[188] in join or string at t/db-hash.t line 262.
Use of uninitialized value $foo[189] in join or string at t/db-hash.t line 262.
Use of uninitialized value $h{"Fred"} in string eq at t/db-hash.t line 573.
Use of uninitialized value $v in concatenation (.) or string at t/db-hash.t line 749.
t/db-hash.t ... Dubious, test returned 25 (wstat 6400, 0x1900)
Failed 76/166 subtests 
t/db-recno.t .. ok       

Test Summary Report
-------------------
t/db-hash.t (Wstat: 6400 Tests: 116 Failed: 26)
  Failed tests:  23-25, 27-28, 30, 37, 45-46, 68, 70, 72-77
                82, 84, 86, 89-90, 98, 101, 106, 112
  Non-zero exit status: 25
  Parse errors: Bad plan.  You planned 166 tests but ran 116.
Files=3, Tests=517, 15 wallclock secs ( 2.86 usr  0.20 sys +  3.79 cusr  7.75 csys = 14.60 CPU)
Result: FAIL
Failed 1/3 test programs. 26/517 subtests failed.

Quick way to test outside of MacPorts:

./Configure -des && TEST_FILES=../cpan/DB_File/t/db-hash.t make -j8 test_harness

(I didn't test older versions.)

Change History (10)

comment:1 Changed 17 months ago by mojca (Mojca Miklavec)

Cc: dbevans added
Description: modified (diff)
Port: perl5.26 added
Summary: perl5.24: failed db-hash test on 10.13perl5.24, perl5.26: failed db-hash test on 10.13

comment:2 Changed 17 months ago by mojca (Mojca Miklavec)

Description: modified (diff)

comment:3 Changed 17 months ago by mojca (Mojca Miklavec)

TonyC on #p5p @ irc.perl.org says it works for him on a VM using HFS / Mac OS Extended (Journaled) file system.

Last edited 17 months ago by mojca (Mojca Miklavec) (previous) (diff)

comment:4 Changed 17 months ago by mojca (Mojca Miklavec)

In c8b63f830c681d6b82099078383ca1ebdeca3987/macports-ports:

perl5: update to 5.24.3 and 5.26.1

  • Update perl5.24 to 5.24.3.
  • Update perl5.26 to 5.26.1.
  • Add a variant +perl5.26 to perl5.

Closes: #55206
See: #55207
See: #55208

comment:5 Changed 3 months ago by dgilman (David Gilman)

As a hack, changing config.in to point to /opt/local/{include,lib}/db48 fixes the test. I imagine you don't want to pick up a dependency on db48 here, though, but at the same time the DB_File that your current perl5 Portfile distributes has to have bugs lurking in it - I'm surprised it compiled at all. There's a well-maintained p5-db_file package - how about just patching perl5 to not build DB_File and having people install p5-db_file when they need it?

comment:6 Changed 3 months ago by mojca (Mojca Miklavec)

Thanks a lot for looking into this. So that's just the newer standalone version of the same package that's included in perl itself? (In that case I wonder if the newer version of perl has that package updated.)

comment:7 Changed 3 months ago by dgilman (David Gilman)

Not sure what the antecedent of "that" is - you mean p5-db_file? The issue here isn't new perl vs old perl - it seems like perl itself has a dependency on gdbm and bdb. Take a look at the Debian perl file for perl: https://sources.debian.org/src/perl/5.28.1-3/debian/control/ It has build-time deps on both gdbm and bdb (libdb). I don't have homebrew installed but it seems that their perl is linking against Apple's bdb in /usr.

So to fix this bug you either need to add in bdb as a dependency of the perl interpreter or disable the distribution of DB_File with the perl interpreter. I can confirm perl 5.28 won't fix this as I ran the test suite myself and saw it broken there.

comment:8 Changed 3 months ago by dgilman (David Gilman)

In 8c9dd68ed3c5dbdb2c4d1c0caf7543b7689d0d12/macports-ports (master):

perl5.28: new port, backport patch for 5.26

See: #55207
Closes: #55203

comment:9 Changed 3 months ago by mojca (Mojca Miklavec)

Port: perl5.28 added
Summary: perl5.24, perl5.26: failed db-hash test on 10.13perl5.2[468]: failed db-hash test on 10.13

comment:10 Changed 3 months ago by dgilman (David Gilman)

Resolution: fixed
Status: newclosed

In 132550a3b3251341d94577f4236742bdfc2c7478/macports-ports (master):

perl5: fix DB_File

Mirror what the p5-db_file package does and manually fix up the version
of DB_File that gets distributed with the perl interpreter.

This adds a dependency on db48 to perl.

Closes: #55207

Note: See TracTickets for help on using tickets.