Opened 3 years ago

Closed 3 years ago

#64501 closed defect (fixed)

abcde: Can't load DiscID.bundle

Reported by: breun (Nils Breunese) Owned by: 0x6772 (Gabriel Rosenkoetter)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: chrstphrchvz (Christopher Chavez)
Port: abcde

Description

I tried using abcde, but it fails with this error:

Can't load '/opt/local/lib/perl5/vendor_perl/5.34/darwin-thread-multi-2level/auto/MusicBrainz/DiscID/DiscID.bundle' for module MusicBrainz::DiscID: dlopen(/opt/local/lib/perl5/vendor_perl/5.34/darwin-thread-multi-2level/auto/MusicBrainz/DiscID/DiscID.bundle, 0x0001): tried: '/opt/local/lib/perl5/vendor_perl/5.34/darwin-thread-multi-2level/auto/MusicBrainz/DiscID/DiscID.bundle' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64h')), '/usr/local/lib/DiscID.bundle' (no such file), '/usr/lib/DiscID.bundle' (no such file) at /opt/local/lib/perl5/5.34/XSLoader.pm line 96.
 at /opt/local/lib/perl5/vendor_perl/5.34/darwin-thread-multi-2level/MusicBrainz/DiscID.pm line 19.
Compilation failed in require at /opt/local/bin/abcde-musicbrainz-tool line 18.
BEGIN failed--compilation aborted at /opt/local/bin/abcde-musicbrainz-tool line 18.

It indeed seems that DiscID.bundle is an arm64 bundle on my Intel Mac:

❯ file /opt/local/lib/perl5/vendor_perl/5.34/darwin-thread-multi-2level/auto/MusicBrainz/DiscID/DiscID.bundle
/opt/local/lib/perl5/vendor_perl/5.34/darwin-thread-multi-2level/auto/MusicBrainz/DiscID/DiscID.bundle: Mach-O 64-bit bundle arm64

I have this version of abcde installed:

❯ port installed | grep abcde
  abcde @2.9.3_1 (active)

Change History (6)

comment:1 Changed 3 years ago by 0x6772 (Gabriel Rosenkoetter)

I'm happy being assigned to this, but looping in @chrstphrchvz (does that syntax work in trac? Doesn't seem to, and I… don't have permission to modify the cc field?), because this is indirectly related to his recent PR to depend abcde on Perl 5.34.

The problem here isn't, strictly speaking, the abcde port: rather it's the binary version of the MusicBrainz::DiscID module, from which you're getting an arm64 binary on an intel platform, which you shouldn't be.

A quick workaround would be to build the p5-musicbrainz-discid from source, rather than a binary install. (I'd have to check a bunch of man pages to provide directions to do that, and I'll do so in a bit, but I'm supposed to be on the phone with my parents right now, and maybe that's enough for you to get going.)

If you get to doing that before I get back to this, please do let us know how it goes. Thanks!

comment:2 Changed 3 years ago by 0x6772 (Gabriel Rosenkoetter)

Cc: 0x6772 added

comment:3 Changed 3 years ago by 0x6772 (Gabriel Rosenkoetter)

Cc: 0x6772 removed

comment:4 Changed 3 years ago by jmroot (Joshua Root)

Cc: chrstphrchvz added

comment:5 Changed 3 years ago by chrstphrchvz (Christopher Chavez)

I’m fairly certain this is a problem in the p5-musicbrainz-discid port where it erroneously specifies supported_archs noarch when the build output is platform-specific due to the module containing XS code. PR opened: https://github.com/macports/macports-ports/pull/13757

comment:6 Changed 3 years ago by chrstphrchvz (Christopher Chavez)

Resolution: fixed
Status: assignedclosed

In 3316a239f83c2687b120d955fa1f6ec3b83bf034/macports-ports (master):

p5-musicbrainz-discid: do not use noarch

Module builds XS code.
Fixes: #64501

Note: See TracTickets for help on using tickets.