gentoo/net-misc/yt-dlp/yt-dlp-2025.10.22.ebuild
Ionen Wolkens 34dcb9aa32
net-misc/yt-dlp: add 2025.10.22
Note that this version does *not* use the external n/sig solver yet
(aka using deno), it's a temporary hack workaround to keep youtube
working while yt-dlp finishes working on support for that.

This may result in getting worse format qualities or limitations
but hopefully not the 403 errors.

Users that want to use deno early can use unkeyworded versions marked
_pre like yt-dlp-2025.10.22_pre (may add a 23_pre tomorrow or so to
avoid confusion with the current release)

The *next* yt-dlp real release should have support either way, as noted
in yt-dlp-2025.10.22's changelog.

Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
2025-10-22 21:57:24 -04:00

101 lines
2.9 KiB
Bash

# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=hatchling
PYTHON_COMPAT=( pypy3_11 python3_{11..14} )
inherit distutils-r1 optfeature shell-completion wrapper
if [[ ${PV} == 9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/yt-dlp/yt-dlp.git"
else
SRC_URI="
https://github.com/yt-dlp/yt-dlp/releases/download/${PV}/${PN}.tar.gz
-> ${P}.tar.gz
"
S=${WORKDIR}/${PN}
# note that yt-dlp bumps are typically done straight-to-stable (unless some
# major/breaking changes) given website changes breaks it on a whim
KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 ~riscv x86 ~arm64-macos ~x64-macos"
fi
DESCRIPTION="youtube-dl fork with additional features and fixes"
HOMEPAGE="https://github.com/yt-dlp/yt-dlp/"
LICENSE="Unlicense"
SLOT="0"
RDEPEND="
dev-python/pycryptodome[${PYTHON_USEDEP}]
"
BDEPEND="
test? ( media-video/ffmpeg[webp] )
"
if [[ ${PV} == 9999 ]]; then
IUSE+=" man"
BDEPEND+=" man? ( virtual/pandoc )"
fi
EPYTEST_PLUGINS=()
distutils_enable_tests pytest
python_compile() {
if [[ ${PV} == 9999 ]]; then
# generate missing files in live, not in compile_all nor prepare
# given need lazy before compile and it needs a usable ${PYTHON}
emake completions lazy-extractors $(usev man yt-dlp.1)
"${EPYTHON}" devscripts/update-version.py || die
fi
distutils-r1_python_compile
}
python_test() {
local EPYTEST_DESELECT=(
# fails with FEATURES=network-sandbox
test/test_networking.py::TestHTTPRequestHandler::test_connect_timeout
# fails with FEATURES=distcc, bug #915614
test/test_networking.py::TestYoutubeDLNetworking::test_proxy\[None-expected2\]
# websockets tests break easily depending on dev-python/websockets
# version and, as far as I know, most users do not use/need it --
# thus being neither in RDEPEND nor optfeature (bug #940630,#950030)
test/test_websockets.py
)
epytest -m 'not download'
}
python_install_all() {
dodoc README.md Changelog.md supportedsites.md
if [[ ${PV} == 9999 ]]; then
use man && doman yt-dlp.1
else
doman yt-dlp.1
rm -r -- "${ED}"/usr/share/doc/yt_dlp || die
fi
dobashcomp completions/bash/yt-dlp
dofishcomp completions/fish/yt-dlp.fish
dozshcomp completions/zsh/_yt-dlp
make_wrapper youtube-dl "yt-dlp --compat-options youtube-dl"
}
pkg_postinst() {
optfeature "various features (merging tracks, streamed content)" media-video/ffmpeg
has_version media-video/atomicparsley || # allow fallback but don't advertise
optfeature "embedding metadata thumbnails in MP4/M4A files" media-libs/mutagen
optfeature "decrypting cookies from Chromium-based browsers" dev-python/secretstorage
if [[ ! ${REPLACING_VERSIONS} ]]; then
elog 'A wrapper using "yt-dlp --compat-options youtube-dl" was installed'
elog 'as "youtube-dl". This is strictly for compatibility and it is'
elog 'recommended to use "yt-dlp" directly, it may be removed in the future.'
fi
}