#68635 closed defect (fixed)

pulseaudio @14.2: should not depend on intltool or a nonexistent p5-xml-parser subport

Reported by: kwolcott Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: Ionic (Mihai Moldovan)
Port: pulseaudio

Description (last modified by ryandesign (Ryan Carsten Schmidt))

When trying to install the meld port from source on Sonoma 14.1 (M1 chip) it fails due to a spurious dependency on a nonexistent p5.36-xml-parser port.

...
> --->  Computing dependencies for meld........
> Error: Dependency 'p5.36-xml-parser' not found.
...

meld does not have this dependency:

Meld itself does not have this dependency:

% port deps meld
Full Name: meld @3.21.0_2+x11
Extract Dependencies: xz
Build Dependencies:   intltool, itstool, libxml2, py311-distro, makeicns,
                       librsvg
Library Dependencies: desktop-file-utils, glib2, gtk3, gtksourceview4,
                       py311-cairo, py311-gobject3, shared-mime-info,
python311
Runtime Dependencies: adwaita-icon-theme, gsettings-desktop-schemas, yelp

So it must be one of its dependencies.

port rdeps meld | grep -F p5.36-xml-parser
Error: Port p5.36-xml-parser not found
          p5.36-xml-parser

Change History (9)

comment:1 Changed 12 months ago by ryandesign (Ryan Carsten Schmidt)

Description: modified (diff)
Keywords: spurious port dependency removed
Port: meld added

On my system port echo depends:p5.36-xml-parser produces no output so it is not a problem that affects everyone. Does it show anything on your system?

As you showed, meld does depend on intltool, and intltool does depend on p5.34-xml-parser.

Do you by chance have the perl5 port installed with the non-default +perl5_36 variant, and/or have that variant in your variants.conf? If so, maybe that is related to the problem.

comment:2 Changed 12 months ago by ryandesign (Ryan Carsten Schmidt)

Owner: set to Ionic
Port: pulseaudio added; meld removed
Status: newassigned
Summary: meld port depends on a nonexistent p5.36-xml-parser portpulseaudio: should not depend on p5-xml-parser

I am able to reproduce the problem if I install perl5 with +perl5_36.

I believe the problem is the pulseaudio port which declares a dependency on port:p${perl5.major}-xml-parser without first setting perl5.branches to the desired version. That means it will inherit the perl version from whatever you've selected with the perl5 port. Ports shouldn't do that.

In fact, pulseaudio probably shouldn't haven't a dependency on XML::Parser at all. It has a dependency on intltool, and intltool erroneously adds code to projects' configure scripts that check for the presence of XML::Parser with the default perl. Ports should autoreconf to rebuild their configure scripts with our patched version of intltool that doesn't do that unnecessary and counterproductive step. The upstream bug report, which upstream has not acknowledged or fixed in over ten years, is https://bugs.launchpad.net/intltool/+bug/1197875.

comment:3 Changed 12 months ago by ryandesign (Ryan Carsten Schmidt)

Cc: Ionic added
Owner: changed from Ionic to ryandesign
Status: assignedaccepted
Summary: pulseaudio: should not depend on p5-xml-parserpulseaudio @14.2: should not depend on intltool or p5-xml-parser

In fact pulseaudio stopped using intltool entirely in version 13.0, according to its NEWS file, so that can be removed as well. I'll do a trace mode build to verify this and then commit it.

comment:4 Changed 12 months ago by kwolcott

It looks like the spurious dependency has now vanished after following the advice from Ken Cunningham:

sudo port -f uninstall perl5 perl5.36

and

sudo port -v -s install perl5

(I always install from source, he did not advise that)

Afterwards:

sudo port -v -s install meld

did not complain about p5.34-xml-parser

Thanks for the help!

Last edited 12 months ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:5 Changed 12 months ago by ryandesign (Ryan Carsten Schmidt)

If you always want to install from source you can edit macports.conf and set buildfromsource always.

comment:6 Changed 12 months ago by kwolcott

Followed your advice, thanks.

comment:7 in reply to:  2 Changed 12 months ago by ryandesign (Ryan Carsten Schmidt)

Replying to ryandesign:

I believe the problem is the pulseaudio port which declares a dependency on port:p${perl5.major}-xml-parser without first setting perl5.branches to the desired version. That means it will inherit the perl version from whatever you've selected with the perl5 port. Ports shouldn't do that.

The port used to do it correctly. The bug was introduced in [49f8c6b5322b5fc6100c4426ab170252fea6b98a/macports-ports].

In fact, pulseaudio probably shouldn't haven't a dependency on XML::Parser at all.

Turns out the dependency is needed after all. In addition to formerly using intltool, pulseaudio's build system also still uses XML::Parser in the process of generating the manpage.

comment:8 Changed 12 months ago by ryandesign (Ryan Carsten Schmidt)

Summary: pulseaudio @14.2: should not depend on intltool or p5-xml-parserpulseaudio @14.2: should not depend on intltool or a nonexistent p5-xml-parser subport

comment:9 Changed 12 months ago by ryandesign (Ryan Carsten Schmidt)

Resolution: fixed
Status: acceptedclosed

In aad7df3af5bdfac71dee915c787a7f91062661ea/macports-ports (master):

pulseaudio: Remove intltool dep; fix p5-xml-parser dep

No need to depend on intltool; pulseaudio 13.0 removed its use.

Specify perl version: the current default version, and one for which a \
subport of p5-xml-parser exists.

Closes: #68635

No need to specify "platforms darwin"; that's the default.

Note: See TracTickets for help on using tickets.