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

diff media-libs/blackmagic-desktop-video/blackmagic-desktop-video-12.5.ebuild @ 258:1767728323bb

[sync] imported 4c2cea0..04d1b06 from upstream commit 04d1b06f1ef195542b349745a54363216d62a85a Author: Daniel Neugebauer <dneuge@energiequant.de> Date: Mon Aug 7 19:03:55 2023 +0200 media-libs/blackmagic-desktop-video: integrate udev_reload as asked commit e978764acb35ba478b0a9c01782adc148a2c9dd5 Author: Daniel Neugebauer <dneuge@energiequant.de> Date: Mon Aug 7 18:53:27 2023 +0200 BlackMagic Desktop Video: bump to 12.5 (SDK 12.5.1)
author Migration Sync <gentoo-overlay@megacoffee.net>
date Mon, 07 Aug 2023 17:15:02 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/media-libs/blackmagic-desktop-video/blackmagic-desktop-video-12.5.ebuild	Mon Aug 07 17:15:02 2023 +0000
@@ -0,0 +1,290 @@
+# Copyright 1999-2023 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+# TODOs:
+#  - fix QA notice about installing symlinks in /usr/lib
+
+EAPI=8
+
+inherit linux-info linux-mod udev
+
+DESCRIPTION="Desktop Video - drivers and tools for products by Blackmagic Design including DeckLink, UltraStudio and Intensity"
+HOMEPAGE="http://www.blackmagicdesign.com/"
+HOMEPAGE_DOWNLOAD_NAME="Desktop Video ${PV}"
+
+SRC_URI="Blackmagic_Desktop_Video_Linux_${PV}.tar.gz"
+DESKTOP_VIDEO_SHORT_VERSION="12.5"
+DESKTOP_VIDEO_VERSION="12.5a15"
+CONTAINER_DIR="Blackmagic_Desktop_Video_Linux_${DESKTOP_VIDEO_SHORT_VERSION}"
+UNPACKED_DIR="desktopvideo-${DESKTOP_VIDEO_VERSION}-x86_64"
+
+LICENSE="BlackmagicDesktopVideo"
+SLOT="0"
+KEYWORDS="~amd64"
+#IUSE="autostart +desktop patch_compat"
+IUSE="autostart +desktop"
+RESTRICT="fetch splitdebug strip"
+
+# dependencies found via command: (ldd would include transitive dependencies)
+# 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)'
+# 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)')
+DEPEND=""
+RDEPEND="${DEPEND}
+	
+	 desktop? (
+		media-libs/freetype
+		media-libs/fontconfig
+		media-libs/libglvnd
+		sys-apps/dbus
+		x11-libs/libICE
+		x11-libs/libSM
+		x11-libs/libX11
+		x11-libs/libXext
+		x11-libs/libXrender
+		x11-libs/libxcb
+	 )
+
+	 dev-libs/glib
+	 dev-libs/libusb
+	 sys-apps/util-linux
+	 sys-devel/gcc
+	 sys-libs/glibc
+	 sys-libs/libcxx
+	 sys-libs/libcxxabi
+	"
+
+# supress QA warnings about stripping etc., i.e. stuff we cannot change since we install prebuilt binaries
+QA_PREBUILT="opt/blackmagic-desktop-video/usr/bin/* opt/blackmagic-desktop-video/usr/lib/*"
+
+# for kernel module compilation
+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})"
+BUILD_TARGETS="clean all"
+BUILD_PARAMS="-j1" # work around race-condition causing .bmd-support.o.cmd to be missing
+CONFIG_CHECK="~!WERROR"
+ERROR_WERROR="If compilation fails disable CONFIG_WERROR and recompile kernel before retrying."
+
+#PATCH_COMPAT_MAX_MAJOR=6
+#PATCH_COMPAT_MAX_MINOR=1
+
+#OFFICIAL_COMPAT_MAX_MAJOR=6
+#OFFICIAL_COMPAT_MAX_MINOR=1
+
+pkg_nofetch() {
+	#               1         2         3         4         5         6         7         8
+	#      1234567890123456789012345678901234567890123456789012345678901234567890123456789012
+	einfo "Please visit ${HOMEPAGE} and download \"${HOMEPAGE_DOWNLOAD_NAME}\""
+	einfo "for your product from the support section and move it to your DISTDIR"
+	einfo "(/var/cache/distfiles or /usr/portage/distfiles unless you changed it)."
+	einfo ""
+	einfo "  expected filename: ${SRC_URI}"
+	einfo ""
+	einfo "If your browser downloads a .tar file you will need to rename it to .tar.gz"
+}
+
+#pkg_pretend() {
+#	if kernel_is -gt $PATCH_COMPAT_MAX_MAJOR $PATCH_COMPAT_MAX_MINOR; then
+#		#      12345678901234567890123456789012345678901234567890123456789012345678901234567890
+#		ewarn "Your kernel version seems to be unsupported; you have two options if modules do"
+#		ewarn "not work/compile:"
+#		ewarn ""
+#		ewarn " 1) Recommended: downgrade to an officially supported kernel version (e.g. ${OFFICIAL_COMPAT_MAX_MAJOR}.${OFFICIAL_COMPAT_MAX_MINOR})"
+#		ewarn ""
+#		ewarn " 2) Downgrade to an inofficially supported kernel version (max. ${PATCH_COMPAT_MAX_MAJOR}.${PATCH_COMPAT_MAX_MINOR}) and apply"
+#		ewarn "    the *inofficial* patch which allows more recent kernel versions but may void"
+#		ewarn "    warranty permanently. This can be done by setting the USE-flag patch_compat"
+#		ewarn "    for this ebuild. The patch is not guaranteed to work at all and may even"
+#		ewarn "    damage your hardware. Use at your own risk; you've been warned!"
+#		ewarn ""
+#		ewarn "It's highly recommended to choose option 1 and wait for an officially supported"
+#		ewarn "update unless you want to risk loosing your hardware and support."
+#	elif kernel_is -gt $OFFICIAL_COMPAT_MAX_MAJOR $OFFICIAL_COMPAT_MAX_MINOR && ! use patch_compat; then
+#		#      12345678901234567890123456789012345678901234567890123456789012345678901234567890
+#		ewarn "Your kernel version seems to be unsupported; you have two options if modules do"
+#		ewarn "not work/compile:"
+#		ewarn ""
+#		ewarn " 1) Recommended: downgrade to an officially supported kernel version (e.g. ${OFFICIAL_COMPAT_MAX_MAJOR}.${OFFICIAL_COMPAT_MAX_MINOR})"
+#		ewarn ""
+#		ewarn " 2) Apply an *inofficial* patch which allows more recent kernel versions but may"
+#		ewarn "    void warranty permanently. This can be done by setting the USE-flag"
+#		ewarn "    patch_compat for this ebuild. The patch is not guaranteed to work at all"
+#		ewarn "    and may even damage your hardware. Use at your own risk; you've been warned!"
+#		ewarn ""
+#		ewarn "It's highly recommended to choose option 1 and wait for an officially supported"
+#		ewarn "update unless you want to risk loosing your hardware and support."
+#	elif kernel_is -le $OFFICIAL_COMPAT_MAX_MAJOR $OFFICIAL_COMPAT_MAX_MINOR && use patch_compat; then
+#		#      12345678901234567890123456789012345678901234567890123456789012345678901234567890
+#		einfo "Your kernel version is officially supported by this release. It is recommended"
+#		einfo "to unset patch_compat USE flag until you need it again."
+#		einfo "Inofficial patches will not be applied this time."
+#	fi
+#}
+
+src_unpack() {
+	unpack ${A}
+	
+	cd ${WORKDIR}
+	tar xfz ${CONTAINER_DIR}/other/x86_64/desktopvideo-${DESKTOP_VIDEO_VERSION}-x86_64.tar.gz
+	
+	# symlink to what is supposed to have been prepared
+	ln -s ${UNPACKED_DIR} ${P}
+}
+
+#src_prepare() {
+#	if kernel_is -gt $OFFICIAL_COMPAT_MAX_MAJOR $OFFICIAL_COMPAT_MAX_MINOR && use patch_compat; then
+#		eapply "${FILESDIR}/12.4.1__6_1__01_prandom_u32.patch"
+#		eapply "${FILESDIR}/12.4.1__6_1__02_snd_dma_continuous_data.patch"
+#	fi
+#	eapply_user
+#}
+
+src_compile() {
+	# library/tools are binary but kernel module requires compilation
+	linux-mod_src_compile
+}
+
+src_install() {
+	# all pre-built binaries should go into /opt and be symlinked to usr/bin etc.
+	finalinstalldir="/opt/blackmagic-desktop-video"
+	installdir="${D}${finalinstalldir}"
+	
+	mkdir -p ${installdir}
+	cp -a ${WORKDIR}/${UNPACKED_DIR}/* ${installdir}/
+	
+	# copy text files (readme and license) from parent directory
+	cp -a ${WORKDIR}/${CONTAINER_DIR}/*.txt ${installdir}/
+	
+	# there should a blank directory in /etc according to the archive...
+	mkdir -p ${installdir}/etc/blackmagic
+	chmod 755 ${installdir}/etc/blackmagic
+	
+	# NOTE: Not linking usr/lib/systemd as I do not use that and thus canot test it...
+	symlinks=(
+			'etc/init.d/DesktopVideoHelper'
+			'etc/dracut.conf.d/dracut-blackmagic.conf'
+			'usr/bin/BlackmagicDesktopVideoSetup'
+			'usr/bin/DesktopVideoUpdateTool'
+			'usr/bin/DesktopVideoUpdater'
+			'usr/lib/blackmagic'
+			'usr/lib/libDeckLinkAPI.so'
+			'usr/lib/libDeckLinkPreviewAPI.so'
+			'usr/share/applications/BlackmagicDesktopVideoSetup.desktop'
+			'usr/share/applications/DesktopVideoUpdater.desktop'
+			'usr/share/icons/hicolor/16x16/apps/BlackmagicDesktopVideoSetup.png'
+			'usr/share/icons/hicolor/16x16/apps/DesktopVideoUpdater.png'
+			'usr/share/icons/hicolor/32x32/apps/BlackmagicDesktopVideoSetup.png'
+			'usr/share/icons/hicolor/32x32/apps/DesktopVideoUpdater.png'
+			'usr/share/icons/hicolor/48x48/apps/BlackmagicDesktopVideoSetup.png'
+			'usr/share/icons/hicolor/48x48/apps/DesktopVideoUpdater.png'
+			'usr/share/icons/hicolor/128x128/apps/BlackmagicDesktopVideoSetup.png'
+			'usr/share/icons/hicolor/128x128/apps/DesktopVideoUpdater.png'
+			'usr/share/icons/hicolor/256x256/apps/BlackmagicDesktopVideoSetup.png'
+			'usr/share/icons/hicolor/256x256/apps/DesktopVideoUpdater.png'
+                 )
+	
+	for path in "${symlinks[@]}"; do
+		dosym /opt/blackmagic-desktop-video/${path} ${path}
+	done
+	
+	# copy but do not compress documentation
+	# reason for having it twice (in /opt and /usr):
+	# - symlinking with original directory names causes a QA notice as we should use our package name
+	# - symlinking with our package name causes some weird sandbox violation
+	docompress -x /usr/share/doc
+	docinto desktopvideo
+	dodoc -r ${finalinstalldir}/usr/share/doc/desktopvideo/*
+	docinto desktopvideo-gui
+	dodoc -r ${finalinstalldir}/usr/share/doc/desktopvideo-gui/*
+	
+	# dneuge: no clue on how to use this...
+	## QA notice says we should generate a linker script if we don't place libraries in /usr/lib
+	## see: https://devmanual.gentoo.org/eclass-reference/toolchain-funcs.eclass/index.html
+	#gen_usr_ldscript usr/lib/libDeckLinkAPI.so usr/lib/libDeckLinkPreviewAPI.so
+
+	# don't symlink man-pages, install a copy instead
+	# NOTE: DesktopVideoHelper appears to have disappeared, so we won't install the man page either
+	doman usr/share/man/man1/BlackmagicDesktopVideoSetup.1
+	doman usr/share/man/man1/BlackmagicFirmwareUpdater.1
+	doman usr/share/man/man1/DesktopVideoHelper.1
+	doman usr/share/man/man1/DesktopVideoUpdateTool.1
+	doman usr/share/man/man1/DesktopVideoUpdater.1
+	
+	# udev rules should be placed in /lib/udev/rules.d instead
+	dosym /opt/blackmagic-desktop-video/etc/udev/rules.d/55-blackmagic.rules /lib/udev/rules.d/55-blackmagic.rules
+	
+	# add firmware check to autostart?
+	if use autostart; then
+		dosym /opt/blackmagic-desktop-video/etc/xdg/autostart/DesktopVideoUpdaterAutoStart.desktop /etc/xdg/autostart/DesktopVideoUpdaterAutoStart.desktop
+	fi
+	
+	# kernel module
+	linux-mod_src_install
+}
+
+pkg_postinst() {
+	# kernel module
+	linux-mod_pkg_postinst
+	
+	#      12345678901234567890123456789012345678901234567890123456789012345678901234567890
+	einfo ""
+	einfo "Please do *NOT* report any QA errors to Gentoo or Blackmagic!"
+	einfo ""
+	einfo "Kernel modules are blackmagic and blackmagic-io. Try blackmagic if in doubt."
+	einfo "When upgrading, please rmmod both first. Then modprobe blackmagic to see if it"
+	einfo "works (it should print your devices to kernel log)."
+	einfo ""
+	einfo "Installed tools are DesktopVideoUpdateTool (CLI), DesktopVideoUpdater (GUI) and"
+	einfo "BlackmagicDesktopVideoSetup."
+	einfo ""
+	einfo "For Media Express emerge media-video/blackmagic-media-express."
+	einfo ""
+	if use autostart; then
+		einfo "Automated firmware update check has been installed."
+	else
+		einfo "Automated firmware update check has *not* been installed this time."
+		einfo "(set USE flag autostart if you want that)"
+	fi
+	einfo ""
+	einfo "If your product is not being recognized, there are two common reasons:"
+	einfo ""
+	einfo " 1) You may need to increase the vmalloc limit in your kernel."
+	einfo "    This can be done by adding e.g. vmalloc=256M to your kernel boot line. You"
+	einfo "    can see current usage by running"
+	einfo ""
+	einfo "    # grep VmallocUsed /proc/meminfo"
+	einfo ""
+	einfo " 2) Your firmware may be outdated. Make sure you reload the modules (or simply"
+	einfo "    reboot) and then run DesktopVideoUpdateTool (CLI) or, if you prefer,"
+	einfo "    DesktopVideoUpdater (GUI)"
+	einfo ""
+	einfo "Licenses can be found in: ${finalinstalldir}/usr/share/doc/"
+	einfo ""
+	udev_reload || ewarn "Reloading udev rules failed, you may want to check this before rebooting!"
+
+	#if kernel_is -gt $OFFICIAL_COMPAT_MAX_MAJOR $OFFICIAL_COMPAT_MAX_MINOR && use patch_compat; then
+	#	#      12345678901234567890123456789012345678901234567890123456789012345678901234567890
+	#	ewarn ""
+	#	ewarn "    *** YOU HAVE APPLIED INOFFICIAL PATCHES TO INSTALLED KERNEL MODULES ***"
+	#	ewarn "    ***    DO NOT REPORT ANY ERRORS TO BLACKMAGIC, YOU BREAK WARRANTY   ***"
+	#	ewarn ""
+	#	ewarn "Applying those patches is generally discouraged as it can potentially damage"
+	#	ewarn "your hardware and therefore may void your warranty. You are recommended to"
+	#	ewarn "go back to an older kernel and wait for an official update instead of applying"
+	#	ewarn "these patches. At the very least, note that there is no support of any kind when"
+	#	ewarn "using patched drivers. Avoid contacting the vendor for support while using"
+	#	ewarn "inofficial drivers. Revert to official drivers and retry with untainted hardware"
+	#	ewarn "if something doesn't work as expected. Additionally, your system may behave"
+	#	ewarn "unstable."
+	#	ewarn ""
+	#	ewarn "Remove USE-flag patch_compat and re-emerge this ebuild immediately before use"
+	#	ewarn "if you enabled it accidentally."
+	#	ewarn ""
+	#	ewarn "                           *** USE AT YOUR OWN RISK ***"
+	#fi
+}
+
+pkg_postrm() {
+	udev_reload || ewarn "Reloading udev rules failed, you may want to check this before rebooting!"
+
+	# kernel module
+	linux-mod_pkg_postrm
+}