# Copyright 1999-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 MAJOR_VER="$(ver_cut 1-3)" if [[ "${PN}" == "davinci-resolve-studio" ]] ; then BASE_NAME="DaVinci_Resolve_Studio_${MAJOR_VER}_Linux" CONFLICT_PKG="!!media-video/davinci-resolve" else BASE_NAME="DaVinci_Resolve_${MAJOR_VER}_Linux" CONFLICT_PKG="!!media-video/davinci-resolve-studio" fi ARC_NAME="${BASE_NAME}.zip" MRD_VER=1.10.0 inherit udev xdg DESCRIPTION="Professional A/V post-production software suite" HOMEPAGE=" https://www.blackmagicdesign.com/support/family/davinci-resolve-and-fusion " SRC_URI="${ARC_NAME} fetch+https://www.danieltufvesson.com/download/?file=makeresolvedeb/makeresolvedeb_${MRD_VER}_multi.sh.tar.gz" S="${WORKDIR}" LICENSE="all-rights-reserved" SLOT="0" KEYWORDS="-* ~amd64" DR_MAIN="${WORKDIR}/${PN}_${MAJOR_VER}-mrd${MRD_VER}_amd64" DR_DATA="${WORKDIR}/${PN}-data_${MAJOR_VER}-mrd${MRD_VER}_amd64" IUSE="doc udev +system-glib" RESTRICT="strip mirror bindist fetch userpriv" RDEPEND=" sys-libs/lib-compat sys-libs/libstdc++-v3:5 sys-libs/ncurses-compat sys-libs/readline-compat virtual/glu x11-libs/gtk+:= virtual/libcrypt:= ${CONFLICT_PKG} " DEPEND=" dev-libs/apr-util app-arch/libarchive dev-libs/openssl-compat media-libs/gstreamer media-libs/libpng sys-fs/fuse udev? ( virtual/udev ) virtual/opencl x11-misc/xdg-user-dirs dev-qt/qtcore:5 dev-qt/qtsvg:5 dev-qt/qtwebengine:5 dev-qt/qtwebsockets:5 dev-qt/qtvirtualkeyboard:5 ${RDEPEND} " BDEPEND=" app-arch/unzip dev-util/patchelf " QA_PREBUILT="*" pkg_nofetch() { einfo "Please download installation file" einfo " - ${ARC_NAME}" einfo "from ${HOMEPAGE} and place it in DISTDIR." einfo "====" einfo "Please download installation file" einfo " - makeresolvedeb_${MRD_VER}_multi.sh.tar.gz" einfo "from https://www.danieltufvesson.com/makeresolvedeb and place it in \$\{DISTDIR\}." } src_prepare() { mv "${WORKDIR}"/makeresolvedeb*.sh "${WORKDIR}"/makeresolvedeb.sh sed -i \ -e "s!\"\${DEB_DIR}\"/usr/lib/!\"\${DEB_DIR}\"/usr/$(get_libdir)/!g" \ -e "s!\"\${DEB_DIR}\"/usr/lib!\"\${DEB_DIR}\"/usr/$(get_libdir)!g" \ -e 's!^check_command fakeroot!# check_command fakeroot!' \ -e 's!^check_command dpkg-deb!# check_command dpkg-deb!' \ "${WORKDIR}"/makeresolvedeb.sh || die "sed failed" eapply_user } _adjust_sandbox() { addwrite /dev addread /dev addpredict /root addpredict /etc addpredict /lib addpredict /usr addpredict /sys addpredict "/var/BlackmagicDesign" addpredict "/var/BlackmagicDesign/DaVinci Resolve" } src_compile() { local _file _index local _drs=( "${DR_MAIN}" ) _adjust_sandbox cd "${WORKDIR}" chmod u+x "${BASE_NAME}.run" CI_TEST="1" "${WORKDIR}"/makeresolvedeb.sh "${BASE_NAME}.run" || die [[ -d "${DR_DATA}" ]] && _drs+=( "${DR_DATA}" ) pushd "${DR_MAIN}"/opt/resolve/ || die _patchelf_paths=( "libs" "libs/plugins/sqldrivers" "libs/plugins/xcbglintegrations" "libs/plugins/imageformats" "libs/plugins/platforms" "libs/Fusion" "plugins" "bin" "BlackmagicRAWSpeedTest/BlackmagicRawAPI" "BlackmagicRAWSpeedTest/plugins/platforms" "BlackmagicRAWSpeedTest/plugins/imageformats" "BlackmagicRAWSpeedTest/plugins/mediaservice" "BlackmagicRAWSpeedTest/plugins/audio" "BlackmagicRAWSpeedTest/plugins/xcbglintegrations" "BlackmagicRAWSpeedTest/plugins/bearer" "BlackmagicRAWPlayer/BlackmagicRawAPI" "BlackmagicRAWPlayer/plugins/mediaservice" "BlackmagicRAWPlayer/plugins/imageformats" "BlackmagicRAWPlayer/plugins/audio" "BlackmagicRAWPlayer/plugins/platforms" "BlackmagicRAWPlayer/plugins/xcbglintegrations" "BlackmagicRAWPlayer/plugins/bearer" "Onboarding/plugins/xcbglintegrations" "Onboarding/plugins/qtwebengine" "Onboarding/plugins/platforms" "Onboarding/plugins/imageformats" "DaVinci Control Panels Setup/plugins/platforms" "DaVinci Control Panels Setup/plugins/imageformats" "DaVinci Control Panels Setup/plugins/bearer" "DaVinci Control Panels Setup/AdminUtility/PlugIns/DaVinciKeyboards" "DaVinci Control Panels Setup/AdminUtility/PlugIns/DaVinciPanels" ) for _index in "${!_patchelf_paths[@]}" do _patchelf_paths[${_index}]="/opt/resolve/${_patchelf_paths[${_index}]}" done while IFS= read -r -d '' _file; do [[ -f "${_file}" && $(od -t x1 -N 4 "${_file}") == *"7f 45 4c 46"* ]] || continue patchelf --set-rpath "$(IFS=":"; echo "${_patchelf_paths[*]}:\$ORIGIN")" "${_file}" || die done < <(find "${_drs[@]}" -type f -size -32M -print0) # The vendor library is linked by basename but is shipped without DT_SONAME, # which makes Portage report it as unresolved. _file="${DR_MAIN}"/opt/resolve/libs/libsonyxavcenc.so.1.1.11.68 [[ -f "${_file}" ]] && patchelf --set-soname libsonyxavcenc.so "${_file}" || die popd } src_install() { local _dir _dr for _dr in "${DR_MAIN}" "${DR_DATA}"; do [[ -d "${_dr}" ]] || continue for _dir in lib opt usr var; do [[ -d "${_dr}/${_dir}" ]] || continue cp -a "${_dr}/${_dir}" "${ED}" || die done done if use doc ; then dodoc *.pdf fi # See bug 718070 for reason for the next line. if use system-glib ; then rm -f "${ED}"/opt/resolve/libs/libglib-* rm -f "${ED}"/opt/resolve/libs/libgio-2.0.so* rm -f "${ED}"/opt/resolve/libs/libgmodule-2.0.so* fi install -D -m 0644 -t "${ED}"/opt/resolve/configs \ "${ED}"/opt/resolve/share/default-config.dat \ "${ED}"/opt/resolve/share/log-conf.xml install -D -m 0644 -t "${ED}"/opt/resolve/DolbyVision \ "${ED}"/opt/resolve/share/default_cm_config.bin keepdir "/opt/resolve/.license" keepdir "/opt/resolve/Apple Immersive/Calibration" keepdir "/opt/resolve/Extras" keepdir "/opt/resolve/Fairlight" keepdir "/opt/resolve/easyDCP" keepdir "/opt/resolve/logs" keepdir "/var/BlackmagicDesign/DaVinci Resolve" } pkg_preinst() { xdg_pkg_preinst } pkg_postinst() { xdg_pkg_postinst udev_reload } pkg_postrm() { xdg_pkg_postrm udev_reload }