Install this version:
emerge -a =media-video/davinci-resolve-21.0.2
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =media-video/davinci-resolve-21.0.2
Or alternatively:
emerge --autounmask-write -a =media-video/davinci-resolve-21.0.2
| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 21.0.2 | 8 | ~amd64 | 0 |
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit desktop udev xdg
ZIP_NAME="DaVinci_Resolve_${PV}_Linux"
RUN_NAME="${ZIP_NAME}.run"
DESCRIPTION="Professional video editing, color, effects and audio post-processing"
HOMEPAGE="https://www.blackmagicdesign.com/support/family/davinci-resolve-and-fusion"
SRC_URI="${ZIP_NAME}.zip"
S="${WORKDIR}"
LICENSE="all-rights-reserved"
SLOT="0"
KEYWORDS="~amd64"
IUSE="video_cards_amdgpu video_cards_intel video_cards_nvidia"
RESTRICT="fetch mirror bindist strip"
QA_PREBUILT="*"
BDEPEND="
app-arch/unzip
dev-util/patchelf
"
RDEPEND="
app-arch/bzip2
app-arch/xz-utils
app-crypt/mit-krb5
app-misc/ca-certificates
dev-libs/expat
dev-libs/glib:2
dev-libs/nspr
dev-libs/nss
media-libs/alsa-lib
media-libs/fontconfig
media-libs/freetype
media-libs/glu
media-libs/libglvnd
media-libs/libpulse
sys-apps/dbus
sys-apps/util-linux
sys-devel/gcc:*[openmp]
virtual/libcrypt:=
virtual/libudev
virtual/opencl
virtual/udev
virtual/zlib:=
sys-libs/mtdev
video_cards_amdgpu? ( dev-libs/rocm-opencl-runtime )
video_cards_intel? ( dev-libs/intel-compute-runtime )
video_cards_nvidia? ( x11-drivers/nvidia-drivers )
x11-libs/libdrm
x11-libs/libICE
x11-libs/libSM
x11-libs/libX11
x11-libs/libxcb
x11-libs/libXext
x11-libs/libXi
x11-libs/libXrender
x11-libs/libXt
x11-libs/libXtst
x11-libs/libXxf86vm
x11-libs/libxkbcommon[X]
x11-libs/libxkbfile
x11-libs/xcb-util
x11-libs/xcb-util-cursor
x11-libs/xcb-util-image
x11-libs/xcb-util-keysyms
x11-libs/xcb-util-renderutil
x11-libs/xcb-util-wm
"
pkg_nofetch() {
einfo
einfo " DaVinci Resolve cannot be downloaded automatically."
einfo " Please download ${ZIP_NAME}.zip manually from:"
einfo
einfo " https://www.blackmagicdesign.com/support/family/davinci-resolve-and-fusion"
einfo
einfo " Then place it in your DISTDIR directory and re-run emerge."
einfo
}
src_unpack() {
unpack "${ZIP_NAME}.zip" || die
chmod u+x "${RUN_NAME}" || die
"${S}/${RUN_NAME}" --appimage-extract || die
}
_is_elf() {
[[ -f ${1} ]] || return 1
[[ $(LC_ALL=C od -An -tx1 -N4 "${1}" 2>/dev/null) == *"7f 45 4c 46"* ]]
}
_set_rpath() {
local rpath=${1}
shift
local f
for f; do
[[ -e ${f} ]] || continue
_is_elf "${f}" || continue
patchelf --force-rpath --set-rpath "${rpath}" "${f}" ||
die "patchelf failed on ${f}"
done
}
_has_bad_rpath() {
local rpath
rpath=$(patchelf --print-rpath "${1}" 2>/dev/null) || return 1
[[ ${rpath} == *"/home/"* ||
${rpath} == *"/persistent/"* ||
${rpath} == *"/var/lib/jenkins/"* ||
${rpath} == *"/xxxxxxxx"* ||
${rpath} == *@loader_path* ||
${rpath} == *"/lib/qt-"* ]]
}
_sanitize_bad_rpaths() {
local root=${1}
local rpath=${2}
local f
[[ -d ${root} ]] || return
while IFS= read -r -d '' f; do
_is_elf "${f}" || continue
_has_bad_rpath "${f}" || continue
_set_rpath "${rpath}" "${f}"
done < <(find "${root}" -type f -print0)
}
_patch_desktop_file() {
local file=${1}
local exec=${2}
local icon=${3}
sed -i \
-e "s|^Exec=.*|Exec=${exec}|" \
-e "s|^Icon=.*|Icon=${icon}|" \
-e "/^Path=/d" \
"${file}" || die
}
_fperms_image() {
local mode=${1}
shift
local f
for f; do
[[ -e ${f} ]] || continue
fperms "${mode}" "${f#${ED}}" || die
done
}
_newlib_ldscript() {
local lib=${1}
local target=${2}
insinto "/usr/$(get_libdir)"
newins - "${lib}" <<-EOF
/* GNU ld script */
GROUP ( ${EPREFIX}${target} )
EOF
fperms a+x "/usr/$(get_libdir)/${lib}" || die
}
src_prepare() {
default
local squashfs="squashfs-root"
local install_dir="/opt/${PN}"
chmod -R u+rwX "${squashfs}" || die
mkdir -p "${squashfs}/panel-framework" || die
tar -xzf "${squashfs}/share/panels/dvpanel-framework-linux-x86_64.tgz" \
-C "${squashfs}/panel-framework" || die
chmod -R u+rwX "${squashfs}/panel-framework" || die
rm -f "${squashfs}/share/panels/dvpanel-framework-linux-x86_64.tgz" || die
rm -rf "${squashfs}"/{installer*,AppRun*,CentOSUpdate} || die
rm -f "${squashfs}/DaVinci Control Panels Setup/libk5crypto.so.3" || die
rm -f "${squashfs}/share/DaVinciResolveInstaller.desktop" || die
rm -f "${squashfs}/scripts/"{pre_install.sh,post_install.sh,uninstall.sh} || die
rm -f "${squashfs}/LUT/GenLut" "${squashfs}/LUT/GenOutputLut" || die
rm -f "${squashfs}/bin/sqlite3" || die
rm -rf \
"${squashfs}/Onboarding/qml/Qt/labs/lottieqt" \
"${squashfs}/Onboarding/qml/QtQml/RemoteObjects" \
"${squashfs}/Onboarding/qml/QtQuick/Particles.2" \
"${squashfs}/Onboarding/qml/QtQuick/Shapes" \
"${squashfs}/Onboarding/qml/QtQuick/VirtualKeyboard" || die
_set_rpath "\$ORIGIN/../libs:\$ORIGIN/../libs/Fusion" \
"${squashfs}/bin/resolve"
_set_rpath "\$ORIGIN/../libs:\$ORIGIN/../libs/Fusion" \
"${squashfs}/Onboarding/DaVinci_Resolve_Welcome"
_set_rpath "\$ORIGIN/lib" \
"${squashfs}/panel-framework/libDaVinciPanelAPI.so" \
"${squashfs}/panel-framework/libFairlightPanelAPI.so"
patchelf --set-soname libsonyxavcenc.so \
"${squashfs}/libs/libsonyxavcenc.so.1.1.11.68" || die
while IFS= read -r -d '' f; do
_set_rpath "\$ORIGIN" "${f}"
done < <(find "${squashfs}" -type f \
\( -name "libc++abi.so*" \
-o -name "libgcc_s.so.1" \
-o -name "libCrmSdk.so.2.10" \
-o -name "libcrypto.so.1.1" \
-o -name "libcurl.so" \
-o -name "libsharpyuv.so.0.1.1" \
-o -name "libssl.so.1.1" \
-o -name "libwebpdecoder.so.3.1.10" \
-o -name "libxmlsec1-openssl.so" \) -print0)
_sanitize_bad_rpaths "${squashfs}/libs" "\$ORIGIN:\$ORIGIN/Fusion"
_sanitize_bad_rpaths "${squashfs}/plugins" "\$ORIGIN:\$ORIGIN/../libs"
_sanitize_bad_rpaths "${squashfs}/Onboarding" \
"\$ORIGIN:${install_dir}/libs:${install_dir}/libs/Fusion"
ln -s "../BlackmagicRAWPlayer/BlackmagicRawAPI" \
"${squashfs}/bin/BlackmagicRawAPI" || die
while IFS= read -r -d '' f; do
sed -i "s|RESOLVE_INSTALL_LOCATION|${install_dir}|g" "${f}" || die
done < <(find "${squashfs}/share" -type f \
\( -name "*.desktop" -o -name "*.directory" -o -name "*.menu" \) -print0)
_patch_desktop_file "${squashfs}/share/DaVinciResolve.desktop" \
"davinci-resolve %u" "davinci-resolve"
_patch_desktop_file "${squashfs}/share/DaVinciResolveCaptureLogs.desktop" \
"davinci-resolve-capture-logs" "davinci-resolve"
_patch_desktop_file "${squashfs}/share/DaVinciControlPanelsSetup.desktop" \
"davinci-control-panels-setup" "davinci-resolve-panels-setup"
_patch_desktop_file "${squashfs}/share/blackmagicraw-player.desktop" \
"blackmagicraw-player %f" "blackmagicraw-player"
_patch_desktop_file "${squashfs}/share/blackmagicraw-speedtest.desktop" \
"blackmagicraw-speedtest %f" "blackmagicraw-speedtest"
sed -i 's#Categories=Video#Categories=AudioVideo;Video;#' \
"${squashfs}/share/blackmagicraw-player.desktop" \
"${squashfs}/share/blackmagicraw-speedtest.desktop" || die
echo "StartupWMClass=resolve" >> "${squashfs}/share/DaVinciResolve.desktop" || die
cat > "${squashfs}/share/etc/udev/rules.d/75-sdx.rules" <<-EOF || die
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="096e", MODE="0666"
EOF
}
src_install() {
local install_dir="/opt/${PN}"
local app_dir="${ED}/${install_dir}"
local iconsrc="${app_dir}/graphics"
dodir "${install_dir}"
cp -a squashfs-root/. "${app_dir}/" || die
local f
while IFS= read -r -d '' f; do
_fperms_image 0755 "${f}"
done < <(find "${app_dir}" -type d -print0)
while IFS= read -r -d '' f; do
_is_elf "${f}" || continue
_fperms_image 0755 "${f}"
done < <(find "${app_dir}" -type f -print0)
_fperms_image 0755 \
"${app_dir}/bin/run_bmdpaneld" \
"${app_dir}/libs/libc++.so" \
"${app_dir}/scripts/script.checkfirmware" \
"${app_dir}/scripts/script.getlogs.v4" \
"${app_dir}/scripts/script.halt" \
"${app_dir}/scripts/script.kill" \
"${app_dir}/scripts/script.reboot" \
"${app_dir}/scripts/script.start" \
"${app_dir}/scripts/script.update"
local runtime_dir
for runtime_dir in \
"Apple Immersive/Calibration" \
.crashreport \
.license \
.LUT \
configs \
DolbyVision \
GPUCache \
logs
do
keepdir "${install_dir}/${runtime_dir}"
done
cp "${app_dir}/share/"{default-config.dat,log-conf.xml} "${app_dir}/configs/" || die
cp "${app_dir}/share/default_cm_config.bin" "${app_dir}/DolbyVision/" || die
dosym "${install_dir}/bin/resolve" "/usr/bin/${PN}"
dosym "${install_dir}/scripts/script.getlogs.v4" "/usr/bin/davinci-resolve-capture-logs"
dosym "${install_dir}/DaVinci Control Panels Setup/DaVinci Control Panels Setup" \
"/usr/bin/davinci-control-panels-setup"
dosym "${install_dir}/BlackmagicRAWPlayer/BlackmagicRAWPlayer" \
"/usr/bin/blackmagicraw-player"
dosym "${install_dir}/BlackmagicRAWSpeedTest/BlackmagicRAWSpeedTest" \
"/usr/bin/blackmagicraw-speedtest"
_newlib_ldscript libDaVinciPanelAPI.so \
"${install_dir}/panel-framework/libDaVinciPanelAPI.so"
_newlib_ldscript libFairlightPanelAPI.so \
"${install_dir}/panel-framework/libFairlightPanelAPI.so"
newmenu "${app_dir}/share/DaVinciResolve.desktop" \
com.blackmagicdesign.resolve.desktop
newmenu "${app_dir}/share/DaVinciResolveCaptureLogs.desktop" \
com.blackmagicdesign.resolve-CaptureLogs.desktop
newmenu "${app_dir}/share/DaVinciControlPanelsSetup.desktop" \
com.blackmagicdesign.resolve-Panels.desktop
newmenu "${app_dir}/share/blackmagicraw-player.desktop" \
com.blackmagicdesign.rawplayer.desktop
newmenu "${app_dir}/share/blackmagicraw-speedtest.desktop" \
com.blackmagicdesign.rawspeedtest.desktop
newicon -s 64 "${iconsrc}/DV_Resolve.png" davinci-resolve.png
newicon -s 64 "${iconsrc}/DV_Panels.png" davinci-resolve-panels-setup.png
newicon -s 48 "${iconsrc}/blackmagicraw-player_48x48_apps.png" blackmagicraw-player.png
newicon -s 48 "${iconsrc}/blackmagicraw-speedtest_48x48_apps.png" blackmagicraw-speedtest.png
newicon -s 256 "${iconsrc}/blackmagicraw-player_256x256_apps.png" blackmagicraw-player.png
newicon -s 256 "${iconsrc}/blackmagicraw-speedtest_256x256_apps.png" blackmagicraw-speedtest.png
newicon -s 64 "${iconsrc}/DV_ResolveBin.png" application-x-resolvebin.png
newicon -s 64 "${iconsrc}/DV_ResolveProj.png" application-x-resolveproj.png
newicon -s 64 "${iconsrc}/DV_ResolveTimeline.png" application-x-resolvetimeline.png
newicon -s 64 "${iconsrc}/DV_ServerAccess.png" application-x-resolvedbkey.png
newicon -s 64 "${iconsrc}/DV_TemplateBundle.png" application-x-resolvetemplatebundle.png
newicon -s 48 "${iconsrc}/application-x-braw-clip_48x48_mimetypes.png" \
application-x-braw-clip.png
newicon -s 48 "${iconsrc}/application-x-braw-sidecar_48x48_mimetypes.png" \
application-x-braw-sidecar.png
newicon -s 256 "${iconsrc}/application-x-braw-clip_256x256_mimetypes.png" \
application-x-braw-clip.png
newicon -s 256 "${iconsrc}/application-x-braw-sidecar_256x256_mimetypes.png" \
application-x-braw-sidecar.png
insinto /usr/share/mime/packages
doins "${app_dir}/share/resolve.xml" "${app_dir}/share/blackmagicraw.xml"
udev_dorules "${app_dir}/share/etc/udev/rules.d/"*.rules
dodir "/usr/share/licenses/${PN}"
dosym "${install_dir}/docs/License.html" "/usr/share/licenses/${PN}/License.html"
}
pkg_postinst() {
xdg_pkg_postinst
udev_reload
elog "DaVinci Resolve requires a working OpenCL runtime and GPU driver."
elog "Install the vendor GPU stack matching your hardware if Resolve cannot detect OpenCL."
}
pkg_postrm() {
xdg_pkg_postrm
udev_reload
}
Manage flags for this package:
euse -i <flag> -p media-video/davinci-resolve |
euse -E <flag> -p media-video/davinci-resolve |
euse -D <flag> -p media-video/davinci-resolve
app-arch/bzip2 app-arch/xz-utils app-crypt/mit-krb5 app-misc/ca-certificates dev-libs/expat dev-libs/glib:2 dev-libs/nspr dev-libs/nss media-libs/alsa-lib media-libs/fontconfig media-libs/freetype media-libs/glu media-libs/libglvnd media-libs/libpulse sys-apps/dbus sys-apps/util-linux sys-devel/gcc:*[openmp] virtual/libcrypt:= virtual/libudev virtual/opencl virtual/udev virtual/zlib:= sys-libs/mtdev video_cards_amdgpu? ( dev-libs/rocm-opencl-runtime ) video_cards_intel? ( dev-libs/intel-compute-runtime ) video_cards_nvidia? ( x11-drivers/nvidia-drivers ) x11-libs/libdrm x11-libs/libICE x11-libs/libSM x11-libs/libX11 x11-libs/libxcb x11-libs/libXext x11-libs/libXi x11-libs/libXrender x11-libs/libXt x11-libs/libXtst x11-libs/libXxf86vm x11-libs/libxkbcommon[X] x11-libs/libxkbfile x11-libs/xcb-util x11-libs/xcb-util-cursor x11-libs/xcb-util-image x11-libs/xcb-util-keysyms x11-libs/xcb-util-renderutil x11-libs/xcb-util-wm
app-arch/unzip dev-util/patchelf