diff options
-rw-r--r-- | .SRCINFO | 3 | ||||
-rw-r--r-- | PKGBUILD | 114 | ||||
-rw-r--r-- | davinci-resolve.install | 113 |
3 files changed, 158 insertions, 72 deletions
@@ -1,7 +1,7 @@ pkgbase = davinci-resolve pkgdesc = Professional A/V post-production software suite from Blackmagic Design pkgver = 15.2.2 - pkgrel = 1 + pkgrel = 2 url = https://www.blackmagicdesign.com/ arch = x86_64 license = Commercial @@ -17,6 +17,7 @@ pkgbase = davinci-resolve depends = qt5-base depends = qt5-svg depends = qt5-webkit + depends = libisoburn depends = qt5-webengine depends = qt5-websockets depends = xdg-user-dirs @@ -9,103 +9,75 @@ pkgname=davinci-resolve _pkgname=resolve +resolve_app_name=com.blackmagicdesign.resolve pkgver=15.2.2 -pkgrel=1 +pkgrel=2 pkgdesc='Professional A/V post-production software suite from Blackmagic Design' arch=('x86_64') url="https://www.blackmagicdesign.com/" license=('Commercial') depends=('glu' 'gtk2' 'gstreamer' 'libpng12' 'lib32-libpng12' 'ocl-icd' 'openssl-1.0' - 'opencl-driver' 'qt4' 'qt5-base' 'qt5-svg' 'qt5-webkit' + 'opencl-driver' 'qt4' 'qt5-base' 'qt5-svg' 'qt5-webkit' 'libisoburn' 'qt5-webengine' 'qt5-websockets' 'xdg-user-dirs') options=('!strip') conflicts=('davinci-resolve-beta' 'davinci-resolve-studio' 'davinci-resolve-studio-beta') + +# Trying to make the user's life easier ;o) +msg2 "Trying to fetch the archive file if available..." DOWNLOADS_DIR=`xdg-user-dir DOWNLOAD` if [ ! -f ${pkgdir}/DaVinci_Resolve_${pkgver}_Linux.zip ]; then - if [ -f $DOWNLOADS_DIR/DaVinci_Resolve_${pkgver}_Linux.zip ]; then - ln -sfn $DOWNLOADS_DIR/DaVinci_Resolve_${pkgver}_Linux.zip ${pkgdir} - else - msg2 "The package can be downloaded here: https://www.blackmagicdesign.com/products/davinciresolve/" - msg2 "Please remember to put a downloaded package DaVinci_Resolve_${pkgver}_Linux.zip into the build directory or $DOWNLOADS_DIR" - sleep 3 - fi + if [ -f $DOWNLOADS_DIR/DaVinci_Resolve_${pkgver}_Linux.zip ]; then + ln -sfn $DOWNLOADS_DIR/DaVinci_Resolve_${pkgver}_Linux.zip ${pkgdir} + else + msg2 "" + msg2 "The package can be downloaded here: https://www.blackmagicdesign.com/products/davinciresolve/" + msg2 "Please remember to put a downloaded package DaVinci_Resolve_${pkgver}_Linux.zip into the build directory ${PWD} or $DOWNLOADS_DIR" + msg2 "" + fi fi source=("local://DaVinci_Resolve_${pkgver}_Linux.zip") sha256sums=('4330673cbe62f1ce2292d0357e20503233124bbb5a1b7752ce83b4befcf29497') -package() { -# msg2 "Did you download the archive manually? If not, this will fail." - mkdir -p "${pkgdir}/opt/${_pkgname}/"{bin,configs,Media} +package() +{ + msg2 "Creating missing folders..." + mkdir -p -m 0775 "${pkgdir}/opt/${_pkgname}/"{configs,DolbyVision,easyDCP,Fairlight,logs,Media,"Resolve Disk Database",.crashreport,.license,.LUT} + mkdir -p "${pkgdir}/usr/share/"{applications,desktop-directories} + mkdir -p "${pkgdir}/usr/lib/udev/rules.d" + mkdir -p "${pkgdir}/etc/xdg/menus" msg2 "Extracting from bundle..." cd "${srcdir}" || exit - ./DaVinci_Resolve_${pkgver}_Linux.sh --tar xf -C "${pkgdir}/opt/${_pkgname}" + xorriso -osirrox on -indev DaVinci_Resolve_${pkgver}_Linux.run -extract / "${pkgdir}/opt/${_pkgname}" - msg2 "Extracting library archives..." + msg2 "Add lib symlinks..." cd "${pkgdir}/opt/${_pkgname}/" || exit - gunzip -f LUT/trim_lut0.dpx.gz - for archive in libs/*tgz; do - tar xf "${archive}" -C libs/ - rm -f "${archive}" - done + ln -s /usr/lib/libcrypto.so.1.0.0 libs/libcrypto.so.10 + ln -s /usr/lib/libssl.so.1.0.0 libs/libssl.so.10 - msg2 "Relocate binaries and config..." + msg2 "Install launchers and configs..." cd "${pkgdir}/opt/${_pkgname}/" || exit - local _binaries=( - BMDPanelFirmware - DPDecoder - ShowDpxHeader - TestIO - bandwidthTest - bmdpaneld - deviceQuery - oclBandwidthTest - oclDeviceQuery - qt.conf - ) - for binary in "${_binaries[@]}"; do - mv "rsf/${binary}" "bin/${binary}" + install -Dm666 share/default-config-linux.dat "${pkgdir}/opt/${_pkgname}/configs/config.dat" + install -Dm666 share/log-conf.xml "${pkgdir}/opt/${_pkgname}/configs/log-conf.xml" + install -Dm666 share/default_cm_config.bin "${pkgdir}/opt/${_pkgname}/DolbyVision/config.bin" + install -Dm644 share/DaVinciResolve.desktop "${pkgdir}/usr/share/applications/${resolve_app_name}.desktop" + install -Dm644 share/DaVinciResolvePanelSetup.desktop "${pkgdir}/usr/share/applications/${resolve_app_name}-Panels.desktop" + install -Dm644 share/DaVinciResolveInstaller.desktop "${pkgdir}/usr/share/applications/${resolve_app_name}-Installer.desktop" + install -Dm644 share/DaVinciResolveCaptureLogs.desktop "${pkgdir}/usr/share/applications/${resolve_app_name}-CaptureLogs.desktop" + install -Dm644 share/DaVinciResolve.directory "${pkgdir}/usr/share/desktop-directories/${resolve_app_name}.directory" + install -Dm644 share/DaVinciResolve.menu "${pkgdir}/etc/xdg/menus/${resolve_app_name}.menu" + + for _file in $(find ${pkgdir}/usr/share ${pkgdir}/etc -type f -name *.desktop -o -name *.directory -o -name *.menu | xargs) + do + sed -i "s|RESOLVE_INSTALL_LOCATION|/opt/${_pkgname}|g" $_file done - mv resolve bin/resolve - mv rsf/Control Control - install -Dm666 rsf/default-config-linux.dat "${pkgdir}/opt/${_pkgname}/configs/config.dat" - - msg2 "Add lib symlinks..." - cd "${pkgdir}/opt/${_pkgname}/" || exit - ln -s /usr/lib/libcrypto.so.1.0.0 libs/libcrypto.so.10 - ln -s /usr/lib/libssl.so.1.0.0 libs/libssl.so.10 - ln -s /usr/lib/libgstbase-1.0.so libs/libgstbase-0.10.so.0 - ln -s /usr/lib/libgstreamer-1.0.so libs/libgstreamer-0.10.so.0 - - msg2 "Creating launchers..." - cd "${srcdir}" || exit - cat > "${srcdir}/DaVinci Resolve.desktop" << EOF -#!/usr/bin/env xdg-open -[Desktop Entry] -Type=Application -Name=DaVinci Resolve -Comment=Professional non-linear editing -Exec=/opt/${_pkgname}/bin/start-resolve -Icon=/opt/${_pkgname}/rsf/DV_Resolve.png -Terminal=false -Categories=Multimedia;AudioVideo;Application; -EOF - install -Dm644 DaVinci\ Resolve.desktop "${pkgdir}/usr/share/applications/DaVinci Resolve.desktop" - - cat > "${srcdir}/start-resolve" << EOF -#!/bin/sh -mkdir -p /tmp/${_pkgname}/{logs,GPUCache} -cd /opt/${_pkgname} -exec bin/resolve "\$@" -EOF - install -Dm755 start-resolve "${pkgdir}/opt/${_pkgname}/bin/start-resolve" - msg2 "Making sure file ownership is 'correct'..." - chown -R root:root "${pkgdir}/opt" - chmod 0777 "${pkgdir}/opt/${_pkgname}/configs" - chmod 0777 "${pkgdir}/opt/${_pkgname}/Media" + msg2 "Creating and installing udev rules..." + echo 'SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="096e", MODE="0666"' > "${pkgdir}/usr/lib/udev/rules.d/75-davincipanel.rules" + echo 'SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="1edb", MODE="0666"' > "${pkgdir}/usr/lib/udev/rules.d/75-sdx.rules" + chmod 644 "${pkgdir}/usr/lib/udev/rules.d/"{75-davincipanel.rules,75-sdx.rules} msg2 "Any final tweaks..." ln -s "/tmp/${_pkgname}/logs" "${pkgdir}/opt/${_pkgname}/logs" diff --git a/davinci-resolve.install b/davinci-resolve.install new file mode 100644 index 000000000000..fcb569335e65 --- /dev/null +++ b/davinci-resolve.install @@ -0,0 +1,113 @@ +pre_install() +{ + echo "Removing old files..." + DIRS_TO_REMOVE=( + "Onboarding" + "libs" + "plugins" + "UI_Resource") + + if [[ -d ${/opt/${_pkgname}} ]]; then + echo "Removing old files" + for dir in "${DIRS_TO_REMOVE[@]}"; do + rm -rf "$/opt/${_pkgname}/$dir" + done + fi + +# TODO: We should talk to the BMD developers about it. Pretty sensitive subject systemd @_@ +#if [[ $EUID -ne 0 ]]; then +# # Script being run as non-root user +# USER_UID=$EUID +#else +# # Script being run as root +# USER_UID=$SUDO_UID +# if [ -z "$USER_UID" ]; then +# USER_UID=$PKEXEC_UID +# fi +# if [ -z "$USER_UID" ]; then +# USER_UID=0 +# fi +#fi + +#USER_HOME=`awk -v val=$USER_UID -F ":" '\$3==val{print \$6;exit}' /etc/passwd` + +# if [[ -d ${/opt/${_pkgname}} && ${/opt/${_pkgname}} == /home/resolve* ]]; then +# chown $USER_UID "$/opt/${_pkgname}" +# else +# # Uninstall the panel daemon only on Standalone install +# # Uninstall BMD panel daemon +# SVC_NAME=bmdpaneld + +# # Kill the daemon in case it is running +# killall -9 ${SVC_NAME} + +# if [ -f /etc/init.d/${SVC_NAME} ]; then +# echo "#Uninstalling BMD panel service..." +# service ${SVC_NAME} stop +# /sbin/chkconfig --del ${SVC_NAME} +# rm -f /etc/init.d/${SVC_NAME} +# fi +# mkdir -m 0775 -p "$/opt/${_pkgname}" +# chown $USER_UID "$/opt/${_pkgname}" -R +# fi +} + +post_install() +{ + echo "Installing Application icons..." + xdg-icon-resource install --size 64 "${pkgdir}/graphics/DV_Resolve.png" DaVinci-Resolve 2>&1 >> /dev/null + xdg-icon-resource install --size 64 "${pkgdir}/graphics/DV_ResolveProj.png" DaVinci-ResolveProj 2>&1 >> /dev/null + + xdg-icon-resource install --size 64 --context mimetypes "${pkgdir}/graphics/DV_ResolveProj.png" application-x-resolveproj 2>&1 >> /dev/null + xdg-mime install --novendor "${pkgdir}/share/resolve.xml" 2>&1 >> /dev/null + + echo "Updating icon cache..." + gtk-update-icon-cache "share/icons/hicolor" -f 2>&1 >> /dev/null + update-mime-database "share/mime/" 2>&1 >> /dev/null + + echo "Installing the default app associations..." + # $1 is .desktop + # $2 is mime/type + + DEFAULT_MIME_FILE="/usr/share/applications/defaults.list" + grep -v "application/x-resolveproj=" $DEFAULT_MIME_FILE > ${DEFAULT_MIME_FILE}.new 2> /dev/null + if ! grep "[Default Applications]" ${DEFAULT_MIME_FILE}.new > /dev/null; then + echo "[Default Applications]" >> ${DEFAULT_MIME_FILE}.new + fi + echo application/x-resolveproj=${resolve_app_name}.desktop >> ${DEFAULT_MIME_FILE}.new + mv ${DEFAULT_MIME_FILE}.new $DEFAULT_MIME_FILE + + # reload the udev rules + udevadm control --reload-rules 2>&1 + udevadm trigger 2>&1 + + # Ensure panel permissions are correctly set for the current session + DEVICES=`lsusb | grep "ID 1edb\|ID 096e" | sed -e "s/:/ /g" | awk '{print"/dev/bus/usb/"$2"/"$4}'` + for DEV in $DEVICES + do + echo "Fixing usb permissions for $DEV" + chmod a+w $DEV + done +} + +pre_upgrade() +{ + pre_install +} + +post_remove() +{ + # Remove entry from /usr/share/applications/defaults.list + if [ "$(grep -ir 'application/x-resolveproj=com.blackmagicdesign.resolve.desktop' /usr/share/applications/defaults.list)" ]; then + sed -i '/application\/x-resolveproj=com.blackmagicdesign.resolve.desktop/d' /usr/share/applications/defaults.list + fi + + # Removing entry from /usr/share/applications/mimeinfo.cache + if [ "$(grep -ir 'application/x-resolveproj=com.blackmagicdesign.resolve.desktop;' /usr/share/applications/mimeinfo.cache)" ]; then + sed -i '/application\/x-resolveproj=com.blackmagicdesign.resolve.desktop;/d' /usr/share/applications/mimeinfo.cache + fi + + # Remove udev rules + rm -rf /usr/lib/udev/rules.d/75-davincipanel.rules + rm -rf /usr/lib/udev/rules.d/75-sdx.rules +} |