Opened 13 days ago

Closed 4 days 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 13 days 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 13 days 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 13 days 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 13 days 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 13 days ago by mascguy (Christopher Nielsen)

Cc: mascguy added

comment:7 Changed 13 days ago by i0ntempest

comment:8 Changed 13 days 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 4 days 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.