Autogenerated commit at 2026-01-21 11:08:29.223728+00:00

This commit is contained in:
ahriman
2026-01-21 11:08:29 +00:00
parent 21290f328f
commit ed25f457ac
7 changed files with 802 additions and 0 deletions

123
rustdesk/.SRCINFO Normal file
View File

@ -0,0 +1,123 @@
pkgbase = rustdesk
pkgdesc = Yet another remote desktop software, written in Rust. Works out of the box, no configuration required. Great alternative to TeamViewer and AnyDesk!
pkgver = 1.4.5
pkgrel = 1
url = https://rustdesk.com/
install = rustdesk.install
arch = x86_64
license = AGPL-3.0-only
makedepends = unzip
makedepends = git
makedepends = cmake
makedepends = gcc
makedepends = curl
makedepends = wget
makedepends = yasm
makedepends = nasm
makedepends = zip
makedepends = make
makedepends = pkg-config
makedepends = clang
makedepends = rust
makedepends = python
makedepends = python-yaml
makedepends = python-toml
makedepends = ninja
makedepends = patchelf
makedepends = ffnvcodec-headers
makedepends = amf-headers
depends = gtk3
depends = xdotool
depends = libxcb
depends = libxfixes
depends = alsa-lib
depends = libva
depends = libappindicator-gtk3
depends = pam
depends = gst-plugins-base
depends = gst-plugin-pipewire
depends = pulse-native-provider
depends = gst-plugins-base-libs
depends = hicolor-icon-theme
depends = xdg-utils
depends = xdg-user-dirs
depends = glibc
depends = gcc-libs
depends = glib2
depends = libxtst
depends = libepoxy
depends = gdk-pixbuf2
depends = cairo
depends = at-spi2-core
depends = dbus
depends = gstreamer
depends = pango
depends = libx11
depends = fontconfig
depends = libxkbcommon
depends = libpulse
depends = zlib
depends = libdrm
optdepends = intel-media-driver: h264 h265/HEVC support for Intel Quick Sync GPUs (>= Broadwell)
optdepends = libva-intel-driver: h264 support for Intel Quick Sync GPUs (<= Haswell)
optdepends = libva-mesa-driver: h264 h265/HEVC support for AMD and NVIDIA GPUs
optdepends = libva-utils: vainfo query codec support
noextract = meson-1.8.2.tar.gz
noextract = pkgconf-pkgconf-pkgconf-2.5.1.tar.gz
noextract = aom-10aece4157eb79315da205f39e19bf6ab3ee30d0.tar.gz
noextract = libjpeg-turbo-libjpeg-turbo-3.1.1.tar.gz
noextract = libyuv-0faf8dd0e004520a61a603a4d2996d5ecc80dc3f.tar.gz
noextract = webmproject-libvpx-v1.15.2.tar.gz
noextract = xiph-opus-v1.5.2.tar.gz
noextract = ffmpeg-ffmpeg-n7.1.tar.gz
options = !lto
source = rustdesk-1.4.5.tar.gz::https://github.com/rustdesk/rustdesk/archive/refs/tags/1.4.5.tar.gz
source = hbb_common-20251117-073403edbf1fffcb3acfe8cbe7582ee873b23398.tgz::https://github.com/rustdesk/hbb_common/archive/073403edbf1fffcb3acfe8cbe7582ee873b23398.tar.gz
source = 0000-disable-update-check@rustdesk.patch
source = 0002-screen_retriever@rustdesk.patch
source = 0003-mkvparser.cc-cstdint.patch
source = vcpkg-20250827-120deac3062162151622ca4860575a33844ba10b.tgz::https://github.com/microsoft/vcpkg/archive/120deac3062162151622ca4860575a33844ba10b.tar.gz
source = meson-1.8.2.tar.gz::https://github.com/mesonbuild/meson/archive/refs/tags/1.8.2.tar.gz
source = pkgconf-pkgconf-pkgconf-2.5.1.tar.gz::https://github.com/pkgconf/pkgconf/archive/refs/tags/pkgconf-2.5.1.tar.gz
source = aom-10aece4157eb79315da205f39e19bf6ab3ee30d0.tar.gz::https://aomedia.googlesource.com/aom/+archive/10aece4157eb79315da205f39e19bf6ab3ee30d0.tar.gz
source = libjpeg-turbo-libjpeg-turbo-3.1.1.tar.gz::https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/3.1.1.tar.gz
source = libyuv-0faf8dd0e004520a61a603a4d2996d5ecc80dc3f.tar.gz::https://chromium.googlesource.com/libyuv/libyuv/+archive/0faf8dd0e004520a61a603a4d2996d5ecc80dc3f.tar.gz
source = webmproject-libvpx-v1.15.2.tar.gz::https://github.com/webmproject/libvpx/archive/refs/tags/v1.15.2.tar.gz
source = xiph-opus-v1.5.2.tar.gz::https://github.com/xiph/opus/archive/refs/tags/v1.5.2.tar.gz
source = ffmpeg-ffmpeg-n7.1.tar.gz::https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n7.1.tar.gz
source = https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.24.5-stable.tar.xz
source = flutter_rust_bridge-1.80.1.tar.gz::https://github.com/fzyzcjy/flutter_rust_bridge/archive/refs/tags/v1.80.1.tar.gz
md5sums = e85ddd2397cb3c4d431c6922997862ce
md5sums = 5ed04fc39bda6e7f93e5237492e2a263
md5sums = 6acc4b5b14befec55ef84006b60c7ff5
md5sums = a77a4586f30f77de2eed63e160b3a051
md5sums = 379cfba8479c2a92e05e3b855d1e6901
md5sums = 56b134202b1ea88389d24d1c99635f6a
md5sums = 7887064dc9ce1cf7ae1c869bacd8e27e
md5sums = 7745ca9bd6d05af8af0afd209375e209
md5sums = SKIP
md5sums = 4cc83d985db61e64bfa352388bb447ec
md5sums = SKIP
md5sums = 4c7a93808c12b359733430c8377b7fcf
md5sums = 557a08d88aa605ee6cf4156686ce4cc2
md5sums = 03485098fb64a000a4f7cd97e468dfff
md5sums = a3efc04e00cede00296f1a0dc323e8d1
md5sums = cc8e5418ff0c163228aabbe385ba2596
sha256sums = 0bf3b6f1e447bf7c24bbc005df2c6b91a60f05a873a4df8798fb1f711d22faa4
sha256sums = 73f44cefbc27b32f259de84e19a251f196e53d096d15c747197d37d9b79e6ee5
sha256sums = 8f7f1019404ce47dc012ba7c546ad634b973452fc2c57ac64b62cdc7c1f54ea3
sha256sums = 82757ee1ab6b956a3c601f7db82e2d9ad80dbbcf2ba68c63059f0b529426ccd0
sha256sums = 359046f24f8a81b96a198000a1cfd7934c1f4870b2a1306e13f65694cefef68f
sha256sums = f3b1ec711fa1ba291efd75e27983898a37be15760dfe129a406448fa7377b31d
sha256sums = 6b878fb0f6f0318cbd54e13539f89a1a8305791668e8e93ffd59d82722888dac
sha256sums = 79721badcad1987dead9c3609eb4877ab9b58821c06bdacb824f2c8897c11f2a
sha256sums = SKIP
sha256sums = 304165ae11e64ab752e9cfc07c37bfdc87abd0bfe4bc699e59f34036d9c84f72
sha256sums = SKIP
sha256sums = 26fcd3db88045dee380e581862a6ef106f49b74b6396ee95c2993a260b4636aa
sha256sums = 9480e329e989f70d69886ded470c7f8cfe6c0667cc4196d4837ac9e668fb7404
sha256sums = 7ddad2d992bd250a6c56053c26029f7e728bebf0f37f80cf3f8a0e6ec706431a
sha256sums = a7c82f551a9eae018e078f6bb186171e5a77920d35a3d75a61d9a593d0a9e4ae
sha256sums = 5c1494e79024de228a9f383c8e52e45b042cd0cf24f4b0f47ee4d5448938b336
pkgname = rustdesk

View File

@ -0,0 +1,16 @@
diff -pNaru5 a/flutter/lib/desktop/pages/desktop_home_page.dart b/flutter/lib/desktop/pages/desktop_home_page.dart
--- a/flutter/lib/desktop/pages/desktop_home_page.dart 2024-12-21 02:09:03.000000000 -0500
+++ b/flutter/lib/desktop/pages/desktop_home_page.dart 2024-12-23 00:34:54.631074022 -0500
@@ -422,11 +422,11 @@ class _DesktopHomePageState extends Stat
),
);
}
Widget buildHelpCards(String updateUrl) {
- if (!bind.isCustomClient() &&
+ if (false && !bind.isCustomClient() &&
updateUrl.isNotEmpty &&
!isCardClosed &&
bind.mainUriPrefixSync().contains('rustdesk')) {
return buildInstallCard(
"Status",

View File

@ -0,0 +1,16 @@
diff -pNaru5 a/flutter/pubspec.yaml b/flutter/pubspec.yaml
--- a/flutter/pubspec.yaml 2025-07-23 09:44:30.293953846 -0400
+++ b/flutter/pubspec.yaml 2025-07-23 09:44:53.294155752 -0400
@@ -104,11 +104,11 @@ dependencies:
url: https://github.com/rustdesk-org/dynamic_layouts.git
ref: 24cb88413fa5181d949ddacbb30a65d5c459e7d9
pull_down_button: ^0.9.3
device_info_plus: ^9.1.0
qr_flutter: ^4.1.0
- extended_text: 14.0.0
+ extended_text: 13.1.0
xterm: 4.0.0
sqflite: 2.2.0
google_fonts: ^6.2.1
dev_dependencies:

View File

@ -0,0 +1,11 @@
diff -pNaru3 a/flutter/pubspec.yaml b/flutter/pubspec.yaml
--- a/flutter/pubspec.yaml 2025-01-06 01:00:58.263460942 -0500
+++ b/flutter/pubspec.yaml 2025-01-06 01:01:23.960122697 -0500
@@ -27,6 +27,7 @@ dependencies:
flutter_localizations:
sdk: flutter
+ screen_retriever:
ffi: ^2.1.0
path_provider: ^2.1.1
external_path: ^1.0.3

View File

@ -0,0 +1,10 @@
--- mkvparser.cc.old 2025-05-05 16:41:32.480450346 -0400
+++ mkvparser.cc 2025-05-05 16:44:56.578245385 -0400
@@ -16,6 +16,7 @@
#include <cfloat>
#include <climits>
#include <cmath>
+#include <cstdint>
#include <cstring>
#include <memory>
#include <new>

611
rustdesk/PKGBUILD Normal file
View File

@ -0,0 +1,611 @@
# Maintainer: Chris Severance aur.severach aATt spamgourmet dott com
# Contributor: Rojikku <RojikkuNoKami at gmail dot com>
# Contributor: Tech <technetium1337 at gmail dot com>
# Clean Chroot ccm Xeon(R) E-2146G 6c12t: ----> Total build time for 1.4.1-hwcodec was 00:21:24
# Clean chroot build is smaller than the system build
# rm -rf ~/.cache/vcpkg ~/.cargo ~/.pub-cache
# 0 for PKGBUILD commands which may go out of date
# 1 for build.py which should stay current
_opt_BUILD_PY=1
#vercmp --help > /dev/null 2>&1 || vercmp() { echo '0'; } # compatible with namcap sandbox
# namcap sandbox won't let us run pacman /usr/bin/vercmp so we'll rewrite it
# No need to change vercmp that namcap doesn't see
# $1 is the complex version, could be 1.4.1.r10629.g7a3e67e
# $2 is the simple version, always 3 dotted numbers 1.4.1
_vercmp() {
local pla pra rv='0' i
IFS='.' read -ra pla <<< "${1##.r*}"
IFS='.' read -ra pra <<< "$2"
for ((i = 0 ; i < "${#pra[@]}" ; i++ )); do
if [ "${pla[i]}" -lt "${pra[i]}" ]; then
rv='-1'
break
elif [ "${pla[i]}" -gt "${pra[i]}" ]; then
rv='1'
break
fi
done
printf '%s' "${rv}"
}
#_vercmp '1.3.7' '1.4.1'; exit 1
#_vercmp '1.4.1.r10629.g7a3e67e' '1.4.1'; exit 1
#_vercmp '1.4.2' '1.4.1'; exit 1
# _opt_SYS_VCPKG is removed. We will never be able to use the system vcpkg.
_opt_VCPKG_COMMIT_ID=''
# Select from list an item which matches pkgver. This allows to compile recent versions without excessive PKGBUILD hacking.
# $1: pkgver
# $2: vercmp test operator -ge or -eq
_fn_VCL() {
local _q="$1" _v _vx='?' _vy='' _v1 _v2
shift
local _t="$1"
shift
while [ "$#" -gt 0 ]; do
_v="$1"
_v1="${_v%%:*}"
_v2="${_v#*:}"
if [ "$(_vercmp "${_q}" "${_v1}")" "${_t}" 0 ]; then
_vx="${_v}"
_vy="${_v2}"
fi
shift
done
#printf '%s >= %s\n' "${_q}" "${_vx}" 1>&2
printf '%s' "${_vy}"
}
#_opt_VCPKG_COMMIT_ID='#branch=2023.10.19'
# _opt_SYS_FLUTTER is removed. We will never be able to use the system installed version
# 0 for package flutter
# 1 for fvm flutter
_opt_FVM_FLUTTER=0
_opt_NICE='nice -n1'
# hwcodec for H.264 H.265/HEVC stopped compiling when it went from/to
# 1.2.7 hwcodec v0.6.0 builtin (https://github.com/21pages/hwcodec#89879f2f)
# 1.3.0 hwcodec v0.7.0 vcpkg::ffmpeg (https://github.com/rustdesk-org/hwcodec#6abd1898)
# restored in 1.4.1
#
# To get H264 H265, rustdesk must be compiled with vcpkg::ffmpeg build modified by rustdesk.
# libva and appropriate libva hardware driver must be installed and rebooted. See optdepends.
# Client supports all soft codecs and compiled in hardware codecs.
# Client hardware decode support (VAEntrypointVLD) preferred but not required.
# Host offers all encode software codecs and only hardware codecs supported by hardware (VAEntrypointEncSlice).
# Linux host may disable H265 even if supported by hardware. https://github.com/rustdesk/rustdesk/discussions/4095
# Linux client does support H265, verified by connecting to a Windows host >= Skylake or Android.
# Use libva-utils::vainfo to list supported hardware codecs VAProfileH264Main or VAProfileHEVCMain
# https://wiki.archlinux.org/title/Hardware_video_acceleration
_fn_hwcodec() {
_opt_hwcodec_py=()
_opt_hwcodec_fe=''
_opt_hwcodec_vc=()
if :; then
_opt_hwcodec_py=('--hwcodec')
_opt_hwcodec_fe=',hwcodec'
if [ "$(_vercmp "$1" "1.3.0")" -ge 0 ]; then
_opt_hwcodec_vc=('ffmpeg')
makedepends+=('ffnvcodec-headers' 'amf-headers')
depends+=('zlib' 'libdrm')
fi
fi
}
true "${QUIET:=}" "${logpipe:=}"
DLAGENTS="${DLAGENTS[@]/curl /curl -L}"
set -u
_pkgname='rustdesk'
pkgname="${_pkgname}"
_pkgver='1.4.5'
pkgver="${_pkgver//-/.}"
pkgrel=1
_sfx=''
#_sfx='-pr1-998b758'
_HBB=( # dates are retrieved from git fetch; tig. Every version gets a specific hbb.
'1.3.7:20250120-49c6b24a7a8c39d4448e07b743007ef1a3febd43'
'1.3.8:20250223-7cf11f7b771e27ecbd14fd1dd0ced55a64f40eb5'
'1.3.9:20250328-81b932b7bfa2ff8bc60189625fd6538db2fa9ea1'
'1.4.0:20250509-6e556f7e1751a3a709cd5cca0df7268ba3cb1c48'
'1.4.1:20250718-f91459c4ab80fc3cfdef0882b2af51f984bc914c'
'1.4.2:20250904-9e7696c7d4e346508ba68e801a53c6d1f1748fb5'
'1.4.3:20251008-5ed0afde0841659e2fb37ae7acaddc005fa1a8d3'
'1.4.4:20251117-a86eda749e6fa33c282bab680e6b504d3ad87539'
'1.4.5:20251117-073403edbf1fffcb3acfe8cbe7582ee873b23398'
)
_pkgverhbb="$(_fn_VCL "${_pkgver}" -eq "${_HBB[@]}")"; unset _HBB; test "$(_vercmp "${_pkgver}" '1.3.7')" -lt 0 -o ! -z "${_pkgverhbb}" || exit 1
pkgdesc='Yet another remote desktop software, written in Rust. Works out of the box, no configuration required. Great alternative to TeamViewer and AnyDesk!'
arch=('x86_64')
url='https://rustdesk.com/'
_giturl='https://github.com/rustdesk/rustdesk'
_giturlhbb='https://github.com/rustdesk/hbb_common'
license=('AGPL-3.0-only')
_dpr=('gtk3' 'xdotool' 'libxcb' 'libxfixes' 'alsa-lib' 'libva' 'libappindicator-gtk3' 'pam' 'gst-plugins-base' 'gst-plugin-pipewire') # from res/PKGBUILD/depends
#_dpr=('gtk3' 'xdotool' 'libxcb' 'libxfixes' 'alsa-lib' 'libva' 'libvdpau' 'libappindicator-gtk3' 'pam' 'gst-plugins-base' 'gst-plugin-pipewire') # from res/PKGBUILD/depends
depends=("${_dpr[@]}" 'pulse-native-provider' 'gst-plugins-base-libs')
depends+=('hicolor-icon-theme' 'xdg-utils')
depends+=('xdg-user-dirs')
depends+=('glibc' 'gcc-libs' 'glib2' 'libxtst' 'libepoxy' 'gdk-pixbuf2' 'cairo' 'at-spi2-core' 'dbus' 'gstreamer' 'pango' 'libx11' 'fontconfig' 'libxkbcommon' 'libpulse')
_mdp=('unzip' 'git' 'cmake' 'gcc' 'curl' 'wget' 'yasm' 'nasm' 'zip' 'make' 'pkg-config' 'clang') # from Readme.MD
makedepends=("${_mdp[@]}" 'rust' 'python' 'python-yaml' 'python-toml')
makedepends+=('ninja' 'patchelf') # 'meson' 'pkgconf' # vcpkg makedepends are found in clean chroot. Some tools cmake always uses its own.
_fn_hwcodec "${_pkgver}" # makedepends
if [ "${#_opt_hwcodec_py[@]}" -gt 0 ]; then
optdepends=( # lifted from libva::PKGBUILD
'intel-media-driver: h264 h265/HEVC support for Intel Quick Sync GPUs (>= Broadwell)'
'libva-intel-driver: h264 support for Intel Quick Sync GPUs (<= Haswell)'
'libva-mesa-driver: h264 h265/HEVC support for AMD and NVIDIA GPUs'
'libva-utils: vainfo query codec support'
)
fi
options=('!lto')
_patches=(
'0000-disable-update-check@rustdesk.patch'
#'0001-extended_text-drop-version-for-flutter.3.22.3@rustdesk.patch' # https://github.com/rustdesk/rustdesk/blob/master/.github/workflows/bridge.yml#L77
'0002-screen_retriever@rustdesk.patch'
)
install="${pkgname}.install"
_srcdir="${pkgname}-${_pkgver}"
source=(
"${_srcdir}${_sfx}.tar.gz::${_giturl}/archive/refs/tags/${_pkgver}.tar.gz"
"${_patches[@]}"
'0003-mkvparser.cc-cstdint.patch'
)
if [ ! -z "${_pkgverhbb}" ]; then
_srcdirhb="hbb_common-${_pkgverhbb##*-}"
source=("${source[0]}" "hbb_common-${_pkgverhbb}.tgz::${_giturlhbb}/archive/${_pkgverhbb##*-}.tar.gz" "${source[@]:1}")
fi
unset _pkgverhbb
_vcs=(
)
_srcdirvc='vcpkg'
if :; then
_VCL=(
'1.2.7:#commit=20240614-f7423ee180c4b7f40d43402c2feb3859161ef625' # last version that worked with hwcodec
'1.3.0:#commit=20240712-1de2026f28ead93ff1773e6e680387643e914ea1'
'1.3.6:#commit=20241115-b2cb0da531c2f1f740045bfe7c4dac59f0b2b69c'
'1.3.8:#commit=20250113-6f29f12e82a8293156836ad81cc9bf5af41fe836'
'1.4.2:#commit=20250827-120deac3062162151622ca4860575a33844ba10b' # date comes from commit (tig)
)
_opt_VCPKG_COMMIT_ID="$(_fn_VCL "${_pkgver}" -ge "${_VCL[@]}")"; unset _VCL
#source+=("git+https://github.com/microsoft/vcpkg${_opt_VCPKG_COMMIT_ID}")
_srcdirvc="vcpkg-${_opt_VCPKG_COMMIT_ID##*-}"
source+=("vcpkg-${_opt_VCPKG_COMMIT_ID##*=}.tgz::https://github.com/microsoft/vcpkg/archive/${_opt_VCPKG_COMMIT_ID##*-}.tar.gz")
_meaver='1.8.2'
_pcfver='2.5.1'
_aomver='10aece4157eb79315da205f39e19bf6ab3ee30d0'
_jpgver='3.1.1'
_yuvver='0faf8dd0e004520a61a603a4d2996d5ecc80dc3f'
_wbmver='1.15.2'
_xipver='1.5.2'
_vcs+=(
"meson-${_meaver}.tar.gz::https://github.com/mesonbuild/meson/archive/refs/tags/${_meaver}.tar.gz" # meason and pkgconf versions are found in clean chroot
"pkgconf-pkgconf-pkgconf-${_pcfver}.tar.gz::https://github.com/pkgconf/pkgconf/archive/refs/tags/pkgconf-${_pcfver}.tar.gz"
# If your download gets renamed and replaced, vcpkg hash checked and found it to be the wrong one.
# vcs sources are not hash checked. vcpkg doesn't use hash direct downloads like we do. vcpkg downloads with git and tars up, always with a different hash.
"aom-${_aomver}.tar.gz::https://aomedia.googlesource.com/aom/+archive/${_aomver}.tar.gz"
"libjpeg-turbo-libjpeg-turbo-${_jpgver}.tar.gz::https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/${_jpgver}.tar.gz"
"libyuv-${_yuvver}.tar.gz::https://chromium.googlesource.com/libyuv/libyuv/+archive/${_yuvver}.tar.gz"
"webmproject-libvpx-v${_wbmver}.tar.gz::https://github.com/webmproject/libvpx/archive/refs/tags/v${_wbmver}.tar.gz"
"xiph-opus-v${_xipver}.tar.gz::https://github.com/xiph/opus/archive/refs/tags/v${_xipver}.tar.gz"
)
unset _meaver _pcfver _aomver _jpgver _yuvver _wbmver _xipver
if [ "${#_opt_hwcodec_vc[@]}" -ne 0 ]; then
_ffmver='7.1'
_vcs+=("ffmpeg-ffmpeg-n${_ffmver}.tar.gz::https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n${_ffmver}.tar.gz")
unset _ffmver
fi
fi
source+=("${_vcs[@]}")
_FLX=(
'1.2.7:3.19.6'
#'1.3.3:3.24.5' # flutter_rust_bridge won't build
'1.4.1:3.24.5' # 3.27.4 also works
)
_FLUVER="$(_fn_VCL "${_pkgver}" -ge "${_FLX[@]}")"; unset _FLX # https://docs.flutter.dev/release/archive
if [ "${_opt_FVM_FLUTTER}" -eq 0 ]; then
source+=(
"https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${_FLUVER}-stable.tar.xz"
)
else
makedepends+=('fvm')
fi
if :; then
_FRBVER='1.80.1'
_srcdirfrb="flutter_rust_bridge-${_FRBVER}"
source+=(
"${_srcdirfrb}.tar.gz::https://github.com/fzyzcjy/flutter_rust_bridge/archive/refs/tags/v${_FRBVER}.tar.gz"
)
fi
####
md5sums=('e85ddd2397cb3c4d431c6922997862ce'
'5ed04fc39bda6e7f93e5237492e2a263'
'6acc4b5b14befec55ef84006b60c7ff5'
'a77a4586f30f77de2eed63e160b3a051'
'379cfba8479c2a92e05e3b855d1e6901'
'56b134202b1ea88389d24d1c99635f6a'
'7887064dc9ce1cf7ae1c869bacd8e27e'
'7745ca9bd6d05af8af0afd209375e209'
'9b056bb94ba70d6ec3f5901544239268'
'4cc83d985db61e64bfa352388bb447ec'
'f2f3868524b82915da3700267d116cdf'
'4c7a93808c12b359733430c8377b7fcf'
'557a08d88aa605ee6cf4156686ce4cc2'
'03485098fb64a000a4f7cd97e468dfff'
'a3efc04e00cede00296f1a0dc323e8d1'
'cc8e5418ff0c163228aabbe385ba2596')
sha256sums=('0bf3b6f1e447bf7c24bbc005df2c6b91a60f05a873a4df8798fb1f711d22faa4'
'73f44cefbc27b32f259de84e19a251f196e53d096d15c747197d37d9b79e6ee5'
'8f7f1019404ce47dc012ba7c546ad634b973452fc2c57ac64b62cdc7c1f54ea3'
'82757ee1ab6b956a3c601f7db82e2d9ad80dbbcf2ba68c63059f0b529426ccd0'
'359046f24f8a81b96a198000a1cfd7934c1f4870b2a1306e13f65694cefef68f'
'f3b1ec711fa1ba291efd75e27983898a37be15760dfe129a406448fa7377b31d'
'6b878fb0f6f0318cbd54e13539f89a1a8305791668e8e93ffd59d82722888dac'
'79721badcad1987dead9c3609eb4877ab9b58821c06bdacb824f2c8897c11f2a'
'2399c0f128ef148a785c139d631a204458b1715bb2cfb54acc65613c22d89d5c'
'304165ae11e64ab752e9cfc07c37bfdc87abd0bfe4bc699e59f34036d9c84f72'
'73a4ecb598cd6824cb7a0a0d934d81b866e2762acd8eb465e1510063b4649659'
'26fcd3db88045dee380e581862a6ef106f49b74b6396ee95c2993a260b4636aa'
'9480e329e989f70d69886ded470c7f8cfe6c0667cc4196d4837ac9e668fb7404'
'7ddad2d992bd250a6c56053c26029f7e728bebf0f37f80cf3f8a0e6ec706431a'
'a7c82f551a9eae018e078f6bb186171e5a77920d35a3d75a61d9a593d0a9e4ae'
'5c1494e79024de228a9f383c8e52e45b042cd0cf24f4b0f47ee4d5448938b336')
_vcs=("${_vcs[@]%%::*}")
_vcs=("${_vcs[@]##*/}")
noextract=("${_vcs[@]}")
if ! :; then
_srcdir="${_pkgname}"
source[0]="git+${_giturl}#tag=${_pkgver}"
fi
# updpkgsums now uses hashes for git commits, which are different than the git commit hashes. We want the original behavior SKIP.
# googlesource commit direct downloads do not have consistent hashes
for _fk in "${!source[@]}"; do
if [ "${source[${_fk}]#git}" != "${source[${_fk}]}" ] || [ "${source[${_fk}]/googlesource/}" != "${source[${_fk}]}" ]; then
md5sums["${_fk}"]='SKIP'
sha256sums["${_fk}"]='SKIP'
fi
done
unset _fk
_vcpkg=(libvpx libyuv opus aom)
_prepare_vc() {
local -
msg '_prepare_vc'
set -u
mkdir -p "${_srcdirvc}/downloads"
if [ "${#_vcs[@]}" -gt 0 ]; then
cp -p "${_vcs[@]}" "${_srcdirvc}/downloads"
fi
# Check commit ID
if :; then # [ ! -z "${_opt_VCPKG_COMMIT_ID}" ]; then
local _vcc
local _pyvcc="
import yaml
import io
with open('${_srcdir}/.github/workflows/flutter-build.yml', 'r') as stream:
data_loaded = yaml.safe_load(stream)
#print(data_loaded.get('env').keys())
print(data_loaded.get('env').get('VCPKG_COMMIT_ID'))
"
_vcc="$(python -c "${_pyvcc}")"
if [ "${_vcc}" != "${_opt_VCPKG_COMMIT_ID##*-}" ]; then
echo "Flag package out of date: _opt_VCPKG_COMMIT_ID must be changed to (date)-${_vcc}"
set +u
false
fi
fi
local _vcpkgnew
_vcpkgnew="$(sed -E -n -e '/Linux.+: vcpkg / s:^.+install ::p' "${_srcdir}/README.md")"
if [ "${_vcpkg[*]}" != "${_vcpkgnew}" ]; then
printf 'Flag package out of date: _vcpkg=(%s)\n' "${_vcpkgnew}"
set +u
false
fi
}
# Same elements in same order
_dpr_check() {
local -
msg '_dpr_check'
set -u
pushd "${_srcdir}" > /dev/null
(
source 'res/PKGBUILD'
if [ "${#_dpr[@]}" -ne "${#depends[@]}" ]; then
echo 'Flag package out of date: Update _dpr from res/PKGBUILD/depends=()'
false
fi
for((f=0; f<"${#_dpr[@]}"; f++)); do
if [ "${_dpr[f]}" != "${depends[f]}" ]; then
echo 'Flag package out of date: Update _dpr from res/PKGBUILD/depends=()'
set +u
false
fi
done
)
popd > /dev/null
}
_flutter_check() {
local -
set +u; msg '_flutter_check'; set -u
pushd "${_srcdir}"
local _FLUTTER_VERSION
local _pyfv="
import yaml
import io
with open('.github/workflows/flutter-build.yml', 'r') as stream:
#with open('.github/workflows/bridge.yml', 'r') as stream:
data_loaded = yaml.safe_load(stream)
#print(data_loaded.get('env').keys())
print(data_loaded.get('env').get('FLUTTER_VERSION'))
"
_FLUTTER_VERSION="$(python -c "${_pyfv}")"
if [ "${_FLUTTER_VERSION}" != "${_FLUVER}" ]; then
if [ "${_opt_FVM_FLUTTER}" -ne 0 ]; then
set +u; msg2 "Warning: expected Flutter version is ${_FLUTTER_VERSION}"; set -u
_FLUTTER_VERSION="${_FLUVER}"
else
printf 'Flutter version has changed to %s from %s\n' "${_FLUTTER_VERSION}" "${_FLUVER}"
set +u
false
fi
fi
set +u; msg2 "FLUTTER_VERSION=${_FLUTTER_VERSION}"; set -u
local _flutter_rust_bridge
local _pyfrb="
import toml
new_toml_string = toml.load('Cargo.toml')
#print(new_toml_string.keys())
print(new_toml_string.get('dependencies').get('flutter_rust_bridge').get('version'))
"
local _pyfrb="
import yaml
import io
with open('.github/workflows/bridge.yml', 'r') as stream:
data_loaded = yaml.safe_load(stream)
#print(data_loaded.get('env').keys())
print(data_loaded.get('env').get('FLUTTER_RUST_BRIDGE_VERSION'))
"
_flutter_rust_bridge="$(python -c "${_pyfrb}")"
_flutter_rust_bridge="${_flutter_rust_bridge#=}"
if [ "$(vercmp "${_flutter_rust_bridge}" "${_FRBVER%.0}")" -gt 0 ]; then
printf 'flutter_rust_bridge version has changed to %s from %s\n' "${_flutter_rust_bridge}" "${_FRBVER}"
set +u
false
fi
set +u; msg2 "flutter_rust_bridge=${_flutter_rust_bridge}"; set -u
popd
}
_mod_py() {
local -
if [ "$(grep -c -F -e 'os.system' 'build.py')" -gt 1 ]; then
local _lf=$'\n'
local _nc='
def systemecho(cmd):
print(cmd)
return os.system(cmd)
'
_nc="${_nc//${_lf}/\\n}"
sed -e '# echo all system commands' \
-e 's:os.system:systemecho:g' \
-e "s/^def get_version/${_nc}&/g" \
-e '# Disable makepkg' \
-e 's:makepkg:true &:g' \
-e '/pkg.tar.zst/ s:mv:true &:g' \
-i 'build.py'
fi
if [ "${source[0]#git}" = "${source[0]}" ]; then
sed -e 's:git checkout:true &:g' -i 'build.py'
fi
}
_fn_setvars() {
_FVC="${SRCDEST}/fvm-cache" # Default cache folder for fvm-3.2.1 is ~/fvm, not ~/.fvm as you'd expect and the docs seem to indicate.
_FBIN="${srcdir}/flutterbin"
}
prepare() {
local -
_dpr_check
#rm -rf ~/'.cache/vcpkg/archives' ~/'.vcpkg'
_prepare_vc
pushd "${_srcdir}/res/vcpkg" > /dev/null
cp -pr . "${srcdir}/${_srcdirvc}/ports/" # the default vcpkg::ffmpeg build does not produce the correct libraries or codecs libavcodec.a libavutil.a libavformat.a. Use Rustdesk mods
popd > /dev/null
set -u
_flutter_check
local _FVC _FBIN; _fn_setvars
if [ "${_opt_FVM_FLUTTER}" -ne 0 ]; then
set +u; msg2 "fvm cache to ${_FVC}"; set -u
FVM_CACHE_PATH="${_FVC}" \
fvm install "${_FLUVER}"
ln -s "${_FVC}/versions/${_FLUVER}" 'flutter'
fi
if [ ! -d 'flutter_rust_bridge' ]; then
ln -s "flutter_rust_bridge-${_FRBVER}" 'flutter_rust_bridge'
test -d 'flutter_rust_bridge'
fi
mkdir -p "${_FBIN}"
pushd "${_FBIN}"
cat > 'flutter' << EOF
#!/usr/bin/bash
# https://github.com/flutter/flutter/issues/59533
# Gets rid of all the unnecessary downloads
_FBIN="${_FBIN}"
export PATH="\${PATH/\${_FBIN}:/}"
echo '#flutter --no-version-check' "\$@"
${srcdir}/flutter/bin/flutter --no-version-check "\$@"
EOF
chmod 755 'flutter'
cat > 'dart' << EOF
#!/usr/bin/bash
# dart doesn't do a version check. Let's reveal the commands.
_FBIN="${_FBIN}"
export PATH="\${PATH/\${_FBIN}:/}"
echo '#dart' "\$@"
${srcdir}/flutter/bin/dart "\$@"
EOF
chmod 755 'dart'
popd
cd "${_srcdir}"
_mod_py
if rmdir 'libs/hbb_common'; then
pushd 'libs' > /dev/null
test -d "${srcdir}/${_srcdirhb}"
ln -sr "${srcdir}/${_srcdirhb}" 'hbb_common'
popd > /dev/null
fi
local _pt _ptf=() _pts=() _ptd
for _pt in "${_patches[@]}"; do
set +u; msg2 "Patch ${_pt}"; set -u
_ptd=()
if [[ "${_pt}" =~ ^[^@]+@([^.]+).patch$ ]]; then
case "${BASH_REMATCH[1]}" in
'rustdesk') _ptd=(-d "${srcdir}/${_srcdir}");;
'flutter_rust_bridge') _ptd=(-d "${srcdir}/${_srcdirfrb}");;
'vcpkg') _ptd=(-d "${srcdir}/${_srcdirvc}") ;;
*) _ptd=(-d "${srcdir}/${BASH_REMATCH[1]}");;
esac
fi
if patch "${_ptd[@]}" -Nup1 -i "${srcdir}/${_pt}"; then
_pts+=("${_pt}")
else
_ptf+=("${_pt}")
fi
done
if [ "${#_ptf[@]}" -gt 0 ]; then
if [ "${#_pts[@]}" -gt 0 ]; then
printf 'Patch success %s\n' "${_pts[@]}"
printf 'Warning: Some old patches may need to be removed even if they are successful\n'
fi
printf 'Patch failed %s\n' "${_ptf[@]}"
set +x
false
fi
#cd '..'; cp -pr "${_srcdir}" 'a'; ln -s "${_srcdir}" 'b'; cp -pr "${_srcdirfrb}" 'fa'; ln -s "${_srcdirfrb}" 'fb'; false
#cd '..'; cp -pr "${_srcdirvc}" 'va'; ln -s "${_srcdirvc}" 'vb'; false
#diff -pNaru5 'a' 'b' > "0000-$RANDOM@domain.patch"
}
build() {
local -
msg2 'Build vcpkg'
set -u
unset VCPKG_DOWNLOADS
if [ ! -x "${_srcdirvc}/vcpkg" ]; then
"${_srcdirvc}/bootstrap-vcpkg.sh" -disableMetrics
fi
export VCPKG_ROOT="${PWD}/${_srcdirvc}"
local _vcextra=(
--disable-metrics
--cmake-args='-DVCPKG_BUILD_TYPE=release' # https://github.com/microsoft/vcpkg/issues/37186#issuecomment-2133951797
--cmake-args='-DVCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES=enabled'
#--no-downloads
#--only-downloads
)
#export CMAKE_POLICY_VERSION_MINIMUM='3.5'
${_opt_NICE} "${_srcdirvc}/vcpkg" install "${_vcextra[@]}" --x-install-root="${VCPKG_ROOT}/installed" "${_vcpkg[@]}" "${_opt_hwcodec_vc[@]}"
cd "${_srcdir}"
set +u; msg2 'Build rustdesk Flutter'; set -u
set -x
export CPATH="$(clang -v 2>&1 | grep "Selected GCC installation: " | cut -d' ' -f4-)/include"
export CARGO_INCREMENTAL=0
local _FVC _FBIN; _fn_setvars
export PATH="${_FBIN}:${srcdir}/flutter/bin:${PATH}"
flutter --disable-analytics
dart --disable-analytics
flutter doctor
dart pub global activate ffigen --version 5.0.1
pushd "${srcdir}/flutter_rust_bridge/frb_codegen"; ${_opt_NICE} cargo install --path . ; popd
pushd flutter ; flutter clean; flutter pub get ; popd
local _CGdefault=~/.cargo
local _CARGO_HOME_RUSTDESK="${CARGO_HOME:-${_CGdefault}}"
"${_CARGO_HOME_RUSTDESK}"/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart
if :; then
find "${_CARGO_HOME_RUSTDESK}/git" -type 'f' -name 'mkvparser.cc' -execdir sh -c "patch --no-backup-if-mismatch -Nup0 -i \"${srcdir}/0003-mkvparser.cc-cstdint.patch\"; rm -f mkvparser.cc.rej; true" ';'
fi
if [ "${_opt_BUILD_PY}" -ne 0 ]; then
${_opt_NICE} ./build.py --flutter "${_opt_hwcodec_py[@]}"
else
#git checkout src/ui/common.tis
${_opt_NICE} cargo build --features flutter${_opt_hwcodec_fe} --lib --release
pushd flutter
${_opt_NICE} flutter build linux --release
popd
fi
set +x
}
# This rebuilds the entire package
check_disabled() {
cd "${_srcdir}"
${_opt_NICE} cargo test --release
}
package() {
local -
set -u
cd "${_srcdir}"
install -d "${pkgdir}/usr/lib/"
cp -pr 'flutter/build/linux/x64/release/bundle' "${pkgdir}/usr/lib/"
mv "${pkgdir}/usr/lib/"{bundle,${_pkgname}}
install -d "${pkgdir}/usr/bin/"
ln -s -t "${pkgdir}/usr/bin/" "/usr/lib/${_pkgname}/${_pkgname}"
install -Dm0644 "res/${_pkgname}.service" -t "${pkgdir}/usr/lib/systemd/system/"
install -Dm0644 'res/32x32.png' "${pkgdir}/usr/share/icons/hicolor/32x32/apps/${_pkgname}.png"
install -Dm0644 'res/128x128.png' "${pkgdir}/usr/share/icons/hicolor/128x128/apps/${_pkgname}.png"
install -Dm0644 'res/128x128@2x.png' "${pkgdir}/usr/share/icons/hicolor/256x256/apps/${_pkgname}.png"
install -Dm0644 /dev/stdin "${pkgdir}/usr/share/applications/${_pkgname}.desktop" << EOF
[Desktop Entry]
Version=${pkgver%.r*}
Name=RustDesk
GenericName=Remote Desktop
GenericName[zh_CN]=远程桌面
Comment=Remote Desktop
Comment[zh_CN]=远程桌面
Exec=${_pkgname} %u
Icon=${_pkgname}
Terminal=false
Type=Application
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
StartupNotify=true
Categories=Network;RemoteAccess;GTK;
Keywords=internet;
Actions=new-window;
X-Desktop-File-Install-Version=0.23
[Desktop Action new-window]
Name=Open a New Window
EOF
install -Dm644 'LICENCE' -t "${pkgdir}/usr/share/licenses/${_pkgname}"
}
set +u

15
rustdesk/rustdesk.install Normal file
View File

@ -0,0 +1,15 @@
# arg 1: the new package version
post_install() {
if systemctl -q is-enabled 'rustdesk.service'; then
systemctl daemon-reload
systemctl restart 'rustdesk.service'
fi
}
# arg 1: the new package version
# arg 2: the old package version
post_upgrade() {
if systemctl -q is-enabled 'rustdesk.service'; then
systemctl restart 'rustdesk.service'
fi
}