media-sound/picard: Relax PyJWT version requirement again

https://tickets.metabrainz.org/browse/PICARD-3236
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
This commit is contained in:
Andreas Sturmlechner
2026-03-23 21:20:43 +01:00
parent fb73c75e87
commit fb89915e08
2 changed files with 110 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
From a4ac727291d2bdd1bbfd96b85375760cbb7a9fde Mon Sep 17 00:00:00 2001
From: Philipp Wolfer <ph.wolfer@gmail.com>
Date: Sun, 22 Mar 2026 17:01:38 +0100
Subject: [PATCH] PICARD-3236: Revert PyJWT min. required version to 2.0
This was changed to address CVE-2026-32597, but:
1. The minimum supported version should be defined on
technical requirements.
2. This upgraded requirement badly affects Linux distro versioning.
3. To address security issues we must ensure to use
non-vulnerable versions. This is done by uv.lock and
taking care of proper builds.
4. Given our use of JWT tokens CVE-2026-32597 does not seem to affect
Picard.
---
pyproject.toml | 2 +-
uv.lock | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/pyproject.toml b/pyproject.toml
index 48785cb523..0d913b384b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -34,7 +34,7 @@ dependencies = [
"discid~=1.0",
"Markdown~=3.2",
"mutagen~=1.45",
- "PyJWT~=2.12",
+ "PyJWT~=2.0",
"pyobjc-core>=6.2, <13; sys_platform == 'darwin'",
"pyobjc-framework-Cocoa>=6.2, <13; sys_platform == 'darwin'",
"pyobjc-framework-MediaPlayer>=6.2, <13; sys_platform == 'darwin'",

View File

@@ -0,0 +1,77 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
DISTUTILS_USE_PEP517=setuptools
DISTUTILS_SINGLE_IMPL=1
DISTUTILS_EXT=1
inherit distutils-r1 xdg
if [[ ${PV} == *9999* ]]; then
EGIT_REPO_URI="https://github.com/metabrainz/picard"
inherit git-r3
else
if [[ ${PV} == *_p* ]]; then
COMMIT="8e2cdc4a020b6db03006df8551eb3415511d6a13"
SRC_URI="https://github.com/metabrainz/${PN}/archive/${COMMIT}.tar.gz -> ${P}-${COMMIT:0:8}.tar.gz"
S="${WORKDIR}/${PN}-${COMMIT}"
elif [[ ${PV} == *alpha* ]]; then
SRC_URI="https://github.com/metabrainz/${PN}/releases/download/release-${PV/_alpha/a}/${PN}-${PV/_alpha/a}.tar.gz"
S="${WORKDIR}/${PN}-${PV/_alpha/a}"
else
SRC_URI="https://data.musicbrainz.org/pub/musicbrainz/${PN}/${P}.tar.gz"
fi
KEYWORDS="~amd64 ~arm64 ~x86"
fi
DESCRIPTION="Cross-platform music tagger"
HOMEPAGE="https://picard.musicbrainz.org"
LICENSE="GPL-2+"
SLOT="0"
IUSE="discid fingerprints markdown multimedia nls"
# Plugin manager, git based(?): dev-python/pygit2[${PYTHON_USEDEP}]
RDEPEND="
$(python_gen_cond_dep '
dev-python/charset-normalizer[${PYTHON_USEDEP}]
dev-python/fasteners[${PYTHON_USEDEP}]
dev-python/pyjwt[${PYTHON_USEDEP}]
dev-python/pyqt6[gui,multimedia?,network,qml,widgets,${PYTHON_USEDEP}]
dev-python/pyyaml[${PYTHON_USEDEP}]
media-libs/mutagen[${PYTHON_USEDEP}]
discid? ( dev-python/discid[${PYTHON_USEDEP}] )
markdown? ( dev-python/markdown[${PYTHON_USEDEP}] )
')
fingerprints? ( media-libs/chromaprint[tools] )
"
DEPEND="test? ( $(python_gen_cond_dep 'dev-python/pyqt6[testlib,${PYTHON_USEDEP}]') )"
BDEPEND="nls? ( dev-qt/qttools:6[linguist] )"
PATCHES=( "${FILESDIR}/${P}-pyjwt-version.patch" )
distutils_enable_tests pytest
python_compile() {
local build_args=(
--disable-autoupdate
)
if ! use nls; then
build_args+=( --disable-locales )
fi
distutils-r1_python_compile ${build_args[@]}
}
python_install() {
local install_args=(
--disable-autoupdate
--skip-build
)
if ! use nls; then
install_args+=( --disable-locales )
fi
distutils-r1_python_install ${install_args[@]}
}