# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # TODO: # Panel Daemon is don't installed EAPI=8 inherit check-reqs desktop udev xdg PKG_NAME="DaVinci_Resolve_Studio_${PV}_Linux" PKG_HOME="/opt/resolve" PKG_MOUNT="squashfs-root" LIBS_SYM=" DaVinci Control Panels Setup/libavahi-common.so.3 DaVinci Control Panels Setup/libavahi-client.so.3 DaVinci Control Panels Setup/libdns_sd.so.1 libs/libapr-1.so libs/libapr-1.so.0 libs/libapr-1.so.0.7.0 libs/libaprutil-1.so libs/libaprutil-1.so.0 libs/libaprutil-1.so.0.6.1 libs/libcdt.so libs/libcdt.so.5 libs/libcgraph.so libs/libcgraph.so.6 libs/libcrypto.so.1.1 libs/libcurl.so libs/libgvc.so libs/libgvc.so.6 libs/libgvpr.so libs/libgvpr.so.2 libs/liborc-0.4.so libs/liborc-0.4.so.0 libs/liborc-0.4.so.0.32.0 libs/libpathplan.so libs/libpathplan.so.4 libs/libpq.so.5 libs/libsoxr.so libs/libsoxr.so.0 libs/libsoxr.so.0.1.3 libs/libsrtp2.so libs/libsrtp2.so.2.4.0 libs/libssl.so.1.1 libs/libtbb.so.2 libs/libtbb_debug.so.2 libs/libtbbmalloc.so.2 libs/libtbbmalloc_proxy.so.2 libs/libxdot.so libs/libxdot.so.4 libs/libxdot.so.4.0.0 libs/libxmlsec1-openssl.so libs/libxmlsec1.so Fairlight Studio Utility/libavahi-common.so.3 Fairlight Studio Utility/libavahi-client.so.3 Fairlight Studio Utility/libdns_sd.so.1 " DESCRIPTION="Professional A/V post-production software suite from Blackmagic Design" HOMEPAGE="https://www.blackmagicdesign.com/support/family/davinci-resolve-and-fusion" SRC_URI="${PKG_NAME}.zip" S="${WORKDIR}" LICENSE="Blackmagic" SLOT="0" KEYWORDS="~amd64" IUSE="bundled-libs developer video_cards_amdgpu video_cards_nvidia" RESTRICT="mirror strip test" DEPEND=" app-arch/brotli app-arch/lz4 app-crypt/argon2 app-crypt/mit-krb5 dev-libs/glib dev-libs/icu dev-libs/libltdl dev-libs/nspr dev-libs/nss dev-qt/qt3d:5[gamepad,qml] dev-qt/qtvirtualkeyboard:5 gnome-base/librsvg media-gfx/graphite2 media-libs/harfbuzz media-libs/libpng-compat:1.2 net-dns/libidn2 net-libs/nghttp2 sys-apps/dbus sys-devel/gcc[openmp] sys-process/numactl virtual/libcrypt virtual/opencl virtual/opengl x11-libs/libX11 x11-libs/libXext x11-libs/libXfixes x11-libs/libXrandr x11-libs/libXrender x11-libs/libXtst x11-libs/libxcb !bundled-libs? ( =dev-libs/rocm-opencl-runtime-5.5.1 ) video_cards_nvidia? ( >=x11-drivers/nvidia-drivers-550.40.07 ) " RDEPEND="${DEPEND}" BDEPEND=" app-arch/unzip dev-util/patchelf " QA_PREBUILT="*" include_dir() { local _dir local exe _dir="$1" doins -r "${_dir}" # Reset permissions for executables find "${_dir}" -type f | while read exe; do fperms -x "${PKG_HOME}"/"${exe}" done # Set permissions for executables and libraries find "${_dir}" -type f -name "*.so*" | while read exe; do fperms +x "${PKG_HOME}"/"${exe}" done find "${_dir}" -type f -executable | while read exe; do fperms +x "${PKG_HOME}"/"${exe}" done } pkg_pretend() { CHECKREQS_DISK_BUILD="24G" check-reqs_pkg_pretend } pkg_setup() { CHECKREQS_DISK_BUILD="24G" check-reqs_pkg_pretend } src_unpack() { default # Extract the archive from squashfs ./${PKG_NAME}.run --appimage-extract } src_prepare() { default cd ${PKG_MOUNT} # Set installation directory sed -i -e "s|RESOLVE_INSTALL_LOCATION|${PKG_HOME}|g" share/*.desktop share/*.directory || die # Fix categories sed -i -e "s|=Video|=AudioVideo|g" share/*.desktop || die # Remove 32bits apps rm LUT/GenOutputLut LUT/GenLut || die # Remove glib-2.0 compiled with old pango # And fix Davinci Resolve: libpango undefined symbol: g_string_free_and_steal # https://www.reddit.com/r/Fedora/comments/12z32r1/davinci_resolve_libpango_undefined_symbol_g/ rm libs/{libgio*,libglib*,libgmodule*,libgobject*} || die # Fix undefined symbol: krb5int_c_deprecated_enctype, version k5crypto_3_MIT rm "DaVinci Control Panels Setup"/libk5crypto.so.3 || die # Remove sqlite because it requires ncurses 5.x rm bin/sqlite3 || die # remove dev files rm -rf libs/pkgconfig || die # Remove bundled libraries if use !bundled-libs; then local remove echo "${LIBS_SYM}" | while read remove; do if [ "${remove}" ]; then rm "${remove}" || die fi done # remove some libraries rm -rf libs/graphviz || die find -name "libgcc_s.so.1" -delete || die find -name "libusb*" -delete || die fi # Remove license files rm "BlackmagicRAWSpeedTest/Third Party Licenses.rtf" || die rm "BlackmagicRAWPlayer/Third Party Licenses.rtf" || die } src_install() { cd ${PKG_MOUNT} while IFS= read -r -d '' i; do [[ -f "${i}" && $(od -t x1 -N 4 "${i}") == *"7f 45 4c 46"* ]] || continue einfo "Fixing RPATH of ${i}" patchelf --set-rpath \ "${PKG_HOME}"'/libs:'\ "${PKG_HOME}"'/libs/plugins/sqldrivers:'\ "${PKG_HOME}"'/libs/plugins/xcbglintegrations:'\ "${PKG_HOME}"'/libs/plugins/imageformats:'\ "${PKG_HOME}"'/libs/plugins/platforms:'\ "${PKG_HOME}"'/libs/Fusion:'\ "${PKG_HOME}"'/plugins:'\ "${PKG_HOME}"'/bin:'\ "${PKG_HOME}"'/BlackmagicRAWSpeedTest/BlackmagicRawAPI:'\ "${PKG_HOME}"'/BlackmagicRAWSpeedTest/plugins/platforms:'\ "${PKG_HOME}"'/BlackmagicRAWSpeedTest/plugins/imageformats:'\ "${PKG_HOME}"'/BlackmagicRAWSpeedTest/plugins/mediaservice:'\ "${PKG_HOME}"'/BlackmagicRAWSpeedTest/plugins/audio:'\ "${PKG_HOME}"'/BlackmagicRAWSpeedTest/plugins/xcbglintegrations:'\ "${PKG_HOME}"'/BlackmagicRAWSpeedTest/plugins/bearer:'\ "${PKG_HOME}"'/BlackmagicRAWPlayer/BlackmagicRawAPI:'\ "${PKG_HOME}"'/BlackmagicRAWPlayer/plugins/mediaservice:'\ "${PKG_HOME}"'/BlackmagicRAWPlayer/plugins/imageformats:'\ "${PKG_HOME}"'/BlackmagicRAWPlayer/plugins/audio:'\ "${PKG_HOME}"'/BlackmagicRAWPlayer/plugins/platforms:'\ "${PKG_HOME}"'/BlackmagicRAWPlayer/plugins/xcbglintegrations:'\ "${PKG_HOME}"'/BlackmagicRAWPlayer/plugins/bearer:'\ "${PKG_HOME}"'/Onboarding/plugins/xcbglintegrations:'\ "${PKG_HOME}"'/Onboarding/plugins/qtwebengine:'\ "${PKG_HOME}"'/Onboarding/plugins/platforms:'\ "${PKG_HOME}"'/Onboarding/plugins/imageformats:'\ "${PKG_HOME}"'/DaVinci Control Panels Setup/plugins/platforms:'\ "${PKG_HOME}"'/DaVinci Control Panels Setup/plugins/imageformats:'\ "${PKG_HOME}"'/DaVinci Control Panels Setup/plugins/bearer:'\ "${PKG_HOME}"'/DaVinci Control Panels Setup/AdminUtility/PlugIns/DaVinciKeyboards:'\ "${PKG_HOME}"'/DaVinci Control Panels Setup/AdminUtility/PlugIns/DaVinciPanels:'\ '$ORIGIN' "${i}" || die "patchelf failed on ${i}" done < <(find "${S}/${PKG_MOUNT}" -type f -size -32M -print0) # Fix QA Notice: Unresolved soname dependencies: einfo "Fixing libsonyxavcenc.so" patchelf --replace-needed "${PKG_HOME}"/libs/libsonyxavcenc.so libsonyxavcenc.so "${S}/${PKG_MOUNT}"/bin/resolve \ || die "patchelf failed on resolve" insinto "${PKG_HOME}" local _dir for _dir in bin BlackmagicRAWPlayer BlackmagicRAWSpeedTest Certificates Control "DaVinci Control Panels Setup" \ "Fairlight Studio Utility" Fusion graphics libs LUT plugins UI_Resource; do include_dir "${_dir}" done if use developer; then include_dir Developer fi insinto "${PKG_HOME}"/share doins share/{default-config.dat,default_cm_config.bin,log-conf.xml} dodoc docs/{DaVinci_Resolve_Manual.pdf,ReadMe.html,Welcome.txt} dodoc "Technical Documentation"/{"DaVinci Remote Panel.txt","User Configuration folders and customization.txt"} insinto "$(get_udevdir)"/rules.d doins share/etc/udev/rules.d/*.rules insinto /usr/share/desktop-directories doins share/*.directory insinto /etc/xdg/menus doins share/*.menu insinto /usr/share/mime/packages/ doins share/{blackmagicraw.xml,resolve.xml} diropts -m 0777 keepdir "${PKG_HOME}/"{configs,DolbyVision,easyDCP,Fairlight,GPUCache,logs,Media,"Resolve Disk Database",.crashreport,.license,.LUT} keepdir "/var/BlackmagicDesign/DaVinci Resolve" # Install desktop shortcut newmenu share/DaVinciControlPanelsSetup.desktop com.blackmagicdesign.resolve-Panels.desktop newmenu share/DaVinciResolve.desktop com.blackmagicdesign.resolve.desktop newmenu share/DaVinciResolveCaptureLogs.desktop com.blackmagicdesign.resolve-CaptureLogs.desktop newmenu share/blackmagicraw-player.desktop com.blackmagicdesign.rawplayer.desktop newmenu share/blackmagicraw-speedtest.desktop com.blackmagicdesign.rawspeedtest.desktop newmenu "${FILESDIR}"/defaults.list com.blackmagicdesign.list # Installing Application icons local res for res in 64 128; do newicon -s ${res} graphics/DV_Resolve.png DaVinci-Resolve.png newicon -s ${res} graphics/DV_ResolveProj.png DaVinci-ResolveProj.png newicon -s ${res} graphics/DV_ServerAccess.png DaVinci-ResolveDbKey.png done for res in 48 256; do newicon -s ${res} graphics/blackmagicraw-speedtest_${res}x${res}_apps.png blackmagicraw-speedtest.png newicon -s ${res} graphics/blackmagicraw-player_${res}x${res}_apps.png blackmagicraw-player.png newicon -s ${res} -c mimetypes graphics/application-x-braw-clip_${res}x${res}_mimetypes.png application-x-braw-clip done for res in 64 128; do newicon -s ${res} -c mimetypes graphics/DV_ResolveBin.png application-x-resolvebin newicon -s ${res} -c mimetypes graphics/DV_ResolveProj.png application-x-resolveproj newicon -s ${res} -c mimetypes graphics/DV_ResolveTimeline.png application-x-resolvetimeline newicon -s ${res} -c mimetypes graphics/DV_ServerAccess.png application-x-resolvedbkey newicon -s ${res} -c mimetypes graphics/DV_TemplateBundle.png application-x-resolvetemplatebundle done # create configuration for revdep-rebuild echo "SEARCH_DIRS=\"${PKG_HOME}\"" > "${T}/80${PN}" || die echo "LD_LIBRARY_MASK=\"libsonyxavcenc.so\"" >> "${T}/80${PN}" || die insinto "/etc/revdep-rebuild" doins "${T}/80${PN}" } pkg_preinst() { xdg_pkg_preinst } pkg_postinst() { udev_reload xdg_pkg_postinst } pkg_postrm() { udev_reload xdg_pkg_postrm }