summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD157
1 files changed, 103 insertions, 54 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 3f8ba22eb3b4..6ed7d52edb0e 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,70 +1,119 @@
-# Maintainer: bjin <bjin@ctrl-d.org>
+# Maintainer:
+# Contributor: bjin <bjin@ctrl-d.org>
# Contributor: Alynx Zhou <alynx.zhou@gmail.com>
-_pkgname=gyroflow
-pkgname=${_pkgname}-git
-pkgver=1.1.0.r50.gd85b2b3
+## useful links
+# https://gyroflow.xyz
+# https://github.com/gyroflow/gyroflow
+
+_pkgname="gyroflow"
+pkgname="$_pkgname-git"
+pkgver=1.5.4.r115.ga161c78b
pkgrel=1
-pkgdesc="Video stabilization using gyroscope data (Git version)"
+pkgdesc="Video stabilization using gyroscope data"
+url="https://github.com/gyroflow/gyroflow"
+license=("GPL-3.0-or-later")
arch=("x86_64")
-url="https://gyroflow.xyz/"
-provides=("$_pkgname")
-conflicts=("$_pkgname" "${_pkgname}-appimage")
-license=("GPL3")
-depends=("libc++" "qt6-base" "qt6-quick3d" "qt6-declarative" "qt6-3d" "pulseaudio" "libxkbcommon" "opencv" "ocl-icd" "ffmpeg")
-makedepends=("cargo" "opencl-headers" "git" "clang" "p7zip")
-optdepends=("opencl-driver: OpenCL driver for GPU accelerated stabilization"
- "libva-mesa-driver: VAAPI video acceleration for NVIDIA and AMD GPU"
- "intel-media-driver: VAAPI video acceleration for Intel GPU")
-source=("$_pkgname::git+https://github.com/gyroflow/gyroflow.git"
- "$_pkgname.desktop")
-sha256sums=("SKIP"
- "1ee4e5f8471ef60a209d9ae6e630b7ca066cda295be54e3e95630b25a259db00")
+
+depends=(
+ 'ffmpeg'
+ 'libc++'
+ 'ocl-icd'
+ 'opencv'
+ 'qt6-declarative'
+)
+makedepends=(
+ 'cargo'
+ 'clang'
+ 'gendesk'
+ 'git'
+ 'opencl-headers'
+ 'p7zip'
+)
+optdepends=(
+ 'opencl-driver: OpenCL driver for GPU accelerated stabilization'
+ 'libva-mesa-driver: VAAPI video acceleration for NVIDIA and AMD GPU'
+ 'intel-media-driver: VAAPI video acceleration for Intel GPU'
+)
+
+provides=("$_pkgname=${pkgver%%.r*}")
+conflicts=("$_pkgname")
+
+options=(!lto)
+
+_pkgsrc="$_pkgname"
+source=("$_pkgsrc"::"git+$url.git")
+sha256sums=("SKIP")
pkgver() {
- cd "$_pkgname"
- git describe --long --tags | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
+ cd "$_pkgsrc"
+ git describe --long --tags --abbrev=8 --exclude='*[a-zA-Z][a-zA-Z]*' \
+ | sed -E 's/^[^0-9]*//;s/([^-]*-g)/r\1/;s/-/./g'
}
prepare() {
- cd "${_pkgname}"
- cargo update
- cargo fetch --locked --target "${CARCH}-unknown-linux-gnu"
+ cat <<EOF > "$_pkgname.sh"
+#!/usr/bin/env sh
+export LD_LIBRARY_PATH="/opt/$_pkgname"
+exec /opt/$_pkgname/$_pkgname "\$@"
+EOF
+
+ local _gendesk_options=(
+ -q -f -n
+ --pkgname="$_pkgname"
+ --pkgdesc="$pkgdesc"
+ --name="Gyroflow"
+ --exec="$_pkgname %u"
+ --icon="$_pkgname"
+ --terminal=false
+ --categories="Graphics;Photography;AudioVideo"
+ --mimetypes="video/mp4;video/mpeg"
+ --startupnotify=true
+ )
+
+ gendesk "${_gendesk_options[@]}"
+
+ export RUSTUP_TOOLCHAIN=stable
+
+ cd "$_pkgsrc"
+ cargo fetch --locked --target "${CARCH}-unknown-linux-gnu"
}
build() {
- cd "${_pkgname}"
- # Currently Arch has both qt5 and qt6, and `/usr/bin/qmake` is qt5, this
- # package needs qt6.
- export QMAKE="/usr/bin/qmake6"
- # Use system libraries.
- export FFMPEG_DIR="/usr"
- export OPENCV_LINK_PATHS="/usr"
- # See <https://github.com/gyroflow/gyroflow/blob/master/__env-linux.sh>.
- # But I need to add `opencv_dnn` to build it.
- export OPENCV_LINK_LIBS="opencv_core,opencv_calib3d,opencv_features2d,opencv_imgproc,opencv_video,opencv_flann,opencv_dnn"
- export RUSTUP_TOOLCHAIN=stable
- export CARGO_TARGET_DIR=target
- cargo build --frozen --release --all-features
+ # Currently Arch has both qt5 and qt6, and `/usr/bin/qmake` is qt5, this
+ # package needs qt6.
+ export QMAKE="/usr/bin/qmake6"
+ # Use system libraries.
+ export FFMPEG_DIR="/usr"
+ export OPENCV_LINK_PATHS="/usr"
+ # See <https://github.com/gyroflow/gyroflow/blob/master/__env-linux.sh>.
+ # But I need to add `opencv_dnn` to build it.
+ export OPENCV_LINK_LIBS="opencv_core,opencv_calib3d,opencv_features2d,opencv_imgproc,opencv_video,opencv_flann,opencv_dnn"
+ export RUSTUP_TOOLCHAIN=stable
+ export CARGO_TARGET_DIR=target
+
+ cd "$_pkgsrc"
+ cargo build --frozen --release --all-features
}
package() {
- cd "${_pkgname}"
- # Gyroflow currently has no compiling options for custom resource path,
- # so I have to install it into `/opt` to put it together with camera
- # presets.
- install -Dm0755 "target/release/${_pkgname}" "${pkgdir}/opt/${_pkgname}/${_pkgname}"
- # I can't find any existing package for this file.
- install -Dm0755 "target/release/libmdk.so.0" "${pkgdir}/opt/${_pkgname}/libmdk.so.0"
- cp -a "resources/camera_presets" "${pkgdir}/opt/${_pkgname}"
-
- # Make camera presets directory writable. gyroflow will automatically
- # download and save new presets to this directory.
- find "${pkgdir}/opt/${_pkgname}/camera_presets" -type d -exec chmod 777 {} +
-
- install -Dm0644 "resources/icon.svg" "${pkgdir}/usr/share/pixmaps/${_pkgname}.svg"
- install -Dm0644 "${srcdir}/${_pkgname}.desktop" "${pkgdir}/usr/share/applications/${_pkgname}.desktop"
-
- mkdir -p "${pkgdir}/usr/bin"
- ln -s "/opt/${_pkgname}/${_pkgname}" "$pkgdir/usr/bin/${_pkgname}"
+ # program files
+ install -Dm755 "$_pkgsrc/target/release/$_pkgname" "$pkgdir/opt/$_pkgname/$_pkgname"
+ install -Dm755 "$_pkgsrc/target/release/libmdk.so.0" -t "$pkgdir/opt/$_pkgname/"
+
+ # camera presets
+ cp -a "$_pkgsrc/resources/camera_presets" "$pkgdir/opt/$_pkgname"
+
+ # script
+ install -Dm755 "$_pkgname.sh" "$pkgdir/usr/bin/$_pkgname"
+
+ # desktop file
+ install -Dm644 "$_pkgname.desktop" -t "$pkgdir/usr/share/applications/"
+
+ # icon
+ install -Dm644 "$_pkgsrc/resources/icon.svg" "$pkgdir/usr/share/pixmaps/$_pkgname.svg"
+
+ # Make camera presets directory writable.
+ # gyroflow downloads and saves new presets to this directory.
+ find "$pkgdir/opt/$_pkgname/camera_presets" -type d -exec chmod 777 {} +
}