Compare commits

..

41 Commits

Author SHA1 Message Date
24f2aa24d6 Revert "newer binutils for rclone"
This reverts commit 047c5d3312.
2025-08-27 12:30:13 +02:00
047c5d3312 newer binutils for rclone 2025-08-27 12:24:34 +02:00
5cdb624a95 bump flaresolverr 2025-08-25 15:41:09 +02:00
8cb1cbc674 add jackett 2025-08-21 18:41:45 +02:00
6dd236eb3c deps 2025-08-20 14:27:18 +02:00
b58c92b583 deps 2025-08-20 14:26:45 +02:00
2e0cb7e605 xvfb on headless 2025-08-20 14:25:43 +02:00
48f0cea3c9 more deps 2025-08-20 14:23:51 +02:00
0da5f29e34 add more keywords 2025-08-20 12:18:34 +02:00
8e19594216 fix digest 2025-08-20 11:18:12 +02:00
a65243087a fix flaresolverr profile 2025-08-20 11:16:56 +02:00
6a5e482ade fix default 2025-08-20 10:34:27 +02:00
4a5c3bb943 fix digestt 2025-08-20 10:11:49 +02:00
945b561fcf fix libreadline 2025-08-20 10:10:53 +02:00
5c06efea8b add dependencies 2025-08-20 10:05:45 +02:00
3e69566598 cleanup 2025-08-20 09:26:18 +02:00
41d07fcece fix executables 2025-08-20 09:24:37 +02:00
352a73843e add flaresolverr-bin 2025-08-19 17:46:13 +02:00
45ff0697e8 add cjk-fonts 2025-08-07 20:38:45 +02:00
f104c247bc media-video/jellyfin-ffmpeg add 7.1.1.7 2025-07-06 07:03:26 +02:00
e6eb038d7a fix manifest 2025-06-16 19:26:02 +02:00
e11f2eccda bump jellyfin-ffmpeg 2025-06-16 19:23:33 +02:00
54909f7090 bump jellyfin-ffmpeg 2025-06-07 15:20:49 +02:00
b7e4a521fd fix EAPI 2025-06-05 11:54:31 +02:00
5b16489120 remove old beancount 2025-06-04 18:40:17 +02:00
30964fa03f unmask requirements for hiera-eyaml 2025-05-31 21:56:53 +02:00
37ee1202f3 bump jellyfin-ffmpeg 2025-05-29 13:49:43 +02:00
5ac6ecd8bf bump unmask 2025-05-16 21:39:14 +02:00
98dc01849f bump jellyfin-ffmpeg 2025-05-16 17:42:36 +02:00
c8ee5c6b43 bump puppet unmasks 2025-05-09 16:16:47 +02:00
837d79a9bb enable dbus on rpi 2025-05-09 15:56:19 +02:00
8e80eb173f clean up profiles 2025-05-09 15:48:26 +02:00
4a8458991a cleanup and fix python ebuilds 2025-05-08 18:14:18 +02:00
db4eef60f7 upgrade zsnapper ebuild 2025-05-08 17:51:37 +02:00
4f01a68e36 attempt to fix sau... 2025-05-07 18:45:37 +02:00
678ff7ec78 bump jellyfin-ffmpeg 2025-05-01 14:07:59 +02:00
728b97f464 fix mkvtoolnix on server profile 2025-04-28 06:58:38 +02:00
9a649d3723 add beangulp 2025-04-25 12:29:36 +02:00
b0e79963d0 add new beancount 2025-04-25 11:29:59 +02:00
c4e3bc469b bump jellyfin-ffmpeg 2025-04-19 06:38:01 +02:00
a41d4ecf0e bump python-mpv-jsonipc and nvtop 2025-03-30 07:33:52 +02:00
61 changed files with 337 additions and 1070 deletions

View File

@ -1,3 +1,3 @@
DIST feffe-pwgen-1.0.tar.gz 6392 BLAKE2B 104969c8da4eaeede7889fae4d1364b7fba660866cfecaf1342db44cef36da6b797e2711a372b2e6a807494288941c6d02c3063a168f399b721d32326643a2b9 SHA512 9111b3604d2d9166a65a3f641b0d64196e4a8f700c60a82072dac8d6e3bdc7c8f281cb5c278fac59d38b30d50614334cb0b28b5835cecfaf70d045a4df85eff0
EBUILD feffe-pwgen-1.0.ebuild 603 BLAKE2B 32bc71a73a096d8b3aed18682f055946a23340aa7df57ff20e08ff79d8c1dfde60bebfe83387d909cbddcf06e68a2387e808d2f6099556dbd47ea2bfdeccc099 SHA512 5a26257d1cf46ebd1c3b4ee67591f994d4da6ba28ccba26dbb03012ee20e77779144da95816a57cc12f52ca1ed49cb47a998d28865ec74d71059600deb01c759
EBUILD feffe-pwgen-9999.ebuild 603 BLAKE2B 32bc71a73a096d8b3aed18682f055946a23340aa7df57ff20e08ff79d8c1dfde60bebfe83387d909cbddcf06e68a2387e808d2f6099556dbd47ea2bfdeccc099 SHA512 5a26257d1cf46ebd1c3b4ee67591f994d4da6ba28ccba26dbb03012ee20e77779144da95816a57cc12f52ca1ed49cb47a998d28865ec74d71059600deb01c759
EBUILD feffe-pwgen-1.0-r1.ebuild 650 BLAKE2B b3d3642dab1b561939288d174d5d0d4f4f708bb89d13802ea613d44fac2f1d1c09593fe1dcfe1159824960beedf6b2a1f2381e0480b5657392b83e49b6b11366 SHA512 a0049bca146acad6d374e997ee0b00be6de1121eee8ea31c98899a07648671415c97e44c756dd2ee66c87c20c58e4d955385135d37a06230155b02985647d615
EBUILD feffe-pwgen-9999.ebuild 650 BLAKE2B b3d3642dab1b561939288d174d5d0d4f4f708bb89d13802ea613d44fac2f1d1c09593fe1dcfe1159824960beedf6b2a1f2381e0480b5657392b83e49b6b11366 SHA512 a0049bca146acad6d374e997ee0b00be6de1121eee8ea31c98899a07648671415c97e44c756dd2ee66c87c20c58e4d955385135d37a06230155b02985647d615

View File

@ -1,9 +1,10 @@
# Copyright 2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
EAPI=8
PYTHON_COMPAT=( python3_{11,12,13} )
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{12,13} )
inherit distutils-r1
@ -20,6 +21,7 @@ else
fi
RESTRICT="mirror"
LICENSE="BSD"
SLOT="0"
IUSE=""

View File

@ -1,9 +1,10 @@
# Copyright 2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
EAPI=8
PYTHON_COMPAT=( python3_{11,12,13} )
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{12,13} )
inherit distutils-r1
@ -20,6 +21,7 @@ else
fi
RESTRICT="mirror"
LICENSE="BSD"
SLOT="0"
IUSE=""

View File

@ -1,2 +1,2 @@
DIST beancount-2.3.6.tar.gz 1720239 BLAKE2B 769aa27a9edc201e33a85f92780b4140b1758a35ca865255183bdcaf4c515ba3bf4c6711aa2842c9219027a44a7cc334c39b48eb36f5145caa689ba90cda64d5 SHA512 52b65f99753e9473aae7736419d104e46b422b33f854170cc0242a95c1d12483aae95264138f81d28c9a7b50ca961e75163cce83868db5bcc9afe7d2337f3036
EBUILD beancount-2.3.6.ebuild 665 BLAKE2B 79d31fba28505a66a04b03d926194d4bec38dbdff6324568246b4a09383d2334a8e8d19be41564e5f41f1f56b1ad6990331b3cb535bf11c1eda286322bb41128 SHA512 0dff509a67dbe1911f5650ba3dabbcf014c4c6a75aac89cf01cfd0a8dda0d7877b90632989aa92fea6c43a3a233875cd5a987cd54a771cef4ad2814b64747867
DIST beancount-3.1.0.tar.gz 548025 BLAKE2B 5262408fdef8ab171f7f495c821dcd3d0fc8e07021c9a9319fe59ff4acc00b64bf4453067a3ae1c270f1d20b180dfca7ab4ff693a481bc3794c3606828c541ee SHA512 46620ecbde1d380e9d0638d57a652b23af178fa473e69dbe76f41cc60728822acb61436968ea288ddc3c879c7638b1e608475fefab7496d799e67e37b0cf3ffe
EBUILD beancount-3.1.0.ebuild 667 BLAKE2B 11e71f944bf954996c9897f5c55752d511173f2739ccc7c1e4c7d54b2f160c21faa0f4e24c5f8e1a283a1953aaa9ae03e75a63a14be25231f03013deef5c1eac SHA512 35b1309a17325eb2792b9b2018ab4eaa4f0ecf372e37744975a8d75d082b83a35f3281b68ed8ce74661a428bfe0710e276d0ffee7be33f09828ebf6f7c01aa53

View File

@ -3,8 +3,8 @@
EAPI=8
#DISTUTILS_EXT=1
#DISTUTILS_USE_PEP517=meson-python
DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=meson-python
PYTHON_COMPAT=( python3_{11,12,13} )
inherit distutils-r1
@ -20,11 +20,11 @@ KEYWORDS="amd64 ~arm64"
DEPEND="
dev-python/python-dateutil
dev-python/click
dev-python/pytest
dev-python/python-magic
dev-python/bottle"
dev-python/regex
dev-python/mypy
dev-python/python-magic"
RDEPEND="${DEPEND}"
BDEPEND=""
# Because I have no idea...
RESTRICT="test"
RESTRICT="mirror test"

View File

@ -0,0 +1,2 @@
DIST beangulp-0.2.0.tar.gz 224326 BLAKE2B 078e37cb7eb5ddeed704e4be57f3dffa0eb3c16e31710db63339876c9cbee712e93475fd2c03b2b28b10c837eedb92a0a020bda168a2dd5dd43caa7ab40d53d9 SHA512 7c4fbe98068dacff4726f08cb4e3b2403ed23e5322244c7f07cd245b187edf6bc80fc3274c3171c66f554472e1f2ac9ee8dd23eb437bf892fe2224578b6be2d3
EBUILD beangulp-0.2.0.ebuild 814 BLAKE2B 6ef6d6dca8f171fd82a8a2c333b532fe78ddc1ce5e05e82d2a27c734d690ef4411dc11746973e10ea88a96162cc4a75c1aee7ad12d5a3fc29b6cfc293f640abe SHA512 91e40a3a69f02d8c76deccfb7a0ed956232aefd0f3baa7e187e3fa62840a1259a1610c1cc1198894bb9f121c349fcc6dd75494f7cb5d39220badb08e10d4bb17

View File

@ -0,0 +1,40 @@
# Copyright 2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
#DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{11,12,13} )
inherit distutils-r1
DESCRIPTION="Importers framework for Beancount"
HOMEPAGE="https://github.com/beancount/beangulp"
SRC_URI="https://github.com/beancount/beangulp/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 ~arm64"
DEPEND="
app-office/beancount
dev-python/beautifulsoup4
dev-python/chardet
dev-python/click
dev-python/deprecation
dev-python/lxml
dev-python/python-magic"
#petl
RDEPEND="${DEPEND}"
BDEPEND=""
# Because I have no idea...
RESTRICT="mirror test"
src_prepare() {
eapply_user
rm -rf "${WORKDIR}/${PF}/examples"
rm -rf "${WORKDIR}/${PF}/tools"
}

View File

@ -1 +1 @@
EBUILD adbb-9999.ebuild 658 BLAKE2B 5f0c977727e8de4b3b68c20029b1c056fdcd14ca532605c8fdbaf23cc578456ffe206447be6665eab47c9e630dc890ee663c2035744c8070b782aa0edb3d7dc6 SHA512 64b719dfd170a60ab9405517bda1b2fce1eebfcfe5ff1f6a086ffaa7bf49abfb9bdacd3eab3ec7a215af0cdd9f0ad34ddd6573253fc2150a6f96cc973902a65c
EBUILD adbb-9999.ebuild 713 BLAKE2B f4502f467e4e9f3a926abdedc4e926be07f9b6fea1e205980372aef10efbf521df9db7f0805b692aaf848e55203e03beaa461aa5faca7bc744083b7cb6c7eefb SHA512 98ae264627c6000619766914e21afa1864995bb9724bac24ef34af158db05cb43c0e382e841153789d22734eab00c0efa11342d988532d1348337fb370fec700

View File

@ -1,8 +1,9 @@
# Copyright 2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
EAPI=8
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{11,12,13} )
inherit distutils-r1
@ -13,13 +14,14 @@ if [[ ${PV} == *9999 ]] ; then
EGIT_REPO_URI="https://github.com/winterbird-code/adbb.git"
inherit git-r3
KEYWORDS="~amd64"
#else
#SRC_URI="https://gitea.fulh.ax/feffe/zsnapper/archive/v${PV}.tar.gz -> ${P}.tar.gz"
#S="${WORKDIR}/zsnapper"
#KEYWORDS="amd64"
else
SRC_URI="https://github.com/winterbird-code/adbb/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/adbb"
KEYWORDS="amd64"
fi
RESTRICT="mirror"
LICENSE="GPL-3"
SLOT="0"
IUSE=""

View File

@ -1,2 +1,2 @@
DIST python-mpv-jsonipc-1.2.0.tar.gz 11949 BLAKE2B 7f8c02de20e6405e7bf9b5950b240bf78e21e41d1eef52726a50181556607090e418f1775fa830de191c8af47ef78c145c37efdf213bd9255915bd34a20a86e8 SHA512 036d4cc1ee5b08049a64b39847bddebf7061c49c2178f78134e8187fabea38508e1e52f4cde6f6e5bb8fbc5f89faaebedbc86f5ff647d59a7f3e003c3d996e3f
EBUILD python-mpv-jsonipc-1.2.0.ebuild 681 BLAKE2B bb4d5d11b7ee1f10c0de51cd8546491f23fae7334b47a2d15193c925737a9dd0d2cf1f3c91d0a96aabe574daca51df730a99244504b0afcd1ebbfae1bf7ebb36 SHA512 7732794d5123f24e5d5243902f479e4bfe852659c56f2c2c900c49b4ad2944020a24f622d9405636b1acaccf4a328578df4d393d80f677ef701d599211853d8b
DIST python-mpv-jsonipc-1.2.1.tar.gz 11961 BLAKE2B dc80bf634178a630971ab36f99301285743542c17e11e232f46dd6f34ce212890a1b45710431d83fa0ceb98cd08429c800e3f73245274e664ffe73890721db40 SHA512 e55e4a52ea36d5d9ef0447ccd1da367c04e6487edce233902c1a1ec45db4aa29006ddd4528ae160f449811dccbc26e7efc6011f69d7fb40b26a74e8e0ec0467e
EBUILD python-mpv-jsonipc-1.2.1.ebuild 681 BLAKE2B bb4d5d11b7ee1f10c0de51cd8546491f23fae7334b47a2d15193c925737a9dd0d2cf1f3c91d0a96aabe574daca51df730a99244504b0afcd1ebbfae1bf7ebb36 SHA512 7732794d5123f24e5d5243902f479e4bfe852659c56f2c2c900c49b4ad2944020a24f622d9405636b1acaccf4a328578df4d393d80f677ef701d599211853d8b

View File

@ -1,3 +0,0 @@
DIST bento4-1.6.0-639-7-Omega.tar.gz 5481533 BLAKE2B 0636f0c94ebb3246c8720e120f3b505e4a82ed2e37d9ed44351875dcf3fab8bc2e53b83e0be43fb711aac3144d6df3d8ae2ead24fcd55bd116f3c54f07e3c19f SHA512 bf257e5831eec44db944d1313858262c1ba32b6e67564bb8f809a1aa0fc8a55faaaac2357d80f1ce2e794914f6bec5263548e77802db2b9e52998af2b6276809
DIST kodi-inputstream-adaptive-20.3.18.tar.gz 779751 BLAKE2B 201702996b976fde820c8df6abe43b04977946e4ed0d13752e5713db1ca944146915fcdb60b1d6ebdbd42b57678a8f518bc2b683cfc0dc7ba196be85e0cfbef6 SHA512 87435271bedc1e0371356d953a170233c3a259c773f0caec7bf314c23432925215e138c5cac83da1b016fcfd0c9c1a6cbd18c87911a7ef990bc7199ffe2a67de
EBUILD kodi-inputstream-adaptive-20.3.18.ebuild 1074 BLAKE2B 5c000ed0126ea920bada537101c440164a7acfc21ddb9243c8ba875cb6ac132b07df3faa4aacf9e904d42c12eafbcc689d5c8336e8572d6842629c0c1a882d51 SHA512 d277c9361c9a995614af3c74c0e9d0556571f7565c1968d0ce16afa078a720d291be4f4d48fec631c855f0fe46a77b27185e3661118ef79b3258da4cc7fe32e2

View File

@ -1,49 +0,0 @@
# Copyright 2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit kodi-addon
DESCRIPTION="Kodi's Adaptive inputstream addon"
HOMEPAGE="https://github.com/xbmc/inputstream.adaptive.git"
CODENAME="Nexus"
BENTO4_VERSION="1.6.0-639-7-Omega"
KEYWORDS="~amd64 ~x86"
SRC_URI="https://github.com/xbmc/inputstream.adaptive/archive/${PV}-${CODENAME}.tar.gz -> ${P}.tar.gz
https://github.com/xbmc/Bento4/archive/${BENTO4_VERSION}.tar.gz -> bento4-${BENTO4_VERSION}.tar.gz"
S="${WORKDIR}/inputstream.adaptive-${PV}-${CODENAME}"
LICENSE="GPL-2"
SLOT="0"
RESTRICT="!test? ( test )"
IUSE="test"
COMMON_DEPEND="
dev-libs/expat
=media-tv/kodi-20*
"
DEPEND="
${COMMON_DEPEND}
test? ( dev-cpp/gtest )
"
RDEPEND="
${COMMON_DEPEND}
"
src_unpack() {
unpack ${P}.tar.gz
}
src_configure() {
local mycmakeargs=(
-DBUILD_TESTING=$(usex test)
-DENABLE_INTERNAL_BENTO4=ON
-DBENTO4_URL="${DISTDIR}/bento4-${BENTO4_VERSION}.tar.gz"
-DCMAKE_INSTALL_LIBDIR="${EPREFIX}/usr/$(get_libdir)/kodi"
-Wno-dev
)
cmake_src_configure
}

View File

@ -1,7 +0,0 @@
AUX kodi-inputstream-ffmpegdirect-20.5.0-Fix-use-after-free-in-TimeshiftSegment.patch 1001 BLAKE2B ee4624253c0ab6bddd22a8ce5da969eb4e7acd22eb658eaf091fc826f714aa1314898b26a283b4e64233d4c5e5f4766a465bbbea4d4fe7b1997740a46f375d91 SHA512 608b45bf89b1430b6d25cf75f402567c1615e6457c20997efe7175aa631501eb967b5961b5dd9ff1b373de32c5d88f9a4b6da0cb92ef1866dfd81d149938e8aa
AUX kodi-inputstream-ffmpegdirect-20.5.0-Get-extradata-with-extract_extradata-BSF.patch 9834 BLAKE2B d26b4a56ddad02488868c94670440ab369a2016416a606b9f05386b615367028379279e270771d6635c69370e670178bd4dc80d4296d8ea69165b297708ded38 SHA512 77964f8d726e6bad4ea20fc9c5320f36a20047d9d9b999cc154f78e1f38612624a742c23a45ae060289e8507cc122fbd828b6f460e9449fa3e44bbc22ac61c14
AUX kodi-inputstream-ffmpegdirect-20.5.0-ffmpeg5.patch 13078 BLAKE2B 50fa84e7790b06960177cc48a097fca12d1f984bd41db335f98e01ebd2ecca5c4fad8e917af5af8a6d8bcc3408856542d44784834fecbd119a82ee75ec243df4 SHA512 63427c395dea7533c0909cbc43fecf8e14998bb108da50a43c2e755f8fa94cdd74751ce4b09ebc8db1780eaaf1fc717f5e4ed156443f78c9fdd6fb3bf730482b
AUX kodi-inputstream-ffmpegdirect-20.5.0-ffmpeg6.patch 1467 BLAKE2B 1a82346927a978c059e0d69bde63451a5463fec0035b8f32ea735a1fd26374254aec3f4b60041f13a49993542f9244ebf232c734b4aff5c5cece0d1bdde2320f SHA512 6c385aad0afa07379235ee7bd70a11e434befabde46dd5185c90ad85258d4ac5451c8426354f4d6e1e16b4e7c6e6a267843c4abba9a2e6601677c2e7023ce9b1
AUX kodi-inputstream-ffmpegdirect-20.5.0-gcc13.patch 1260 BLAKE2B 601ad71dfe4859e3fda621ce58f5687941e454214295514082e4f463bcc886588b83624b7afb28e204d9479c27ea9ed0bbe3b8b845716ce57cde4df164fbf8a8 SHA512 fbeaa550c562b6c29555c88108813cc6f19699506395e3efe9de54022676ebf3e6da893dde8803ea4d84f6b81563a886aac7c62ddeaab8e427d5e48dd3351eba
DIST kodi-inputstream-ffmpegdirect-20.5.0.tar.gz 289362 BLAKE2B 2e8c63bd47d54f84cade2acb092a8e3ef11c31170071f66b5f22d4aa6fd27992a22b19ecb8070ce7d952f80882fe617e5eaed70dcf325b9bdb579220ddd59688 SHA512 9db8e25f04400635e13cf7c79f7079be9c7ffbf427423abcfc449dcd06f6259dcf9ed1ad1eae1563db239978c8399e054e7c6adcbebb5cc70c4de1c01643d074
EBUILD kodi-inputstream-ffmpegdirect-20.5.0-r1.ebuild 1041 BLAKE2B 1da6ae5dffb038656247fa85e5ab6a495519dbf40b732c9e9a0fdba6fedf8b23c9a231a0a0861c8891ddb2a788cfe9b236d5be853021ae3f7f70fb1fa016daec SHA512 a0a53583c144d39edc7958be3ecd2eebfbfd8b60ccc048b360f0d6fc53386d08569885851c2e4d5962e1837530073b7a53a1df388312fb005ad4768271926a43

View File

@ -1,25 +0,0 @@
From e6541a98b64631836336de17e57efa8e8e0b8425 Mon Sep 17 00:00:00 2001
From: Vasyl Gello <vasek.gello@gmail.com>
Date: Sat, 15 Oct 2022 16:09:20 +0000
Subject: [PATCH] Fix use-after-free in TimeshiftSegment
Signed-off-by: Vasyl Gello <vasek.gello@gmail.com>
---
src/stream/TimeshiftSegment.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/stream/TimeshiftSegment.cpp b/src/stream/TimeshiftSegment.cpp
index 9323a44a..9e1cd09c 100644
--- a/src/stream/TimeshiftSegment.cpp
+++ b/src/stream/TimeshiftSegment.cpp
@@ -90,8 +90,8 @@ void TimeshiftSegment::AddPacket(DEMUX_PACKET* packet)
m_packetBuffer.emplace_back(newPacket);
int secondsSinceStart = 0;
- if (packet->pts != STREAM_NOPTS_VALUE && packet->pts > 0)
- secondsSinceStart = packet->pts / STREAM_TIME_BASE;
+ if (newPacket->pts != STREAM_NOPTS_VALUE && newPacket->pts > 0)
+ secondsSinceStart = newPacket->pts / STREAM_TIME_BASE;
if (secondsSinceStart != m_lastPacketSecondsSinceStart)
{

View File

@ -1,290 +0,0 @@
From 07ea26d7ce6bde1350ceb15380f4908da454f004 Mon Sep 17 00:00:00 2001
From: Vasyl Gello <vasek.gello@gmail.com>
Date: Sat, 15 Oct 2022 16:17:48 +0000
Subject: [PATCH] ffmpeg5: Get extradata with extract_extradata BSF
Fixes the transport stream playback failures described in
https://bugs.debian.org/1016925
@Rogo95 made an excellent technical analysis of the root cause
and reported that to the bug thread.
Later on, James Almer (@jamrial) suggested the solution to use
extract_extradata bitstream filter to replace the removed split()
function.
Finally, I adapted the following code snippet:
https://gist.github.com/moonpfe/f6795d51294d91ee0f82f62ff6985db0
to Kodi and tested it by playing the affected files in TS format.
Signed-off-by: Vasyl Gello <vasek.gello@gmail.com>
---
src/stream/FFmpegStream.cpp | 222 ++++++++++++++++++++++++++++++------
src/stream/FFmpegStream.h | 2 +
2 files changed, 192 insertions(+), 32 deletions(-)
diff --git a/src/stream/FFmpegStream.cpp b/src/stream/FFmpegStream.cpp
index f2140a17..95d1da83 100644
--- a/src/stream/FFmpegStream.cpp
+++ b/src/stream/FFmpegStream.cpp
@@ -29,6 +29,7 @@
#endif
extern "C" {
+#include <libavcodec/bsf.h>
#include <libavutil/dict.h>
#include <libavutil/opt.h>
}
@@ -1586,6 +1587,168 @@ bool FFmpegStream::SeekTime(double time, bool backwards, double* startpts)
return false;
}
+int FFmpegStream::GetPacketExtradata(const AVPacket* pkt, const AVCodecParserContext* parserCtx, AVCodecContext* codecCtx, uint8_t **p_extradata)
+{
+ int extradata_size = 0;
+
+ if (!pkt || !p_extradata)
+ return 0;
+
+ *p_extradata = nullptr;
+
+#if LIBAVFORMAT_BUILD >= AV_VERSION_INT(59, 0, 100)
+ /* extract_extradata bitstream filter is implemented only
+ * for certain codecs, as noted in discussion of PR#21248
+ */
+
+ AVCodecID codecId = codecCtx->codec_id;
+
+ // clang-format off
+ if (
+ codecId != AV_CODEC_ID_MPEG1VIDEO &&
+ codecId != AV_CODEC_ID_MPEG2VIDEO &&
+ codecId != AV_CODEC_ID_H264 &&
+ codecId != AV_CODEC_ID_HEVC &&
+ codecId != AV_CODEC_ID_MPEG4 &&
+ codecId != AV_CODEC_ID_VC1 &&
+ codecId != AV_CODEC_ID_AV1 &&
+ codecId != AV_CODEC_ID_AVS2 &&
+ codecId != AV_CODEC_ID_AVS3 &&
+ codecId != AV_CODEC_ID_CAVS
+ )
+ // clang-format on
+ return 0;
+
+ AVBSFContext *bsf = nullptr;
+ AVPacket *dst_pkt = nullptr;
+ const AVBitStreamFilter *f;
+ AVPacket *pkt_ref = nullptr;
+ int ret = 0;
+ uint8_t *ret_extradata = nullptr;
+ size_t ret_extradata_size = 0;
+
+ f = av_bsf_get_by_name("extract_extradata");
+ if (!f)
+ return 0;
+
+ bsf = nullptr;
+ ret = av_bsf_alloc(f, &bsf);
+ if (ret < 0)
+ return 0;
+
+ bsf->par_in->codec_id = codecCtx->codec_id;
+
+ ret = av_bsf_init(bsf);
+ if (ret < 0)
+ {
+ av_bsf_free(&bsf);
+ return 0;
+ }
+
+ dst_pkt = av_packet_alloc();
+ pkt_ref = dst_pkt;
+
+ ret = av_packet_ref(pkt_ref, pkt);
+ if (ret < 0)
+ {
+ av_bsf_free(&bsf);
+ av_packet_free(&dst_pkt);
+ return 0;
+ }
+
+ ret = av_bsf_send_packet(bsf, pkt_ref);
+ if (ret < 0)
+ {
+ av_packet_unref(pkt_ref);
+ av_bsf_free(&bsf);
+ av_packet_free(&dst_pkt);
+ return 0;
+ }
+
+ ret = 0;
+ while (ret >= 0)
+ {
+ ret = av_bsf_receive_packet(bsf, pkt_ref);
+ if (ret < 0)
+ {
+ if (ret != AVERROR(EAGAIN) && ret != AVERROR_EOF)
+ break;
+
+ continue;
+ }
+
+ ret_extradata = av_packet_get_side_data(pkt_ref,
+ AV_PKT_DATA_NEW_EXTRADATA,
+ &ret_extradata_size);
+ if (ret_extradata &&
+ ret_extradata_size > 0 &&
+ ret_extradata_size < FF_MAX_EXTRADATA_SIZE)
+ {
+ *p_extradata = (uint8_t*)av_malloc(ret_extradata_size + AV_INPUT_BUFFER_PADDING_SIZE);
+ if (!*p_extradata)
+ {
+ Log(LOGLEVEL_ERROR,
+ "%s - failed to allocate %zu bytes for extradata",
+ __FUNCTION__,
+ ret_extradata_size);
+
+ av_packet_unref(pkt_ref);
+ av_bsf_free(&bsf);
+ av_packet_free(&dst_pkt);
+ return 0;
+ }
+
+ Log(LOGLEVEL_DEBUG,
+ "%s - fetching extradata, extradata_size(%zu)",
+ __FUNCTION__,
+ ret_extradata_size);
+
+ memcpy(*p_extradata, ret_extradata, ret_extradata_size);
+ memset(*p_extradata + ret_extradata_size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
+ extradata_size = ret_extradata_size;
+
+ av_packet_unref(pkt_ref);
+ break;
+ }
+
+ av_packet_unref(pkt_ref);
+ }
+
+ av_bsf_free(&bsf);
+ av_packet_free(&dst_pkt);
+#else
+ if (codecCtx && parserCtx && parserCtx->parser && parserCtx->parser->split)
+ extradata_size = parserCtx->parser->split(codecCtx, pkt->data, pkt->size);
+
+ if (extradata_size <= 0 || extradata_size >= FF_MAX_EXTRADATA_SIZE)
+ {
+ Log(LOGLEVEL_DEBUG, "%s - fetched extradata of weird size %zd",
+ __FUNCTION__, extradata_size);
+ return 0;
+ }
+
+ *p_extradata = (uint8_t*)av_malloc(extradata_size + AV_INPUT_BUFFER_PADDING_SIZE);
+ if (!*p_extradata)
+ {
+ Log(LOGLEVEL_ERROR,
+ "%s - failed to allocate %zd bytes for extradata",
+ __FUNCTION__,
+ extradata_size);
+ return 0;
+ }
+
+ Log(LOGLEVEL_DEBUG,
+ "%s - fetching extradata, extradata_size(%zd)",
+ __FUNCTION__,
+ extradata_size);
+
+ memcpy(*p_extradata, pkt->data, extradata_size);
+ memset(*p_extradata + extradata_size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
+#endif
+
+ return extradata_size;
+}
+
void FFmpegStream::ParsePacket(AVPacket* pkt)
{
AVStream* st = m_pFormatContext->streams[pkt->stream_index];
@@ -1617,43 +1780,38 @@ void FFmpegStream::ParsePacket(AVPacket* pkt)
if (parser->second->m_parserCtx &&
parser->second->m_parserCtx->parser &&
- parser->second->m_parserCtx->parser->split &&
!st->codecpar->extradata)
{
- int i = parser->second->m_parserCtx->parser->split(parser->second->m_codecCtx, pkt->data, pkt->size);
- if (i > 0 && i < FF_MAX_EXTRADATA_SIZE)
+ int i = GetPacketExtradata(pkt,
+ parser->second->m_parserCtx,
+ parser->second->m_codecCtx,
+ &st->codecpar->extradata);
+ if (i > 0)
{
- st->codecpar->extradata = (uint8_t*)av_malloc(i + AV_INPUT_BUFFER_PADDING_SIZE);
- if (st->codecpar->extradata)
- {
- Log(LOGLEVEL_DEBUG, "CDVDDemuxFFmpeg::ParsePacket() fetching extradata, extradata_size(%d)", i);
- st->codecpar->extradata_size = i;
- memcpy(st->codecpar->extradata, pkt->data, i);
- memset(st->codecpar->extradata + i, 0, AV_INPUT_BUFFER_PADDING_SIZE);
+ st->codecpar->extradata_size = i;
- if (parser->second->m_parserCtx->parser->parser_parse)
+ if (parser->second->m_parserCtx->parser->parser_parse)
+ {
+ parser->second->m_codecCtx->extradata = st->codecpar->extradata;
+ parser->second->m_codecCtx->extradata_size = st->codecpar->extradata_size;
+ const uint8_t* outbufptr;
+ int bufSize;
+ parser->second->m_parserCtx->flags |= PARSER_FLAG_COMPLETE_FRAMES;
+ parser->second->m_parserCtx->parser->parser_parse(parser->second->m_parserCtx,
+ parser->second->m_codecCtx,
+ &outbufptr, &bufSize,
+ pkt->data, pkt->size);
+ parser->second->m_codecCtx->extradata = nullptr;
+ parser->second->m_codecCtx->extradata_size = 0;
+
+ if (parser->second->m_parserCtx->width != 0)
{
- parser->second->m_codecCtx->extradata = st->codecpar->extradata;
- parser->second->m_codecCtx->extradata_size = st->codecpar->extradata_size;
- const uint8_t* outbufptr;
- int bufSize;
- parser->second->m_parserCtx->flags |= PARSER_FLAG_COMPLETE_FRAMES;
- parser->second->m_parserCtx->parser->parser_parse(parser->second->m_parserCtx,
- parser->second->m_codecCtx,
- &outbufptr, &bufSize,
- pkt->data, pkt->size);
- parser->second->m_codecCtx->extradata = nullptr;
- parser->second->m_codecCtx->extradata_size = 0;
-
- if (parser->second->m_parserCtx->width != 0)
- {
- st->codecpar->width = parser->second->m_parserCtx->width;
- st->codecpar->height = parser->second->m_parserCtx->height;
- }
- else
- {
- Log(LOGLEVEL_ERROR, "CDVDDemuxFFmpeg::ParsePacket() invalid width/height");
- }
+ st->codecpar->width = parser->second->m_parserCtx->width;
+ st->codecpar->height = parser->second->m_parserCtx->height;
+ }
+ else
+ {
+ Log(LOGLEVEL_ERROR, "CDVDDemuxFFmpeg::ParsePacket() invalid width/height");
}
}
}
diff --git a/src/stream/FFmpegStream.h b/src/stream/FFmpegStream.h
index 356905dd..f0634d0f 100644
--- a/src/stream/FFmpegStream.h
+++ b/src/stream/FFmpegStream.h
@@ -109,6 +109,8 @@ class FFmpegStream
bool IsPaused() { return m_speed == STREAM_PLAYSPEED_PAUSE; }
virtual bool CheckReturnEmptyOnPacketResult(int result);
+ int GetPacketExtradata(const AVPacket* pkt, const AVCodecParserContext* parserCtx, AVCodecContext* codecCtx, uint8_t **p_extradata);
+
int64_t m_demuxerId;
mutable std::recursive_mutex m_mutex;
double m_currentPts; // used for stream length estimation

View File

@ -1,319 +0,0 @@
From fcad1884954ec1998f353750dd7332501e204ddb Mon Sep 17 00:00:00 2001
From: Vasyl Gello <vasek.gello@gmail.com>
Date: Sat, 15 Oct 2022 16:08:14 +0000
Subject: [PATCH] Adapt AlwinEsch's ffmpeg5 port patch
Signed-off-by: Vasyl Gello <vasek.gello@gmail.com>
---
src/stream/FFmpegStream.cpp | 96 ++++++++++++++++++++++++++++++++-----
src/stream/FFmpegStream.h | 6 ++-
src/utils/FFmpegCompat.h | 20 ++++++++
3 files changed, 107 insertions(+), 15 deletions(-)
create mode 100644 src/utils/FFmpegCompat.h
diff --git a/src/stream/FFmpegStream.cpp b/src/stream/FFmpegStream.cpp
index 73e0963c..f2140a17 100644
--- a/src/stream/FFmpegStream.cpp
+++ b/src/stream/FFmpegStream.cpp
@@ -462,7 +462,14 @@ DEMUX_PACKET* FFmpegStream::DemuxRead()
// we already check for a valid m_streams[pPacket->iStreamId] above
else if (stream->type == INPUTSTREAM_TYPE_AUDIO)
{
- if (static_cast<DemuxStreamAudio*>(stream)->iChannels != m_pFormatContext->streams[pPacket->iStreamId]->codecpar->channels ||
+#if LIBAVCODEC_BUILD >= AV_VERSION_INT(59, 37, 100) && \
+ LIBAVUTIL_BUILD >= AV_VERSION_INT(57, 28, 100)
+ int codecparChannels =
+ m_pFormatContext->streams[pPacket->iStreamId]->codecpar->ch_layout.nb_channels;
+#else
+ int codecparChannels = m_pFormatContext->streams[pPacket->iStreamId]->codecpar->channels;
+#endif
+ if (static_cast<DemuxStreamAudio*>(stream)->iChannels != codecparChannels ||
static_cast<DemuxStreamAudio*>(stream)->iSampleRate != m_pFormatContext->streams[pPacket->iStreamId]->codecpar->sample_rate)
{
// content has changed
@@ -658,7 +665,7 @@ bool FFmpegStream::Aborted()
bool FFmpegStream::Open(bool fileinfo)
{
- AVInputFormat* iformat = NULL;
+ FFMPEG_FMT_CONST AVInputFormat* iformat = nullptr;
std::string strFile;
m_streaminfo = !m_isRealTimeStream && !m_reopen;;
m_currentPts = STREAM_NOPTS_VALUE;
@@ -729,6 +736,8 @@ bool FFmpegStream::Open(bool fileinfo)
m_streaminfo = true;
}
+ // https://github.com/FFmpeg/FFmpeg/blob/56450a0ee4/doc/APIchanges#L18-L26
+#if LIBAVFORMAT_BUILD < AV_VERSION_INT(59, 0, 100)
if (iformat && (strcmp(iformat->name, "mov,mp4,m4a,3gp,3g2,mj2") == 0))
{
CURL url(m_streamUrl);
@@ -736,6 +745,7 @@ bool FFmpegStream::Open(bool fileinfo)
if (!url.GetProtocol().empty() && !url.IsProtocol("file"))
m_pFormatContext->iformat->flags |= AVFMT_NOGENSEARCH;
}
+#endif
// we need to know if this is matroska, avi or sup later
m_bMatroska = strncmp(m_pFormatContext->iformat->name, "matroska", 8) == 0; // for "matroska.webm"
@@ -785,8 +795,11 @@ bool FFmpegStream::Open(bool fileinfo)
// if format can be nonblocking, let's use that
m_pFormatContext->flags |= AVFMT_FLAG_NONBLOCK;
- // deprecated, will be always set in future versions
+ // https://github.com/FFmpeg/FFmpeg/blob/d682ae70b4/doc/APIchanges#L18-L21
+#if LIBAVFORMAT_BUILD < AV_VERSION_INT(57, 66, 105) && \
+ LIBAVCODEC_BUILD < AV_VERSION_INT(57, 83, 101)
m_pFormatContext->flags |= AVFMT_FLAG_KEEP_SIDE_DATA;
+#endif
UpdateCurrentPTS();
@@ -828,12 +841,23 @@ bool FFmpegStream::Open(bool fileinfo)
{
int idx = m_pFormatContext->programs[i]->stream_index[j];
AVStream* st = m_pFormatContext->streams[idx];
+#if LIBAVFORMAT_BUILD >= AV_VERSION_INT(59, 3, 100)
+ // Related to https://patchwork.ffmpeg.org/project/ffmpeg/patch/20210429143825.53040-1-jamrial@gmail.com/
+ // has been replaced with AVSTREAM_EVENT_FLAG_NEW_PACKETS.
+ if ((st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && (st->event_flags & AVSTREAM_EVENT_FLAG_NEW_PACKETS)) ||
+ (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && st->codecpar->sample_rate > 0))
+ {
+ nProgram = i;
+ break;
+ }
+#else
if ((st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && st->codec_info_nb_frames > 0) ||
(st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && st->codecpar->sample_rate > 0))
{
nProgram = i;
break;
}
+#endif
}
}
@@ -870,7 +894,7 @@ bool FFmpegStream::Open(bool fileinfo)
return true;
}
-bool FFmpegStream::OpenWithFFmpeg(AVInputFormat* iformat, const AVIOInterruptCB& int_cb)
+bool FFmpegStream::OpenWithFFmpeg(FFMPEG_FMT_CONST AVInputFormat* iformat, const AVIOInterruptCB& int_cb)
{
Log(LOGLEVEL_INFO, "%s - IO handled by FFmpeg's AVFormat", __FUNCTION__);
@@ -959,7 +983,7 @@ bool FFmpegStream::OpenWithFFmpeg(AVInputFormat* iformat, const AVIOInterruptCB&
return true;
}
-bool FFmpegStream::OpenWithCURL(AVInputFormat* iformat)
+bool FFmpegStream::OpenWithCURL(FFMPEG_FMT_CONST AVInputFormat* iformat)
{
Log(LOGLEVEL_INFO, "%s - IO handled by Kodi's cURL", __FUNCTION__);
@@ -1039,8 +1063,7 @@ bool FFmpegStream::OpenWithCURL(AVInputFormat* iformat)
// is present, we assume it is PCM audio.
// AC3 is always wrapped in iec61937 (ffmpeg "spdif"), while DTS
// may be just padded.
- AVInputFormat* iformat2;
- iformat2 = av_find_input_format("spdif");
+ FFMPEG_FMT_CONST AVInputFormat* iformat2 = av_find_input_format("spdif");
if (iformat2 && iformat2->read_probe(&pd) > AVPROBE_SCORE_MAX / 4)
{
@@ -1147,11 +1170,19 @@ void FFmpegStream::UpdateCurrentPTS()
if (idx >= 0)
{
AVStream* stream = m_pFormatContext->streams[idx];
+#if LIBAVFORMAT_BUILD >= AV_VERSION_INT(59, 3, 100)
+ if (stream && m_pkt.pkt.dts != (int64_t)AV_NOPTS_VALUE)
+ {
+ double ts = ConvertTimestamp(m_pkt.pkt.dts, stream->time_base.den, stream->time_base.num);
+ m_currentPts = ts;
+ }
+#else
if (stream && stream->cur_dts != (int64_t)AV_NOPTS_VALUE)
{
double ts = ConvertTimestamp(stream->cur_dts, stream->time_base.den, stream->time_base.num);
m_currentPts = ts;
}
+#endif
}
}
@@ -1230,9 +1261,15 @@ bool FFmpegStream::IsProgramChange()
return true;
if (m_pFormatContext->streams[idx]->codecpar->codec_id != stream->codec)
return true;
+#if LIBAVCODEC_BUILD >= AV_VERSION_INT(59, 37, 100) && \
+ LIBAVUTIL_BUILD >= AV_VERSION_INT(57, 28, 100)
+ int codecparChannels =
+ m_pFormatContext->streams[idx]->codecpar->ch_layout.nb_channels;
+#else
+ int codecparChannels = m_pFormatContext->streams[idx]->codecpar->channels;
+#endif
if (m_pFormatContext->streams[idx]->codecpar->codec_type == AVMEDIA_TYPE_AUDIO &&
- m_pFormatContext->streams[idx]->codecpar->channels !=
- static_cast<DemuxStreamAudio*>(stream)->iChannels)
+ codecparChannels != static_cast<DemuxStreamAudio*>(stream)->iChannels)
return true;
if (m_pFormatContext->streams[idx]->codecpar->extradata_size != static_cast<int>(stream->ExtraSize))
return true;
@@ -1564,7 +1601,7 @@ void FFmpegStream::ParsePacket(AVPacket* pkt)
parser->second->m_parserCtx = av_parser_init(st->codecpar->codec_id);
- AVCodec* codec = avcodec_find_decoder(st->codecpar->codec_id);
+ FFMPEG_FMT_CONST AVCodec* codec = avcodec_find_decoder(st->codecpar->codec_id);
if (codec == nullptr)
{
Log(LOGLEVEL_ERROR, "%s - can't find decoder", __FUNCTION__);
@@ -1641,7 +1678,11 @@ TRANSPORT_STREAM_STATE FFmpegStream::TransportStreamAudioState()
{
if (!m_startTime)
{
+#if LIBAVFORMAT_BUILD >= AV_VERSION_INT(59, 3, 100)
+ m_startTime = av_rescale(m_pkt.pkt.dts, st->time_base.num, st->time_base.den) - 0.000001;
+#else
m_startTime = av_rescale(st->cur_dts, st->time_base.num, st->time_base.den) - 0.000001;
+#endif
m_seekStream = idx;
}
return TRANSPORT_STREAM_STATE::READY;
@@ -1661,7 +1702,11 @@ TRANSPORT_STREAM_STATE FFmpegStream::TransportStreamAudioState()
{
if (!m_startTime)
{
+#if LIBAVFORMAT_BUILD >= AV_VERSION_INT(59, 3, 100)
+ m_startTime = av_rescale(m_pkt.pkt.dts, st->time_base.num, st->time_base.den) - 0.000001;
+#else
m_startTime = av_rescale(st->cur_dts, st->time_base.num, st->time_base.den) - 0.000001;
+#endif
m_seekStream = i;
}
return TRANSPORT_STREAM_STATE::READY;
@@ -1694,7 +1739,11 @@ TRANSPORT_STREAM_STATE FFmpegStream::TransportStreamVideoState()
{
if (!m_startTime)
{
+#if LIBAVFORMAT_BUILD >= AV_VERSION_INT(59, 3, 100)
+ m_startTime = av_rescale(m_pkt.pkt.dts, st->time_base.num, st->time_base.den) - 0.000001;
+#else
m_startTime = av_rescale(st->cur_dts, st->time_base.num, st->time_base.den) - 0.000001;
+#endif
m_seekStream = idx;
}
return TRANSPORT_STREAM_STATE::READY;
@@ -1714,7 +1763,11 @@ TRANSPORT_STREAM_STATE FFmpegStream::TransportStreamVideoState()
{
if (!m_startTime)
{
+#if LIBAVFORMAT_BUILD >= AV_VERSION_INT(59, 3, 100)
+ m_startTime = av_rescale(m_pkt.pkt.dts, st->time_base.num, st->time_base.den) - 0.000001;
+#else
m_startTime = av_rescale(st->cur_dts, st->time_base.num, st->time_base.den) - 0.000001;
+#endif
m_seekStream = i;
}
return TRANSPORT_STREAM_STATE::READY;
@@ -1824,14 +1877,31 @@ DemuxStream* FFmpegStream::AddStream(int streamIdx)
{
DemuxStreamAudioFFmpeg* st = new DemuxStreamAudioFFmpeg(pStream);
stream = st;
- st->iChannels = pStream->codecpar->channels;
+#if LIBAVCODEC_BUILD >= AV_VERSION_INT(59, 37, 100) && \
+ LIBAVUTIL_BUILD >= AV_VERSION_INT(57, 28, 100)
+ int codecparChannels = pStream->codecpar->ch_layout.nb_channels;
+ int codecparChannelLayout = pStream->codecpar->ch_layout.u.mask;
+#else
+ int codecparChannels = pStream->codecpar->channels;
+ int codecparChannelLayout = pStream->codecpar->channel_layout;
+#endif
+ st->iChannels = codecparChannels;
+ st->iChannelLayout = codecparChannelLayout;
st->iSampleRate = pStream->codecpar->sample_rate;
st->iBlockAlign = pStream->codecpar->block_align;
st->iBitRate = static_cast<int>(pStream->codecpar->bit_rate);
st->iBitsPerSample = pStream->codecpar->bits_per_raw_sample;
- st->iChannelLayout = pStream->codecpar->channel_layout;
char buf[32] = { 0 };
+ // https://github.com/FFmpeg/FFmpeg/blob/6ccc3989d15/doc/APIchanges#L50-L53
+#if LIBAVCODEC_BUILD >= AV_VERSION_INT(59, 37, 100) && \
+ LIBAVUTIL_BUILD >= AV_VERSION_INT(57, 28, 100)
+ AVChannelLayout layout = {};
+ av_channel_layout_from_mask(&layout, st->iChannelLayout);
+ av_channel_layout_describe(&layout, buf, sizeof(buf));
+ av_channel_layout_uninit(&layout);
+#else
av_get_channel_layout_string(buf, 31, st->iChannels, st->iChannelLayout);
+#endif
st->m_channelLayoutName = buf;
if (st->iBitsPerSample == 0)
st->iBitsPerSample = pStream->codecpar->bits_per_coded_sample;
@@ -2070,7 +2140,7 @@ std::string FFmpegStream::GetStreamCodecName(int iStreamId)
return strName;
}
- AVCodec* codec = avcodec_find_decoder(stream->codec);
+ FFMPEG_FMT_CONST AVCodec* codec = avcodec_find_decoder(stream->codec);
if (codec)
strName = codec->name;
}
diff --git a/src/stream/FFmpegStream.h b/src/stream/FFmpegStream.h
index bf8a50f9..356905dd 100644
--- a/src/stream/FFmpegStream.h
+++ b/src/stream/FFmpegStream.h
@@ -7,6 +7,7 @@
#pragma once
+#include "../utils/FFmpegCompat.h"
#include "../utils/HttpProxy.h"
#include "../utils/Properties.h"
#include "BaseStream.h"
@@ -33,6 +34,7 @@ extern "C"
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libavutil/mastering_display_metadata.h>
+#include <libavutil/version.h>
}
#ifndef __GNUC__
@@ -117,8 +119,8 @@ class FFmpegStream
private:
bool Open(bool fileinfo);
- bool OpenWithFFmpeg(AVInputFormat* iformat, const AVIOInterruptCB& int_cb);
- bool OpenWithCURL(AVInputFormat* iformat);
+ bool OpenWithFFmpeg(FFMPEG_FMT_CONST AVInputFormat* iformat, const AVIOInterruptCB& int_cb);
+ bool OpenWithCURL(FFMPEG_FMT_CONST AVInputFormat* iformat);
AVDictionary* GetFFMpegOptionsFromInput();
void ResetVideoStreams();
double ConvertTimestamp(int64_t pts, int den, int num);
diff --git a/src/utils/FFmpegCompat.h b/src/utils/FFmpegCompat.h
new file mode 100644
index 00000000..46cff53f
--- /dev/null
+++ b/src/utils/FFmpegCompat.h
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2005-2022 Team Kodi
+ * This file is part of Kodi - https://kodi.tv
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ * See LICENSES/README.md for more information.
+ */
+
+#pragma once
+
+extern "C" {
+#include <libavformat/avformat.h>
+}
+
+// https://github.com/FFmpeg/FFmpeg/blob/56450a0ee4/doc/APIchanges#L18-L26
+#if LIBAVFORMAT_BUILD >= AV_VERSION_INT(59, 0, 100)
+#define FFMPEG_FMT_CONST const
+#else
+#define FFMPEG_FMT_CONST
+#endif

View File

@ -1,31 +0,0 @@
From 98ccdd2f4263eb1590c65f175c11deeec18fe6c2 Mon Sep 17 00:00:00 2001
From: Bernd Kuhls <bernd.kuhls@t-online.de>
Date: Fri, 3 Mar 2023 19:33:04 +0100
Subject: [PATCH] Fix build with ffmpeg 6.0
This feature was removed from ffmpeg:
http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=add33e370d241d947209c914de1bf062fe44d58e
---
src/stream/FFmpegStream.cpp | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/stream/FFmpegStream.cpp b/src/stream/FFmpegStream.cpp
index 341062ed..0996b446 100644
--- a/src/stream/FFmpegStream.cpp
+++ b/src/stream/FFmpegStream.cpp
@@ -920,7 +920,6 @@ bool FFmpegStream::OpenWithFFmpeg(const AVInputFormat* iformat, const AVIOInterr
// We only process this condition for manifest streams when this setting is disabled
if (!kodi::addon::GetSettingBoolean("useFastOpenForManifestStreams") || m_manifestType.empty())
{
- m_pFormatContext->flags |= AVFMT_FLAG_PRIV_OPT;
if (avformat_open_input(&m_pFormatContext, strFile.c_str(), iformat, &options) < 0)
{
Log(LOGLEVEL_DEBUG, "Error, could not open file %s", CURL::GetRedacted(strFile).c_str());
@@ -935,7 +934,6 @@ bool FFmpegStream::OpenWithFFmpeg(const AVInputFormat* iformat, const AVIOInterr
}
m_pFormatContext->interrupt_callback = int_cb;
- m_pFormatContext->flags &= ~AVFMT_FLAG_PRIV_OPT;
options = GetFFMpegOptionsFromInput();
av_dict_set_int(&options, "load_all_variants", 0, AV_OPT_SEARCH_CHILDREN);

View File

@ -1,47 +0,0 @@
From fd7bd5ad86fd0006ad571a051fa5d5603a47e4b4 Mon Sep 17 00:00:00 2001
From: Rudi Heitbaum <rudi@heitbaum.com>
Date: Wed, 26 Apr 2023 17:15:00 +0000
Subject: [PATCH] include missing <cstdint> to support gcc-13
gcc 13 moved some includes around and as a result <cstdint> is no longer transitively
included [1]. Explicitly include it for uint{32,64}_t.
[1] https://gcc.gnu.org/gcc-13/porting_to.html#header-dep-changes
Signed-off-by: Rudi Heitbaum <rudi@heitbaum.com>
---
src/utils/DiskUtils.h | 1 +
src/utils/HttpProxy.h | 3 ++-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/utils/DiskUtils.h b/src/utils/DiskUtils.h
index 79e34268..f900ec58 100644
--- a/src/utils/DiskUtils.h
+++ b/src/utils/DiskUtils.h
@@ -7,6 +7,7 @@
#pragma once
+#include <cstdint>
#include <string>
namespace ffmpegdirect
diff --git a/src/utils/HttpProxy.h b/src/utils/HttpProxy.h
index eb0c99cb..d203ce36 100644
--- a/src/utils/HttpProxy.h
+++ b/src/utils/HttpProxy.h
@@ -7,6 +7,7 @@
#pragma once
+#include <cstdint>
#include <string>
namespace ffmpegdirect
@@ -36,4 +37,4 @@ namespace ffmpegdirect
std::string m_user;
std::string m_password;
};
-} //namespace ffmpegdirect
\ No newline at end of file
+} //namespace ffmpegdirect

View File

@ -1,51 +0,0 @@
# Copyright 2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit kodi-addon
DESCRIPTION="Kodi's FFMpeg Direct Inputstream addon"
HOMEPAGE="https://github.com/xbmc/inputstream.ffmpegdirect"
SRC_URI=""
KEYWORDS="~amd64 ~arm ~arm64 ~x86"
CODENAME="Nexus"
SRC_URI="https://github.com/xbmc/inputstream.ffmpegdirect/archive/${PV}-${CODENAME}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/inputstream.ffmpegdirect-${PV}-${CODENAME}"
LICENSE="GPL-2"
SLOT="0"
IUSE=""
BDEPEND="
virtual/pkgconfig
"
COMMON_DEPEND="
media-video/ffmpeg:=[encode,libxml2,zlib]
virtual/libiconv
app-arch/bzip2
=media-tv/kodi-20*
"
DEPEND="
${COMMON_DEPEND}
"
RDEPEND="
${COMMON_DEPEND}
"
PATCHES=(
"${FILESDIR}"/${P}-ffmpeg5.patch
"${FILESDIR}"/${P}-Get-extradata-with-extract_extradata-BSF.patch
"${FILESDIR}"/${P}-Fix-use-after-free-in-TimeshiftSegment.patch
"${FILESDIR}"/${P}-ffmpeg6.patch
"${FILESDIR}"/${P}-gcc13.patch
)
src_prepare() {
[ -d depends ] && rm -rf depends || die
cmake_src_prepare
}

View File

@ -1,2 +0,0 @@
DIST kodi-pvr-hts-20.7.2.tar.gz 218776 BLAKE2B e09b9462f9b8913b1e156c2fa966170e4f59b5d6a88b5694159027006e22ce610a9217eae345f41752a81083a450b3f466db685e03231ae30ffd26884b21675b SHA512 ef16355ff0a9e00a44717ab5216bd88d9a63e745f656694dace73e35437b945034ae852cf1415c04ebab7c1bb102a8cf8b913c7fc8bce49237aa7c3c96c2f290
EBUILD kodi-pvr-hts-20.7.2.ebuild 533 BLAKE2B 07c143a1238780c37408bf45965d13126d554f4bb5cb0e10f1b319ee51f283265b189a949dedf60a4d6a7adfd43bb156524d187523247ecff70af7dcb95ae36c SHA512 aa3072bb411bc3c393f80767d68a217ac56873997eddb38c721a2a668c770b69d85781cfd90538751f32cc518554776a8e9f4b16d98ad94359fbceade63f423f

View File

@ -1,27 +0,0 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit cmake kodi-addon
DESCRIPTION="Tvheadend Live TV and Radio PVR client addon for Kodi"
HOMEPAGE="https://github.com/kodi-pvr/pvr.hts"
SRC_URI=""
CODENAME="Nexus"
KEYWORDS="~amd64 ~x86"
SRC_URI="https://github.com/kodi-pvr/pvr.hts/archive/${PV}-${CODENAME}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/pvr.hts-${PV}-${CODENAME}"
LICENSE="GPL-2"
SLOT="0"
IUSE=""
DEPEND="
=media-tv/kodi-20*
"
RDEPEND="
${DEPEND}
"

View File

@ -1,2 +0,0 @@
DIST kodi-vfs-sftp-20.1.0.tar.gz 45904 BLAKE2B f9c0f4359075609122627fbec2c945d643a844d7cb07eb09d7ab1581856a2c46790a36398e414ba9ef03c4b36eb361f2ea5a5a23aef980a83a8e6124e1b19f52 SHA512 ea2b205a5b4f279f8211a5744d0f5e6efb6346052ba927aef95733e1c964df5b97fc1176e2fa5d2b378561464f868cdc37e564ca120079f6ff70d2e79b48667c
EBUILD kodi-vfs-sftp-20.1.0.ebuild 738 BLAKE2B 82b07146904bf3c2f3af62da6ab1cd80040c8246e86a9d0706af5d024d462bdeb516cf8f14f002870c06b851d6521d88e1114ab181276c3ef6817b50b411ff1f SHA512 774f4ac5d310e7826d120a9e9029b8a631df8159cb331e00c45b595b444a7003859ab9a05a8412c4bb0090a0a3fe26704226fb5d7a4ae5b0f0e0469603e21fd2

View File

@ -1,40 +0,0 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit cmake kodi-addon
DESCRIPTION="SFTP VFS addon for Kodi"
HOMEPAGE="https://github.com/xbmc/vfs.sftp"
SRC_URI=""
case ${PV} in
9999)
SRC_URI=""
EGIT_REPO_URI="https://github.com/xbmc/vfs.sftp.git"
EGIT_BRANCH="Omega"
inherit git-r3
;;
*)
CODENAME="Nexus"
KEYWORDS="~amd64 ~x86"
SRC_URI="https://github.com/xbmc/vfs.sftp/archive/${PV}-${CODENAME}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/vfs.sftp-${PV}-${CODENAME}"
;;
esac
LICENSE="GPL-2"
SLOT="0"
IUSE=""
DEPEND="
net-libs/libssh[sftp]
>=media-tv/kodi-20
"
RDEPEND="${DEPEND}"
src_prepare() {
[ -d depends ] && rm -rf depends || die
cmake_src_prepare
}

View File

@ -1,2 +1,2 @@
DIST jellyfin-ffmpeg_7.0.2-9_portable_linux64-gpl.tar.xz 55574212 BLAKE2B 33d0f7aa85a27623c3a46e75278173259b0116b2c5d68fdfa6fa30c58902382bf512d3ec8088545c76e68e327a3ee121aa7dd9164dfe62873ddb700195edf69c SHA512 cb9e29f4e8b0909aa6ac890ca7a554e9041f7760cfb74bc04f7ffe7baab7d6677d65db96a965e693f0338fcd66544120c93f749a16b03a8f4cf30844519e7079
EBUILD jellyfin-ffmpeg-7.0.2.9.ebuild 801 BLAKE2B d32db6c1a4ccbc816163cf8c3086f76264a2240581319b512c2770ffea4c5a188cb1de7cd539528fe4f8659a789e9cda40568600142cf72645b72db1119c0128 SHA512 1becbe94ab7653190c9083d531b79ff9b4dfb2fc7ea17eac12a98c8888e9551a58ee63d62dd4b844275e70c36362855cadb9e73771c581e19ce159dcfe8ee539
DIST jellyfin-ffmpeg_7.1.1-7_portable_linux64-gpl.tar.xz 58155300 BLAKE2B 3e86256b50260283ba7ca10388b2d671a97b9e0f221f14083e6b152bb124cda1535a56fc946074a11e2ff6d5b11bada47e080042ca864dfdd7c6c3be14da21a7 SHA512 8a505cc036a135ce0fc2e33315f279ef909708b0d16cc07c07dbc3188f77aa6e6d497f650e5ff1339118a96f213fea0dbd54f1c868310fd29327a43bfd908581
EBUILD jellyfin-ffmpeg-7.1.1.7.ebuild 801 BLAKE2B d32db6c1a4ccbc816163cf8c3086f76264a2240581319b512c2770ffea4c5a188cb1de7cd539528fe4f8659a789e9cda40568600142cf72645b72db1119c0128 SHA512 1becbe94ab7653190c9083d531b79ff9b4dfb2fc7ea17eac12a98c8888e9551a58ee63d62dd4b844275e70c36362855cadb9e73771c581e19ce159dcfe8ee539

View File

@ -1,2 +1,2 @@
DIST v0.0.1.tar.gz 3154 BLAKE2B 02a9f0b6ac313597ae04aac98fef28e7f5cbb5d99bd0a4f03d105a9e1448cb2090547bc44cbbc124500fdeddf6d3e778422059266ca3833d975012564b496e34 SHA512 94d205ad24dde3d68e836699794e4cd8bc7243765a57808926aee479959be3d9ca57e05628e33fffa2419a475d040b38cc0437859722c82ff25b6a5e807e7934
EBUILD check_service-0.0.1.ebuild 466 BLAKE2B 9bb858824e375741f427b2535e477da904998434f912ac2171bc3387cc5f145900c0ff8e1c6a7e4fb9ebe934ebc39cbd706cfde6d0d327cbf35d3c74e77de250 SHA512 90f6f835d89a372f3bcaec176fe778f454d5dcc2cfde168df0601f1dfcb2f8fe9fa9cfddc9c73744049e2f4a06337c367a5f4f60b8ab58b7989fb53dd3fe8012
EBUILD check_service-0.0.1.ebuild 516 BLAKE2B 793211e6dff61c0a1c1a3e47a6c12be41e6a7d72945757b3365449179ef896ec63f5c50366ce7fd370eb896d277f67c4acd0e56a11d78dd31d61097d7a014852 SHA512 bb923fa6acec48e2a6678600a19a1631bcff8b8472be6500044a6a487f775a7629238a35db61564a85080b1ebb77d7de77502f0c4c4c2e86c9c73f9699996121

View File

@ -1,10 +1,11 @@
# Copyright 2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
EAPI=8
PYTHON_COMPAT=( python3_{11,12,13} )
DISTUTILS_USE_PEP517=setuptools
inherit distutils-r1
DESCRIPTION="Icinga/Nagios Check for system services"
@ -13,6 +14,7 @@ SRC_URI="https://gitea.fulh.ax/feffe/check_service/archive/v${PV}.tar.gz"
S="${WORKDIR}/check_service"
RESTRICT="mirror"
LICENSE="BSD"
SLOT="0"
KEYWORDS="amd64 x86 arm64"

View File

@ -1 +1 @@
=dev-python/python-mpv-1.0.7
=dev-python/python-mpv-1.0.8

View File

@ -0,0 +1 @@
media-video/mkvtoolnix dbus gui

View File

@ -9,4 +9,5 @@ www-client/firefox
x11-terms/ghostty
media-fonts/noto
media-fonts/noto-cjk
media-fonts/noto-emoji

View File

@ -18,4 +18,5 @@ USE="${USE}
-X
pi4
policykit
dbus
"

View File

@ -1,5 +1,6 @@
=app-admin/puppet-8.5.1 ~arm64
=dev-ruby/semantic_puppet-1.1.0 ~arm64
=dev-ruby/facter-4.4.1 ~arm64
=dev-ruby/deep_merge-1.2.2 ~arm64
=dev-ruby/hocon-1.4.0 ~arm64
~app-admin/puppet-8.10.0 ~arm64
~dev-ruby/semantic_puppet-1.1.1 ~arm64
~dev-ruby/facter-4.10.0 ~arm64
~dev-ruby/deep_merge-1.2.2 ~arm64
~dev-ruby/hocon-1.4.0 ~arm64
~dev-ruby/sys-filesystem-1.5.3 ~arm64

View File

@ -10,13 +10,9 @@
*sys-power/cpupower
*sys-apps/sau
*app-editors/vim
*net-analyzer/check_service
*net-misc/chrony
*sys-apps/rotator
*sys-apps/cronwrapper
*mail-mta/postfix
*app-admin/sudo
*sys-process/cronie
*net-firewall/nftables
*app-portage/eix
*app-portage/cpuid2cpuflags

View File

@ -0,0 +1 @@
=dev-ruby/highline-3.1.2

View File

@ -1 +1,3 @@
www-apps/jellyfin-bin ~amd64
www-apps/jackett-bin ~amd64
www-apps/flaresolverr-bin ~amd64

View File

@ -0,0 +1,2 @@
x11-base/xorg-server xvfb
media-libs/libglvnd X

View File

@ -0,0 +1 @@
media-video/mkvtoolnix -dbus

View File

@ -10,13 +10,9 @@
*sys-power/acpid
*sys-apps/sau
*app-editors/vim
*net-analyzer/check_service
*net-misc/chrony
*sys-apps/rotator
*sys-apps/cronwrapper
*mail-mta/postfix
*app-admin/sudo
*sys-process/cronie
*net-firewall/nftables
*app-portage/eix
*app-portage/cpuid2cpuflags

View File

@ -1,3 +0,0 @@
DIST cronwrapper-0.1.5.tar.gz 4363 BLAKE2B 274d20068c0803bcb5305c7d7611e1a921b318f101353864cfba39cbe172658297f7b972eca771f0ddb245ec20496265db62a19757bc518959ba0ec8bbe1d1d2 SHA512 33125f96bc6fdbebf81f927584076ccfab320e215a089b3c3bd4a746a0ba73cff2a9e4c091c2790eac5235e6aceb57885664c6d88877b49018e59c5b8853cfb9
EBUILD cronwrapper-0.1.5.ebuild 621 BLAKE2B 6ac6ff2c7d8abb3298ba20d0330b093d3a74e542d63a6685b9c7e8f9781d8198c5806d9b6e0faf0a8bdad2028d72f7403d35e7d737c9d22190f3a9bf7fb42d1c SHA512 8556db92c8d07c0512c21d23adb89ff691ce6b2ef12970f5fa7e28837b0655260b5a5a8c3f9baf9fba699c323ea6c11dea726ec4bae35cc5c3dafa3457f70ca5
EBUILD cronwrapper-9999.ebuild 621 BLAKE2B 6ac6ff2c7d8abb3298ba20d0330b093d3a74e542d63a6685b9c7e8f9781d8198c5806d9b6e0faf0a8bdad2028d72f7403d35e7d737c9d22190f3a9bf7fb42d1c SHA512 8556db92c8d07c0512c21d23adb89ff691ce6b2ef12970f5fa7e28837b0655260b5a5a8c3f9baf9fba699c323ea6c11dea726ec4bae35cc5c3dafa3457f70ca5

View File

@ -1,29 +0,0 @@
# Copyright 2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{11,12,13} )
inherit distutils-r1
DESCRIPTION="Tool for managing cronjob in a sane way"
HOMEPAGE="https://gitea.fulh.ax/feffe/cronwrapper"
if [[ ${PV} == *9999 ]] ; then
EGIT_REPO_URI="https://gitea.fulh.ax/feffe/cronwrapper.git"
inherit git-r3
KEYWORDS="~amd64 ~arm64"
else
SRC_URI="https://gitea.fulh.ax/feffe/cronwrapper/archive/v${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="amd64 arm64"
S="${WORKDIR}/cronwrapper"
fi
LICENSE="BSD"
SLOT="0"
IUSE=""
DEPEND=""
RDEPEND=""
BDEPEND=""

View File

@ -1,29 +0,0 @@
# Copyright 2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{11,12,13} )
inherit distutils-r1
DESCRIPTION="Tool for managing cronjob in a sane way"
HOMEPAGE="https://gitea.fulh.ax/feffe/cronwrapper"
if [[ ${PV} == *9999 ]] ; then
EGIT_REPO_URI="https://gitea.fulh.ax/feffe/cronwrapper.git"
inherit git-r3
KEYWORDS="~amd64 ~arm64"
else
SRC_URI="https://gitea.fulh.ax/feffe/cronwrapper/archive/v${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="amd64 arm64"
S="${WORKDIR}/cronwrapper"
fi
LICENSE="BSD"
SLOT="0"
IUSE=""
DEPEND=""
RDEPEND=""
BDEPEND=""

View File

@ -1,3 +0,0 @@
DIST rotator-0.1.1.tar.gz 5098 BLAKE2B ac752018f2f04571e9b1cd5fa6e0fc3a6e2ac83f62d5b4d1191335ba555a5da8a9dd6e750b1afe3f0267fd3376aa9c648f900d678b0eca65492f5d14d5cda493 SHA512 325c3c745849f2f3c8df20af38aac4099e7355c1c29b05190e19684033f2acbbbf604f1cd9fc74f60b49deab096efc9e2bc216aa8c2072fc27d19806be100cdc
EBUILD rotator-0.1.1.ebuild 596 BLAKE2B dea840a54efd56c91a7037f054d0a1df0fa7978798ff40e2f2ce09d50654d86170556e3874621cfa10c8dcc96e5cc167f13f5076576cb89fb58f69ab5643d464 SHA512 5a69ecb7c5440f4e19b5a48d77586d9aac0cafdc3bd0577cfb256bfb1e52e5ce2ae45211e5fc0660e0d8fc1c11f08aa5c55e476dd17c37b2dadb1505d096d9f2
EBUILD rotator-9999.ebuild 596 BLAKE2B dea840a54efd56c91a7037f054d0a1df0fa7978798ff40e2f2ce09d50654d86170556e3874621cfa10c8dcc96e5cc167f13f5076576cb89fb58f69ab5643d464 SHA512 5a69ecb7c5440f4e19b5a48d77586d9aac0cafdc3bd0577cfb256bfb1e52e5ce2ae45211e5fc0660e0d8fc1c11f08aa5c55e476dd17c37b2dadb1505d096d9f2

View File

@ -1,29 +0,0 @@
# Copyright 2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{11,12,13} )
inherit distutils-r1
DESCRIPTION="Tool for rotating backup files"
HOMEPAGE="https://gitea.fulh.ax/feffe/rotator"
if [[ ${PV} == *9999 ]] ; then
EGIT_REPO_URI="https://gitea.fulh.ax/feffe/rotator.git"
inherit git-r3
KEYWORDS="~amd64 ~arm64"
else
SRC_URI="https://gitea.fulh.ax/feffe/rotator/archive/v${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="amd64 arm64"
S="${WORKDIR}/rotator"
fi
LICENSE="BSD"
SLOT="0"
IUSE=""
DEPEND=""
RDEPEND=""
BDEPEND=""

View File

@ -1,29 +0,0 @@
# Copyright 2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{11,12,13} )
inherit distutils-r1
DESCRIPTION="Tool for rotating backup files"
HOMEPAGE="https://gitea.fulh.ax/feffe/rotator"
if [[ ${PV} == *9999 ]] ; then
EGIT_REPO_URI="https://gitea.fulh.ax/feffe/rotator.git"
inherit git-r3
KEYWORDS="~amd64 ~arm64"
else
SRC_URI="https://gitea.fulh.ax/feffe/rotator/archive/v${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="amd64 arm64"
S="${WORKDIR}/rotator"
fi
LICENSE="BSD"
SLOT="0"
IUSE=""
DEPEND=""
RDEPEND=""
BDEPEND=""

View File

@ -1,3 +1,3 @@
DIST sau-1.4.8.tar.gz 11580 BLAKE2B 4cba4557586e0bfe7707ff715f03292777f03ee68f28c67b98775f54a020bde426ca57bdb3457cd82de3256b3da5540eed654fad3e6888e94e024a115a64a3cc SHA512 8606609e9cc1c566ea04086d034e09a09086f1d9ea693c62fdef0e55d569df39faae19c59d7974c9bae3c4bdf48877a0835f04bc3c729609d0d6132f0a72bcbb
EBUILD sau-1.4.8.ebuild 687 BLAKE2B cc8fd038b9655f0c50302e098c4cc756c8091ccbca865be11ba0b6de3595abfc4447f721b2e9b87404e7ba2ab6f3722ea54b08dc1c851d24311d5a59d45e2bf9 SHA512 349befdd383aa5d380120c29f512e138a40f1bff2e6d1875cbe1c24682de9c5f4c31a916398208063074d4f923b6e9eb01cfd8ff598769c3e961b85156187e16
EBUILD sau-9999.ebuild 645 BLAKE2B 7625af641139a08799fadf2caafeac921f81dde1773b8c7f047bb31a3c98ef42bf35d862378018b8ea299acf11edcc385817d37f1bcd45f8581b92cc85514168 SHA512 959e853dc4f5694ee511edc5b3ceb58308e9e5cadd46f92dd4c4de140d60ed20fd2106ce81a29e2dd13eda2aa5598743f2ebd9410824ac281410446c20bf1c7a
EBUILD sau-1.4.8.ebuild 719 BLAKE2B 1674575b9a85d6ab62ab5f09fe4dd1465ad53c8e32f3e73edbf8e81dad6f4ffc98816af54c101e11251a0affabe223c51625412f1808df1b88e21ee9279f2af1 SHA512 95c6df9e10a827cfd28a288f834616bcc584c8b57e8ea0ba4fbb41bbd448aa69017ad9e8e6c5db62369ff5c3c1d5e8500834475b7915e5087aefdbba8858bb08
EBUILD sau-9999.ebuild 719 BLAKE2B 1674575b9a85d6ab62ab5f09fe4dd1465ad53c8e32f3e73edbf8e81dad6f4ffc98816af54c101e11251a0affabe223c51625412f1808df1b88e21ee9279f2af1 SHA512 95c6df9e10a827cfd28a288f834616bcc584c8b57e8ea0ba4fbb41bbd448aa69017ad9e8e6c5db62369ff5c3c1d5e8500834475b7915e5087aefdbba8858bb08

View File

@ -5,6 +5,7 @@ EAPI=8
PYTHON_COMPAT=( python3_{11,12,13} )
DISTUTILS_USE_PEP517=setuptools
inherit distutils-r1
DESCRIPTION="Tool for automatic upgrades"

View File

@ -1,15 +1,16 @@
# Copyright 2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
EAPI=8
PYTHON_COMPAT=( python3_{11,12,13} )
DISTUTILS_USE_PEP517=setuptools
inherit distutils-r1
DESCRIPTION="Tool for automatic upgrades"
HOMEPAGE="https://gitea.fulh.ax/feffe/sau"
if [[ ${PV} == 9999 ]] ; then
if [[ ${PV} == *9999 ]] ; then
EGIT_REPO_URI="https://gitea.fulh.ax/feffe/sau.git"
inherit git-r3
KEYWORDS="~amd64 ~arm64"
@ -20,10 +21,11 @@ else
fi
RESTRICT="mirror"
LICENSE="BSD"
SLOT="0"
IUSE="selinux"
DEPEND="selinux? ( sec-policy/selinux-sau )"
RDEPEND="${DEPEND} dev-python/psutil"
RDEPEND="${DEPEND} dev-python/psutil app-portage/gentoolkit"
BDEPEND=""

View File

@ -1,3 +1,3 @@
DIST zsnapper-0.3.6.tar.gz 11757 BLAKE2B 3bda24c71f7176732ed0d2a29f49378833c2111561aeca43333a3ee46aa097f3805633c7d598125d5933128aadce770136a9bb4e64efd0b594f1ad8b1934ac2a SHA512 d0e801ceece9f8833acd07af367c387fb4fd4a1fe91a1768dcf6f0fa4602c44864bc63e8a893e61c2b85c333b56220bdc9ed08ba4be02fd5347586b1db9d798d
EBUILD zsnapper-0.3.6.ebuild 597 BLAKE2B eb747d939c2323f04fba9d7cd7b8a201695cedefdb890cd88e38a1840c7cf84ad0ca9692016e7a1658e254bd68a2ae9bf1569d56bdc73d511b55fbfacde442cf SHA512 d145556859eae4e30e125415a21449317c857f610394485e6facfaf4f2b27fc3fd45dcec6ad26be8f4fc8db69e430c546317a4f244af3d7761a1e8e75e3ec068
EBUILD zsnapper-9999.ebuild 584 BLAKE2B 7ad3a6509bd30fbef4161097bad6b39f33901dc2eb9fdbb18b3ecbb8e1f9d850ed94fe7cb5a64af60c82fb0f43475b7e47f50926d026b97a6fa226470caa5407 SHA512 60f5d05c05920ca733e92361806e738154ef5e9dadef8541af934d7693a311d1bc68080b54613f45ba9429d5b6fc35ca574b9a2d41e1411f399a7e3aeefa9c63
EBUILD zsnapper-0.3.6-r1.ebuild 645 BLAKE2B 394d15e44496b78d95e75a1b1d157d64e3ba8fdf667a2ec3e976f41f2114e9320d74929ddbbb0234590bd6def9e24daf6f46bf9074587686e0cbf3d90d043d39 SHA512 ea89712b805787f436145be391266112d3ba7788c0cc89b21a27780e8807df75dec74919c7872b33b1f2bc408afeb325bde6cd8005a29ae605184def21d14972
EBUILD zsnapper-9999.ebuild 645 BLAKE2B 394d15e44496b78d95e75a1b1d157d64e3ba8fdf667a2ec3e976f41f2114e9320d74929ddbbb0234590bd6def9e24daf6f46bf9074587686e0cbf3d90d043d39 SHA512 ea89712b805787f436145be391266112d3ba7788c0cc89b21a27780e8807df75dec74919c7872b33b1f2bc408afeb325bde6cd8005a29ae605184def21d14972

View File

@ -1,9 +1,11 @@
# Copyright 2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
EAPI=8
PYTHON_COMPAT=( python3_{11,12,13} )
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{12,13} )
inherit distutils-r1
@ -20,6 +22,7 @@ else
fi
RESTRICT="mirror"
LICENSE="BSD"
SLOT="0"
IUSE=""

View File

@ -1,9 +1,11 @@
# Copyright 2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
EAPI=8
PYTHON_COMPAT=( python3_{11,12,13} )
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{12,13} )
inherit distutils-r1
@ -12,14 +14,15 @@ HOMEPAGE="https://gitea.fulh.ax/feffe/zsnapper"
if [[ ${PV} == *9999 ]] ; then
EGIT_REPO_URI="https://gitea.fulh.ax/feffe/zsnapper.git"
inherit git-r3
KEYWORDS="~amd64"
KEYWORDS="~amd64 ~arm64"
else
SRC_URI="https://gitea.fulh.ax/feffe/zsnapper/archive/v${PV}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/zsnapper"
KEYWORDS="amd64"
KEYWORDS="amd64 arm64"
fi
RESTRICT="mirror"
LICENSE="BSD"
SLOT="0"
IUSE=""

View File

@ -1,2 +1,2 @@
DIST nvtop-3.1.0.tar.gz 269897 BLAKE2B 8d8e8b8014ea4d9dba241d620eaf9b4c37e99b593a8dddc31cc40d084eb1d5aaf3dff712d86567f46fb3b360b77392ac1836c9487e6b9f9a2514b27f2ebd1e94 SHA512 a22806920d85954930cf9a24450de2603418326b59bc7acedf8ff59ddb0f40e119de496a63f42706b4b6961c83ba664a8a33a3e4106a1c3ef6cd3da758aa5a55
EBUILD nvtop-3.1.0.ebuild 1057 BLAKE2B c29fc5d13ec0d4826a1db0f86866a8c9080a0a8acd5cb2a65f500a0f287f6568f71be14b94e750c3e864801cceb2f332ff9a5a5f4f6ee7b606adfca34622ccad SHA512 6966c96589554e79724ac00b7104faa1c0097b03a3125c41a2bd6e148b1951f9d62c406b997b77ff6cc58c15edf609e2572bceac7e9098ca7595f8e715dc43ec
DIST nvtop-3.2.0.tar.gz 299547 BLAKE2B ea4c154adcfe8cd9187031b62413c981c558dd8ffcc86c01be05711184dcc0f0cf3df35ffc994bc26952e97704faa56519012c64e324ea874e5fe1cc4b370a68 SHA512 582b849c6d157321439344922c26ce8d74b9d44254f952e0c4737ea24893c16f1b61610426c4fcd2dfdcd03c81f857e2847c24d7b32f38562210f7ac3d50a7b0
EBUILD nvtop-3.2.0.ebuild 1057 BLAKE2B c29fc5d13ec0d4826a1db0f86866a8c9080a0a8acd5cb2a65f500a0f287f6568f71be14b94e750c3e864801cceb2f332ff9a5a5f4f6ee7b606adfca34622ccad SHA512 6966c96589554e79724ac00b7104faa1c0097b03a3125c41a2bd6e148b1951f9d62c406b997b77ff6cc58c15edf609e2572bceac7e9098ca7595f8e715dc43ec

View File

@ -0,0 +1,2 @@
DIST flaresolverr-3.4.0.tar.gz 231130611 BLAKE2B 366ab2cbfcde01d8e14b82c6730057cb40c7fc2d4e27cc584d6b669e09cd41528c37be53ad44620e1043363563c05250efb8fab0079d770fc988dbbbae0e5948 SHA512 27aaea71ecf0fe0ad429c089abeb6bee3c3fa5d37ca83838730743b4de6aa91ceb7e06b62de415e698f8d1ddd3604cec3552763b64060fab42e1401e44fe651e
EBUILD flaresolverr-bin-3.4.0.ebuild 1697 BLAKE2B cb314cb09e169fd1ec81c2dece030c9ac9ed798fe53846db1d3c899bf721479ab945cfd3206c589c70b31fe78c72ab2eba74324b26d12d22ef595ac619ee3277 SHA512 d9b768aa73d104efe5887f7e4896ccbb2595117cd86a692d8c7da2ff01102c6984a96c7df349d60ebae0c6d3624cf26af4116bd33e46c19d73b67557d3327177

View File

@ -0,0 +1,66 @@
# Copyright 2022-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
#inherit pax-utils systemd tmpfiles
DESCRIPTION="Proxy server to bypass Cloudflare protection"
HOMEPAGE="https://github.com/FlareSolverr/FlareSolverr"
KEYWORDS="-* ~amd64 ~arm64"
SRC_URI="https://github.com/FlareSolverr/FlareSolverr/releases/download/v${PV}/flaresolverr_linux_x64.tar.gz -> flaresolverr-${PV}.tar.gz"
LICENSE="MIT"
SLOT="0"
RESTRICT="mirror test"
DEPEND=""
RDEPEND="${DEPEND}
dev-libs/nss
dev-libs/nspr
dev-libs/atk
net-print/cups
x11-libs/libxcb
x11-libs/libxkbcommon
x11-libs/libX11
x11-libs/libXcomposite
x11-libs/libXdamage
x11-libs/libXext
x11-libs/libXfixes
x11-libs/libXrandr
x11-libs/pango
x11-libs/cairo
media-libs/alsa-lib
media-libs/mesa
dev-python/xvfbwrapper
"
BDEPEND=""
INST_DIR="/opt/flaresolverr"
QA_PREBUILT="${INST_DIR#/}/flaresolverr ${INST_DIR#/}/_internal/selenium/webdriver/common/linux/selenium-manager ${INST_DIR#/}/_internal/*.so*"
src_unpack() {
unpack ${A}
mv flaresolverr ${P} || die
}
src_prepare() {
default
rm -f libreadline.so.8 || die
}
src_install() {
insinto ${INST_DIR}
dodir ${INST_DIR}
doins -r "${S}"/*
chmod 755 "${D}${INST_DIR}/flaresolverr"
chmod 755 "${D}${INST_DIR}/_internal/selenium/webdriver/common/linux/selenium-manager"
chmod 755 "${D}${INST_DIR}/_internal/chrome/chrome"
chmod 755 "${D}${INST_DIR}/_internal/chrome/chrome_crashpad_handler"
chmod 755 "${D}${INST_DIR}/_internal/chrome/chrome_sandbox"
chmod 755 "${D}${INST_DIR}/_internal/chrome/chrome-wrapper"
chmod 755 "${D}${INST_DIR}/_internal/chrome/xdg-mime"
chmod 755 "${D}${INST_DIR}/_internal/chrome/xdg-settings"
}

View File

@ -0,0 +1,11 @@
AUX jackett.init 133 BLAKE2B d2f03dbed251bfe5fd2d7d7751fee9997880a422fbb0f6e32f91939855019ccde23807d8300437643cb0770fc9e00c83f1ddf1ad5f06f5e2cd5c8c01dcc05513 SHA512 ea342cd3af5c85f73ffd732ee27af164f847c721c0b796e85c0af8b37d5215fa089a37d4c3c92226ed8befe9de05199903ce0a8327fd8fafcd3d25e54d0aa770
AUX jackett.logrotate 81 BLAKE2B 2ce4e141b68c9e7eeac5d141e3e839b6a0615f512d8a1f805e9c4b6c8d42c63348878abff799a809ffc07920e2dc0304de9e82dc20a1e624ef17c41daca1ca9d SHA512 c2ac5827be8b8ef6bb2109ccbd01754b086827311a6f41bb1d09e5c406787060aa236841bb40f83913a04702274454d86c63f1e9a968b11e1ac3181cdc166e93
AUX jackett.service 535 BLAKE2B 4bb328e433a1b0ecfc3e3d823ac9a27839c49d5a8b3e955f1605c7d38ea9bf1eabe3edde0a4a7a3115fd8b6ad823d6c97911d9299dd384094f5139401187017f SHA512 502c3b6cb4c2f6069762549cc83db29d5a0e0d447070e7a73c92f0ad8e7c73bd4c588df6b00b55b7abfde98f0dcc52169e16b5a9f37bceaf475b4920971dcc87
DIST jackett-0.22.2319-arm.tar.gz 46728534 BLAKE2B 2625aa0965889b8aa041a654a9847412c9d122f72e752103f0dcd2cfbe6c932fe2de597492810e1d2eaf2c1fa4efbb9552cb58f030b26206076275bf3872517d SHA512 fffe95cb16adea20237b1f56628b3c5065e589eda513912eeada031eb365320a98b985573a0ccf39f6486d6c86ac31751f3497d483c9ac816ed8a307cec34308
DIST jackett-0.22.2319-arm64.tar.gz 46805253 BLAKE2B e888d4945c17898fb41ac37f6d8d663f1f44d30457ff09c2022b2140e94b313035d45c827b19ef9a09790ad985a9666c04f7cd5fbf05d3d93e88c00668840de2 SHA512 40285b190ccc67cdd2578d18ed7f5a838f41da4ca1b1b384f54c4e7a17332df527a3ed4203a9a89d7ff42ac95a554d3820cd1f2e7bef1b11db123fd49c5d700a
DIST jackett-0.22.2319-musl-arm.tar.gz 46737236 BLAKE2B 9e824b1c04fdea80b0cb3b80804b3e6b8074d6ac8e42573ba0350a2e7911791ceb3ed005057e22015579e04fed690c8779a0d80d5cc9ba3f40a04b279b95c4cc SHA512 3f0a80a0246eb4d944ab4ff353ae8382677081756a45df21e5502af9af28a6b1d51c591ba597aa59ba2cd4f8e4c511fdb8c52fd230227f47868e68f62d3616c2
DIST jackett-0.22.2319-musl-arm64.tar.gz 46819355 BLAKE2B 75d5933126987b5f13be048bdaa4ecaa612f6f198fa18054eb285c9fd0a5d38f7336477f78ec0b1294054fbef2e281f1fabcd4c5ccec1c2cdc91237ccecca083 SHA512 5e5ed5bc77a51b1d0495362cbe1ef02ddeaad5eb35e0ab9a99097e786ada1b122c3ea4ae2808a63dcfc9b537fdbddf87273f2a7658acce6e64b1d518fe59a6dc
DIST jackett-0.22.2319-musl-x64.tar.gz 48490012 BLAKE2B bae5c2ac700c40eeb86758e8c0250673c33af90246d9c44b5dc170515c6a8d38c3da6069f4b355715b860d5cd5674e98288d09cbea244ca21c29dc161344c49e SHA512 38ad3cc3c0a665f208899867237074685d6a6d27b4699930ce501d3b1146cd80029491a440e8cb5f186613f99d03cfcebb79e652f6e6faa66c975c2f794700ac
DIST jackett-0.22.2319-x64.tar.gz 48465876 BLAKE2B 479ba8c22be0250f7ebd04603b5c02c09a824d9a6f3b307931688b3bd23fd99de1c77d985e1f01f2ad2bcd073255d4bc5cc5c31cae39f3d9255852640f2a083d SHA512 8adfab102bda694f6e87e5e844b95c26ced8d3cd0002bf132af7c02764f48a88ae917670da6f738fe6cf79fae0265b415d4695542d70276d549ff7014d7035cd
EBUILD jackett-bin-0.22.2319.ebuild 2028 BLAKE2B f24a70c6ac379da552f46f84727fa3767c7baf7bf84773932ab68472541ba2d8255bb7bdceb1ba3be5d56e665d35bc81ebd41307e60d3e409fb8cb7ca431552e SHA512 1851f057c183e9111265d5de8c89a0259fb6f47d1e61deedc7bbe08c6398f81db9a4692487687bdff14af078c5dcc2b01051a828c31d14f6c27daa67964b8063
MISC metadata.xml 642 BLAKE2B 42f5b5594835f9d0253e4baac0bb4c9c426fb7f5e812227bdbee4d24a3f826a341e3cab5d353e18881f3fe5ff32406283402bea4e36ed70ec77dca511ab68040 SHA512 0acf30d6c7cb994b837a6b90e26acf9a38fd0fa40ffab67c88fa1e4d201ad14f1b35073b5cbb658d2c423dc919ad2f7c863e49f6649b25264f0b5e068b5e26b5

View File

@ -0,0 +1,6 @@
#!/sbin/openrc-run
pidfile="/run/jackett.pid"
command="/opt/jackett/jackett"
command_user="jackett:jackett"
command_background=true

View File

@ -0,0 +1,4 @@
/var/lib/jackett/.config/Jackett/log.txt{
missingok
su jackett jackett
}

View File

@ -0,0 +1,30 @@
[Unit]
Description=API Support for your favorite torrent trackers
After=syslog.target network.target
[Service]
User=jackett
Group=jackett
Type=simple
ExecStart=/opt/jackett/jackett
TimeoutStopSec=20
KillMode=process
Restart=always
PrivateTmp=yes
PrivateDevices=yes
PrivateMounts=yes
ProtectHome=yes
ProtectSystem=full
NoNewPrivileges=yes
ProtectHostname=yes
ProtectClock=yes
ProtectKernelTunables=yes
ProtectKernelModules=yes
ProtectKernelLogs=yes
ProtectControlGroups=yes
RestrictRealtime=yes
[Install]
WantedBy=multi-user.target

View File

@ -0,0 +1,82 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit systemd
DESCRIPTION="API Support for your favorite torrent trackers"
HOMEPAGE="https://github.com/Jackett/Jackett/"
SRC_URI="
amd64? (
elibc_glibc? (
https://github.com/Jackett/Jackett/releases/download/v${PV}/Jackett.Binaries.LinuxAMDx64.tar.gz
-> jackett-${PV}-x64.tar.gz
)
elibc_musl? (
https://github.com/Jackett/Jackett/releases/download/v${PV}/Jackett.Binaries.LinuxMuslAMDx64.tar.gz
-> jackett-${PV}-musl-x64.tar.gz
)
)
arm? (
elibc_glibc? (
https://github.com/Jackett/Jackett/releases/download/v${PV}/Jackett.Binaries.LinuxARM32.tar.gz
-> jackett-${PV}-arm.tar.gz
)
elibc_musl? (
https://github.com/Jackett/Jackett/releases/download/v${PV}/Jackett.Binaries.LinuxMuslARM32.tar.gz
-> jackett-${PV}-musl-arm.tar.gz
)
)
arm64? (
elibc_glibc? (
https://github.com/Jackett/Jackett/releases/download/v${PV}/Jackett.Binaries.LinuxARM64.tar.gz
-> jackett-${PV}-arm64.tar.gz
)
elibc_musl? (
https://github.com/Jackett/Jackett/releases/download/v${PV}/Jackett.Binaries.LinuxMuslARM64.tar.gz
-> jackett-${PV}-musl-arm64.tar.gz
)
)
"
S="${WORKDIR}/Jackett"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64"
RESTRICT="bindist strip test"
RDEPEND="
acct-group/jackett
acct-user/jackett
media-video/mediainfo
dev-libs/icu
dev-db/sqlite
"
QA_PREBUILT="*"
src_prepare() {
default
# https://github.com/dotnet/runtime/issues/57784
find . -type f -iname libcoreclrtraceptprovider.so -delete || die
}
src_install() {
newinitd "${FILESDIR}/jackett.init" jackett
keepdir /var/lib/jackett
fowners -R jackett:jackett /var/lib/jackett
insinto /etc/logrotate.d
insopts -m0644 -o root -g root
newins "${FILESDIR}/jackett.logrotate" jackett
dodir "/opt/jackett"
cp -R "${S}/." "${D}/opt/jackett" || die "Install failed!"
systemd_dounit "${FILESDIR}/jackett.service"
systemd_newunit "${FILESDIR}/jackett.service" "jackett@.service"
}

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person" proxied="yes">
<email>PF4Public@mail.ru</email>
<name>PF4Public</name>
</maintainer>
<maintainer type="project" proxied="proxy">
<email>proxy-maint@gentoo.org</email>
<name>Proxy Maintainers</name>
</maintainer>
<maintainer type="person">
<email>candrews@gentoo.org</email>
<name>Craig Andrews</name>
</maintainer>
<upstream>
<remote-id type="github">Jackett/Jackett</remote-id>
<bugs-to>https://github.com/Jackett/Jackett/issues</bugs-to>
</upstream>
</pkgmetadata>