Opened 5 months ago

Closed 5 months ago

#69764 closed defect (fixed)

mpv @0.37.0: ERROR: Program 'rst2man rst2man-3.12.py' not found or not executable

Reported by: eirnym (Eir Nym) Owned by: Ionic (Mihai Moldovan)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: i0ntempest, jmroot (Joshua Root), lukaso (Lukas Oberhuber), mascguy (Christopher Nielsen)
Port: mpv, py-docutils

Description

I did a clean install today and found that mpv doesn't recognize rst2man installed py312-docutils. Quick look in logs and contents of py312-docutils revials the reason of this problem.

I put relevant logs below where it's clearly shown that mpv looks for rst2man or rst2man-3.12.py while py312-docutils installs rst2man-3.12.

I see a very small patch to solve this issue: add rst2man-3.12 to a search list in meson configuration file.

It's very annoyng for me to have to select py312-docutils then deselect it to uninstall

relevant log file:

:info:configure Message: Detected Swift library directory: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx
:info:configure Has header "AppKit/NSTouchBar.h" : YES 
:info:configure Program rst2man rst2man-3.12.py found: NO
:info:configure meson.build:1567:10: ERROR: Program 'rst2man rst2man-3.12.py' not found or not executable
:info:configure A full log can be found at /opt/local/var/macports/build/_opt_macports_ports_multimedia_mpv/mpv/work/build/meson-logs/meson-log.txt
:info:configure Command failed:  cd "/opt/local/var/macports/build/_opt_macports_ports_multimedia_mpv/mpv/work/mpv-0.37.0" && /opt/local/bin/meson setup --prefix=/opt/local --buildtype=release -Dmanpage-build=enabled -Dcoreaudio=enabled -Dcocoa=enabled -Dcplugins=enabled -Dzlib=enabled -Dswift-build=enabled -Dhtml-build=disabled -Dvideotoolbox-gl=enabled -Dcuda-hwaccel=disabled -Dopensles=disabled -Degl-drm=disabled -Degl-angle-lib=disabled -Degl-angle-win32=disabled -Daudiounit=disabled -Dios-gl=disabled -Ddirect3d=disabled -Dandroid-media-ndk=disabled -Drpi=disabled -Ddvbin=disabled -Dlibmpv=false -Dcaca=disabled -Dcdda=enabled -Dpthread-debug=disabled -Ddvdnav=enabled -Degl-x11=disabled -Dgl=enabled -Dgl-cocoa=enabled -Dvulkan=enabled -Dgl-x11=disabled -Djack=disabled -Djavascript=disabled -Djpeg=enabled -Dlibarchive=enabled -Dlibbluray=enabled -Dlua=lua5.2 -Dopenal=disabled -Dpdf-build=disabled -Dpulse=disabled -Drubberband=disabled -Duchardet=disabled -Dvapoursynth=disabled -Dx11=disabled -Dxv=disabled /opt/local/var/macports/build/_opt_macports_ports_multimedia_mpv/mpv/work/mpv-0.37.0 /opt/local/var/macports/build/_opt_macports_ports_multimedia_mpv/mpv/work/build --wrap-mode=default 
:info:configure Exit code: 1

Change History (9)

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

Cc: i0ntempest added
Keywords: mpv rst2man removed
Owner: set to Ionic
Status: newassigned
Summary: Mpv doesn't recognized rst2man installed by py312-docutils if it's not defaultmpv @0.37.0: ERROR: Program 'rst2man rst2man-3.12.py' not found or not executable

As shipped from its developers, mpv looks for rst2man this way:

https://github.com/mpv-player/mpv/blob/818ce7c51a6b9179307950e919983e0909942098/meson.build#L1567

rst2man = find_program('rst2man', 'rst2man.py', required: get_option('manpage-build'))

The portfile patches this, replacing rst2man.py with rst2man-3.12.py:

https://github.com/macports/macports-ports/blob/9425b39f9e6c8a20004c94bb6f33b7080d8395e6/multimedia/mpv/Portfile#L288-L291

post-patch {
    set python_ver_dot [string index ${python.version} 0].[string range ${python.version} 1 end]
    reinplace "s|'rst2man.py'|'rst2man-${python_ver_dot}.py'|" ${worksrcpath}/meson.build
}

Instead of patching, the port might use the new meson.native.binaries feature:

https://github.com/macports/macports-ports/pull/23572

set python_ver_dot [string index ${python.version} 0].[string range ${python.version} 1 end]
meson.native.binaries-append \
                    rst2man=${prefix}/bin/rst2man-${python_ver_dot}

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

Cc: jmroot added
Port: py-docutils added

Replying to eirnym:

I put relevant logs below where it's clearly shown that mpv looks for rst2man or rst2man-3.12.py while py312-docutils installs rst2man-3.12.

Note that this is a new problem as of the update of py-docutils to 0.21.1 four days ago. Prior to that, it installed binaries named rst2man-$V.py; now it installs rst2man-$V. This probably affects every port that needs rst2man. Josh, did this have to change? Maybe compatibility symlinks should be put in place?

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

Ok. But it breaks all (?) ports using rst2man, so what do you think about compatibility symlinks? Fixing it once in py-docutils is easier than fixing it in all the other ports.

comment:5 in reply to:  4 Changed 5 months ago by mascguy (Christopher Nielsen)

Cc: lukaso added

Replying to ryandesign:

Ok. But it breaks all (?) ports using rst2man, so what do you think about compatibility symlinks? Fixing it once in py-docutils is easier than fixing it in all the other ports.

I strongly second that idea, as this is also broken in other ports. For example, gdk-pixbuf2, via issue:69747.

comment:6 Changed 5 months ago by mascguy (Christopher Nielsen)

Cc: mascguy added

comment:7 Changed 5 months ago by i0ntempest

comment:8 Changed 5 months ago by i0ntempest

And upstream just dropped 0.38.0. I did change how the patching is done but I'll leave this open until a conclusion is reached here.

comment:9 Changed 5 months ago by i0ntempest

Resolution: fixed
Status: assignedclosed

In 2ba10914291f32e9420d414b35bbac4aaf2c1e2e/macports-ports (master):

mpv: use meson.native.binaries

Closes: #69764

Note: See TracTickets for help on using tickets.