• [gentoo-dev] [PATCH] ffmpeg-compat.eclass: new eclass

    From Ionen Wolkens@21:1/5 to All on Sun Mar 9 04:40:01 2025
    Sending this to dev ML in advance given it's simple and "probably"
    won't need to change the code further.

    If interested in the whole deal, see the PR instead: https://github.com/gentoo/gentoo/pull/40942

    --- (actual commit message below)

    Both the slotting method and eclass are meant to be as simple
    as possible, and isolated so that it does not really need to
    work with everything given non-slotted ffmpeg stays.

    Did not want turn ffmpeg into a permanent slotting model with
    a FFMPEG_SLOT use_expand, eselect, or such potentially turning
    it into a special Gentoo-only thing that often need hacks.

    Essentially just a way for broken packages to gain time without
    blocking everyone's ffmpeg updates.

    Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
    ---
    eclass/ffmpeg-compat.eclass | 69 +++++++++++++++++++++++++++++++++++++
    1 file changed, 69 insertions(+)
    create mode 100644 eclass/ffmpeg-compat.eclass

    diff --git a/eclass/ffmpeg-compat.eclass b/eclass/ffmpeg-compat.eclass
    new file mode 100644
    index 000000000000..2d675ab4cc66
    --- /dev/null
    +++ b/eclass/ffmpeg-compat.eclass
    @@ -0,0 +1,69 @@
    +# Copyright 2025 Gentoo Authors
    +# Distributed under the terms of the GNU General Public License v2
    +
  • From Ionen Wolkens@21:1/5 to James Le Cuirot on Sun Mar 9 11:30:02 2025
    On Sun, Mar 09, 2025 at 10:17:42AM +0000, James Le Cuirot wrote:
    +ffmpeg_compat_setup() {
    + (( ${#} == 1 )) || die "Usage: ${FUNCNAME} <slot>"
    +
    + local path=${SYSROOT}$(ffmpeg_compat_get_prefix "${1}")
    + [[ ${PKG_CONFIG_PATH} =~ (.*)"${path}"/[^/]+/pkgconfig:(.*) ]] &&
    + PKG_CONFIG_PATH=${BASH_REMATCH[1]}${BASH_REMATCH[2]}
    + export PKG_CONFIG_PATH=${path}/$(get_libdir)/pkgconfig:${PKG_CONFIG_PATH}
    +}
    +
    +fi

    I like this approach. We've generally been quite good at dragging upstreams to
    the latest, so it would be a shame to go fully slotted.

    The regex check seems like overkill to me, but perhaps I've missed something.

    Well, guess could let the multilib paths accumulate given it'll try
    the first one anyway. It was just cleaning up the previous one that it shouldn't use.


    This currently won't work when cross-compiling as cross-pkg-config currently unsets PKG_CONFIG_PATH, but I have been thinking about changing that. That was
    done to tame non-Gentoo environments, but no one else uses crossdev in reality.

    Really? There's a few others eclasses that set PKG_CONFIG_PATH.. does
    nothing work?
    --
    ionen

    -----BEGIN PGP SIGNATURE-----

    iQEzBAABCAAdFiEEx3SLh1HBoPy/yLVYskQGsLCsQzQFAmfNbP4ACgkQskQGsLCs QzSDGwgApEFrocFOSMKbB91z+M/HJ0SFmqIqX3QJyF92PkHYU/RcgJd7sqwpZ210 z+sqj35QIfkPH90mfTHPxZARAVk5M9gb8PBmA0fxbInXis63/g4pDj4jaeBF0SS7 8LymzwsE2AtTc5G0w3vkm4xFpBThRBQLneQvrJe727+U7rBwlodBC+L/BGdYHyJh wktuSA5AE3l0hTUlxWC7jlmJ3vmupWulDdhpRMcPXHzf5m9u/Rrkgbw0Vy+H8Heh cKYz4MtZeZ0OWYXoqe1ErOt3jNu+NmI0bmshzxhu9hcd3Q3kUSA1EcxJSJHeM1U9 iyjqt2axZ7b0rHJ9IgWrQd1acZWptQ==
    =83G3
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From James Le Cuirot@21:1/5 to Ionen Wolkens on Sun Mar 9 11:40:01 2025
    On Sun, 2025-03-09 at 06:27 -0400, Ionen Wolkens wrote:
    On Sun, Mar 09, 2025 at 10:17:42AM +0000, James Le Cuirot wrote:
    +ffmpeg_compat_setup() {
    + (( ${#} == 1 )) || die "Usage: ${FUNCNAME} <slot>"
    +
    + local path=${SYSROOT}$(ffmpeg_compat_get_prefix "${1}")
    + [[ ${PKG_CONFIG_PATH} =~ (.*)"${path}"/[^/]+/pkgconfig:(.*) ]] &&
    + PKG_CONFIG_PATH=${BASH_REMATCH[1]}${BASH_REMATCH[2]}
    + export PKG_CONFIG_PATH=${path}/$(get_libdir)/pkgconfig:${PKG_CONFIG_PATH}
    +}
    +
    +fi

    I like this approach. We've generally been quite good at dragging upstreams to
    the latest, so it would be a shame to go fully slotted.

    The regex check seems like overkill to me, but perhaps I've missed something.

    Well, guess could let the multilib paths accumulate given it'll try
    the first one anyway. It was just cleaning up the previous one that it shouldn't use.


    That's what I thought. I don't mind too much.

    This currently won't work when cross-compiling as cross-pkg-config currently
    unsets PKG_CONFIG_PATH, but I have been thinking about changing that. That was
    done to tame non-Gentoo environments, but no one else uses crossdev in reality.

    Really? There's a few others eclasses that set PKG_CONFIG_PATH.. does
    nothing work?

    Seems like things I haven't generally tried to cross-compile.

    -----BEGIN PGP SIGNATURE-----

    iQJFBAABCAAvFiEEPxcZ3tkwcedKm2a8EiZBXQDdMTcFAmfNbmkRHGNoZXdpQGdl bnRvby5vcmcACgkQEiZBXQDdMTfs+A//W81sNdPqpKETK1gIKhMJFOSnNO9FhTij NhSWdkHCO/ZTfqbafsFUN6XpnzdJ/luyjkv/plQEJGhiAhJQXRhSavUAXyXU6wST 1kh+sJWpQI4IjUANVcALKFc8pf6ApwYCThRsW9Xf0SX/tqh/Z6K567kvGNsRiqhW KP1dbfz3OtCuEZTAQektyhuL9a3cSp+uLYVY8DYMXrLzxfxFxapYYuU/8pjh1tfA 9loQiO7yE/E0tc3n1in5HJ05j1GlugC1x7SkokEQcXNLsxbaHW6TfvG4w/tvNUu8 0WeHeML0PlVawujudpNl53iG8LGptZtjEedbR/kV/xOuQoUBM5Ku3FxdGdvK99uM ahPAW7DS8a0sdV+UJDSlhYcg81C8Nnp7LIMW81fWIo6LNFM57nVwLVeLhygjbTFi k1ZHlXyv88rxrPYHLgIMogZwaZuKQcU1NlAiC7/0y6JOx8G/kP45r2ILlq6RKVWo rjmCD3u8GOLLdMqINdZJg/13qqDgacggoOOJUNrvOczgCtxrOFHlJzFv4aV7MYA0 A2b0upP8XbQbXklMc0woQjfZsd8+AxeZKQ5zv6QzsdnMhD3lBmLV6TEZJ7LqjbGN FZItObq7ZsWvesmrXSjYXpmHIdPzM124FKAGfkLAyCCW/ZBb0Ys994F7E/YuNeIX
    VBp8SBH28Ms=
    =EMFi
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From James Le Cuirot@21:1/5 to Ionen Wolkens on Sun Mar 9 11:20:01 2025
    On Sat, 2025-03-08 at 22:34 -0500, Ionen Wolkens wrote:
    Sending this to dev ML in advance given it's simple and "probably"
    won't need to change the code further.

    If interested in the whole deal, see the PR instead: https://github.com/gentoo/gentoo/pull/40942

    --- (actual commit message below)

    Both the slotting method and eclass are meant to be as simple
    as possible, and isolated so that it does not really need to
    work with everything given non-slotted ffmpeg stays.

    Did not want turn ffmpeg into a permanent slotting model with
    a FFMPEG_SLOT use_expand, eselect, or such potentially turning
    it into a special Gentoo-only thing that often need hacks.

    Essentially just a way for broken packages to gain time without
    blocking everyone's ffmpeg updates.

    Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
    ---
    eclass/ffmpeg-compat.eclass | 69 +++++++++++++++++++++++++++++++++++++
    1 file changed, 69 insertions(+)
    create mode 100644 eclass/ffmpeg-compat.eclass

    diff --git a/eclass/ffmpeg-compat.eclass b/eclass/ffmpeg-compat.eclass
    new file mode 100644
    index 000000000000..2d675ab4cc66
    --- /dev/null
    +++ b/eclass/ffmpeg-compat.eclass
    @@ -0,0 +1,69 @@
    +# Copyright 2025 Gentoo Authors
    +# Distributed under the terms of the GNU General Public License v2
    +
    +# @ECLASS: ffmpeg-compat.eclass
    +# @MAINTAINER:
    +# Ionen Wolkens <ionen@gentoo.org>
    +# @AUTHOR:
    +# Ionen Wolkens <ionen@gentoo.org>
    +# @SUPPORTED_EAPIS: 8
    +# @BLURB: Helper functions to link with slotted ffmpeg-compat libraries
    +# @DESCRIPTION:
    +# To use this, run ``ffmpeg_compat_setup <slot>`` before packages use
    +# pkg-config, depend on media-video/ffmpeg-compat:<slot>=, and ensure
    +# usage of both pkg-config --cflags and --libs (which adds -Wl,-rpath
    +# to find libraries at runtime).
    +#
    +# This eclass is intended as a quick-to-setup alternative to setting
    +# an upper bound on ffmpeg for packages broken with the latest version,
    +# and thus allow users to upgrade their normal ffmpeg.
    +#
    +# This should still be a temporary measure, and it is recommended to
    +# keep migration bugs open rather than consider this eclass as being
    +# the "fix".
    +#
    +# Unlike LLVM_SLOT-style, this does not have USE to select the slot
    +# and should instead pick only the highest one usable until package
    +# is fixed and can use non-slotted ffmpeg again.
    +#
    +# Do *not* use both like ``|| ( <ffmpeg-<ver> ffmpeg-compat:<slot> )``,
    +# the package manager cannot know which version it linked against
    +# without USE flags. Unfortunately means a period where users may
    +# have two identical versions in stable before the newest major version
    +# is stabilized, but idea is to not mangle normal ffmpeg with slotting
    +# logic and make this an isolated temporary deal.
    +
    +case ${EAPI} in
    + 8) ;;
    + *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
    +esac
    +
    +if [[ -z ${_FFMPEG_COMPAT_ECLASS} ]]; then
    +_FFMPEG_COMPAT_ECLASS=1
    +
    +# @FUNCTION: ffmpeg_compat_get_prefix
    +# @USAGE: <slot>
    +# @DESCRIPTION:
    +# Return prefix of the installed ffmpeg-compat:<slot>. Binaries like
    +# ffmpeg will be found under <prefix>/bin if needed. +ffmpeg_compat_get_prefix() {
    + (( ${#} == 1 )) || die "Usage: ${FUNCNAME} <slot>"
    +
    + echo "${EPREFIX}/usr/lib/ffmpeg${1}"
    +}
    +
    +# @FUNCTION: ffmpeg_compat_setup
    +# @USAGE: <slot>
    +# @DESCRIPTION:
    +# Add ESYSROOT's ffmpeg-compat:<slot> to PKG_CONFIG_PATH for the
    +# current ABI. Can be called multiple times for multilib. +ffmpeg_compat_setup() {
    + (( ${#} == 1 )) || die "Usage: ${FUNCNAME} <slot>"
    +
    + local path=${SYSROOT}$(ffmpeg_compat_get_prefix "${1}")
    + [[ ${PKG_CONFIG_PATH} =~ (.*)"${path}"/[^/]+/pkgconfig:(.*) ]] &&
    + PKG_CONFIG_PATH=${BASH_REMATCH[1]}${BASH_REMATCH[2]}
    + export PKG_CONFIG_PATH=${path}/$(get_libdir)/pkgconfig:${PKG_CONFIG_PATH}
    +}
    +
    +fi

    I like this approach. We've generally been quite good at dragging upstreams to the latest, so it would be a shame to go fully slotted.

    The regex check seems like overkill to me, but perhaps I've missed something.

    This currently won't work when cross-compiling as cross-pkg-config currently unsets PKG_CONFIG_PATH, but I have been thinking about changing that. That was done to tame non-Gentoo environments, but no one else uses crossdev in
    reality.


    -----BEGIN PGP SIGNATURE-----

    iQJFBAABCAAvFiEEPxcZ3tkwcedKm2a8EiZBXQDdMTcFAmfNasYRHGNoZXdpQGdl bnRvby5vcmcACgkQEiZBXQDdMTcdGRAAl7HkDpUP863dv4pkmcS2w28CoLTVTsnY vRtKPUFJxC40eWUrXpub6pSLkgtPE7eLIYB7k2Z5BaRAfL9CmgwHtWwCxFD0yGtE gu0IXF4pNB1UZSAO8Oi4A3NefvghGVgKR3Ypp4fnSE4vZTsnxtDNQwnYReJnv96s rTk4pf5OYr8o1BlR/9RVbmE+p9i0wJsTd9KfwolDfSJ/4pY5xsii1yUlIODTJJKQ +znhTkvkZkTs8zl/mC4gzDlIxuFDF2rjShPdAnTXHc+gTMIandujtYtU+UmwvlzW g2r90n6/BTm+exyCKj5HoOG7mfBzENaal9wxdKOLG6Km82xkPjIXpy2o8AieK3EF bObbl1IN0ft+IohFb53gz3Fe0h3SPyItF4bWeKZSJgwfAlzKfHD+GQCpH5lVsd0O UarDSfKFlkJ6E/n6QH1HlwFtXjZ5fukbZg4Rli8p+/DX4yLffjhHBdyrWBBQGKXK mY3WyEHGV/VwtaFIbpOrmNunMFdipsJpYpxyb/HoWBalvBHoZgWJp+T0arUPnx2f sbTTwvTDfyKfGTC/dFXO+kuu1wBRNFWK8hmgQWfc/W6HeYacsSxGoph2xr+mUaWD H2vaDj0oYNMBusmCdWDFHaDg/fnphZhKEYEwdevk7xpYM+hn7c+aWO6msoMcbypg
    PsJmDL7vMlE=
    =yz5O
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ionen Wolkens@21:1/5 to James Le Cuirot on Sun Mar 9 16:30:02 2025
    On Sun, Mar 09, 2025 at 10:33:13AM +0000, James Le Cuirot wrote:
    On Sun, 2025-03-09 at 06:27 -0400, Ionen Wolkens wrote:
    On Sun, Mar 09, 2025 at 10:17:42AM +0000, James Le Cuirot wrote:
    +ffmpeg_compat_setup() {
    + (( ${#} == 1 )) || die "Usage: ${FUNCNAME} <slot>"
    +
    + local path=${SYSROOT}$(ffmpeg_compat_get_prefix "${1}")
    + [[ ${PKG_CONFIG_PATH} =~ (.*)"${path}"/[^/]+/pkgconfig:(.*) ]] &&
    + PKG_CONFIG_PATH=${BASH_REMATCH[1]}${BASH_REMATCH[2]}
    + export PKG_CONFIG_PATH=${path}/$(get_libdir)/pkgconfig:${PKG_CONFIG_PATH}
    +}
    +
    +fi

    I like this approach. We've generally been quite good at dragging upstreams to
    the latest, so it would be a shame to go fully slotted.

    The regex check seems like overkill to me, but perhaps I've missed something.

    Well, guess could let the multilib paths accumulate given it'll try
    the first one anyway. It was just cleaning up the previous one that it shouldn't use.


    That's what I thought. I don't mind too much.

    I went ahead and removed it, on 2nd thought I didn't like it either.
    Thanks.

    This currently won't work when cross-compiling as cross-pkg-config currently
    unsets PKG_CONFIG_PATH, but I have been thinking about changing that. That was
    done to tame non-Gentoo environments, but no one else uses crossdev in reality.

    Really? There's a few others eclasses that set PKG_CONFIG_PATH.. does nothing work?

    Seems like things I haven't generally tried to cross-compile.

    It's used for the same purpose in e.g. lua eclasses which put their
    lua.pc in ${T}. Not looked too closely but python, vala, postgres
    eclasses to do this too. It's likely that cross still "works" given
    it uses the system's .pc file which could be the wrong version.

    Much like how it'll still "work" here by linking to the unslotted
    ffmpeg.. albeit these packages will likely be broken with latest
    version and fail to build :) Been seeing it as the failsafe.

    I do think this should be changed as well anyhow, maybe it could
    only filter paths not in ROOT.. or so I'd like to say, but that
    doesn't handle the T or WORKDIR cases.
    --
    ionen

    -----BEGIN PGP SIGNATURE-----

    iQEzBAABCAAdFiEEx3SLh1HBoPy/yLVYskQGsLCsQzQFAmfNsiEACgkQskQGsLCs QzSNSQf/aKsROyMFFuxXWi0uTujqBfZP3mgonRRwg9lPqPMj7FRiIeOrD/iyRpCJ /tVLU86nORFcSOvVsFDynLFxiqID9m95oOW2P/aRYmf45+wQMMEz5xvP2LO6J/MT UTDGTmzxNCDPpU5fKc3yNClLMPvEVM1mt0KTQf3plIsWGBL+wp8jRcEQ+p19HzTc ClS/8g6pMyukk4YADtjY0WXftQqDHSpa8Hy97ODePs5moIjlbEVi3SB1hyVUmqhV E66J7G1yKvj6wmS//3ZOBVDKA254MmX/OnF+V6yr8SCImkrXuMrvx/YWYM/JrHM6 LtVAAV0K/rHS6GcjEuj0McDyPSpMxQ==
    =enbH
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Eli Schwartz@21:1/5 to Ionen Wolkens on Sun Mar 9 17:50:01 2025
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------GJOZHlA3xOU2O7K4H00rW5sM
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: quoted-printable

    On 3/8/25 10:34 PM, Ionen Wolkens wrote:
    Sending this to dev ML in advance given it's simple and "probably"
    won't need to change the code further.

    If interested in the whole deal, see the PR instead: https://github.com/gentoo/gentoo/pull/40942

    --- (actual commit message below)

    Both the slotting method and eclass are meant to be as simple
    as possible, and isolated so that it does not really need to
    work with everything given non-slotted ffmpeg stays.

    Did not want turn ffmpeg into a permanent slotting model with
    a FFMPEG_SLOT use_expand, eselect, or such potentially turning
    it into a special Gentoo-only thing that often need hacks.

    Essentially just a way for broken packages to gain time without
    blocking everyone's ffmpeg updates.


    What's the advantage of this over, say, just having ffmpeg itself with slotting, but only supporting the tools with the latest slot and having
    all old versions be library-only?


    If you anyways have to modify packages relying on older versions as soon
    as a newer version goes stable, then it seems like there shouldn't be a
    major difference here. And keeping it all in one PN would mean you don't
    have issues with ffmpeg and ffmpeg-compat wanting to install each
    others' libraries and maybe ending up with both installed. You also
    wouldn't need to e.g. maintain the same patchset for multiple packages.


    --
    Eli Schwartz

    --------------GJOZHlA3xOU2O7K4H00rW5sM--

    -----BEGIN PGP SIGNATURE-----

    wnsEABYIACMWIQTnFNnmK0TPZHnXm3qEp9ErcA0vVwUCZ83FsQUDAAAAAAAKCRCEp9ErcA0vVz3v AP0bJ/33J7oCRsjA8P1Z+oh7tDLvvXHjXR6hfF4hHG/TeAD+JYCRywOZtWAEYNB5ea6rrX1dXtyZ qDDeeUQ68lCmog0=
    =lXz5
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ionen Wolkens@21:1/5 to Eli Schwartz on Sun Mar 9 19:50:02 2025
    On Sun, Mar 09, 2025 at 12:45:37PM -0400, Eli Schwartz wrote:
    On 3/8/25 10:34 PM, Ionen Wolkens wrote:
    Sending this to dev ML in advance given it's simple and "probably"
    won't need to change the code further.

    If interested in the whole deal, see the PR instead: https://github.com/gentoo/gentoo/pull/40942

    --- (actual commit message below)

    Both the slotting method and eclass are meant to be as simple
    as possible, and isolated so that it does not really need to
    work with everything given non-slotted ffmpeg stays.

    Did not want turn ffmpeg into a permanent slotting model with
    a FFMPEG_SLOT use_expand, eselect, or such potentially turning
    it into a special Gentoo-only thing that often need hacks.

    Essentially just a way for broken packages to gain time without
    blocking everyone's ffmpeg updates.


    What's the advantage of this over, say, just having ffmpeg itself with slotting, but only supporting the tools with the latest slot and having
    all old versions be library-only?
    If you anyways have to modify packages relying on older versions as soon
    as a newer version goes stable, then it seems like there shouldn't be a
    major difference here. And keeping it all in one PN would mean you don't
    have issues with ffmpeg and ffmpeg-compat wanting to install each
    others' libraries and maybe ending up with both installed. You also
    wouldn't need to e.g. maintain the same patchset for multiple packages.

    Having packages that behave differently within the same namespace
    sound confusing to me (and likely to users too). Not only will they have
    no tools, but have headers and pkg-config files in non-standard
    locations (if not renamed, but that's not better). It's essentially a
    slot that's only for other ebuilds, not users.

    Don't like the idea of juggling which version provides what too.
    Like stable ffmpeg-6.1.2 w/ tools, ~arch ffmpeg-6.1.2-r1 w/o tools
    plus ~arch ffmpeg-7.1.1 w/ tools. Kind of confusing and not clear-cut.
    Plus we may want to keep several branches and versions, maybe a user
    actually wants ffmpeg-6's tools due to some niche regression until
    it's fixed. Having all this under media-video/ffmpeg feels messy.

    wrt same time, if we *really* don't want that, could always have them
    either block each others until versions get cleaned up, it ends up
    being the same save for the patches bit.

    ...but it feels like an unnecessary restriction to me, even if we sync
    up all stabilizations perfectly, users will do still accept_keywords
    and such (esp. ~arch-only packages) and then run into blockers without necessarily wanting the latest ffmpeg too.

    Also, I'm hoping for usage of ffmpeg-compat to be really low. It's
    meant to be a isolated last resort, new ffmpeg major versions will
    still be added masked, then we'll try to fix most packages esp.
    popular ones, and then give ffmpeg-compat to the rest and hopefully
    not get it on many users' system. Problem is that (right now) it's
    staying masked for way too long.

    wrt patches, current ffmpeg-compat is sharing patches through a tarball
    right now, good excuse to kill the 128kB files/ -- not that we couldn't duplicate a few patches on short notice (but I agree it's not ideal).
    The ebuilds are also identical, ffmpeg-compat is not meant to be
    maintained on its own until the non-compat equivalent is removed,
    just copy incl. keywords. The ${PN} change currently acts as the
    trigger to become slotted (not that changing a variable instead would
    be a big deal).
    --
    ionen

    -----BEGIN PGP SIGNATURE-----

    iQEzBAABCAAdFiEEx3SLh1HBoPy/yLVYskQGsLCsQzQFAmfN4lMACgkQskQGsLCs QzTBoAf8CLgT3sPntBroh2NIK4bZHBc5H0bhFuS2BHP4hEJouOwv2OVDrcAsHRG3 5Zm/0OzUiix7yZFroTON3oOAAcFNie2oIJgdKumSqA2D++AI4/d/ZI1yhx6syvj3 mPbfMRda53ujpnqmykMB17g9o4BU2rbEb0UhgF9YeZK1uJxRoggrfiFQuTnvP0gk DyJlmozn6KRAQnYcJqrgFThjYk0rbTZ+NdOXTzaWzqVCcliVx0P+I7AiWJsrarKj 5Whj0+dqws79ISB+awQht2TrybcPsSh4DzfNpBEav8jpAC9BivKYoV10+7BSqMKA MZH4o3n6tln0chpBwyqEVIekASYVvw==
    =Wqus
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ionen Wolkens@21:1/5 to Ionen Wolkens on Sun Mar 9 20:40:02 2025
    On Sat, Mar 08, 2025 at 10:34:31PM -0500, Ionen Wolkens wrote:
    Sending this to dev ML in advance given it's simple and "probably"
    won't need to change the code further.

    If interested in the whole deal, see the PR instead: https://github.com/gentoo/gentoo/pull/40942
    On a side-note, the ffmpeg ebuild was also rewritten in that PR which
    may be of more interest than the slotting to some.

    See the `rewrite live ebuild` commit message if want details, some
    changes are debatable and may anger some users, albeit I'm mostly
    aiming for stabler ffmpeg.
    --
    ionen

    -----BEGIN PGP SIGNATURE-----

    iQEzBAABCAAdFiEEx3SLh1HBoPy/yLVYskQGsLCsQzQFAmfN7VsACgkQskQGsLCs QzRZ2gf/QjoafumqPq0llu41xoAZ7cXT1kJxhmxmKmSPGj7/lY3ZNEJ6DPyvxQxy u99mbLYO3BgOWcBjcJJTigmRTBw+oFQ2/NuFDeO2JhaDCWNS6rEuMFINnBlRJ69G ghppDcnPps9hnMNDsKcrg9PJwsYK60/0bDSx1YxQptV4Bk5J3xPVeNVn9EJFd28p vWuSWWI11A+Xyea/32DFwoTVGTehdPhWycVaVZa8xWjrJhV40z4WlQ7ffWPKpFIO nM8GuOpmj1olxqTjSKBrnKUlySAIs+LlE78i386S1C8cyq7VfLGsmdsULpmPKqjs ICYbFMwkJ3m2Eqy1XeYimLtG6HMQzw==
    =iW2A
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Duncan@21:1/5 to All on Tue Mar 11 05:40:01 2025
    Ionen Wolkens posted on Sun, 9 Mar 2025 15:34:51 -0400 as excerpted:

    On Sat, Mar 08, 2025 at 10:34:31PM -0500, Ionen Wolkens wrote:
    Sending this to dev ML in advance given it's simple and "probably"
    won't need to change the code further.

    So the will-be-slot tracker bugs may in the (long) bug list at the bottom
    of the PR, but I didn't see them specifically named either here or in the
    PR. In the interest of preventing duplicated effort here's what I found

    https://bugs.gentoo.org/831437 ffmpeg-5 (4 compat)

    One remaining open bug. media-sound/moc. Latest in-tree is a 2016
    alpha. There are active users and newer overlay versions with ffmpeg-6
    compat at least. Alternatives are killing USE=ffmpeg or last-riting.

    Bottom line: As the PM says a 4-compat slot is likely to be short-lived.

    https://bugs.gentoo.org/901257 ffmpeg-6.0 (5 compat)

    Again just one open bug, and shorter list in general. But that bug is media-libs/gegl (gimp dep). Test not build failure and upstream
    apparently says no big deal. Again killing USE=ffmpeg is one (bad?) alternative. From the bug it's almost good with ffmpeg-7 (one remaining
    test failure.)

    Bottom line: An ffmpeg-6 compat slot /could/ be short-lived as well, and
    if not, certainly the slot should indeed be very limited usage (gegl only unless something else pops up).

    https://bugs.gentoo.org/928905 ffmpeg-7.0 (6 compat, deps on the above
    two also)

    As might be expected ffmpeg-7 still has a decent number of open bugs, tho
    a scan suggests ~2/3 are fixed already. The 6-compat slot would thus get
    more usage including (as of my last sync) both xine-lib and mplayer latest (non-live) in-tree, so many users will likely need it.

    If interested in the whole deal, see the PR instead:
    https://github.com/gentoo/gentoo/pull/40942
    On a side-note, the ffmpeg ebuild was also rewritten in that PR which
    may be of more interest than the slotting to some.

    See the `rewrite live ebuild` commit message if want details, some
    changes are debatable and may anger some users, albeit I'm mostly aiming
    for stabler ffmpeg.

    Having looked over that live ebuild commit message, LGTM; yes a bunch of changes but no "anger some users" here! =:^)

    (FWIW I'm on ffmpeg-live (due to firefox/youtube stalls on the last
    release I checked that are fixed in live) and seem to have 1/2-2/3 the USE
    flag changes set already. I'll likely set the others on next update (as
    you surely already know the ffmpeg-live commit-stream's a firehose so it's
    a virtually guaranteed smart-live-rebuild), whether the rewrite's in-tree
    or not by then.)

    --
    Duncan - List replies preferred. No HTML msgs.
    "Every nonfree program has a lord, a master --
    and if you use the program, he is your master." Richard Stallman

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ionen Wolkens@21:1/5 to Duncan on Tue Mar 11 06:20:01 2025
    On Tue, Mar 11, 2025 at 04:37:50AM -0000, Duncan wrote:
    Ionen Wolkens posted on Sun, 9 Mar 2025 15:34:51 -0400 as excerpted:

    On Sat, Mar 08, 2025 at 10:34:31PM -0500, Ionen Wolkens wrote:
    Sending this to dev ML in advance given it's simple and "probably"
    won't need to change the code further.

    So the will-be-slot tracker bugs may in the (long) bug list at the bottom
    of the PR, but I didn't see them specifically named either here or in the PR. In the interest of preventing duplicated effort here's what I found

    Yes, migration & tracker bugs haven't been handled yet, that's for
    a follow up (after merge). The only exception is moc which is used
    as an example.

    Right now this is mostly fixing bugs of ffmpeg itself, not the bugs
    of revdeps, all while preparing things to start checking these.

    Bottom line: As the PM says a 4-compat slot is likely to be short-lived.

    Indeed, albeit still need to recheck some of the in-tree packages
    (likewise for other ffmpeg versions), tracker bugs can be missing
    things esp. if some devs added upper bounds without filing a bug.
    For ffmpeg-7, some may still need to be discovered -- tinderboxes
    unmasking it sometimes don't catch everything.

    Can probably kill 4 anytime anyhow, but no hurry, ffmpeg-4 isn't too
    broken yet.

    See the `rewrite live ebuild` commit message if want details, some
    changes are debatable and may anger some users, albeit I'm mostly aiming for stabler ffmpeg.

    Having looked over that live ebuild commit message, LGTM; yes a bunch of changes but no "anger some users" here! =:^)

    Cool :)
    --
    ionen

    -----BEGIN PGP SIGNATURE-----

    iQEzBAABCAAdFiEEx3SLh1HBoPy/yLVYskQGsLCsQzQFAmfPxrUACgkQskQGsLCs QzTKGAf/eswMiHCttvZghfUFjVFPEGdLSRsY0fuPamQlGUrDnZsxPj02vQp7SwZW 78ljqHxVqfH62h4kKLdiktRdRmW/Hq5GWkin96RKbPraFNVdZw0O1BcZIXEx2LHf 1NAJrqmiNtFkneMfdrHO1eY3ZsZpd5fSTjepI/4yeWS6KN2k6kn2Bc+uKSGD5LCz pHW+UXGp8M0aGxeruR/xG6wcd1mJcgg+GBlRG+b0U/VXGo3IS4It0DTNXxv08Aku krCXsdFKh5iE/zEO+N3A/5x3P1M31mGl5vuc27Fs7OqdUOOSNakO3rY+I9bu+fBG XHh9d0Ke1Wrx3epM19hPp0pKHyodQA==
    =mfEk
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)