Gentoo Archives: gentoo-commits

From: Ionen Wolkens <ionen@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: media-libs/cubeb/files/, media-libs/cubeb/
Date: Sat, 01 Jan 2022 20:42:11
Message-Id: 1641069668.8d33a3e7342241d33a1d66b086019b391cd61d25.ionen@gentoo
1 commit: 8d33a3e7342241d33a1d66b086019b391cd61d25
2 Author: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
3 AuthorDate: Sat Jan 1 17:15:45 2022 +0000
4 Commit: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
5 CommitDate: Sat Jan 1 20:41:08 2022 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8d33a3e7
7
8 media-libs/cubeb: initial import, 2021-12-13 snapshot
9
10 Needed to unbundle on pcsx2, also used by some out-of-tree
11 packages like yuzu.
12
13 rust being optional may be questionable given non-rust pulseaudio
14 backend is deprecated and due for removal -- but most packages
15 that bundle this tend to use the C++ version and it may be useful
16 for testing. Also upstream spoke of releasing a LTS 1.x branch that
17 likely won't remove it anytime soon.
18
19 Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>
20
21 media-libs/cubeb/Manifest | 14 +++
22 media-libs/cubeb/cubeb-0.2_p20211213.ebuild | 110 +++++++++++++++++++++
23 .../files/cubeb-0.2_p20211213-automagic.patch | 51 ++++++++++
24 media-libs/cubeb/metadata.xml | 16 +++
25 4 files changed, 191 insertions(+)
26
27 diff --git a/media-libs/cubeb/Manifest b/media-libs/cubeb/Manifest
28 new file mode 100644
29 index 000000000000..3361c26d0708
30 --- /dev/null
31 +++ b/media-libs/cubeb/Manifest
32 @@ -0,0 +1,14 @@
33 +DIST bitflags-1.3.2.crate 23021 BLAKE2B eb990bb27b2bdeb66fd7212ce582cb36e1c616debbac85df642d0c82b25439e6bf9b1e811fac76b59e58ea3c1bbea6170d03a61e8f9a395e4334a0e2e2987eda SHA512 3c698f757b5cc62f815f9a1cce365c3d2dd88e4db71f331dff8bba86c2865f755b81cb4c9bfc59bd86b7643b0943f9e09a7c4f8ad75eb2ab0e714803d0129f62
34 +DIST cache-padded-1.2.0.crate 9125 BLAKE2B d50b506aca9cfad3117be593c33bba4a5240034a838610925f9eac969155f22e0064c91f8d3588333880d1f5b6b936df87c0728530f80cd1062c73d570bfd1e4 SHA512 5b67d06908981d0e1ba01912a973cc5c90ce6612f227b306d12b13500594f5d2376d437a046e10b9cf959b609cb67fa6e24193fc651cb2d84e1f77338c6823fc
35 +DIST cc-1.0.72.crate 57495 BLAKE2B b2057ca53aacafa063a4eaa907bfb65aa32ce01a74a90b9085c8243a87723cee8ce79e4904f9d205f9d451598ee34495f8879d27c189477ca43bd39b88b5ea2e SHA512 e9a5b283b2a1fee1030009068c1f87291ec1dab7584a0892f27cc7e523c8fdfd5d986281d9aec1a00af706af1e61d7e64c245c74be7b39c8c022ae2d4f87de8d
36 +DIST cmake-0.1.46.crate 15119 BLAKE2B 0889436835c16bc47cdc671615f421a50acf6c34a3ba3b6b8b4289e11bf1b803abd15d88a65ae9c1588586151f467524517e9c60d5dcc820e41ff21711f3a536 SHA512 e2749309055c85baa242cef8d0f4a91eb7e694664c5e42339df8ccc6644d1563337b835d3d931f5a0a75351efd299a21fe6eea497941802ea041916d665c7311
37 +DIST cubeb-0.2_p20211213.tar.gz 220413 BLAKE2B 65cf123351f1d465e15c3822f4ae2890cb62e7b5cec22beffd444ac452650b71c1bbc71e50836da6d0474ae6847fdf57c4ee85975f26a35f6db4e1f7a21fef76 SHA512 33abe2bc426b06c3c6cb557fe1be62725f1dc56776d02ec6651ef8710d3a5d302b1f730ceaefe516ff1974775cdabd3753f24436c705af3c6e98fd5dabb6b015
38 +DIST cubeb-backend-0.9.0.crate 5871 BLAKE2B ac8cfd9a43eefa336fbad67c7183c3bd2375f7de36dfe17df55aef0003b950cd8eb45c823b51302f60773ebafbe6de8a80f276f5bc4c2fe250be6073fe95ae1c SHA512 e02c4703b630cbecfbe20bf3193fa88a130385885fecc18c2a8d6e464b13f0f395251afb35049cd1371532e372a6a5addc856e959fd2d6da63615f1cfdb20f14
39 +DIST cubeb-core-0.9.0.crate 10782 BLAKE2B 60feec670c0d0d74f45a2c8ef4d0d564aae3e79f28087b7392f61baf3a0f31822929cdbbf1dd2506ea5d4249765eead516e6adb8d1867fbc2e77eeec9b06eb4a SHA512 2a7b660f6a1c36e6cbdaef4e26589240675d1e553f75d2093b39e4dfc4c82327ce080f68143e7c8383cb198796d7ab764cd4038532010847d9829b98f07f530e
40 +DIST cubeb-pulse-rs-0.2_p20211213.tar.gz 37658 BLAKE2B 82b137df7072a048b6115a17a8f973f1464470094468f19c0e56835db6d8d7355115e712b02f29be3055868435c21915423cfc48c8b55f856e0b008f14802e3b SHA512 1bee7bbeacccf31e51a420cb28c37fb6747ff4b364cbf633e18e507959bbf46d4b706b35c7a200421b68295244289a56b4e8193c63f87c5996ddcdfd7c527054
41 +DIST cubeb-sys-0.9.1.crate 677935 BLAKE2B a6e10ee95e67ef03e2fa1915007a69227b28c0ade055cdff8e7941634690c6f34de8509e9b10b870097f3b17ca478794577a480232534aa1e593b6813eedbeee SHA512 594e7be07e2558ae81506ca52724bebaf51d2b99158af3808edee827f827dbfef24dc9f1a160bf23e3ac39043b17b920578164697f48a7e0fd544c0196b4f773
42 +DIST libc-0.2.112.crate 571445 BLAKE2B 3936f4fd08cda0ad5be7b1ff417b6dfc9abad14ea5cf647425d8a2e7306275e958fb5cab4de9eeaab95065176bc295065bafec3846ebadb6e15cba20de495280 SHA512 6c1a027eff21d3ef8078ad19b90b06d90790919a848e95a4c878e8c8b850d2e9be3fca36d8db39b24e472f15e5352ead1182d5491a0b382e06f8c3ead379c45f
43 +DIST pkg-config-0.3.24.crate 16489 BLAKE2B d0bd099bcc39928b6758c22b14291f2dc4f4452c0837aeed8c3ff6086cdcf29518806e4f3f379804c998d752b717a26d5c0054c071c5f4c224a3e03cc6a3ee51 SHA512 be22c609b3d5a9a38bab1d30792cff397cc908f1c53fb2da68a9a7d1258e53ef64c1c5b26d840b0ed1d35b307c98ffb499c82e5796e88be0a6ecc0c6f3b5dbfb
44 +DIST ringbuf-0.2.6.crate 18882 BLAKE2B 048402ee7e0fbe81597fa8450a50f89faaffac8dbe2cba1d1ddb870127e0a85f0e4f7553a806ea94530c00e113ee039a9c5df4d5e458bffdd3d483f09b39fc0a SHA512 e8a038342226f13c88137a91c27f14323b02dbafb8991c369c0332024a421edbb797db665e31ff9b35f40147fd1d71235a059930b574195add9a6613312472d6
45 +DIST semver-0.9.0.crate 17344 BLAKE2B ae782bc78f29e45577de8574ee58959c70b54bb0b6f45a5a7b09cc4d358d9a0a80bbefc6e0f2a330e2b55adfbbe5c1f64f4ec9bb94c4adf7bb3e4fc9c142db6c SHA512 03a2ea563456f812c301721c3572370fe4934a22db60079da0dd6ffa33fa789e5e2436ef09e62fc35e0b742b06fabc290992c74eed80419a353c9de9449928dc
46 +DIST semver-parser-0.7.0.crate 10268 BLAKE2B e46b7cf9d292f8fc54561fca4df8534dc96f6be920a5c869c405ddb31b9d1a18eab0799207113cf4910a52cc0df5017ab1bc1883a7c3787ebf2d60f09ac0ab4f SHA512 17320468ec6b9862d595f358d70c09ac6e09db7885fe0ead7a1e596f79350a6306e8bfde5bbd6512008a7c5454da1c7ae55fe1e3bc1c1ff02ac9df54c0a6121f
47
48 diff --git a/media-libs/cubeb/cubeb-0.2_p20211213.ebuild b/media-libs/cubeb/cubeb-0.2_p20211213.ebuild
49 new file mode 100644
50 index 000000000000..46cafe446b91
51 --- /dev/null
52 +++ b/media-libs/cubeb/cubeb-0.2_p20211213.ebuild
53 @@ -0,0 +1,110 @@
54 +# Copyright 2022 Gentoo Authors
55 +# Distributed under the terms of the GNU General Public License v2
56 +
57 +EAPI=8
58 +
59 +CARGO_OPTIONAL=1
60 +CRATES="
61 + bitflags-1.3.2
62 + cache-padded-1.2.0
63 + cc-1.0.72
64 + cmake-0.1.46
65 + cubeb-backend-0.9.0
66 + cubeb-core-0.9.0
67 + cubeb-sys-0.9.1
68 + libc-0.2.112
69 + pkg-config-0.3.24
70 + ringbuf-0.2.6
71 + semver-0.9.0
72 + semver-parser-0.7.0"
73 +inherit cargo cmake
74 +
75 +CUBEB_COMMIT="773f16b7ea308392c05be3e290163d1f636e6024"
76 +PULSERS_COMMIT="f2456201dbfdc467b80f0ff6bbb1b8a6faf7df02"
77 +
78 +DESCRIPTION="Cross-platform audio library"
79 +HOMEPAGE="https://github.com/mozilla/cubeb/"
80 +SRC_URI="
81 + https://github.com/mozilla/cubeb/archive/${CUBEB_COMMIT}.tar.gz -> ${P}.tar.gz
82 + pulseaudio? ( rust? (
83 + https://github.com/mozilla/cubeb-pulse-rs/archive/${PULSERS_COMMIT}.tar.gz -> ${PN}-pulse-rs-${PV}.tar.gz
84 + $(cargo_crate_uris)
85 + ) )"
86 +S="${WORKDIR}/${PN}-${CUBEB_COMMIT}"
87 +
88 +LICENSE="ISC pulseaudio? ( rust? ( || ( Apache-2.0 MIT ) ) )"
89 +SLOT="0"
90 +KEYWORDS="~amd64 ~x86"
91 +IUSE="alsa doc jack pulseaudio +rust sndio test"
92 +RESTRICT="!test? ( test )"
93 +
94 +RDEPEND="
95 + media-libs/speexdsp
96 + alsa? ( media-libs/alsa-lib )
97 + jack? ( virtual/jack )
98 + pulseaudio? ( media-sound/pulseaudio )
99 + sndio? ( media-sound/sndio:= )"
100 +DEPEND="
101 + ${RDEPEND}
102 + test? ( dev-cpp/gtest )"
103 +BDEPEND="
104 + doc? ( app-doc/doxygen )
105 + pulseaudio? ( rust? ( ${RUST_DEPEND} ) )"
106 +
107 +PATCHES=(
108 + "${FILESDIR}"/${P}-automagic.patch
109 +)
110 +
111 +src_unpack() {
112 + use pulseaudio && use rust && cargo_src_unpack || default
113 +}
114 +
115 +src_prepare() {
116 + if use pulseaudio && use rust; then
117 + mv ../${PN}-pulse-rs-${PULSERS_COMMIT} src/${PN}-pulse-rs || die
118 + fi
119 +
120 + cmake_src_prepare
121 +
122 + use !debug || sed -i 's|/release/|/debug/|' CMakeLists.txt || die
123 +}
124 +
125 +src_configure() {
126 + local mycmakeargs=(
127 + -DBUILD_RUST_LIBS=$(usex rust)
128 + -DBUILD_TESTS=$(usex test)
129 + -DCHECK_ALSA=$(usex alsa)
130 + -DCHECK_JACK=$(usex jack)
131 + -DCHECK_PULSE=$(usex pulseaudio)
132 + -DCHECK_SNDIO=$(usex sndio)
133 + -DLAZY_LOAD_LIBS=no
134 + -DUSE_SANITIZERS=no
135 + $(cmake_use_find_package doc Doxygen)
136 + )
137 +
138 + use pulseaudio && use rust &&
139 + cargo_src_configure --manifest-path src/${PN}-pulse-rs/Cargo.toml
140 +
141 + cmake_src_configure
142 +}
143 +
144 +src_compile() {
145 + use pulseaudio && use rust && cargo_src_compile
146 +
147 + cmake_src_compile
148 +}
149 +
150 +src_test() {
151 + use pulseaudio && use rust && cargo_src_test
152 +
153 + # these tests need access to audio devices and no sandbox
154 + cmake_src_test -E '(audio|callback_ret|device_changed_callback|devices|duplex|latency|record|sanity|tone)'
155 +}
156 +
157 +src_install() {
158 + cmake_src_install
159 +
160 + use doc && dodoc -r "${BUILD_DIR}"/docs/html
161 +
162 + use !test || rm "${ED}"/usr/bin/test_* || die
163 +}
164
165 diff --git a/media-libs/cubeb/files/cubeb-0.2_p20211213-automagic.patch b/media-libs/cubeb/files/cubeb-0.2_p20211213-automagic.patch
166 new file mode 100644
167 index 000000000000..5dd4a9553562
168 --- /dev/null
169 +++ b/media-libs/cubeb/files/cubeb-0.2_p20211213-automagic.patch
170 @@ -0,0 +1,51 @@
171 +--- a/CMakeLists.txt
172 ++++ b/CMakeLists.txt
173 +@@ -175,38 +175,48 @@
174 +
175 + find_package(PkgConfig REQUIRED)
176 +
177 ++ if(CHECK_PULSE)
178 + pkg_check_modules(libpulse IMPORTED_TARGET libpulse)
179 + if(libpulse_FOUND)
180 + set(USE_PULSE ON)
181 + target_compile_definitions(cubeb PRIVATE DISABLE_LIBPULSE_DLOPEN)
182 + target_link_libraries(cubeb PRIVATE PkgConfig::libpulse)
183 + endif()
184 ++ endif()
185 +
186 ++ if(CHECK_ALSA)
187 + pkg_check_modules(alsa IMPORTED_TARGET alsa)
188 + if(alsa_FOUND)
189 + set(USE_ALSA ON)
190 + target_compile_definitions(cubeb PRIVATE DISABLE_LIBASOUND_DLOPEN)
191 + target_link_libraries(cubeb PRIVATE PkgConfig::alsa)
192 + endif()
193 ++ endif()
194 +
195 ++ if(CHECK_JACK)
196 + pkg_check_modules(jack IMPORTED_TARGET jack)
197 + if(jack_FOUND)
198 + set(USE_JACK ON)
199 + target_compile_definitions(cubeb PRIVATE DISABLE_LIBJACK_DLOPEN)
200 + target_link_libraries(cubeb PRIVATE PkgConfig::jack)
201 + endif()
202 ++ endif()
203 +
204 ++ if(CHECK_SNDIO)
205 + check_include_files(sndio.h USE_SNDIO)
206 + if(USE_SNDIO)
207 + target_compile_definitions(cubeb PRIVATE DISABLE_LIBSNDIO_DLOPEN)
208 + target_link_libraries(cubeb PRIVATE sndio)
209 + endif()
210 ++ endif()
211 +
212 ++ if(CHECK_AAUDIO)
213 + check_include_files(aaudio/AAudio.h USE_AAUDIO)
214 + if(USE_AAUDIO)
215 + target_compile_definitions(cubeb PRIVATE DISABLE_LIBAAUDIO_DLOPEN)
216 + target_link_libraries(cubeb PRIVATE aaudio)
217 + endif()
218 ++ endif()
219 + endif()
220 +
221 + if(USE_PULSE)
222
223 diff --git a/media-libs/cubeb/metadata.xml b/media-libs/cubeb/metadata.xml
224 new file mode 100644
225 index 000000000000..2d8dcbf48bf3
226 --- /dev/null
227 +++ b/media-libs/cubeb/metadata.xml
228 @@ -0,0 +1,16 @@
229 +<?xml version="1.0" encoding="UTF-8"?>
230 +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
231 +<pkgmetadata>
232 + <maintainer type="person">
233 + <email>ionen@g.o</email>
234 + <name>Ionen Wolkens</name>
235 + </maintainer>
236 + <use>
237 + <flag name="rust">Use the newer rust-based audio backends if available</flag>
238 + <flag name="sndio">Enable support for the <pkg>media-sound/sndio</pkg> backend</flag>
239 + </use>
240 + <upstream>
241 + <remote-id type="github">mozilla/cubeb</remote-id>
242 + <remote-id type="github">mozilla/cubeb-pulse-rs</remote-id>
243 + </upstream>
244 +</pkgmetadata>