We have moved to Git. This repository is only provided for compatibility with old installations. Learn how to migrate your installation here.

comparison media-libs/blackmagic-desktop-video/blackmagic-desktop-video-12.4.1.ebuild @ 247:3bbfc36612f3

[sync] imported 6cdbf01..4d14517 from upstream commit 4d1451762f196bc7ccdd0a352ca4ee5c04dac787 Author: Daniel Neugebauer <dneuge@energiequant.de> Date: Thu Mar 16 22:19:10 2023 +0100 media-libs/blackmagic-desktop-video-sdk-12.4.1: remove precompiled binaries by default commit ad0224e73a84749146584393e2c66636e74a6d4f Author: Daniel Neugebauer <dneuge@energiequant.de> Date: Thu Mar 16 22:03:57 2023 +0100 updated BlackMagic ebuilds to Desktop Video 12.4.1 release
author Migration Sync <gentoo-overlay@megacoffee.net>
date Thu, 16 Mar 2023 21:30:02 +0000
parents
children
comparison
equal deleted inserted replaced
246:b4f83f7a0863 247:3bbfc36612f3
1 # Copyright 1999-2022 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3
4 # TODOs:
5 # - fix QA notice about installing symlinks in /usr/lib
6
7 EAPI=8
8
9 inherit linux-info linux-mod
10
11 DESCRIPTION="Desktop Video - drivers and tools for products by Blackmagic Design including DeckLink, UltraStudio and Intensity"
12 HOMEPAGE="http://www.blackmagicdesign.com/"
13 HOMEPAGE_DOWNLOAD_NAME="Desktop Video ${PV}"
14
15 SRC_URI="Blackmagic_Desktop_Video_Linux_${PV}.tar.gz"
16 DESKTOP_VIDEO_SHORT_VERSION="12.4.1"
17 DESKTOP_VIDEO_VERSION="12.4.1a15"
18 CONTAINER_DIR="Blackmagic_Desktop_Video_Linux_${DESKTOP_VIDEO_SHORT_VERSION}"
19 UNPACKED_DIR="desktopvideo-${DESKTOP_VIDEO_VERSION}-x86_64"
20
21 LICENSE="BlackmagicDesktopVideo"
22 SLOT="0"
23 KEYWORDS="~amd64"
24 IUSE="autostart +desktop patch_compat"
25 #IUSE="autostart +desktop"
26 RESTRICT="fetch splitdebug strip"
27
28 # dependencies found via command: (ldd would include transitive dependencies)
29 # for file in /usr/lib/libDeckLink* /usr/lib/blackmagic/DesktopVideo/* /usr/lib/blackmagic/DesktopVideo/plugins/*/*; do objdump -p $file | grep NEEDED; done 2>/dev/null | cut -b24- | sort | uniq | grep -vE 'lib(Qt5(Core|Network|Gui|Widgets)|qxcb|qgtk2|DeckLink)'
30 # equery belongs $(for file in /usr/lib/libDeckLink* /usr/lib/blackmagic/DesktopVideo/* /usr/lib/blackmagic/DesktopVideo/plugins/*/*; do objdump -p $file | grep NEEDED; done 2>/dev/null | cut -b24- | sort | uniq | grep -vE 'lib(Qt5(Core|Network|Gui|Widgets)|qxcb|qgtk2|DeckLink)')
31 DEPEND=""
32 RDEPEND="${DEPEND}
33
34 desktop? (
35 media-libs/freetype
36 media-libs/fontconfig
37 media-libs/libglvnd
38 sys-apps/dbus
39 x11-libs/libICE
40 x11-libs/libSM
41 x11-libs/libX11
42 x11-libs/libXext
43 x11-libs/libXrender
44 x11-libs/libxcb
45 )
46
47 dev-libs/glib
48 dev-libs/libusb
49 sys-apps/util-linux
50 sys-devel/gcc
51 sys-libs/glibc
52 sys-libs/libcxx
53 sys-libs/libcxxabi
54 "
55
56 # supress QA warnings about stripping etc., i.e. stuff we cannot change since we install prebuilt binaries
57 QA_PREBUILT="opt/blackmagic-desktop-video/usr/bin/* opt/blackmagic-desktop-video/usr/lib/*"
58
59 # for kernel module compilation
60 MODULE_NAMES="blackmagic(misc:${S}/usr/src/blackmagic-${DESKTOP_VIDEO_VERSION}:${S}/usr/src/blackmagic-${DESKTOP_VIDEO_VERSION}) blackmagic-io(misc:${S}/usr/src/blackmagic-io-${DESKTOP_VIDEO_VERSION}:${S}/usr/src/blackmagic-io-${DESKTOP_VIDEO_VERSION})"
61 BUILD_TARGETS="clean all"
62 BUILD_PARAMS="-j1" # work around race-condition causing .bmd-support.o.cmd to be missing
63 CONFIG_CHECK="~!WERROR"
64 ERROR_WERROR="If compilation fails disable CONFIG_WERROR and recompile kernel before retrying."
65
66 PATCH_COMPAT_MAX_MAJOR=6
67 PATCH_COMPAT_MAX_MINOR=1
68
69 OFFICIAL_COMPAT_MAX_MAJOR=6
70 OFFICIAL_COMPAT_MAX_MINOR=0
71
72 pkg_nofetch() {
73 # 1 2 3 4 5 6 7 8
74 # 1234567890123456789012345678901234567890123456789012345678901234567890123456789012
75 einfo "Please visit ${HOMEPAGE} and download \"${HOMEPAGE_DOWNLOAD_NAME}\""
76 einfo "for your product from the support section and move it to your DISTDIR"
77 einfo "(/var/cache/distfiles or /usr/portage/distfiles unless you changed it)."
78 einfo ""
79 einfo " expected filename: ${SRC_URI}"
80 einfo ""
81 einfo "If your browser downloads a .tar file you will need to rename it to .tar.gz"
82 }
83
84 pkg_pretend() {
85 if kernel_is -gt $PATCH_COMPAT_MAX_MAJOR $PATCH_COMPAT_MAX_MINOR; then
86 # 12345678901234567890123456789012345678901234567890123456789012345678901234567890
87 ewarn "Your kernel version seems to be unsupported; you have two options if modules do"
88 ewarn "not work/compile:"
89 ewarn ""
90 ewarn " 1) Recommended: downgrade to an officially supported kernel version (e.g. ${OFFICIAL_COMPAT_MAX_MAJOR}.${OFFICIAL_COMPAT_MAX_MINOR})"
91 ewarn ""
92 ewarn " 2) Downgrade to an inofficially supported kernel version (max. ${PATCH_COMPAT_MAX_MAJOR}.${PATCH_COMPAT_MAX_MINOR}) and apply"
93 ewarn " the *inofficial* patch which allows more recent kernel versions but may void"
94 ewarn " warranty permanently. This can be done by setting the USE-flag patch_compat"
95 ewarn " for this ebuild. The patch is not guaranteed to work at all and may even"
96 ewarn " damage your hardware. Use at your own risk; you've been warned!"
97 ewarn ""
98 ewarn "It's highly recommended to choose option 1 and wait for an officially supported"
99 ewarn "update unless you want to risk loosing your hardware and support."
100 elif kernel_is -gt $OFFICIAL_COMPAT_MAX_MAJOR $OFFICIAL_COMPAT_MAX_MINOR && ! use patch_compat; then
101 # 12345678901234567890123456789012345678901234567890123456789012345678901234567890
102 ewarn "Your kernel version seems to be unsupported; you have two options if modules do"
103 ewarn "not work/compile:"
104 ewarn ""
105 ewarn " 1) Recommended: downgrade to an officially supported kernel version (e.g. ${OFFICIAL_COMPAT_MAX_MAJOR}.${OFFICIAL_COMPAT_MAX_MINOR})"
106 ewarn ""
107 ewarn " 2) Apply an *inofficial* patch which allows more recent kernel versions but may"
108 ewarn " void warranty permanently. This can be done by setting the USE-flag"
109 ewarn " patch_compat for this ebuild. The patch is not guaranteed to work at all"
110 ewarn " and may even damage your hardware. Use at your own risk; you've been warned!"
111 ewarn ""
112 ewarn "It's highly recommended to choose option 1 and wait for an officially supported"
113 ewarn "update unless you want to risk loosing your hardware and support."
114 elif kernel_is -le $OFFICIAL_COMPAT_MAX_MAJOR $OFFICIAL_COMPAT_MAX_MINOR && use patch_compat; then
115 # 12345678901234567890123456789012345678901234567890123456789012345678901234567890
116 einfo "Your kernel version is officially supported by this release. It is recommended"
117 einfo "to unset patch_compat USE flag until you need it again."
118 einfo "Inofficial patches will not be applied this time."
119 fi
120 }
121
122 src_unpack() {
123 unpack ${A}
124
125 cd ${WORKDIR}
126 tar xfz ${CONTAINER_DIR}/other/x86_64/desktopvideo-${DESKTOP_VIDEO_VERSION}-x86_64.tar.gz
127
128 # symlink to what is supposed to have been prepared
129 ln -s ${UNPACKED_DIR} ${P}
130 }
131
132 src_prepare() {
133 if kernel_is -gt $OFFICIAL_COMPAT_MAX_MAJOR $OFFICIAL_COMPAT_MAX_MINOR && use patch_compat; then
134 eapply "${FILESDIR}/12.4.1__6_1__01_prandom_u32.patch"
135 eapply "${FILESDIR}/12.4.1__6_1__02_snd_dma_continuous_data.patch"
136 fi
137 eapply_user
138 }
139
140 src_compile() {
141 # library/tools are binary but kernel module requires compilation
142 linux-mod_src_compile
143 }
144
145 src_install() {
146 # all pre-built binaries should go into /opt and be symlinked to usr/bin etc.
147 finalinstalldir="/opt/blackmagic-desktop-video"
148 installdir="${D}${finalinstalldir}"
149
150 mkdir -p ${installdir}
151 cp -a ${WORKDIR}/${UNPACKED_DIR}/* ${installdir}/
152
153 # copy text files (readme and license) from parent directory
154 cp -a ${WORKDIR}/${CONTAINER_DIR}/*.txt ${installdir}/
155
156 # there should a blank directory in /etc according to the archive...
157 mkdir -p ${installdir}/etc/blackmagic
158 chmod 755 ${installdir}/etc/blackmagic
159
160 # NOTE: Not linking usr/lib/systemd as I do not use that and thus canot test it...
161 symlinks=(
162 'etc/init.d/DesktopVideoHelper'
163 'etc/dracut.conf.d/dracut-blackmagic.conf'
164 'usr/bin/BlackmagicDesktopVideoSetup'
165 'usr/bin/DesktopVideoUpdateTool'
166 'usr/bin/DesktopVideoUpdater'
167 'usr/lib/blackmagic'
168 'usr/lib/libDeckLinkAPI.so'
169 'usr/lib/libDeckLinkPreviewAPI.so'
170 'usr/share/applications/BlackmagicDesktopVideoSetup.desktop'
171 'usr/share/applications/DesktopVideoUpdater.desktop'
172 'usr/share/icons/hicolor/16x16/apps/BlackmagicDesktopVideoSetup.png'
173 'usr/share/icons/hicolor/16x16/apps/DesktopVideoUpdater.png'
174 'usr/share/icons/hicolor/32x32/apps/BlackmagicDesktopVideoSetup.png'
175 'usr/share/icons/hicolor/32x32/apps/DesktopVideoUpdater.png'
176 'usr/share/icons/hicolor/48x48/apps/BlackmagicDesktopVideoSetup.png'
177 'usr/share/icons/hicolor/48x48/apps/DesktopVideoUpdater.png'
178 'usr/share/icons/hicolor/128x128/apps/BlackmagicDesktopVideoSetup.png'
179 'usr/share/icons/hicolor/128x128/apps/DesktopVideoUpdater.png'
180 'usr/share/icons/hicolor/256x256/apps/BlackmagicDesktopVideoSetup.png'
181 'usr/share/icons/hicolor/256x256/apps/DesktopVideoUpdater.png'
182 )
183
184 for path in "${symlinks[@]}"; do
185 dosym /opt/blackmagic-desktop-video/${path} ${path}
186 done
187
188 # copy but do not compress documentation
189 # reason for having it twice (in /opt and /usr):
190 # - symlinking with original directory names causes a QA notice as we should use our package name
191 # - symlinking with our package name causes some weird sandbox violation
192 docompress -x /usr/share/doc
193 docinto desktopvideo
194 dodoc -r ${finalinstalldir}/usr/share/doc/desktopvideo/*
195 docinto desktopvideo-gui
196 dodoc -r ${finalinstalldir}/usr/share/doc/desktopvideo-gui/*
197
198 # dneuge: no clue on how to use this...
199 ## QA notice says we should generate a linker script if we don't place libraries in /usr/lib
200 ## see: https://devmanual.gentoo.org/eclass-reference/toolchain-funcs.eclass/index.html
201 #gen_usr_ldscript usr/lib/libDeckLinkAPI.so usr/lib/libDeckLinkPreviewAPI.so
202
203 # don't symlink man-pages, install a copy instead
204 # NOTE: DesktopVideoHelper appears to have disappeared, so we won't install the man page either
205 doman usr/share/man/man1/BlackmagicDesktopVideoSetup.1
206 doman usr/share/man/man1/BlackmagicFirmwareUpdater.1
207 doman usr/share/man/man1/DesktopVideoHelper.1
208 doman usr/share/man/man1/DesktopVideoUpdateTool.1
209 doman usr/share/man/man1/DesktopVideoUpdater.1
210
211 # udev rules should be placed in /lib/udev/rules.d instead
212 dosym /opt/blackmagic-desktop-video/etc/udev/rules.d/55-blackmagic.rules /lib/udev/rules.d/55-blackmagic.rules
213
214 # add firmware check to autostart?
215 if use autostart; then
216 dosym /opt/blackmagic-desktop-video/etc/xdg/autostart/DesktopVideoUpdaterAutoStart.desktop /etc/xdg/autostart/DesktopVideoUpdaterAutoStart.desktop
217 fi
218
219 # kernel module
220 linux-mod_src_install
221 }
222
223 pkg_postinst() {
224 # kernel module
225 linux-mod_pkg_postinst
226
227 # 12345678901234567890123456789012345678901234567890123456789012345678901234567890
228 einfo ""
229 einfo "Please do *NOT* report any QA errors to Gentoo or Blackmagic!"
230 einfo ""
231 einfo "Kernel modules are blackmagic and blackmagic-io. Try blackmagic if in doubt."
232 einfo "When upgrading, please rmmod both first. Then modprobe blackmagic to see if it"
233 einfo "works (it should print your devices to kernel log)."
234 einfo ""
235 einfo "Installed tools are DesktopVideoUpdateTool (CLI), DesktopVideoUpdater (GUI) and"
236 einfo "BlackmagicDesktopVideoSetup."
237 einfo ""
238 einfo "For Media Express emerge media-video/blackmagic-media-express."
239 einfo ""
240 if use autostart; then
241 einfo "Automated firmware update check has been installed."
242 else
243 einfo "Automated firmware update check has *not* been installed this time."
244 einfo "(set USE flag autostart if you want that)"
245 fi
246 einfo ""
247 einfo "If your product is not being recognized, there are two common reasons:"
248 einfo ""
249 einfo " 1) You may need to increase the vmalloc limit in your kernel."
250 einfo " This can be done by adding e.g. vmalloc=256M to your kernel boot line. You"
251 einfo " can see current usage by running"
252 einfo ""
253 einfo " # grep VmallocUsed /proc/meminfo"
254 einfo ""
255 einfo " 2) Your firmware may be outdated. Make sure you reload the modules (or simply"
256 einfo " reboot) and then run DesktopVideoUpdateTool (CLI) or, if you prefer,"
257 einfo " DesktopVideoUpdater (GUI)"
258 einfo ""
259 einfo "Licenses can be found in: ${finalinstalldir}/usr/share/doc/"
260 einfo ""
261 einfo "We are reloading udev rules now..."
262 /bin/udevadm control --reload-rules || einfo " ... failed, you may want to check this before rebooting!"
263
264 #if kernel_is -gt $OFFICIAL_COMPAT_MAX_MAJOR $OFFICIAL_COMPAT_MAX_MINOR && use patch_compat; then
265 # # 12345678901234567890123456789012345678901234567890123456789012345678901234567890
266 # ewarn ""
267 # ewarn " *** YOU HAVE APPLIED INOFFICIAL PATCHES TO INSTALLED KERNEL MODULES ***"
268 # ewarn " *** DO NOT REPORT ANY ERRORS TO BLACKMAGIC, YOU BREAK WARRANTY ***"
269 # ewarn ""
270 # ewarn "Applying those patches is generally discouraged as it can potentially damage"
271 # ewarn "your hardware and therefore may void your warranty. You are recommended to"
272 # ewarn "go back to an older kernel and wait for an official update instead of applying"
273 # ewarn "these patches. At the very least, note that there is no support of any kind when"
274 # ewarn "using patched drivers. Avoid contacting the vendor for support while using"
275 # ewarn "inofficial drivers. Revert to official drivers and retry with untainted hardware"
276 # ewarn "if something doesn't work as expected. Additionally, your system may behave"
277 # ewarn "unstable."
278 # ewarn ""
279 # ewarn "Remove USE-flag patch_compat and re-emerge this ebuild immediately before use"
280 # ewarn "if you enabled it accidentally."
281 # ewarn ""
282 # ewarn " *** USE AT YOUR OWN RISK ***"
283 #fi
284 }
285
286 pkg_postrm() {
287 # kernel module
288 linux-mod_pkg_postrm
289 }