summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO24
-rw-r--r--PKGBUILD227
-rw-r--r--davinci-resolve.install100
3 files changed, 238 insertions, 113 deletions
diff --git a/.SRCINFO b/.SRCINFO
index aa8c19dfc171..cf9076fb619d 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,14 +1,13 @@
pkgbase = davinci-resolve-studio
- pkgdesc = Professional A/V post-production software suite
+ pkgdesc = Professional A/V post-production software suite from Blackmagic Design. Studio edition, requires license key or license dongle.
pkgver = 15.3.1
- pkgrel = 1
- url = https://www.blackmagicdesign.com/
- install = davinci-resolve-studio.install
- arch = x86_64
+ pkgrel = 2
+ url = https://www.blackmagicdesign.com/support/family/davinci-resolve-and-fusion
+ install = davinci-resolve.install
+ arch = any
license = Commercial
+ makedepends = libarchive
makedepends = xdg-user-dirs
- makedepends = unzip
- makedepends = libisoburn
depends = glu
depends = gtk2
depends = gstreamer
@@ -23,18 +22,13 @@ pkgbase = davinci-resolve-studio
depends = qt5-webkit
depends = qt5-webengine
depends = qt5-websockets
+ provides = davinci-resolve
conflicts = davinci-resolve-beta
conflicts = davinci-resolve
conflicts = davinci-resolve-studio-beta
options = !strip
- source = davinci-resolve-studio.install
- source = 75-davincipanel.rules
- source = 75-sdx.rules
- source = davinci-resolve-studio.desktop
- sha256sums = ced9031d69d98222b9fd16ea4b776e356076a0e9286547ee2a8a5b4d07850799
- sha256sums = 364c3b1b0ee39ce009840dba93e22e141e7aadc27f3254dbbf23d1b94c38a641
- sha256sums = 5190c0c42d3c84ae4691c73b6fe28e7f471da6a247e7400e7b5181a6c0c81bee
- sha256sums = 5258d48b12915ff23100cf026eafe6bc85ffb2d62ea6b180f3f48bd907224675
+ source = local://DaVinci_Resolve_Studio_15.3.1_Linux.zip
+ sha256sums = 0c81412ee915d06bd744c750a44a04ef614a6c0518a1677ef146f0b1817070ca
pkgname = davinci-resolve-studio
diff --git a/PKGBUILD b/PKGBUILD
index 71e8e3820adc..4e6428a88cec 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,121 +1,152 @@
-# Maintainer: Victor van Herpt <victor@codibit.es>
-# Contributor: Alex S. <shantanna_at_hotmail_dot_com>
+# Maintainer: Alex S. <shantanna_at_hotmail_dot_com>
# Contributor: Jonathon Fernyhough <jonathon_at_manjaro_dot_org>
# You'll need to download the package archive from
-# https://www.blackmagicdesign.com/products/davinciresolve
+# https://www.blackmagicdesign.com/support/
# Hardware support is limited. Nvidia cards should work fine.
# If you're running a hybrid setup, try with primusrun/optirun.
pkgname=davinci-resolve-studio
_pkgname=resolve
+resolve_app_name=com.blackmagicdesign.resolve
pkgver=15.3.1
-pkgrel=1
-pkgext=".tar"
-pkgdesc='Professional A/V post-production software suite'
-arch=('x86_64')
-url="https://www.blackmagicdesign.com/"
+pkgrel=2
+arch=('any')
+url="https://www.blackmagicdesign.com/support/family/davinci-resolve-and-fusion"
license=('Commercial')
depends=('glu' 'gtk2' 'gstreamer' 'libpng12' 'lib32-libpng12' 'ocl-icd' 'openssl-1.0'
- 'opencl-driver' 'qt4' 'qt5-base' 'qt5-svg' 'qt5-webkit'
- 'qt5-webengine' 'qt5-websockets')
-makedepends=('xdg-user-dirs' 'unzip' 'libisoburn')
+ 'opencl-driver' 'qt4' 'qt5-base' 'qt5-svg' 'qt5-webkit' 'qt5-webengine' 'qt5-websockets')
+makedepends=('libarchive' 'xdg-user-dirs')
options=('!strip')
-conflicts=('davinci-resolve-beta' 'davinci-resolve' 'davinci-resolve-studio-beta')
-install='davinci-resolve-studio.install'
-source=("davinci-resolve-studio.install" "75-davincipanel.rules" "75-sdx.rules" "davinci-resolve-studio.desktop")
-sha256sums=('ced9031d69d98222b9fd16ea4b776e356076a0e9286547ee2a8a5b4d07850799' '364c3b1b0ee39ce009840dba93e22e141e7aadc27f3254dbbf23d1b94c38a641'
-'5190c0c42d3c84ae4691c73b6fe28e7f471da6a247e7400e7b5181a6c0c81bee' '5258d48b12915ff23100cf026eafe6bc85ffb2d62ea6b180f3f48bd907224675' )
-prepare(){
- _archive="DaVinci_Resolve_Studio_${pkgver}_Linux.zip"
- _archive_sha256sum='0c81412ee915d06bd744c750a44a04ef614a6c0518a1677ef146f0b1817070ca'
-
- DOWNLOADS_DIR=`xdg-user-dir DOWNLOAD`
-
- if [ ! -f ${srcdir}/${_archive} ]; then
- if [ -f $DOWNLOADS_DIR/${_archive} ]; then
- ln -sfn $DOWNLOADS_DIR/${_archive} ${srcdir}
- else
- msg2 "The package archive can be downloaded here: https://www.blackmagicdesign.com/products/davinciresolve/"
- msg2 "Please remember to put a downloaded package ${_archive} into the build directory or $DOWNLOADS_DIR"
- exit 1
- fi
- fi
+provides=('davinci-resolve')
+install=davinci-resolve.install
+
+if [ ${pkgname} == "davinci-resolve-studio" ]; then
+# Variables for STUDIO edition
+ pkgdesc='Professional A/V post-production software suite from Blackmagic Design. Studio edition, requires license key or license dongle.'
+ _archive_name=DaVinci_Resolve_Studio_${pkgver}_Linux
+ sha256sums=('0c81412ee915d06bd744c750a44a04ef614a6c0518a1677ef146f0b1817070ca')
+ conflicts=('davinci-resolve-beta' 'davinci-resolve' 'davinci-resolve-studio-beta')
+
+else
+# Variables for FREE edition
+ pkgdesc='Professional A/V post-production software suite from Blackmagic Design'
+ _archive_name=DaVinci_Resolve_${pkgver}_Linux
+ sha256sums=('6ac9a8b06c848567e9add85e086cb9d7ac4a4bb51da9805cb688c9461392aa9f')
+ conflicts=('davinci-resolve-beta' 'davinci-resolve-studio' 'davinci-resolve-studio-beta')
+
+fi
+
-# check integrity
- if ! echo "${_archive_sha256sum} ${srcdir}/${_archive}" | sha256sum -c --quiet; then
- echo "Invalid checksum for ${_archive}"
- return 1
+_archive=${_archive_name}.zip
+_installer_binary=${_archive_name}.run
+
+# 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 ${PWD}/${_archive} ]; then
+ if [ -f $DOWNLOADS_DIR/${_archive} ]; then
+ ln -sfn $DOWNLOADS_DIR/${_archive} ${PWD}
+ else
+ msg2 ""
+ msg2 "The package can be downloaded here: https://www.blackmagicdesign.com/support/family/davinci-resolve-and-fusion"
+ msg2 "Please remember to put a downloaded package ${_archive}into the build directory ${PWD} or $DOWNLOADS_DIR"
+ msg2 ""
fi
+fi
+
+source=("local://${_archive}")
-
-# extract package
- unzip ${srcdir}/${_archive}
+
+prepare()
+{
+ # Remove udev rules (The official installer does not remove these files. This leads to the conflict "exists in the file system".)
+ confiles=$(find /usr/lib/udev/rules.d -name 75-davincipanel.rules -o -name 75-sdx.rules 2> /dev/null | awk -F/ '{print $NF}'
+ find /opt/resolve/configs -name log-conf.xml -o -name config.dat 2> /dev/null | awk -F/ '{print $NF}'
+ )
+ if [ "${confiles}" ]; then
+ msg2 "The file(s) $(echo ${confiles} | xargs | sed 's/ /, /g') already exist in your filesystem."
+ msg2 "This can lead to a conflict and the installation will fail."
+ msg2 "Please restart the installation with the --overwrite option."
+ fi
}
-package() {
-
-
-# Extract DaVinci Resolve Archive
- mkdir -p "${srcdir}/unpack"
-
-# Create directories
- mkdir -p "${pkgdir}/opt/${_pkgname}/"{configs,easyDCP,logs,scripts,.LUT,.license,.crashreport,DolbyVision,Fairlight,Media,"Resolve Disk Database"}
-
-# Extract DaVinci Resolve Archive
- xorriso -osirrox on -indev "${srcdir}/DaVinci_Resolve_Studio_${pkgver}_Linux.run" -extract / "${srcdir}/unpack"
-
-# Copy objects
-
- cp -rp "${srcdir}/unpack/bin" "${pkgdir}/opt/${_pkgname}/"
- cp -rp "${srcdir}/unpack/Control" "${pkgdir}/opt/${_pkgname}/"
- cp -rp "${srcdir}/unpack/DaVinci Resolve Panels Setup" "${pkgdir}/opt/${_pkgname}/"
- cp -rp "${srcdir}/unpack/Developer" "${pkgdir}/opt/${_pkgname}/"
- cp -rp "${srcdir}/unpack/docs" "${pkgdir}/opt/${_pkgname}/"
- cp -rp "${srcdir}/unpack/Fusion" "${pkgdir}/opt/${_pkgname}/"
- cp -rp "${srcdir}/unpack/graphics" "${pkgdir}/opt/${_pkgname}/"
- cp -rp "${srcdir}/unpack/libs" "${pkgdir}/opt/${_pkgname}/"
- cp -rp "${srcdir}/unpack/LUT" "${pkgdir}/opt/${_pkgname}/"
- cp -rp "${srcdir}/unpack/Onboarding" "${pkgdir}/opt/${_pkgname}/"
- cp -rp "${srcdir}/unpack/plugins" "${pkgdir}/opt/${_pkgname}/"
- cp -rp "${srcdir}/unpack/UI_Resource" "${pkgdir}/opt/${_pkgname}/"
- #scripts
- cp -p "${srcdir}/unpack/scripts/script.checkfirmware" "${pkgdir}/opt/${_pkgname}/scripts"
- cp -p "${srcdir}/unpack/scripts/script.getlogs.v4" "${pkgdir}/opt/${_pkgname}/scripts"
- cp -p "${srcdir}/unpack/scripts/script.start" "${pkgdir}/opt/${_pkgname}/scripts"
- #configs
- cp -rp "${srcdir}/unpack/share/default-config-linux.dat" "${pkgdir}/opt/${_pkgname}/configs/config.dat-pkg-default"
- cp -rp "${srcdir}/unpack/share/log-conf.xml" "${pkgdir}/opt/${_pkgname}/configs/log-conf.xml-pkg-default"
- cp -rp "${srcdir}/unpack/share/default_cm_config.bin" "${pkgdir}/opt/${_pkgname}/DolbyVision/config.bin-pkg-default"
-
-#Add lib symlinks
+package()
+{
+ msg2 "Creating missing folders..."
+ mkdir -p -m 0775 "${pkgdir}/opt/${_pkgname}/"{configs,DolbyVision,easyDCP,Fairlight,GPUCache,logs,Media,"Resolve Disk Database",.crashreport,.license,.LUT}
+ mkdir -p "${pkgdir}/usr/share/"{applications,desktop-directories,icons/hicolor,mime/packages}
+# mkdir -p "${pkgdir}/tmp/${_pkgname}/"{logs,GPUCache}
+ mkdir -p "${pkgdir}/usr/lib/udev/rules.d"
+ mkdir -p "${pkgdir}/etc/xdg/menus"
+
+ msg2 "Extracting from bundle..."
+ msg "Please wait, this take a while..."
+ cd "${srcdir}" || exit
+ bsdtar x -f ${_installer_binary} -C "${pkgdir}/opt/${_pkgname}"
+
+ 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
+
+ msg2 "Install launchers and configs..."
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
-
-#Set proper permissions
- chmod -R a+rw "${pkgdir}/opt/resolve/configs"
- chmod -R a+rw "${pkgdir}/opt/resolve/easyDCP"
- chmod -R a+rw "${pkgdir}/opt/resolve/logs"
- chmod -R a+rw "${pkgdir}/opt/resolve/Developer"
- chmod -R a+rw "${pkgdir}/opt/resolve/DolbyVision"
- chmod -R a+rw "${pkgdir}/opt/resolve/LUT"
- chmod -R a+rw "${pkgdir}/opt/resolve/.LUT"
- chmod -R a+rw "${pkgdir}/opt/resolve/.license"
- chmod -R a+rw "${pkgdir}/opt/resolve/.crashreport"
- chmod -R a+rw "${pkgdir}/opt/resolve/Resolve Disk Database"
- chmod -R a+rw "${pkgdir}/opt/resolve/Fairlight"
- chmod -R a+rw "${pkgdir}/opt/resolve/Media"
-
-#Installing udev rules for panels and dongles
+ 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
+
+ # This will help adding the app to favorites and prevent glitches on many desktops.
+ echo "StartupWMClass=resolve" >> "${pkgdir}/usr/share/applications/${resolve_app_name}.desktop"
+
+ 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}
+
+# Not sure we need it
+# msg2 "Any final tweaks..."
+# ln -s "/tmp/${_pkgname}/logs" "${pkgdir}/opt/${_pkgname}/logs"
+# ln -s "/tmp/${_pkgname}/GPUCache" "${pkgdir}/opt/${_pkgname}/GPUCache"
+
+ msg2 "Installing Application icons..."
+ # Obviously not working without root rights.
+# XDG_DATA_DIRS="${pkgdir}/usr/share/icons/hicolor" xdg-icon-resource install --size 64 "${pkgdir}/opt/${_pkgname}/graphics/DV_Resolve.png" DaVinci-Resolve 2>&1 >> /dev/null
+# XDG_DATA_DIRS="${pkgdir}/usr/share/icons/hicolor" xdg-icon-resource install --size 64 "${pkgdir}/opt/${_pkgname}/graphics/DV_ResolveProj.png" DaVinci-ResolveProj 2>&1 >> /dev/null
+# XDG_DATA_DIRS="${pkgdir}/usr/share/icons/hicolor" xdg-icon-resource install --size 64 --context mimetypes "${pkgdir}/opt/${_pkgname}/graphics/DV_ResolveProj.png" application-x-resolveproj 2>&1 >> /dev/null
+# XDG_DATA_DIRS="${pkgdir}/usr/share/mime/packages" xdg-mime install --novendor "${pkgdir}/opt/${_pkgname}/share/resolve.xml" 2>&1 >> /dev/null
+ install -D -m644 graphics/DV_Resolve.png "${pkgdir}/usr/share/icons/hicolor/64x64/apps/DV_Resolve.png"
+ install -D -m644 graphics/DV_ResolveProj.png "${pkgdir}/usr/share/icons/hicolor/64x64/apps/DV_ResolveProj.png"
+
+ install -D -m644 share/resolve.xml "${pkgdir}/usr/share/mime/packages/resolve.xml"
- install -Dm644 ${srcdir}/75-davincipanel.rules "${pkgdir}/usr/lib/udev/rules.d/75-davincipanel.rules"
- install -Dm644 ${srcdir}/75-sdx.rules "${pkgdir}/usr/lib/udev/rules.d/75-sdx.rules"
+ msg2 "Setting the right permissions..."
+
+ if [ ! "$(logname 2>&1 >/dev/null)" ]; then
+ _user=$(logname)
+ _group=$(id -g -n ${_user})
+ else
+ _user=root
+ _group=root
+ fi
-#Install .desktop launcher
- install -Dm644 "${srcdir}/davinci-resolve-studio.desktop" "${pkgdir}/usr/share/applications/DaVinci Resolve Studio.desktop"
+ chown -R ${_user}:${_group} "${pkgdir}/opt/${_pkgname}/"{*,.*}
+ chown -R ${_user}:root "${pkgdir}/opt/${_pkgname}/"{configs,DolbyVision,easyDCP,Fairlight,logs,Media,'Resolve Disk Database',.crashreport,.license,.LUT}
+ msg2 "Done!"
}
+
+# vim: fileencoding=utf-8 sts=4 sw=4 noet
diff --git a/davinci-resolve.install b/davinci-resolve.install
new file mode 100644
index 000000000000..7cb3f99396da
--- /dev/null
+++ b/davinci-resolve.install
@@ -0,0 +1,100 @@
+# These are fragments from the original code.
+# I do not see any need for it yet, but maybe I will be able to find out later.
+
+# 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
+
+#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`
+
+# TODO: We should talk to the BMD developers about it. Pretty sensitive subject systemd @_@
+# 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 "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..."
+ if [ ! "$(grep -ir 'application/x-resolveproj=com.blackmagicdesign.resolve.desktop' /usr/share/applications/defaults.list)" ]; then
+ echo "application/x-resolveproj=com.blackmagicdesign.resolve.desktop" /usr/share/applications/defaults.list
+ fi
+
+ if [ ! "$(grep -ir 'application/x-resolveproj=com.blackmagicdesign.resolve.desktop;' /usr/share/applications/mimeinfo.cache)" ]; then
+ echo "/application\/x-resolveproj=com.blackmagicdesign.resolve.desktop;/d" /usr/share/applications/mimeinfo.cache
+ fi
+
+ # 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
+}
+
+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
+ for rules in /usr/lib/udev/rules.d/75-davincipanel.rules /usr/lib/udev/rules.d/75-sdx.rules
+ do
+ [[ -f $rules ]] && rm -rf $rules
+ done
+}