diff options
author | V3n3RiX <venerix@koprulu.sector> | 2022-07-11 01:28:44 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2022-07-11 01:28:44 +0100 |
commit | b46b9834b3fbf80b22ccc12e95f660512cd0fa75 (patch) | |
tree | f7eb18ccc89e078e2f175e5249fe0d4dfdb5b104 /media-video | |
parent | 62f7102650b24618880e8e6f08fcb8fbd235025b (diff) |
gentoo auto-resync : 11:07:2022 - 01:28:44
Diffstat (limited to 'media-video')
-rw-r--r-- | media-video/Manifest.gz | bin | 26182 -> 26188 bytes | |||
-rw-r--r-- | media-video/mkvtoolnix/Manifest | 2 | ||||
-rw-r--r-- | media-video/mkvtoolnix/mkvtoolnix-69.0.0.ebuild | 132 | ||||
-rw-r--r-- | media-video/pipewire/Manifest | 2 | ||||
-rw-r--r-- | media-video/pipewire/files/pipewire-0.3.54-fortify-source.patch | 33 | ||||
-rw-r--r-- | media-video/pipewire/pipewire-0.3.54-r2.ebuild | 422 |
6 files changed, 591 insertions, 0 deletions
diff --git a/media-video/Manifest.gz b/media-video/Manifest.gz Binary files differindex a6d9f25c9876..d6b745aa5582 100644 --- a/media-video/Manifest.gz +++ b/media-video/Manifest.gz diff --git a/media-video/mkvtoolnix/Manifest b/media-video/mkvtoolnix/Manifest index b796e4c2378a..24cfaf474d99 100644 --- a/media-video/mkvtoolnix/Manifest +++ b/media-video/mkvtoolnix/Manifest @@ -9,11 +9,13 @@ DIST mkvtoolnix-61.0.0.tar.xz 7662500 BLAKE2B de9d73658fe779b34b21fded8e6676b76f DIST mkvtoolnix-64.0.0.tar.xz 7700012 BLAKE2B f0c64786fdc3d05915650a08ca398dc7f5356b9a9ce9cb108fb40a4394a7518dd45143717fde7af1dccd3e7e43d343f81d69633c78f1201670924257529baede SHA512 252fdf0a9497d34f2a407ca0d3e584d1cd5a2f566b793a3a6b9af8473855d89e55ce79a8b4aff71d5a25f7a15ca991f84a3c4441168553af9feffdfe75e19844 DIST mkvtoolnix-67.0.0.tar.xz 7791720 BLAKE2B 815172f1e120d90ec33cbc6dac1bb3aad793edc0b629f0bab9400a0732d3b692f983d7eca82c61c453ccd245dea948d0950bcb357e3104d2012554871e09c80c SHA512 eed390cb305b5fcaddf11d68a9021f9ddc22a62d1eb95f4c0a34161a7662dd62495c87193a2d951f0fe30fb9a6b5b93f06ed7fedc24ed674da531f2c2317c997 DIST mkvtoolnix-68.0.0.tar.xz 10911424 BLAKE2B e4704592212aa919a7cbd62b3906b5af6c4bb88293299e93a4ad65cc8857615b1654ed554c17daf60e1b001d8e5265afda808e81ee51f372be2f738d737fdd4d SHA512 fd078208f5ef0438f06b3bb19c3f3c477f87561997a847c56a731265ee9627b089cc568e1d31a9a2c7e46f63aeeabccf98a27694b6b4b1586ba93f7656d20838 +DIST mkvtoolnix-69.0.0.tar.xz 10946800 BLAKE2B aed865e723d315aaddbfe6351c98bdafaee8b75968a2c03256e37e96d5ee7324d92ef8a5bb12c559c46264ebdcefd7a802884ac33db59fa5935621769ec9bfd1 SHA512 c7ce69e9a921103da4745c75cd6fa41a49dbb8637f48097233388e5d8be121714d3fde10f745b78e84a8ef70e46f0168f36f069331f04623805c0bda8a90060c EBUILD mkvtoolnix-57.0.0.ebuild 2969 BLAKE2B 402ed70eb494854ce19cebf3e78809b8f96df652dcdaa385210eb0b7417a342aed1065245ffc06a76b62c05a5be009ff38f562049fc07ad2f7100f32e4fbc8d9 SHA512 2f6ee7dbfb8702dcd1cb9c358906e0fc850f8cd3d209ae21144311f0cef58f5a037cb3d748390206ec65b026ac22797636f1d11b81afc4c7ba75ed4a0fbf4d37 EBUILD mkvtoolnix-60.0.0.ebuild 2713 BLAKE2B 8b6c460647fad06911cf9f6f4cbbd1e0122470eea052d9693f76ccffe7500287713aeb8199994d2642ff4081e291e0b686302d10a81fb6197cf1d25705efd084 SHA512 6799f52699577880d685ecb602d5a1788fbb7e7948a37cbd4e712f07705fe172b0288e2ef35f5d542e96991940567d6905113f8d160d0ecad841cf2a7b1e007a EBUILD mkvtoolnix-61.0.0.ebuild 2733 BLAKE2B 4b3262642f5bf64e60ee3e5537f65881ec6287113f1ba7d160c118454f425a87dc257ee73dbb9d0a7b96f72551c6ae8d337b9d8120f5ec86519122375b9370c5 SHA512 fdddc73a07386bd68d0b85894f384e88405f09285b78210a31fdb2b2a1d1341d04b9329f94872480482a24aa60ad8c261df4c2e6b5d82b570526f0b263df168c EBUILD mkvtoolnix-64.0.0.ebuild 2743 BLAKE2B 128120db4c38bea554f5a19ceecee021cd9dac3e5b3771a901dbcc2180dad5ead753f53a373323a8b86d6ca18023f441253325174ae9cbd7b014cccb933734e4 SHA512 91fa7c061c2be25ab775156a163c552690d5f91ce797988e9f24689a0ccfc2a612dd1f7eb0dc2b4706cb16060f8f1d2e15c8db36d9ae298fbd94e00f51ff7afd EBUILD mkvtoolnix-67.0.0.ebuild 2953 BLAKE2B 3c3c1b2ca1234d7bec20a30ad859673be073655a8182021d4b1ae20e2132da41a949d5f9a8203cd466f0fe1008aa0a3778fff243328c9ed1119e84c9a916bbb6 SHA512 c3d1772e7363c6ca4c9760e6a40c87141d3da03e24fddb98255204b1320dbf104525082738a2a3c653acdf857ac6f868b5e6527e199748e9e86f75f68eae2845 EBUILD mkvtoolnix-68.0.0-r3.ebuild 2980 BLAKE2B a7319bb5c1d79c2aae66e770ca1b47c7b31c8fcc4493464e5858d5b95bc7007cf57d1150d8d86e400d7e346fd410076461450ea605a6487269f37a03d57f0fdc SHA512 ae05fc55bc96b737dbbba190c8290fce78d9a745522fc5ac5c1e766ee80ab4cee2a72894fa236fab2858a50c5819cf9c9120a4cf70defb5b1e671a05ade08dbe +EBUILD mkvtoolnix-69.0.0.ebuild 2948 BLAKE2B fb49d9e001092d07f347ec622247943d8a06b1b31d9b2ecf80bd2009d8e37118c6cc1751d2e5cf6529fa73cb1e73879c431d1329576525636a093fdbee7afe18 SHA512 8d5b9e3d413ce32b352f0dbc35c153f2b5dc765912bbd39597b7bcebdfe99966964c75ffe3f2ceb614d767a4557ddf2e979b702441e5929fb8d2441f8670d42b EBUILD mkvtoolnix-9999.ebuild 2948 BLAKE2B fb49d9e001092d07f347ec622247943d8a06b1b31d9b2ecf80bd2009d8e37118c6cc1751d2e5cf6529fa73cb1e73879c431d1329576525636a093fdbee7afe18 SHA512 8d5b9e3d413ce32b352f0dbc35c153f2b5dc765912bbd39597b7bcebdfe99966964c75ffe3f2ceb614d767a4557ddf2e979b702441e5929fb8d2441f8670d42b MISC metadata.xml 256 BLAKE2B ff2b5536809c94dc64867bca73d779a31bd343559cd65520c9b5684091734b3ccf7bf495335890df5533857480794cb3258566e5836e8dce7514b6833ba93f37 SHA512 b7f3d0564d06254ff552beec9594236b84ebc3ad87adab673f68963bcc4dfbf2e29b401e75486ba41b9b526de74b73f65e9d5e901221f810363497aa694c8567 diff --git a/media-video/mkvtoolnix/mkvtoolnix-69.0.0.ebuild b/media-video/mkvtoolnix/mkvtoolnix-69.0.0.ebuild new file mode 100644 index 000000000000..3b7b072da517 --- /dev/null +++ b/media-video/mkvtoolnix/mkvtoolnix-69.0.0.ebuild @@ -0,0 +1,132 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools flag-o-matic multiprocessing qmake-utils xdg + +if [[ ${PV} == *9999 ]] ; then + EGIT_REPO_URI="https://gitlab.com/mbunkus/mkvtoolnix.git" + EGIT_SUBMODULES=() + inherit git-r3 +else + SRC_URI="https://mkvtoolnix.download/sources/${P}.tar.xz" + KEYWORDS="~amd64 ~ppc ~ppc64 ~x86" +fi + +DESCRIPTION="Tools to create, alter, and inspect Matroska files" +HOMEPAGE="https://mkvtoolnix.download/ https://gitlab.com/mbunkus/mkvtoolnix" + +LICENSE="GPL-2" +SLOT="0" +IUSE="dbus debug dvd gui nls pch test" +RESTRICT="!test? ( test )" + +# check NEWS.md for build system changes entries for boost/libebml/libmatroska +# version requirement updates and other packaging info +RDEPEND=" + >=dev-libs/boost-1.66:= + dev-libs/gmp:= + >=dev-libs/libebml-1.4.2:= + >=dev-libs/libfmt-8.0.1:= + >=dev-libs/pugixml-1.11:= + media-libs/flac:= + >=media-libs/libmatroska-1.6.3:= + media-libs/libogg:= + media-libs/libvorbis:= + sys-libs/zlib + dvd? ( media-libs/libdvdread:= ) + dev-qt/qtcore:5 + gui? ( + dev-qt/qtsvg:5 + dev-qt/qtgui:5 + dev-qt/qtnetwork:5 + dev-qt/qtwidgets:5 + dev-qt/qtconcurrent:5 + dev-qt/qtmultimedia:5 + ) + app-text/cmark:0= + dbus? ( dev-qt/qtdbus:5 ) +" +DEPEND="${RDEPEND} + >=dev-cpp/nlohmann_json-3.9.1 + >=dev-libs/utfcpp-3.1.2 + test? ( dev-cpp/gtest ) +" +BDEPEND=" + app-text/docbook-xsl-stylesheets + dev-libs/libxslt + dev-ruby/rake + virtual/pkgconfig + nls? ( + sys-devel/gettext + app-text/po4a + ) +" + +PATCHES=( + "${FILESDIR}"/mkvtoolnix-58.0.0-qt5dbus.patch + "${FILESDIR}"/mkvtoolnix-67.0.0-no-uic-qtwidgets.patch +) + +src_prepare() { + default + + if [[ ${PV} == *9999 ]]; then + ./autogen.sh || die + fi + + # bug #692018 + sed -i -e 's/pandoc/diSaBlEd/' ac/pandoc.m4 || die + + eautoreconf + + # remove bundled libs + rm -r lib/{fmt,libebml,libmatroska,nlohmann-json,pugixml,utf8-cpp} || die +} + +src_configure() { + # bug #692322, use system dev-libs/utfcpp + append-cppflags -I"${ESYSROOT}"/usr/include/utf8cpp + + local myeconfargs=( + $(use_enable debug) + $(usex pch "" --disable-precompiled-headers) + $(use_enable dbus) + + # Qt (of some version) is always needed, even for non-GUI builds, + # to do e.g. MIME detection. See e.g. bug #844097. + # But most of the Qt deps are conditional on a GUI build. + --disable-qt6 + --enable-qt5 + $(use_enable gui) + --with-qmake="$(qt5_get_bindir)"/qmake + + $(use_with dvd dvdread) + $(use_with nls gettext) + $(usex nls "" --with-po4a-translate=false) + --disable-update-check + --disable-optimization + --with-boost="${ESYSROOT}"/usr + --with-boost-libdir="${ESYSROOT}"/usr/$(get_libdir) + ) + + econf "${myeconfargs[@]}" +} + +src_compile() { + rake V=1 -j$(makeopts_jobs) || die +} + +src_test() { + rake V=1 -j$(makeopts_jobs) tests:unit || die + rake V=1 -j$(makeopts_jobs) tests:run_unit || die +} + +src_install() { + DESTDIR="${D}" rake -j$(makeopts_jobs) install || die + + einstalldocs + dodoc NEWS.md + doman doc/man/*.1 +} diff --git a/media-video/pipewire/Manifest b/media-video/pipewire/Manifest index 2fa5d81a09f5..84c90706da8b 100644 --- a/media-video/pipewire/Manifest +++ b/media-video/pipewire/Manifest @@ -3,6 +3,7 @@ AUX gentoo-pipewire-launcher.in 1227 BLAKE2B 4316a991978fac653a00d076e9236d0ab6c AUX pipewire-0.3.25-enable-failed-mlock-warning.patch 704 BLAKE2B dc0732b89b57a258ea6dc54941899134259469675f92ae93aebda09a796c73ace8bc4ed0ab2aef4ea1bcaa30c1bea8c3304288168421ce8f9939ec993c8aa438 SHA512 7456a24276b7b766ff5799acf5b80ef5f85ee7a78fc5b52adff3206c0b0aa1985a0bf72634aacf7818c90136c09bcc11cb0fecec291d961c8b3585c897869f65 AUX pipewire-0.3.52-pulse-path.patch 2586 BLAKE2B 2569452967f54ac531f07852fcd78070e61f5972c95eed8d8690461f215330e92aad6eca8c5ac393b0903e6d0c26e8a69fac51b445c39aa428cfd47f0ad4d659 SHA512 0ec2d9ceb5acfdf0ecedb7683db52d0d2ddbee52f318a77720134ec51e920d0f76621b4b44c531b7b1c857d161979351eccb08734e6cb80d0c7a8925399d58b3 AUX pipewire-0.3.54-audioconvert-samples.patch 736 BLAKE2B fdff5ee71e924d325a0ce652ae1ec9e7ebf99826d7226d21b2578657b7a58ae53461924204c6723fa4dd7da707aa3cb6be4b0a0e3aa963818ddb4fc42952efea SHA512 65ef384a444ab7e07fe14e3b33bdcfa9d651ff1c6400f9b83bb267967a4b21d203c60c59c6ad9051e50d0bf164b2f6048f1956f0bed0752ed05d75184fd383cb +AUX pipewire-0.3.54-fortify-source.patch 1054 BLAKE2B 2872e29e9bc4a87cae7b64013ff04085870703111ee8730cf67fcdca40202b3c654c26ec7cdcd4b5327c19a37d51dfc22f5d83c51e067171b87256981f203b98 SHA512 68a6fa6152fc587abc19ecacc327e68a7f64d653f7afe8e9cd08a8d77211966221d435eff1a1defc551cc32b81816964418823433172371fce0ef57f8948ba9b AUX pipewire-launcher.sh 149 BLAKE2B 42a9fd174e8216f9941ec72bc50581d539453dd0430ac61712582039f1cfe17cafa050bd87fcb90b9c16ffd891fd9f9c5dfec99b2be8c66eaed0128af180508e SHA512 7f50287565fa44e2296a7b294e8fd3dd64938d2de15c6ff5674d85a6e7bbccbc334c0fb9e28321104aff5335894b3c5a21171f385465e37b422ef53988dbfe4b AUX pipewire.desktop 322 BLAKE2B 0299b9054cf881a5cbbdb128a5e8a51308cf0b5a98260dca756e704504ef057e403b2fb4aa2d58f52dde4be59e416c95d8fce21bc3ca6b6447ecab58263a3f21 SHA512 c13ea531cfdd3798f8d6cd20f5fa8c0a5040c27a6ef3850fdd41102a3bf0bcb73176e3300845af77804a98842fb736841223bc9ac1c92eb2034e9d46e41fc344 AUX pipewire.desktop-r1 325 BLAKE2B 7d823a264e5147bf8669127df22f468518fd54375ed57910f0143821894b33cfee8925b1cf8b9c5b1d219453a5c62fffa50d111b78bc5e151e23aed84d0a577e SHA512 e51ba049484daba3e4cdc5890748267f0c23ea6e57f31f3bb8a49c011e1a61b47b68eea742e5e7bcd58bfeddb96dd4064079fd9787cb66c78bd5eff10799a7bf @@ -18,6 +19,7 @@ EBUILD pipewire-0.3.53-r1.ebuild 14904 BLAKE2B 26d1fa2c5d616d767b2e333e39e165ce9 EBUILD pipewire-0.3.53_p20220704-r1.ebuild 15027 BLAKE2B 04db04cab0edbabc5fd6bb7896592827433501f09a80b2132dc22d33f898e9fe5aab2b8c696de9aca5bb458d2927bd24c2a710354f6b6df6280c1a2819baca5f SHA512 3e4e79486e83e7d191eccb84ab9c04a189c516158662c9f9cc735841989e608a07cdc82765d35a9d1083ff234041e2b183c3ac19e91a810907fdb78d3476fd91 EBUILD pipewire-0.3.53_p20220705-r1.ebuild 15132 BLAKE2B c384019726ec2652d2032cf09f31bf8b6ef8d1453ceb111921f4a437148f5c66808f6d8a13196d211fb88c7ed7fd46703d89a7341047bb8e1787f3d1661c1fb5 SHA512 184e710cc6d91b4c648f0bbf29bf04523c23936bfb259791a6db47ed61263a4ba135e29c80049553c32e03540fe67f409084919906b09a1b8f2ac1f562263ba3 EBUILD pipewire-0.3.54-r1.ebuild 15474 BLAKE2B 0cafa483c17190a3d12d049bdf533ea2871795e6efd09bb0842cc6acbb78389f4cf0ff773b6e27c89674078593aec69588c362a47012787f51644f384c33719a SHA512 1725b191017fc944c1386e6e59dee6047ef0084e343e953bec4580efa85d4ec762e684f97a22cc9ba908f7a0189caa3efd5f4f63fff0bf37e69789cd72d1ea1f +EBUILD pipewire-0.3.54-r2.ebuild 15515 BLAKE2B a1ecec1e8f89e47ffaaff4b909619dce4e6aa621b45cbd2cb639d32361d3299737c466ca5dcd530a2fc18db12f69c777cd88965067576204061cdc849bbd3703 SHA512 6affaaec84f6bda45a9a2f2ad9d131301988d4d4f0a33a80d8347479c6ef66de4f6bf7558094c8f154778521212b529003fdd74e82540302fd9989bb5149b2b7 EBUILD pipewire-0.3.54.ebuild 15427 BLAKE2B 739879fa7fa51f0ea91cf05a1494594a2b8bf1e8de2f580c6a04ee04c674773025b02b820f390592b493dae25aa163a5b738436a3497be9d5ffc7c10e613f1db SHA512 243c42ef5213eeccc6355670cee87b510c43fbde42408ffcc985a44746ece94af93bb15d80c2a850e7b3925aac90fe67801e1ba5670caf27dfcab9fdd4b1c6aa EBUILD pipewire-9999.ebuild 15427 BLAKE2B 739879fa7fa51f0ea91cf05a1494594a2b8bf1e8de2f580c6a04ee04c674773025b02b820f390592b493dae25aa163a5b738436a3497be9d5ffc7c10e613f1db SHA512 243c42ef5213eeccc6355670cee87b510c43fbde42408ffcc985a44746ece94af93bb15d80c2a850e7b3925aac90fe67801e1ba5670caf27dfcab9fdd4b1c6aa MISC metadata.xml 1594 BLAKE2B 5291d3254924bd4710238933a4de6c46af4cd9aee9e688fb09878e310c75e6c6c39a154fd9ee3e85c0b59920590fb590a79882c2efc69551630d291bee69311e SHA512 7d0c3f41df7994338ae7506c8501beae032e6630bf3bed72854a324281ed234d3bbc0bc5100a4687d68256480c965b07e53276157e6366a95d08a4071a2389e5 diff --git a/media-video/pipewire/files/pipewire-0.3.54-fortify-source.patch b/media-video/pipewire/files/pipewire-0.3.54-fortify-source.patch new file mode 100644 index 000000000000..0c93f105375a --- /dev/null +++ b/media-video/pipewire/files/pipewire-0.3.54-fortify-source.patch @@ -0,0 +1,33 @@ +https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/240d21282271dce7d2eeff03185a61ffca0c12c5 +https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2526 +https://bugs.gentoo.org/857201 + +From 240d21282271dce7d2eeff03185a61ffca0c12c5 Mon Sep 17 00:00:00 2001 +From: Pauli Virtanen <pav@iki.fi> +Date: Sun, 10 Jul 2022 16:05:27 +0300 +Subject: [PATCH] pipewire-v4l2: disable _FORTIFY_SOURCE when defining override + functions + +_FORTIFY_SOURCE defines always_inline versions of open etc. functions, +which conflict with our exported override versions. Disable it for the +file that defines the override functions. +--- a/pipewire-v4l2/src/v4l2-func.c ++++ b/pipewire-v4l2/src/v4l2-func.c +@@ -22,6 +22,16 @@ + * DEALINGS IN THE SOFTWARE. + */ + ++ ++/* ++ * We need to export open* etc., but _FORTIFY_SOURCE defines conflicting ++ * always_inline versions. Disable _FORTIFY_SOURCE for this file, so we ++ * can define our overrides. ++ */ ++#ifdef _FORTIFY_SOURCE ++#undef _FORTIFY_SOURCE ++#endif ++ + #include <stdio.h> + #include <errno.h> + #include <fcntl.h> +GitLab diff --git a/media-video/pipewire/pipewire-0.3.54-r2.ebuild b/media-video/pipewire/pipewire-0.3.54-r2.ebuild new file mode 100644 index 000000000000..56828f47128f --- /dev/null +++ b/media-video/pipewire/pipewire-0.3.54-r2.ebuild @@ -0,0 +1,422 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# 1. Please regularly check (even at the point of bumping) Fedora's packaging +# for needed backports at https://src.fedoraproject.org/rpms/pipewire/tree/rawhide. +# +# 2. Keep an eye on git master (for both PipeWire and WirePlumber) as things +# continue to move quickly. It's not uncommon for fixes to be made shortly +# after releases. + +PYTHON_COMPAT=( python3_{8..11} ) + +inherit flag-o-matic meson-multilib optfeature prefix python-any-r1 systemd udev + +if [[ ${PV} == 9999 ]]; then + EGIT_REPO_URI="https://gitlab.freedesktop.org/${PN}/${PN}.git" + inherit git-r3 +else + if [[ ${PV} == *_p* ]] ; then + MY_COMMIT="" + SRC_URI="https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/${MY_COMMIT}/pipewire-${MY_COMMIT}.tar.bz2 -> ${P}.tar.bz2" + S="${WORKDIR}"/${PN}-${MY_COMMIT} + else + SRC_URI="https://gitlab.freedesktop.org/${PN}/${PN}/-/archive/${PV}/${P}.tar.gz" + fi + + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86" +fi + +DESCRIPTION="Multimedia processing graphs" +HOMEPAGE="https://pipewire.org/" + +LICENSE="MIT LGPL-2.1+ GPL-2" +# ABI was broken in 0.3.42 for https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/49 +SLOT="0/0.4" +IUSE="bluetooth dbus doc echo-cancel extra gstreamer jack-client jack-sdk lv2 +pipewire-alsa sound-server ssl system-service systemd test udev v4l X zeroconf" + +# Once replacing system JACK libraries is possible, it's likely that +# jack-client IUSE will need blocking to avoid users accidentally +# configuring their systems to send PW sink output to the emulated +# JACK's sink - doing so is likely to yield no audio, cause a CPU +# cycles consuming loop (and may even cause GUI crashes)! + +# TODO: There should be "sound-server? ( || ( alsa bluetooth ) )" here, but ALSA is always enabled +# TODO: Pulseaudio alsa plugin performs runtime check that pulseaudio server connection will work +# which provides adequate guarantee that alsa-lib will be able to provide audio services. +# If that works, pulseaudio defaults are loaded into alsa-lib runtime replacing default PCM and CTL. +# When pipewire-alsa will be able to perform similar check, pipewire-alsa can be enabled unconditionally. +REQUIRED_USE=" + jack-sdk? ( !jack-client ) + system-service? ( systemd ) + !sound-server? ( !pipewire-alsa ) + jack-client? ( dbus ) +" + +RESTRICT="!test? ( test )" + +BDEPEND=" + >=dev-util/meson-0.59 + virtual/pkgconfig + ${PYTHON_DEPS} + $(python_gen_any_dep 'dev-python/docutils[${PYTHON_USEDEP}]') + doc? ( + app-doc/doxygen + media-gfx/graphviz + ) +" +RDEPEND=" + acct-group/audio + media-libs/alsa-lib + sys-libs/readline:= + sys-libs/ncurses:=[unicode(+)] + virtual/libintl[${MULTILIB_USEDEP}] + bluetooth? ( + media-libs/fdk-aac + media-libs/libldac + media-libs/libfreeaptx + media-libs/sbc + >=net-wireless/bluez-4.101:= + virtual/libusb:1 + ) + dbus? ( sys-apps/dbus[${MULTILIB_USEDEP}] ) + echo-cancel? ( media-libs/webrtc-audio-processing:0 ) + extra? ( + >=media-libs/libsndfile-1.0.20 + ) + gstreamer? ( + >=dev-libs/glib-2.32.0:2 + >=media-libs/gstreamer-1.10.0:1.0 + media-libs/gst-plugins-base:1.0 + ) + jack-client? ( >=media-sound/jack2-1.9.10:2[dbus] ) + jack-sdk? ( + !media-sound/jack-audio-connection-kit + !media-sound/jack2 + ) + lv2? ( media-libs/lilv ) + pipewire-alsa? ( + >=media-libs/alsa-lib-1.1.7[${MULTILIB_USEDEP}] + ) + sound-server? ( + !media-sound/pulseaudio[daemon(+)] + !media-sound/pulseaudio-daemon + ) + ssl? ( dev-libs/openssl:= ) + systemd? ( sys-apps/systemd ) + system-service? ( + acct-user/pipewire + acct-group/pipewire + ) + udev? ( virtual/libudev[${MULTILIB_USEDEP}] ) + v4l? ( media-libs/libv4l ) + X? ( + media-libs/libcanberra + x11-libs/libX11 + x11-libs/libXfixes + ) + zeroconf? ( net-dns/avahi ) +" + +DEPEND="${RDEPEND}" + +# TODO: Consider use cases where pipewire is not used for driving audio +# Doing so with WirePlumber currently involves editing Lua scripts +PDEPEND=">=media-video/wireplumber-0.4.8-r3" + +# Present RDEPEND that are currently always disabled due to the PW +# code using them being required to be disabled by Gentoo guidelines +# (i.e. developer binaries not meant for users) and unready code +# media-video/ffmpeg:= +# media-libs/libsdl2 +# >=media-libs/vulkan-loader-1.1.69 +# +# Ditto for DEPEND +# >=dev-util/vulkan-headers-1.1.69 + +DOCS=( {README,INSTALL}.md NEWS ) + +PATCHES=( + "${FILESDIR}"/${PN}-0.3.25-enable-failed-mlock-warning.patch + "${FILESDIR}"/${P}-audioconvert-samples.patch + "${FILESDIR}"/${P}-fortify-source.patch +) + +# limitsdfile related code taken from =sys-auth/realtime-base-0.1 +# with changes as necessary. +limitsdfile=40-${PN}.conf + +python_check_deps() { + has_version -b "dev-python/docutils[${PYTHON_USEDEP}]" +} + +src_prepare() { + default + + einfo "Generating ${limitsdfile}" + cat > ${limitsdfile} <<- EOF || die + # Start of ${limitsdfile} from ${P} + + @audio - memlock 256 + + $(use system-service && { + echo @pipewire - rtprio 95 + echo @pipewire - nice -19 + echo @pipewire - memlock 4194304 + }) + + # End of ${limitsdfile} from ${P} + EOF +} + +multilib_src_configure() { + # https://bugs.gentoo.org/838301 + filter-flags -fno-semantic-interposition + + local emesonargs=( + -Ddocdir="${EPREFIX}"/usr/share/doc/${PF} + + $(meson_feature dbus) + $(meson_native_use_feature zeroconf avahi) + $(meson_native_use_feature doc docs) + $(meson_native_enabled examples) # TODO: Figure out if this is still important now that media-session gone + $(meson_native_enabled man) + $(meson_feature test tests) + -Dinstalled_tests=disabled # Matches upstream; Gentoo never installs tests + $(meson_native_use_feature gstreamer) + $(meson_native_use_feature gstreamer gstreamer-device-provider) + $(meson_native_use_feature systemd) + + $(meson_native_use_feature system-service systemd-system-service) + -Dsystemd-system-unit-dir="$(systemd_get_systemunitdir)" + -Dsystemd-user-unit-dir="$(systemd_get_userunitdir)" + + $(meson_native_use_feature systemd systemd-user-service) + $(meson_feature pipewire-alsa) # Allows integrating ALSA apps into PW graph + -Dspa-plugins=enabled + -Dalsa=enabled # Allows using kernel ALSA for sound I/O (NOTE: media-session is gone so IUSE=alsa/spa_alsa/alsa-backend might be possible) + -Daudiomixer=enabled # Matches upstream + -Daudioconvert=enabled # Matches upstream + $(meson_native_use_feature bluetooth bluez5) + $(meson_native_use_feature bluetooth bluez5-backend-hsp-native) + $(meson_native_use_feature bluetooth bluez5-backend-hfp-native) + $(meson_native_use_feature bluetooth bluez5-backend-ofono) + $(meson_native_use_feature bluetooth bluez5-backend-hsphfpd) + $(meson_native_use_feature bluetooth bluez5-codec-aac) + $(meson_native_use_feature bluetooth bluez5-codec-aptx) + $(meson_native_use_feature bluetooth bluez5-codec-ldac) + $(meson_native_use_feature bluetooth libusb) # At least for now only used by bluez5 native (quirk detection of adapters) + $(meson_native_use_feature echo-cancel echo-cancel-webrtc) #807889 + # Not yet packaged. + -Dbluez5-codec-lc3plus=disabled + -Dcontrol=enabled # Matches upstream + -Daudiotestsrc=enabled # Matches upstream + -Dffmpeg=disabled # Disabled by upstream and no major developments to spa/plugins/ffmpeg/ since May 2020 + -Dpipewire-jack=enabled # Allows integrating JACK apps into PW graph + $(meson_native_use_feature jack-client jack) # Allows PW to act as a JACK client + $(meson_use jack-sdk jack-devel) + $(usex jack-sdk "-Dlibjack-path=${EPREFIX}/usr/$(get_libdir)" '') + -Dsupport=enabled # Miscellaneous/common plugins, such as null sink + -Devl=disabled # Matches upstream + -Dtest=disabled # fakesink and fakesource plugins + $(meson_native_use_feature lv2) + $(meson_native_use_feature v4l v4l2) + -Dlibcamera=disabled # libcamera is not in Portage tree + $(meson_native_use_feature ssl raop) + -Dvideoconvert=enabled # Matches upstream + -Dvideotestsrc=enabled # Matches upstream + -Dvolume=enabled # Matches upstream + -Dvulkan=disabled # Uses pre-compiled Vulkan compute shader to provide a CGI video source (dev thing; disabled by upstream) + $(meson_native_use_feature extra pw-cat) + $(meson_feature udev) + -Dudevrulesdir="${EPREFIX}$(get_udevdir)/rules.d" + -Dsdl2=disabled # Controls SDL2 dependent code (currently only examples when -Dinstalled_tests=enabled which we never install) + $(meson_native_use_feature extra sndfile) # Enables libsndfile dependent code (currently only pw-cat) + -Dsession-managers="[]" # All available session managers are now their own projects, so there's nothing to build + + # Just for bell sounds in X11 right now. + $(meson_native_use_feature X x11) + $(meson_native_use_feature X x11-xfixes) + $(meson_native_use_feature X libcanberra) + ) + + meson_src_configure +} + +multilib_src_install() { + # Our custom DOCS do not exist in multilib source directory + DOCS= meson_src_install +} + +multilib_src_install_all() { + einstalldocs + + insinto /etc/security/limits.d + doins ${limitsdfile} + + if use pipewire-alsa; then + dodir /etc/alsa/conf.d + + # Install pipewire conf loader hook + insinto /usr/share/alsa/alsa.conf.d + doins "${FILESDIR}"/99-pipewire-default-hook.conf + eprefixify "${ED}"/usr/share/alsa/alsa.conf.d/99-pipewire-default-hook.conf + + # These will break if someone has /etc that is a symbolic link to a subfolder! See #724222 + # And the current dosym8 -r implementation is likely affected by the same issue, too. + dosym ../../../usr/share/alsa/alsa.conf.d/50-pipewire.conf /etc/alsa/conf.d/50-pipewire.conf + dosym ../../../usr/share/alsa/alsa.conf.d/99-pipewire-default-hook.conf /etc/alsa/conf.d/99-pipewire-default-hook.conf + fi + + # Enable required wireplumber alsa and bluez monitors + if use sound-server; then + dodir /etc/wireplumber/main.lua.d + echo "alsa_monitor.enabled = true" > "${ED}"/etc/wireplumber/main.lua.d/89-gentoo-sound-server-enable-alsa-monitor.lua || die + + dodir /etc/wireplumber/bluetooth.lua.d + echo "bluez_monitor.enabled = true" > "${ED}"/etc/wireplumber/bluetooth.lua.d/89-gentoo-sound-server-enable-bluez-monitor.lua || die + fi + + if ! use systemd; then + insinto /etc/xdg/autostart + newins "${FILESDIR}"/pipewire.desktop-r1 pipewire.desktop + + exeinto /usr/bin + newexe "${FILESDIR}"/gentoo-pipewire-launcher.in gentoo-pipewire-launcher + + # Disable pipewire-pulse if sound-server is disabled. + if ! use sound-server ; then + sed -i -s '/pipewire -c pipewire-pulse.conf/s/^/#/' "${ED}"/usr/bin/gentoo-pipewire-launcher || die + fi + + eprefixify "${ED}"/usr/bin/gentoo-pipewire-launcher + fi +} + +pkg_postrm() { + use udev && udev_reload +} + +pkg_postinst() { + use udev && udev_reload + + elog "It is recommended to raise RLIMIT_MEMLOCK to 256 for users" + elog "using PipeWire. Do it either manually or add yourself" + elog "to the 'audio' group:" + elog + elog " usermod -aG audio <youruser>" + elog + + local ver + for ver in ${REPLACING_VERSIONS} ; do + if ver_test ${ver} -le 0.3.53-r1 && ! use sound-server ; then + ewarn "USE=sound-server is disabled! If you want PipeWire to provide" + ewarn "your sound, please enable it. See the wiki at" + ewarn "https://wiki.gentoo.org/wiki/PipeWire#Replacing_PulseAudio" + ewarn "for more details." + + break + fi + done + + if ! use jack-sdk; then + elog "JACK emulation is incomplete and not all programs will work. PipeWire's" + elog "alternative libraries have been installed to a non-default location." + elog "To use them, put pw-jack <application> before every JACK application." + elog "When using pw-jack, do not run jackd/jackdbus. However, a virtual/jack" + elog "provider is still needed to compile the JACK applications themselves." + elog + fi + + if use systemd; then + elog "When switching from PulseAudio, you may need to disable PulseAudio:" + elog + elog " systemctl --user disable pulseaudio.service pulseaudio.socket" + elog + elog "To use PipeWire, the user units must be manually enabled" + elog "by running this command as each user you use for desktop activities:" + elog + elog " systemctl --user enable pipewire.socket pipewire-pulse.socket" + elog + elog "A reboot is recommended to avoid interferences from still running" + elog "PulseAudio daemon." + elog + elog "Both new users and those upgrading need to enable WirePlumber" + elog "for relevant users:" + elog + elog " systemctl --user disable pipewire-media-session.service" + elog " systemctl --user --force enable wireplumber.service" + elog + elog "Root user may replace --user with --global to change system default" + elog "configuration for all of the above commands." + else + ewarn "PipeWire daemon startup has been moved to a launcher script!" + ewarn "Make sure that ${EROOT}/etc/pipewire/pipewire.conf either does not exist or no" + ewarn "longer is set to start a session manager or PulseAudio compatibility daemon (all" + ewarn "lines similar to '{ path = /usr/bin/pipewire*' should be commented out)" + ewarn + ewarn "Those manually starting /usr/bin/pipewire via .xinitrc or similar _must_ from" + ewarn "now on start ${EROOT}/usr/bin/gentoo-pipewire-launcher instead! It is highly" + ewarn "advised that a D-Bus user session is set up before starting the script." + ewarn + + if use sound-server && ( has_version 'media-sound/pulseaudio[daemon]' || has_version 'media-sound/pulseaudio-daemon' ) ; then + elog "This ebuild auto-enables PulseAudio replacement. Because of that, users" + elog "are recommended to edit pulseaudio client configuration files:" + elog "${EROOT}/etc/pulse/client.conf and ${EROOT}/etc/pulse/client.conf.d/enable-autospawn.conf" + elog "if it exists, and disable autospawning of the original daemon by setting:" + elog + elog " autospawn = no" + elog + elog "Please note that the semicolon (;) must _NOT_ be at the beginning of the line!" + elog + elog "Alternatively, if replacing PulseAudio daemon is not desired, edit" + elog "${EROOT}/usr/bin/gentoo-pipewire-launcher by commenting out the relevant" + elog "command:" + elog + elog "#${EROOT}/usr/bin/pipewire -c pipewire-pulse.conf &" + elog + fi + elog "NOTE:" + elog "Starting with PipeWire-0.3.30, this package is no longer installing its config" + elog "into ${EROOT}/etc/pipewire by default. In case you need to change" + elog "its config, please start by copying default config from ${EROOT}/usr/share/pipewire" + elog "and just override the sections you want to change." + fi + elog + + elog "For latest tips and tricks, troubleshooting information and documentation" + elog "in general, please refer to https://wiki.gentoo.org/wiki/PipeWire" + elog + + optfeature_header "The following can be installed for optional runtime features:" + optfeature "restricted realtime capabilities via D-Bus" sys-auth/rtkit + + if use sound-server && ! use pipewire-alsa; then + optfeature "ALSA plugin to use PulseAudio interface for output" "media-plugins/alsa-plugins[pulseaudio]" + fi + + if has_version 'net-misc/ofono' ; then + ewarn "Native backend has become default. Please disable oFono via:" + if systemd_is_booted ; then + ewarn "systemctl disable ofono" + else + ewarn "rc-update delete ofono" + fi + ewarn + fi + + if use system-service; then + ewarn + ewarn "WARNING: you have enabled the system-service USE flag, which installs" + ewarn "the system-wide systemd units that enable PipeWire to run as a system" + ewarn "service. This is more than likely NOT what you want. You are strongly" + ewarn "advised not to enable this mode and instead stick with systemd user" + ewarn "units. The default configuration files will likely not work out of" + ewarn "box, and you are on your own with configuration." + ewarn + fi +} |