Opened 2 years ago

Closed 10 months ago

#64675 closed enhancement (fixed)

libvpx @1.11.0: builds for PPC, update ffmpeg accordingly (also perhaps remove disabling of zimg and x265)

Reported by: barracuda156 Owned by: mascguy (Christopher Nielsen)
Priority: Normal Milestone:
Component: ports Version: 2.7.1
Keywords: powerpc, leopard, tiger Cc:
Port: libvpx, ffmpeg

Description (last modified by barracuda156)

I open a new ticket referring from here: https://trac.macports.org/ticket/64653

So far I have been able to fix libvpx 1.5.0 and 1.6.1 to build for PowerPC.

36-47:~ svacchanda$ port -v installed libvpx
The following ports are currently installed:
  libvpx @1.6.1_0 (active) requested_variants='-universal' platform='darwin 9' archs='ppc' date='2022-02-16T21:07:00+0800'
44-49:~ svacchanda$ port -v installed libvpx 
The following ports are currently installed:
  libvpx @1.6.1_0 (active) requested_variants='' platform='darwin 8' archs='ppc' date='2022-02-16T22:09:12+0800'

It is quite probable later versions will build too, even though starting from 1.7.0 identical fixes fail to work (possibly introduction of powerpc64le there messes things up). I will still try to fix the latest libvpx for PowerPC and update here once/if that succeeds.

ffmpeg port file can be updated, as now it has:

    # as of 1.6.0 libvpx only supports darwin 10 or later
    if {${os.major} < 10} {
        depends_lib-delete path:lib/pkgconfig/vpx.pc:libvpx
        configure.args-replace --enable-libvpx --disable-libvpx
    }

However 1.6.1 already builds on 10.5.8 and 10.4.11 (and 10.6 PPC too).

Change History (17)

comment:1 Changed 2 years ago by barracuda156

Description: modified (diff)
Keywords: tiger added

comment:2 Changed 2 years ago by mascguy (Christopher Nielsen)

Cc: mascguy added

comment:3 Changed 2 years ago by barracuda156

There is some success towards this end. I was able to build the latest version of libvpx for generic-gnu target, rebuild ffmpeg with it and verify it actually can encode a webm video file.

36-47% port -v installed libvpx
The following ports are currently installed:
  libvpx @1.5.0_0 requested_variants='' platform='darwin 10' archs='ppc' date='2022-02-15T17:21:42+0800'
  libvpx @1.6.1_0 requested_variants='' platform='darwin 10' archs='ppc' date='2022-02-15T19:15:51+0800'
  libvpx @1.11.0_0 (active) requested_variants='' platform='darwin 10' archs='ppc' date='2022-02-17T19:46:03+0800'
36-47% port -v installed ffmpeg 
The following ports are currently installed:
  ffmpeg @4.4.1_1+gpl2 requested_variants='+gpl2' platform='darwin 10' archs='ppc' date='2022-02-15T18:07:25+0800'
  ffmpeg @4.4.1_1+gpl2+gpl3+nonfree (active) requested_variants='+gpl2+gpl3+nonfree' platform='darwin 10' archs='ppc' date='2022-02-17T20:21:06+0800'

At the moment ppc-specific targets remain broken.

comment:4 Changed 2 years ago by barracuda156

I have built it on Leopard for ppc32 target:

36-47:~ svacchanda$ port -v installed libvpx
The following ports are currently installed:
  libvpx @1.6.1_0 requested_variants='-universal' platform='darwin 9' archs='ppc' date='2022-02-16T21:07:00+0800'
  libvpx @1.11.0_1 (active) requested_variants='' platform='darwin 9' archs='ppc' date='2022-02-19T01:12:05+0800'

Cannot test it right now because pango fails which I need to build ffmpeg: https://trac.macports.org/ticket/64690

comment:5 Changed 2 years ago by barracuda156

After more testing, I can sum up current state of things:

  1. PowerPC targets are broken for recent versions of libvpx. I can't make them work and probably won't try further. They do work on libvpx 1.6.1 though, which may be good enough (in particular, ffmpeg port file refers specifically to 1.6.1).
  1. The latest version of libvpx still can be built for PowerPC (at least ppc32, I cannot test ppc64 at the moment since some needed dependencies don't build for it), if generic-gnu target is used. It appears functional. I have rebuilt ffmpeg with it and was able to encode a webm video.
  1. There is a hack to pass darwin- and ppc-specific flags to compiler by adding them under generic-gnu target in configure.sh. I dunno if that does more good than bad or if it's a good idea at all. But at least it works, and resulting libvpx is functional.
36-47% port -v installed libvpx
The following ports are currently installed:
  libvpx @1.5.0_0 requested_variants='' platform='darwin 10' archs='ppc' date='2022-02-15T17:21:42+0800'
  libvpx @1.6.1_0 requested_variants='' platform='darwin 10' archs='ppc' date='2022-02-15T19:15:51+0800'
  libvpx @1.11.0_0 requested_variants='' platform='darwin 10' archs='ppc' date='2022-02-17T19:46:03+0800'
  libvpx @1.11.0_1 (active) requested_variants='' platform='darwin 10' archs='ppc' date='2022-02-19T04:03:08+0800'
36-47% port -v installed ffmpeg
The following ports are currently installed:
  ffmpeg @4.4.1_1+gpl2 requested_variants='+gpl2' platform='darwin 10' archs='ppc' date='2022-02-15T18:07:25+0800'
  ffmpeg @4.4.1_1+gpl2+gpl3+nonfree (active) requested_variants='+gpl2+gpl3+nonfree' platform='darwin 10' archs='ppc' date='2022-02-19T04:48:23+0800'

I made several patches (some of which may be redundant, since initially I tried to make ppc targets work) and some changes in port files. At this point I would appreciate if somebody is interested to review and test. I am no expert here, and honestly don't want to spend more time on this. If anyone wants me to test libvpx in some way, I am ready to, but I will need a specific instruction on what to do. So far I only tested encoding, at that worked.

Some extra details are in this thread: https://trac.macports.org/ticket/64653

  1. S. I also don't understand why ffmpeg portfile disables zimg and x265 for ppc systems. I have them built for ppc:
36-47% port -v installed x265
The following ports are currently installed:
  x265 @3.4_0 (active) requested_variants='' platform='darwin 10' archs='ppc' date='2021-12-11T21:39:50+0800'
36-47% port -v installed zimg
The following ports are currently installed:
  zimg @3.0.3_0 (active) requested_variants='' platform='darwin 10' archs='ppc' date='2022-01-28T20:40:51+0800'
36-47% port -v installed libsdl2
The following ports are currently installed:
  libsdl2 @2.0.3_0 (active) requested_variants='' platform='darwin 10' archs='ppc' date='2022-02-14T20:01:16+0800'

libsdl2 also builds, even though an older version.

comment:6 Changed 2 years ago by barracuda156

Summary: fix libvpx for PowerPC and update ffmpeg accordinglylivpx @1.11.0 has built for PowerPC: update ffmpeg accordingly (also perhaps remove disabling of zimg and x265)

comment:7 Changed 23 months ago by mascguy (Christopher Nielsen)

Cc: mascguy removed
Owner: set to mascguy
Status: newassigned
Summary: livpx @1.11.0 has built for PowerPC: update ffmpeg accordingly (also perhaps remove disabling of zimg and x265)libvpx @1.11.0: builds for PPC, update ffmpeg accordingly (also perhaps remove disabling of zimg and x265)

comment:8 Changed 21 months ago by Christopher Nielsen <mascguy@…>

In 021f2739c79736c394a00bf29d620a650a6f6a47/macports-ports (master):

ffmpeg-upstream: enable zimg and x265 across-the-board

  • Also add new av1 codecs, already present in ffmpeg/ffmpeg-devel

See: #64675

comment:9 Changed 21 months ago by Christopher Nielsen <mascguy@…>

In 36a57c6622c70ce9ff2ac9e07c94d7f5c28302ac/macports-ports (master):

ffmpeg/ffmpeg-devel: enable zimg and x265 across-the-board
See: #64675

comment:10 in reply to:  5 ; Changed 21 months ago by mascguy (Christopher Nielsen)

Replying to barracuda156:

I also don't understand why ffmpeg portfile disables zimg and x265 for ppc systems.

There has been significant evolution over the past few years, relative to toolchains, etc. Thus allowing these ports to build across-the-board now.

So it was simply an oversight, and glad you brought it up. Thanks for identifying this Sergey!

comment:11 in reply to:  10 Changed 21 months ago by barracuda156

Replying to mascguy:

There has been significant evolution over the past few years, relative to toolchains, etc. Thus allowing these ports to build across-the-board now.

Great, thank you!

comment:12 Changed 13 months ago by barracuda156

What is still due:

  1. Disable libsdl2 for Rosetta until fixed.
  2. Enable aom for 10.6.
  3. Enable dav1d for 10.6 ppc/Rosetta (i.e., remove blacklist of ppc).
  4. Enable svt-av1 for 10.6.

comment:13 Changed 11 months ago by Christopher Nielsen <mascguy@…>

In 3d22814a8a87d9c48931e8b37c870a8143f32cf7/macports-ports (master):

ffmpeg*: enable rav1e for 10.6
See: #64675

comment:14 in reply to:  13 ; Changed 11 months ago by barracuda156

Replying to Christopher Nielsen <mascguy@…>:

In 3d22814a8a87d9c48931e8b37c870a8143f32cf7/macports-ports (master):

ffmpeg*: enable rav1e for 10.6
See: #64675

We do not have Rust on ppc, so this change breaks both Rosetta and 10.6 ppc.

comment:15 in reply to:  14 ; Changed 11 months ago by mascguy (Christopher Nielsen)

Replying to barracuda156:

Replying to Christopher Nielsen <mascguy@…>:

In 3d22814a8a87d9c48931e8b37c870a8143f32cf7/macports-ports (master):

ffmpeg*: enable rav1e for 10.6
See: #64675

We do not have Rust on ppc, so this change breaks both Rosetta and 10.6 ppc.

Fixed in commit: https://github.com/macports/macports-ports/commit/818da5dea9fa4f356bf0cf00577d0a90d1b43c83

comment:16 in reply to:  15 Changed 11 months ago by barracuda156

Replying to mascguy:

Replying to barracuda156:

Replying to Christopher Nielsen <mascguy@…>:

In 3d22814a8a87d9c48931e8b37c870a8143f32cf7/macports-ports (master):

ffmpeg*: enable rav1e for 10.6
See: #64675

We do not have Rust on ppc, so this change breaks both Rosetta and 10.6 ppc.

Fixed in commit: https://github.com/macports/macports-ports/commit/818da5dea9fa4f356bf0cf00577d0a90d1b43c83

Thank you! That was fast.

comment:17 Changed 10 months ago by mascguy (Christopher Nielsen)

Resolution: fixed
Status: assignedclosed

I believe this has all been covered, closing as fixed.

Note: See TracTickets for help on using tickets.