Opened 10 years ago

Closed 10 years ago

#44439 closed defect (fixed)

p5.18-pdl, p5.20-pdl: build fails in post-build fixup script.

Reported by: dbevans (David B. Evans) Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: mf2k (Frank Schima), danielluke (Daniel J. Luke), mojca (Mojca Miklavec)
Port: p5-pdl

Description (last modified by dbevans (David B. Evans))

After fixing the problem in #44420, build fails again (on both p5.18 and p5.20) as follows:

DEBUG: Executing proc-post-org.macports.build-build-0
Error: org.macports.build for port p5.20-pdl returned: Odd number of elements in hash assignment at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 41.
Odd number of elements in hash assignment at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 41.
Odd number of elements in hash assignment at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 41.
Odd number of elements in hash assignment at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 41.
Odd number of elements in hash assignment at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 41.
Odd number of elements in hash assignment at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 41.
Odd number of elements in hash assignment at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 41.
Odd number of elements in hash assignment at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 41.
Odd number of elements in hash assignment at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 41.
Odd number of elements in hash assignment at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 41.
Odd number of elements in hash assignment at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 41.
Use of uninitialized value in join or string at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 59.
Use of uninitialized value in join or string at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 59.
Use of uninitialized value in join or string at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 59.
Use of uninitialized value in join or string at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 59.
Use of uninitialized value in join or string at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 59.
Use of uninitialized value in join or string at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 59.
Use of uninitialized value in join or string at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 59.
Use of uninitialized value in join or string at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 59.
Use of uninitialized value in join or string at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 59.
Use of uninitialized value in join or string at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 59.
Use of uninitialized value in join or string at /opt/macports/trunk/dports/perl/p5-pdl/files/fix-pdldocdb.pl line 59.

This is occuring after the build proper in post-build phase trying to fix up various installation paths. The nature of the error message and the fact that it occurs on both p5.18 and p5.20 versions suggests that the problem may in part be related to changes in the perl hash implementation that hit in perl 5.18.

The perl code failing (executed from $filepath/fix-pdldocdb.pl) is taken largely from PDL::Doc with minor modifications and has not been changed in the current version (or upstream development versions) so this may indicate that there is a perl 5.18+ compatibility problem with the PDL::Doc part of this port as well.

Unfortunately, I have no idea where to start on this so any help is welcome.

Log file for p5.20-pdl build attached although it doesn't provide much more information.

Attachments (2)

p5.20-pdl.log (5.2 MB) - added by dbevans (David B. Evans) 10 years ago.
Build log showing failure for p5.20-pdl
p5-pdl-44439.patch (689 bytes) - added by mvgrimes 10 years ago.

Change History (11)

Changed 10 years ago by dbevans (David B. Evans)

Attachment: p5.20-pdl.log added

Build log showing failure for p5.20-pdl

comment:1 Changed 10 years ago by dbevans (David B. Evans)

Cc: mf2k@… added; m2k removed
Owner: mf2k@… deleted

Meant CC not necessarily owner for mf2k@

Last edited 10 years ago by dbevans (David B. Evans) (previous) (diff)

comment:2 Changed 10 years ago by dbevans (David B. Evans)

Description: modified (diff)
Owner: set to macports-tickets@…

comment:3 Changed 10 years ago by dbevans (David B. Evans)

Port: p5.20-pdl added; p5.20 removed

comment:4 Changed 10 years ago by dbevans (David B. Evans)

Port: p5.18-pdl, p5.20-pdlp5.18-pdl p5.20-pdl

comment:5 Changed 10 years ago by danielluke (Daniel J. Luke)

I would probably dump the contents of %hash in ensuredb() as a first look at what's going on. (If I can get some spare time, I'll try to take a look)

comment:6 Changed 10 years ago by danielluke (Daniel J. Luke)

Cc: dluke@… added

Cc Me!

comment:7 Changed 10 years ago by mojca (Mojca Miklavec)

Cc: mojca@… added

Cc Me!

comment:8 Changed 10 years ago by mvgrimes

It looks like fix-pdldocdb is parsing a set of null separated fields and turning them into a hash. The order of the list is different between 5.16 and 5.18, and in 5.18 the last field is sometimes empty. When it gets assigned to a hash, perl complains about the missing value.

Under 5.16
...
$txt = 
->mn_emat
->Usage
->
->Module
->PDL::Minuit
->File
->/opt/local/var/macports/...

Under 5.18
...
$txt = 
 ->mn_emat
 ->File
 ->/opt/local/var/macports/build/...
 ->Module
 ->PDL::Minuit
 ->Usage
 ->
#Odd number of elements in hash assignment at /Users...

In 5.18, perl changed the way it handles hashes and the order is no longer consistent. I'm guessing that is causing the fields to come up in a different order.

The attached patch should fix it.

Changed 10 years ago by mvgrimes

Attachment: p5-pdl-44439.patch added

comment:9 Changed 10 years ago by mf2k (Frank Schima)

Port: p5-pdl added; p5.18-pdl p5.20-pdl removed
Resolution: fixed
Status: newclosed

This works. Thanks! r123884. I have also added you as maintainer.

Note: See TracTickets for help on using tickets.