Merge pull request #2011 from Kingtous/master
feat: add flatpak package
This commit is contained in:
commit
a78e928f4a
2
.github/workflows/flutter-ci.yml
vendored
2
.github/workflows/flutter-ci.yml
vendored
@ -38,7 +38,7 @@ jobs:
|
||||
shell: bash
|
||||
run: |
|
||||
case ${{ matrix.job.target }} in
|
||||
x86_64-unknown-linux-gnu) sudo apt-get -y update ; sudo apt install -y g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake libclang-dev ninja-build libayatana-appindicator3-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev;;
|
||||
x86_64-unknown-linux-gnu) sudo apt-get -y update ; sudo apt install -y g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake libclang-dev ninja-build libappindicator3-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev;;
|
||||
# arm-unknown-linux-*) sudo apt-get -y update ; sudo apt-get -y install gcc-arm-linux-gnueabihf ;;
|
||||
# aarch64-unknown-linux-gnu) sudo apt-get -y update ; sudo apt-get -y install gcc-aarch64-linux-gnu ;;
|
||||
esac
|
||||
|
95
.github/workflows/flutter-nightly.yml
vendored
95
.github/workflows/flutter-nightly.yml
vendored
@ -11,6 +11,7 @@ env:
|
||||
FLUTTER_VERSION: "3.0.5"
|
||||
TAG_NAME: "nightly"
|
||||
VCPKG_COMMIT_ID: '6ca56aeb457f033d344a7106cb3f9f1abf8f4e98'
|
||||
VERSION: "1.2.0"
|
||||
|
||||
jobs:
|
||||
build-for-windows:
|
||||
@ -92,7 +93,7 @@ jobs:
|
||||
rustdesk-*.exe
|
||||
|
||||
build-for-linux:
|
||||
name: ${{ matrix.job.target }} (${{ matrix.job.os }})
|
||||
name: ${{ matrix.job.target }} (${{ matrix.job.os }},${{ matrix.job.extra-build-args }})
|
||||
runs-on: ${{ matrix.job.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
@ -104,7 +105,8 @@ jobs:
|
||||
# - { target: i686-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
|
||||
# - { target: i686-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
|
||||
# - { target: x86_64-apple-darwin , os: macos-10.15 }
|
||||
- { target: x86_64-unknown-linux-gnu , os: ubuntu-18.04}
|
||||
- { target: x86_64-unknown-linux-gnu , os: ubuntu-18.04, extra-build-args: ""}
|
||||
- { target: x86_64-unknown-linux-gnu , os: ubuntu-18.04, extra-build-args: "--flatpak"}
|
||||
# - { target: x86_64-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
|
||||
steps:
|
||||
- name: Checkout source code
|
||||
@ -113,7 +115,7 @@ jobs:
|
||||
- name: Install prerequisites
|
||||
run: |
|
||||
case ${{ matrix.job.target }} in
|
||||
x86_64-unknown-linux-gnu) sudo apt-get -y update ; sudo apt install -y g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake libclang-dev ninja-build libayatana-appindicator3-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libvdpau-dev libva-dev libclang-dev llvm-dev libclang-10-dev llvm-10-dev;;
|
||||
x86_64-unknown-linux-gnu) sudo apt-get -y update ; sudo apt install -y g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake libclang-dev ninja-build libappindicator3-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libvdpau-dev libva-dev libclang-dev llvm-dev libclang-10-dev llvm-10-dev;;
|
||||
# arm-unknown-linux-*) sudo apt-get -y update ; sudo apt-get -y install gcc-arm-linux-gnueabihf ;;
|
||||
# aarch64-unknown-linux-gnu) sudo apt-get -y update ; sudo apt-get -y install gcc-aarch64-linux-gnu ;;
|
||||
esac
|
||||
@ -159,7 +161,7 @@ jobs:
|
||||
|
||||
- name: Install cargo bundle tools
|
||||
run: |
|
||||
cargo install cargo-bundle --force
|
||||
cargo install cargo-bundle
|
||||
|
||||
- name: Show version information (Rust, cargo, GCC)
|
||||
shell: bash
|
||||
@ -172,7 +174,7 @@ jobs:
|
||||
rustc -V
|
||||
|
||||
- name: Build rustdesk
|
||||
run: ./build.py --flutter --hwcodec
|
||||
run: ./build.py --flutter --hwcodec ${{ matrix.job.extra-build-args }}
|
||||
|
||||
- name: Rename rustdesk
|
||||
shell: bash
|
||||
@ -187,9 +189,17 @@ jobs:
|
||||
prerelease: true
|
||||
tag_name: ${{ env.TAG_NAME }}
|
||||
files: |
|
||||
rustdesk*.deb
|
||||
rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb
|
||||
|
||||
- name: Upload Artifcat
|
||||
uses: actions/upload-artifact@master
|
||||
if: ${{ contains(matrix.job.extra-build-args, 'flatpak') }}
|
||||
with:
|
||||
name: rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb
|
||||
path: rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb
|
||||
|
||||
- name: Build archlinux package
|
||||
if: ${{ matrix.job.extra-build-args == '' }}
|
||||
uses: vufa/arch-makepkg-action@master
|
||||
with:
|
||||
packages: >
|
||||
@ -220,14 +230,85 @@ jobs:
|
||||
python
|
||||
ttf-arphic-uming
|
||||
libappindicator-gtk3
|
||||
libayatana-appindicator
|
||||
scripts: |
|
||||
cd res && HBB=`pwd`/.. FLUTTER=1 makepkg -f
|
||||
|
||||
- name: Publish archlinux package
|
||||
if: ${{ matrix.job.extra-build-args == '' }}
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
prerelease: true
|
||||
tag_name: ${{ env.TAG_NAME }}
|
||||
files: |
|
||||
res/rustdesk*.zst
|
||||
|
||||
# - name: build RPM package
|
||||
# id: rpm
|
||||
# uses: Kingtous/rustdesk-rpmbuild@master
|
||||
# with:
|
||||
# spec_file: "res/rpm-flutter.spec"
|
||||
|
||||
# - name: Publish fedora28/centos8 package
|
||||
# uses: softprops/action-gh-release@v1
|
||||
# with:
|
||||
# prerelease: true
|
||||
# tag_name: ${{ env.TAG_NAME }}
|
||||
# files: |
|
||||
# ${{ steps.rpm.outputs.rpm_dir_path }}/*
|
||||
|
||||
build-flatpak:
|
||||
name: Build Flatpak
|
||||
needs: [build-for-linux]
|
||||
runs-on: ${{ matrix.job.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
job:
|
||||
# - { target: aarch64-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
|
||||
# - { target: arm-unknown-linux-gnueabihf , os: ubuntu-20.04, use-cross: true }
|
||||
# - { target: arm-unknown-linux-musleabihf, os: ubuntu-20.04, use-cross: true }
|
||||
# - { target: i686-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
|
||||
# - { target: i686-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
|
||||
# - { target: x86_64-apple-darwin , os: macos-10.15 }
|
||||
- { target: x86_64-unknown-linux-gnu , os: ubuntu-18.04, arch: x86_64}
|
||||
# - { target: x86_64-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
|
||||
steps:
|
||||
- name: Checkout source code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install -y flatpak flatpak-builder cmake g++ gcc git curl wget nasm yasm libgtk-3-dev
|
||||
|
||||
- name: Download Binary
|
||||
uses: actions/download-artifact@master
|
||||
with:
|
||||
name: rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb
|
||||
path: .
|
||||
|
||||
- name: Rename Binary
|
||||
run: |
|
||||
mv rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb rustdesk-${{ env.VERSION }}.deb
|
||||
|
||||
- name: Install Flatpak deps
|
||||
run: |
|
||||
flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||
flatpak --user install -y flathub org.freedesktop.Platform/${{ matrix.job.arch }}/21.08
|
||||
flatpak --user install -y flathub org.freedesktop.Sdk/${{ matrix.job.arch }}/21.08
|
||||
|
||||
- name: Make Flatpak package
|
||||
run: |
|
||||
pushd flatpak
|
||||
git clone https://github.com/flathub/shared-modules.git --depth=1
|
||||
flatpak-builder --user --force-clean --repo=repo ./build ./rustdesk.json
|
||||
flatpak build-bundle ./repo rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}.flatpak org.rustdesk.rustdesk
|
||||
|
||||
- name: Publish flatpak package
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
prerelease: true
|
||||
tag_name: ${{ env.TAG_NAME }}
|
||||
files: |
|
||||
flatpak/rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}.flatpak
|
||||
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -36,5 +36,6 @@ flatpak/.flatpak-builder/build/**
|
||||
flatpak/.flatpak-builder/shared-modules/**
|
||||
flatpak/.flatpak-builder/shared-modules/*.tar.xz
|
||||
flatpak/.flatpak-builder/debian-binary
|
||||
flatpak/build/**
|
||||
# bridge file
|
||||
lib/generated_bridge.dart
|
||||
|
@ -147,7 +147,7 @@ hound = "3.5"
|
||||
name = "RustDesk"
|
||||
identifier = "com.carriez.rustdesk"
|
||||
icon = ["res/32x32.png", "res/128x128.png", "res/128x128@2x.png"]
|
||||
deb_depends = ["libgtk-3-0", "libxcb-randr0", "libxdo3", "libxfixes3", "libxcb-shape0", "libxcb-xfixes0", "libasound2", "libsystemd0", "pipewire", "curl", "libayatana-appindicator3-1", "libvdpau1", "libva2"]
|
||||
deb_depends = ["libgtk-3-0", "libxcb-randr0", "libxdo3", "libxfixes3", "libxcb-shape0", "libxcb-xfixes0", "libasound2", "libsystemd0", "pipewire", "curl", "libappindicator3-1", "libvdpau1", "libva2"]
|
||||
osx_minimum_system_version = "10.14"
|
||||
resources = ["res/mac-tray-light.png","res/mac-tray-dark.png"]
|
||||
|
||||
|
@ -69,7 +69,7 @@ Please download sciter dynamic library yourself.
|
||||
```sh
|
||||
sudo apt install -y zip g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev \
|
||||
libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake make \
|
||||
libclang-dev ninja-build libayatana-appindicator3-1 libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libayatana-appindicator3-dev
|
||||
libclang-dev ninja-build libappindicator3-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
|
||||
```
|
||||
|
||||
### openSUSE Tumbleweed
|
||||
|
9
build.py
9
build.py
@ -81,6 +81,11 @@ def make_parser():
|
||||
action='store_true',
|
||||
help='Build windows portable'
|
||||
)
|
||||
parser.add_argument(
|
||||
'--flatpak',
|
||||
action='store_true',
|
||||
help='Build rustdesk libs with the flatpak feature enabled'
|
||||
)
|
||||
return parser
|
||||
|
||||
|
||||
@ -188,6 +193,8 @@ def get_features(args):
|
||||
features.append('hwcodec')
|
||||
if args.flutter:
|
||||
features.append('flutter')
|
||||
if args.flatpak:
|
||||
features.append('flatpak')
|
||||
print("features:", features)
|
||||
return features
|
||||
|
||||
@ -201,7 +208,7 @@ Version: %s
|
||||
Architecture: amd64
|
||||
Maintainer: open-trade <info@rustdesk.com>
|
||||
Homepage: https://rustdesk.com
|
||||
Depends: libgtk-3-0, libxcb-randr0, libxdo3, libxfixes3, libxcb-shape0, libxcb-xfixes0, libasound2, libsystemd0, pipewire, curl
|
||||
Depends: libgtk-3-0, libxcb-randr0, libxdo3, libxfixes3, libxcb-shape0, libxcb-xfixes0, libasound2, libsystemd0, pipewire, curl, libappindicator3-1, libva-drm2, libva-x11-2, libvdpau1
|
||||
Description: A remote control software.
|
||||
|
||||
""" % version
|
||||
|
38
flatpak/rustdesk.json
Normal file
38
flatpak/rustdesk.json
Normal file
@ -0,0 +1,38 @@
|
||||
{
|
||||
"app-id": "org.rustdesk.rustdesk",
|
||||
"runtime": "org.freedesktop.Platform",
|
||||
"runtime-version": "21.08",
|
||||
"sdk": "org.freedesktop.Sdk",
|
||||
"command": "rustdesk",
|
||||
"modules": [
|
||||
"shared-modules/libappindicator/libappindicator-gtk3-12.10.json",
|
||||
"xdotool.json",
|
||||
{
|
||||
"name": "rustdesk",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"bsdtar -zxvf rustdesk-1.2.0.deb",
|
||||
"tar -xvf ./data.tar.xz",
|
||||
"cp -r ./usr /app/",
|
||||
"mkdir -p /app/bin && ln -s /app/usr/lib/rustdesk/rustdesk /app/bin/rustdesk"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "file",
|
||||
"path": "../rustdesk-1.2.0.deb"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"finish-args": [
|
||||
"--share=ipc",
|
||||
"--socket=x11",
|
||||
"--socket=fallback-x11",
|
||||
"--socket=wayland",
|
||||
"--share=network",
|
||||
"--filesystem=home",
|
||||
"--device=dri",
|
||||
"--socket=pulseaudio",
|
||||
"--talk-name=org.freedesktop.Flatpak"
|
||||
]
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
app-id: org.rustdesk.rustdesk
|
||||
runtime: org.freedesktop.Platform
|
||||
runtime-version: '21.08'
|
||||
sdk: org.freedesktop.Sdk
|
||||
command: rustdesk
|
||||
modules:
|
||||
# install appindicator
|
||||
- shared-modules/libappindicator/libappindicator-gtk3-12.10.json
|
||||
- name: rustdesk
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
- bsdtar -zxvf rustdesk-1.2.0.deb
|
||||
- tar -xvf ./data.tar.xz
|
||||
- cp -r ./usr /app/
|
||||
- rm /app/usr/bin/rustdesk
|
||||
- mkdir -p /app/bin && ln -s /app/usr/lib/rustdesk/flutter_hbb /app/bin/rustdesk
|
||||
sources:
|
||||
# Note: replace to deb files with url
|
||||
- type: file
|
||||
path: ../rustdesk-1.2.0.deb
|
||||
|
||||
finish-args:
|
||||
# X11 + XShm access
|
||||
- --share=ipc
|
||||
- --socket=x11
|
||||
# Wayland access
|
||||
- --socket=wayland
|
||||
# Needs to talk to the network:
|
||||
- --share=network
|
||||
# Needs to save files locally
|
||||
- --filesystem=xdg-documents
|
15
flatpak/xdotool.json
Normal file
15
flatpak/xdotool.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "xdotool",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"make -j4 && PREFIX=./build make install",
|
||||
"cp -r ./build/* /app/"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://github.com/jordansissel/xdotool/releases/download/v3.20211022.1/xdotool-3.20211022.1.tar.gz",
|
||||
"sha256": "96f0facfde6d78eacad35b91b0f46fecd0b35e474c03e00e30da3fdd345f9ada"
|
||||
}
|
||||
]
|
||||
}
|
@ -7,7 +7,7 @@ arch=('x86_64')
|
||||
url=""
|
||||
license=('AGPL-3.0')
|
||||
groups=()
|
||||
depends=('gtk3' 'xdotool' 'libxcb' 'libxfixes' 'alsa-lib' 'pipewire' 'curl' 'libva' 'libvdpau' 'libayatana-appindicator')
|
||||
depends=('gtk3' 'xdotool' 'libxcb' 'libxfixes' 'alsa-lib' 'pipewire' 'curl' 'libva' 'libvdpau' 'libappindicator-gtk3')
|
||||
makedepends=()
|
||||
checkdepends=()
|
||||
optdepends=()
|
||||
|
88
res/rpm-flutter.spec
Normal file
88
res/rpm-flutter.spec
Normal file
@ -0,0 +1,88 @@
|
||||
Name: rustdesk
|
||||
Version: 1.2.0
|
||||
Release: 0
|
||||
Summary: RPM package
|
||||
License: GPL-3.0
|
||||
Requires: gtk3 libxcb libxdo libXfixes pipewire alsa-lib curl libappindicator libvdpau1 libva2
|
||||
|
||||
|
||||
%description
|
||||
The best open-source remote desktop client software, written in Rust.
|
||||
|
||||
%prep
|
||||
# we have no source, so nothing here
|
||||
|
||||
%build
|
||||
# we have no source, so nothing here
|
||||
|
||||
# %global __python %{__python3}
|
||||
|
||||
%install
|
||||
|
||||
mkdir -p "${buildroot}/usr/lib/rustdesk" && cp -r ${HBB}/flutter/build/linux/x64/release/bundle/* -t "${buildroot}/usr/lib/rustdesk"
|
||||
mkdir -p "${buildroot}/usr/bin"
|
||||
pushd ${buildroot} && ln -s /usr/lib/rustdesk/rustdesk usr/bin/rustdesk && popd
|
||||
install -Dm 644 $HBB/res/rustdesk.service -t "${buildroot}/usr/share/rustdesk/files"
|
||||
install -Dm 644 $HBB/res/rustdesk.desktop -t "${buildroot}/usr/share/rustdesk/files"
|
||||
install -Dm 644 $HBB/res/rustdesk-link.desktop -t "${buildroot}/usr/share/rustdesk/files"
|
||||
install -Dm 644 $HBB/res/128x128@2x.png "${buildroot}/usr/share/rustdesk/files/rustdesk.png"
|
||||
|
||||
|
||||
%files
|
||||
/usr/bin/rustdesk
|
||||
/usr/lib/rustdesk/*
|
||||
/usr/share/rustdesk/files/rustdesk.service
|
||||
/usr/share/rustdesk/files/rustdesk.png
|
||||
/usr/share/rustdesk/files/rustdesk.desktop
|
||||
/usr/share/rustdesk/files/rustdesk-link.desktop
|
||||
|
||||
%changelog
|
||||
# let's skip this for now
|
||||
|
||||
# https://www.cnblogs.com/xingmuxin/p/8990255.html
|
||||
%pre
|
||||
# can do something for centos7
|
||||
case "$1" in
|
||||
1)
|
||||
# for install
|
||||
;;
|
||||
2)
|
||||
# for upgrade
|
||||
systemctl stop rustdesk || true
|
||||
;;
|
||||
esac
|
||||
|
||||
%post
|
||||
cp /usr/share/rustdesk/files/rustdesk.service /etc/systemd/system/rustdesk.service
|
||||
cp /usr/share/rustdesk/files/rustdesk.desktop /usr/share/applications/
|
||||
cp /usr/share/rustdesk/files/rustdesk-link.desktop /usr/share/applications/
|
||||
systemctl daemon-reload
|
||||
systemctl enable rustdesk
|
||||
systemctl start rustdesk
|
||||
update-desktop-database
|
||||
|
||||
%preun
|
||||
case "$1" in
|
||||
0)
|
||||
# for uninstall
|
||||
systemctl stop rustdesk || true
|
||||
systemctl disable rustdesk || true
|
||||
rm /etc/systemd/system/rustdesk.service || true
|
||||
;;
|
||||
1)
|
||||
# for upgrade
|
||||
;;
|
||||
esac
|
||||
|
||||
%postun
|
||||
case "$1" in
|
||||
0)
|
||||
# for uninstall
|
||||
rm /usr/share/applications/rustdesk.desktop || true
|
||||
rm /usr/share/applications/rustdesk-link.desktop || true
|
||||
update-desktop-database
|
||||
;;
|
||||
1)
|
||||
# for upgrade
|
||||
;;
|
||||
esac
|
@ -1,9 +1,9 @@
|
||||
Name: rustdesk
|
||||
Version: 1.1.9
|
||||
Version: 1.2.0
|
||||
Release: 0
|
||||
Summary: RPM package
|
||||
License: GPL-3.0
|
||||
Requires: gtk3 libxcb libxdo libXfixes pipewire alsa-lib curl libayatana-appindicator3-1 libvdpau1 libva2
|
||||
Requires: gtk3 libxcb libxdo libXfixes pipewire alsa-lib curl libappindicator libvdpau1 libva2
|
||||
|
||||
%description
|
||||
The best open-source remote desktop client software, written in Rust.
|
||||
|
@ -807,6 +807,8 @@ pub fn is_root() -> bool {
|
||||
|
||||
#[inline]
|
||||
pub fn check_super_user_permission() -> bool {
|
||||
#[cfg(feature = "flatpak")]
|
||||
return true;
|
||||
#[cfg(any(windows, target_os = "linux"))]
|
||||
return crate::platform::check_super_user_permission().unwrap_or(false);
|
||||
#[cfg(not(any(windows, target_os = "linux")))]
|
||||
|
Loading…
x
Reference in New Issue
Block a user