remove linux_headless/appimage/flatpak feature
This commit is contained in:
parent
f853b29fd9
commit
7ce0b225ef
508
.github/workflows/flutter-build.yml
vendored
508
.github/workflows/flutter-build.yml
vendored
@ -960,7 +960,7 @@ jobs:
|
|||||||
files: |
|
files: |
|
||||||
signed-apk/rustdesk-${{ env.VERSION }}-${{ matrix.job.arch }}.apk
|
signed-apk/rustdesk-${{ env.VERSION }}-${{ matrix.job.arch }}.apk
|
||||||
|
|
||||||
build-rustdesk-lib-linux:
|
build-rustdesk-linux:
|
||||||
needs: [generate-bridge-linux]
|
needs: [generate-bridge-linux]
|
||||||
name: build-rust-lib ${{ matrix.job.target }} ${{ matrix.job.extra-build-features }}
|
name: build-rust-lib ${{ matrix.job.target }} ${{ matrix.job.extra-build-features }}
|
||||||
runs-on: ${{ matrix.job.on }}
|
runs-on: ${{ matrix.job.on }}
|
||||||
@ -973,48 +973,12 @@ jobs:
|
|||||||
arch: x86_64,
|
arch: x86_64,
|
||||||
target: x86_64-unknown-linux-gnu,
|
target: x86_64-unknown-linux-gnu,
|
||||||
distro: ubuntu18.04,
|
distro: ubuntu18.04,
|
||||||
extra-build-features: "",
|
|
||||||
enable-headless: true,
|
|
||||||
on: ubuntu-20.04,
|
|
||||||
}
|
|
||||||
- {
|
|
||||||
arch: x86_64,
|
|
||||||
target: x86_64-unknown-linux-gnu,
|
|
||||||
distro: ubuntu18.04,
|
|
||||||
extra-build-features: "flatpak",
|
|
||||||
enable-headless: false,
|
|
||||||
on: ubuntu-20.04,
|
|
||||||
}
|
|
||||||
- {
|
|
||||||
arch: x86_64,
|
|
||||||
target: x86_64-unknown-linux-gnu,
|
|
||||||
distro: ubuntu18.04,
|
|
||||||
extra-build-features: "appimage",
|
|
||||||
enable-headless: false,
|
|
||||||
on: ubuntu-20.04,
|
on: ubuntu-20.04,
|
||||||
}
|
}
|
||||||
- {
|
- {
|
||||||
arch: aarch64,
|
arch: aarch64,
|
||||||
target: aarch64-unknown-linux-gnu,
|
target: aarch64-unknown-linux-gnu,
|
||||||
distro: ubuntu18.04,
|
distro: ubuntu18.04,
|
||||||
extra-build-features: "",
|
|
||||||
enable-headless: true,
|
|
||||||
on: [self-hosted, Linux, ARM64],
|
|
||||||
}
|
|
||||||
- {
|
|
||||||
arch: aarch64,
|
|
||||||
target: aarch64-unknown-linux-gnu,
|
|
||||||
distro: ubuntu20.04,
|
|
||||||
extra-build-features: "flatpak",
|
|
||||||
enable-headless: false,
|
|
||||||
on: [self-hosted, Linux, ARM64],
|
|
||||||
}
|
|
||||||
- {
|
|
||||||
arch: aarch64,
|
|
||||||
target: aarch64-unknown-linux-gnu,
|
|
||||||
distro: ubuntu20.04,
|
|
||||||
extra-build-features: "appimage",
|
|
||||||
enable-headless: false,
|
|
||||||
on: [self-hosted, Linux, ARM64],
|
on: [self-hosted, Linux, ARM64],
|
||||||
}
|
}
|
||||||
steps:
|
steps:
|
||||||
@ -1090,6 +1054,12 @@ jobs:
|
|||||||
esac
|
esac
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
|
- name: Restore bridge files
|
||||||
|
uses: actions/download-artifact@master
|
||||||
|
with:
|
||||||
|
name: bridge-artifact
|
||||||
|
path: ./
|
||||||
|
|
||||||
- uses: rustdesk-org/run-on-arch-action@amd64-support
|
- uses: rustdesk-org/run-on-arch-action@amd64-support
|
||||||
name: Build rustdesk library for ${{ matrix.job.arch }}
|
name: Build rustdesk library for ${{ matrix.job.arch }}
|
||||||
id: vcpkg
|
id: vcpkg
|
||||||
@ -1109,6 +1079,7 @@ jobs:
|
|||||||
apt-get update -y
|
apt-get update -y
|
||||||
echo -e "installing deps"
|
echo -e "installing deps"
|
||||||
apt-get install -y \
|
apt-get install -y \
|
||||||
|
build-essential \
|
||||||
clang \
|
clang \
|
||||||
cmake \
|
cmake \
|
||||||
curl \
|
curl \
|
||||||
@ -1137,7 +1108,11 @@ jobs:
|
|||||||
ninja-build \
|
ninja-build \
|
||||||
pkg-config \
|
pkg-config \
|
||||||
tree \
|
tree \
|
||||||
wget
|
python3 \
|
||||||
|
rpm \
|
||||||
|
unzip \
|
||||||
|
wget \
|
||||||
|
xz-utils
|
||||||
# we have libopus compiled by us.
|
# we have libopus compiled by us.
|
||||||
apt-get remove -y libopus-dev || true
|
apt-get remove -y libopus-dev || true
|
||||||
# output devs
|
# output devs
|
||||||
@ -1163,28 +1138,153 @@ jobs:
|
|||||||
# start build
|
# start build
|
||||||
pushd /workspace
|
pushd /workspace
|
||||||
export VCPKG_ROOT=/opt/artifacts/vcpkg
|
export VCPKG_ROOT=/opt/artifacts/vcpkg
|
||||||
export DEFAULT_FEAT=""
|
|
||||||
if ${{ matrix.job.enable-headless }}; then
|
|
||||||
export DEFAULT_FEAT=linux_headless
|
|
||||||
fi
|
|
||||||
if [[ "${{ matrix.job.arch }}" == "aarch64" ]]; then
|
if [[ "${{ matrix.job.arch }}" == "aarch64" ]]; then
|
||||||
export JOBS="--jobs 3"
|
export JOBS="--jobs 3"
|
||||||
else
|
else
|
||||||
export JOBS=""
|
export JOBS=""
|
||||||
fi
|
fi
|
||||||
echo $JOBS
|
echo $JOBS
|
||||||
cargo build --lib $JOBS --features hwcodec,flutter,flutter_texture_render,${{ matrix.job.extra-build-features }},$DEFAULT_FEAT --release
|
cargo build --lib $JOBS --features hwcodec,flutter,flutter_texture_render --release
|
||||||
|
|
||||||
- name: Upload Artifacts
|
# disable git safe.directory
|
||||||
uses: actions/upload-artifact@master
|
git config --global --add safe.directory "*"
|
||||||
if: matrix.job.extra-build-features == '' || env.UPLOAD_ARTIFACT == 'true'
|
pushd /workspace
|
||||||
|
case ${{ matrix.job.arch }} in
|
||||||
|
aarch64)
|
||||||
|
export PATH=/opt/flutter-elinux/bin:$PATH
|
||||||
|
sed -i "s/flutter build linux --release/flutter-elinux build linux --verbose/g" ./build.py
|
||||||
|
export ARCH=arm64
|
||||||
|
sed -i "s/x64\/release/arm64\/release/g" ./build.py
|
||||||
|
;;
|
||||||
|
x86_64)
|
||||||
|
export PATH=/opt/flutter/bin:$PATH
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
popd
|
||||||
|
# Setup Flutter
|
||||||
|
pushd /opt
|
||||||
|
wget https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${{ env.FLUTTER_VERSION }}-stable.tar.xz
|
||||||
|
tar xf flutter_linux_${{ env.FLUTTER_VERSION }}-stable.tar.xz
|
||||||
|
case ${{ matrix.job.arch }} in
|
||||||
|
aarch64)
|
||||||
|
# clone repo and reset to flutter ${{ env.FLUTTER_VERSION }}
|
||||||
|
git clone https://github.com/sony/flutter-elinux.git || true
|
||||||
|
pushd flutter-elinux
|
||||||
|
git fetch
|
||||||
|
git reset --hard ${{ env.FLUTTER_VERSION }}
|
||||||
|
bin/flutter-elinux doctor -v
|
||||||
|
bin/flutter-elinux precache --linux
|
||||||
|
popd
|
||||||
|
cp -R flutter/bin/cache/artifacts/engine/linux-x64/shader_lib flutter-elinux/flutter/bin/cache/artifacts/engine/linux-arm64
|
||||||
|
;;
|
||||||
|
x86_64)
|
||||||
|
flutter doctor -v
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
pushd /workspace
|
||||||
|
export CARGO_INCREMENTAL=0
|
||||||
|
python3 ./build.py --flutter --skip-cargo
|
||||||
|
# rpm package
|
||||||
|
echo -e "start packaging fedora package"
|
||||||
|
pushd /workspace
|
||||||
|
case ${{ matrix.job.arch }} in
|
||||||
|
aarch64)
|
||||||
|
sed -i "s/linux\/x64/linux\/arm64/g" ./res/rpm-flutter.spec
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
HBB=`pwd` rpmbuild ./res/rpm-flutter.spec -bb
|
||||||
|
pushd ~/rpmbuild/RPMS/${{ matrix.job.arch }}
|
||||||
|
# rpm suse package
|
||||||
|
echo -e "start packaging suse package"
|
||||||
|
pushd /workspace
|
||||||
|
case ${{ matrix.job.arch }} in
|
||||||
|
aarch64)
|
||||||
|
sed -i "s/linux\/x64/linux\/arm64/g" ./res/rpm-flutter-suse.spec
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
HBB=`pwd` rpmbuild ./res/rpm-flutter-suse.spec -bb
|
||||||
|
pushd ~/rpmbuild/RPMS/${{ matrix.job.arch }}
|
||||||
|
for name in rustdesk*??.rpm; do
|
||||||
|
mv "$name" "${name%%.rpm}-suse.rpm"
|
||||||
|
done
|
||||||
|
for name in rustdesk*??.deb; do
|
||||||
|
mv "$name" "${name%%.deb}-${{ matrix.job.arch }}.deb"
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Publish debian/rpm package
|
||||||
|
if: env.UPLOAD_ARTIFACT == 'true'
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
with:
|
with:
|
||||||
name: librustdesk-${{ matrix.job.arch }}-${{ matrix.job.extra-build-features }}.so
|
prerelease: true
|
||||||
path: target/release/liblibrustdesk.so
|
tag_name: ${{ env.TAG_NAME }}
|
||||||
|
files: |
|
||||||
|
rustdesk-*.deb
|
||||||
|
rustdesk-*.rpm
|
||||||
|
|
||||||
|
- name: Upload Artifact
|
||||||
|
uses: actions/upload-artifact@master
|
||||||
|
if: matrix.job.extra-build-features == 'flatpak' && env.UPLOAD_ARTIFACT == 'true'
|
||||||
|
with:
|
||||||
|
name: rustdesk-${{ env.VERSION }}-${{ matrix.job.arch }}.deb
|
||||||
|
path: rustdesk-${{ env.VERSION }}-${{ matrix.job.arch }}.deb
|
||||||
|
|
||||||
|
- name: Patch archlinux PKGBUILD
|
||||||
|
if: matrix.job.extra-build-features == '' && env.UPLOAD_ARTIFACT == 'true'
|
||||||
|
run: |
|
||||||
|
sed -i "s/x86_64/${{ matrix.job.arch }}/g" res/PKGBUILD
|
||||||
|
if [[ "${{ matrix.job.arch }}" == "aarch64" ]]; then
|
||||||
|
sed -i "s/linux\/x64/linux\/arm64/g" ./res/PKGBUILD
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Build archlinux package
|
||||||
|
if: matrix.job.extra-build-features == '' && env.UPLOAD_ARTIFACT == 'true'
|
||||||
|
uses: rustdesk-org/arch-makepkg-action@master
|
||||||
|
with:
|
||||||
|
packages: >
|
||||||
|
llvm
|
||||||
|
clang
|
||||||
|
libva
|
||||||
|
libvdpau
|
||||||
|
rust
|
||||||
|
gstreamer
|
||||||
|
unzip
|
||||||
|
git
|
||||||
|
cmake
|
||||||
|
gcc
|
||||||
|
curl
|
||||||
|
wget
|
||||||
|
nasm
|
||||||
|
zip
|
||||||
|
make
|
||||||
|
pkg-config
|
||||||
|
clang
|
||||||
|
gtk3
|
||||||
|
xdotool
|
||||||
|
libxcb
|
||||||
|
libxfixes
|
||||||
|
alsa-lib
|
||||||
|
pipewire
|
||||||
|
python
|
||||||
|
ttf-arphic-uming
|
||||||
|
libappindicator-gtk3
|
||||||
|
pam
|
||||||
|
gst-plugins-base
|
||||||
|
gst-plugin-pipewire
|
||||||
|
scripts: |
|
||||||
|
cd res && HBB=`pwd`/.. FLUTTER=1 makepkg -f
|
||||||
|
|
||||||
|
- name: Publish archlinux package
|
||||||
|
if: matrix.job.extra-build-features == '' && env.UPLOAD_ARTIFACT == 'true'
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
prerelease: true
|
||||||
|
tag_name: ${{ env.TAG_NAME }}
|
||||||
|
files: |
|
||||||
|
res/rustdesk-${{ env.VERSION }}*.zst
|
||||||
|
|
||||||
build-rustdesk-sciter-arm:
|
build-rustdesk-sciter-arm:
|
||||||
if: ${{ inputs.upload-artifact }}
|
if: ${{ inputs.upload-artifact }}
|
||||||
needs: build-rustdesk-lib-linux # not for dep, just make it run later for parallelism
|
needs: build-rustdesk-linux # not for dep, just make it run later for parallelism
|
||||||
runs-on: [self-hosted, Linux, ARM64]
|
runs-on: [self-hosted, Linux, ARM64]
|
||||||
name: build-rustdesk-sciter-arm ${{ matrix.job.target }}
|
name: build-rustdesk-sciter-arm ${{ matrix.job.target }}
|
||||||
strategy:
|
strategy:
|
||||||
@ -1198,7 +1298,6 @@ jobs:
|
|||||||
deb-arch: armhf,
|
deb-arch: armhf,
|
||||||
use-cross: true,
|
use-cross: true,
|
||||||
extra-build-features: "",
|
extra-build-features: "",
|
||||||
enable-headless: true,
|
|
||||||
}
|
}
|
||||||
steps:
|
steps:
|
||||||
- name: Export GitHub Actions cache environment variables
|
- name: Export GitHub Actions cache environment variables
|
||||||
@ -1329,12 +1428,8 @@ jobs:
|
|||||||
python3 ./res/inline-sciter.py
|
python3 ./res/inline-sciter.py
|
||||||
export VCPKG_ROOT=/opt/artifacts/vcpkg
|
export VCPKG_ROOT=/opt/artifacts/vcpkg
|
||||||
export ARCH=armhf
|
export ARCH=armhf
|
||||||
export DEFAULT_FEAT=""
|
|
||||||
export CARGO_INCREMENTAL=0
|
export CARGO_INCREMENTAL=0
|
||||||
if ${{ matrix.job.enable-headless }}; then
|
cargo build --features inline,${{ matrix.job.extra-build-features }} --release --bins --jobs 3
|
||||||
export DEFAULT_FEAT=linux_headless
|
|
||||||
fi
|
|
||||||
cargo build --features inline,${{ matrix.job.extra-build-features }},$DEFAULT_FEAT --release --bins --jobs 3
|
|
||||||
# package
|
# package
|
||||||
mkdir -p ./Release
|
mkdir -p ./Release
|
||||||
mv ./target/release/rustdesk ./Release/rustdesk
|
mv ./target/release/rustdesk ./Release/rustdesk
|
||||||
@ -1365,294 +1460,7 @@ jobs:
|
|||||||
name: rustdesk-${{ env.VERSION }}-${{ matrix.job.arch }}-sciter.deb
|
name: rustdesk-${{ env.VERSION }}-${{ matrix.job.arch }}-sciter.deb
|
||||||
path: rustdesk-${{ env.VERSION }}-${{ matrix.job.arch }}-sciter.deb
|
path: rustdesk-${{ env.VERSION }}-${{ matrix.job.arch }}-sciter.deb
|
||||||
|
|
||||||
build-rustdesk-linux:
|
build-flatpak-appimage:
|
||||||
needs: [build-rustdesk-lib-linux]
|
|
||||||
name: build-rustdesk-liunux ${{ matrix.job.target }} ${{ matrix.job.extra-build-features }}
|
|
||||||
runs-on: ubuntu-20.04
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
job:
|
|
||||||
- {
|
|
||||||
arch: x86_64,
|
|
||||||
distro: ubuntu18.04,
|
|
||||||
target: x86_64-unknown-linux-gnu,
|
|
||||||
extra-build-features: "",
|
|
||||||
}
|
|
||||||
- {
|
|
||||||
arch: x86_64,
|
|
||||||
distro: ubuntu18.04,
|
|
||||||
target: x86_64-unknown-linux-gnu,
|
|
||||||
extra-build-features: "flatpak",
|
|
||||||
}
|
|
||||||
- {
|
|
||||||
arch: x86_64,
|
|
||||||
distro: ubuntu18.04,
|
|
||||||
target: x86_64-unknown-linux-gnu,
|
|
||||||
extra-build-features: "appimage",
|
|
||||||
}
|
|
||||||
- {
|
|
||||||
arch: aarch64,
|
|
||||||
distro: ubuntu18.04,
|
|
||||||
target: aarch64-unknown-linux-gnu,
|
|
||||||
extra-build-features: "",
|
|
||||||
}
|
|
||||||
- {
|
|
||||||
arch: aarch64,
|
|
||||||
distro: ubuntu20.04,
|
|
||||||
target: aarch64-unknown-linux-gnu,
|
|
||||||
extra-build-features: "flatpak",
|
|
||||||
}
|
|
||||||
- {
|
|
||||||
arch: aarch64,
|
|
||||||
distro: ubuntu20.04,
|
|
||||||
target: aarch64-unknown-linux-gnu,
|
|
||||||
extra-build-features: "appimage",
|
|
||||||
}
|
|
||||||
steps:
|
|
||||||
- name: Checkout source code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Restore bridge files
|
|
||||||
uses: actions/download-artifact@master
|
|
||||||
with:
|
|
||||||
name: bridge-artifact
|
|
||||||
path: ./
|
|
||||||
|
|
||||||
- name: Prepare env
|
|
||||||
run: |
|
|
||||||
sudo apt-get update -y
|
|
||||||
sudo apt-get install -y \
|
|
||||||
curl \
|
|
||||||
git \
|
|
||||||
libarchive-tools \
|
|
||||||
libgtk-3-dev \
|
|
||||||
nasm \
|
|
||||||
wget
|
|
||||||
mkdir -p ./target/release/
|
|
||||||
|
|
||||||
- name: Restore the rustdesk lib file
|
|
||||||
uses: actions/download-artifact@master
|
|
||||||
if: matrix.job.extra-build-features == '' || env.UPLOAD_ARTIFACT == 'true'
|
|
||||||
with:
|
|
||||||
name: librustdesk-${{ matrix.job.arch }}-${{ matrix.job.extra-build-features }}.so
|
|
||||||
path: ./target/release/
|
|
||||||
|
|
||||||
- uses: rustdesk-org/run-on-arch-action@amd64-support
|
|
||||||
name: flutter build
|
|
||||||
id: vcpkg
|
|
||||||
if: matrix.job.extra-build-features == '' || env.UPLOAD_ARTIFACT == 'true'
|
|
||||||
with:
|
|
||||||
arch: ${{ matrix.job.arch }}
|
|
||||||
distro: ${{ matrix.job.distro }}
|
|
||||||
githubToken: ${{ github.token }}
|
|
||||||
setup: |
|
|
||||||
ls -l "${PWD}"
|
|
||||||
dockerRunArgs: |
|
|
||||||
--volume "${PWD}:/workspace"
|
|
||||||
--volume "/opt/artifacts:/opt/artifacts"
|
|
||||||
shell: /bin/bash
|
|
||||||
install: |
|
|
||||||
apt-get update -y
|
|
||||||
apt-get install -y \
|
|
||||||
build-essential \
|
|
||||||
clang \
|
|
||||||
cmake \
|
|
||||||
curl \
|
|
||||||
gcc \
|
|
||||||
git \
|
|
||||||
g++ \
|
|
||||||
libappindicator3-dev \
|
|
||||||
libgtk-3-dev \
|
|
||||||
liblzma-dev \
|
|
||||||
nasm \
|
|
||||||
ninja-build \
|
|
||||||
pkg-config \
|
|
||||||
python3 \
|
|
||||||
rpm \
|
|
||||||
unzip \
|
|
||||||
wget \
|
|
||||||
xz-utils
|
|
||||||
run: |
|
|
||||||
# disable git safe.directory
|
|
||||||
git config --global --add safe.directory "*"
|
|
||||||
pushd /workspace
|
|
||||||
case ${{ matrix.job.arch }} in
|
|
||||||
aarch64)
|
|
||||||
export PATH=/opt/flutter-elinux/bin:$PATH
|
|
||||||
sed -i "s/flutter build linux --release/flutter-elinux build linux --verbose/g" ./build.py
|
|
||||||
export ARCH=arm64
|
|
||||||
sed -i "s/x64\/release/arm64\/release/g" ./build.py
|
|
||||||
;;
|
|
||||||
x86_64)
|
|
||||||
export PATH=/opt/flutter/bin:$PATH
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
popd
|
|
||||||
# Setup Flutter
|
|
||||||
pushd /opt
|
|
||||||
wget https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${{ env.FLUTTER_VERSION }}-stable.tar.xz
|
|
||||||
tar xf flutter_linux_${{ env.FLUTTER_VERSION }}-stable.tar.xz
|
|
||||||
case ${{ matrix.job.arch }} in
|
|
||||||
aarch64)
|
|
||||||
# clone repo and reset to flutter ${{ env.FLUTTER_VERSION }}
|
|
||||||
git clone https://github.com/sony/flutter-elinux.git || true
|
|
||||||
pushd flutter-elinux
|
|
||||||
git fetch
|
|
||||||
git reset --hard ${{ env.FLUTTER_VERSION }}
|
|
||||||
bin/flutter-elinux doctor -v
|
|
||||||
bin/flutter-elinux precache --linux
|
|
||||||
popd
|
|
||||||
cp -R flutter/bin/cache/artifacts/engine/linux-x64/shader_lib flutter-elinux/flutter/bin/cache/artifacts/engine/linux-arm64
|
|
||||||
;;
|
|
||||||
x86_64)
|
|
||||||
flutter doctor -v
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
pushd /workspace
|
|
||||||
export CARGO_INCREMENTAL=0
|
|
||||||
python3 ./build.py --flutter --skip-cargo
|
|
||||||
# rpm package
|
|
||||||
echo -e "start packaging fedora package"
|
|
||||||
pushd /workspace
|
|
||||||
case ${{ matrix.job.arch }} in
|
|
||||||
aarch64)
|
|
||||||
sed -i "s/linux\/x64/linux\/arm64/g" ./res/rpm-flutter.spec
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
HBB=`pwd` rpmbuild ./res/rpm-flutter.spec -bb
|
|
||||||
pushd ~/rpmbuild/RPMS/${{ matrix.job.arch }}
|
|
||||||
mkdir -p /opt/artifacts/rpm
|
|
||||||
for name in rustdesk*??.rpm; do
|
|
||||||
mv "$name" "/opt/artifacts/rpm/${name%%.rpm}.rpm"
|
|
||||||
done
|
|
||||||
# rpm suse package
|
|
||||||
echo -e "start packaging suse package"
|
|
||||||
pushd /workspace
|
|
||||||
case ${{ matrix.job.arch }} in
|
|
||||||
aarch64)
|
|
||||||
sed -i "s/linux\/x64/linux\/arm64/g" ./res/rpm-flutter-suse.spec
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
HBB=`pwd` rpmbuild ./res/rpm-flutter-suse.spec -bb
|
|
||||||
pushd ~/rpmbuild/RPMS/${{ matrix.job.arch }}
|
|
||||||
mkdir -p /opt/artifacts/rpm
|
|
||||||
for name in rustdesk*??.rpm; do
|
|
||||||
mv "$name" "/opt/artifacts/rpm/${name%%.rpm}-suse.rpm"
|
|
||||||
done
|
|
||||||
|
|
||||||
- name: Rename rustdesk
|
|
||||||
shell: bash
|
|
||||||
if: matrix.job.extra-build-features == '' || env.UPLOAD_ARTIFACT == 'true'
|
|
||||||
run: |
|
|
||||||
for name in rustdesk*??.deb; do
|
|
||||||
# use cp to duplicate deb files to fit other packages.
|
|
||||||
cp "$name" "${name%%.deb}-${{ matrix.job.arch }}.deb"
|
|
||||||
done
|
|
||||||
|
|
||||||
- name: Publish debian package
|
|
||||||
if: matrix.job.extra-build-features == '' && env.UPLOAD_ARTIFACT == 'true'
|
|
||||||
uses: softprops/action-gh-release@v1
|
|
||||||
with:
|
|
||||||
prerelease: true
|
|
||||||
tag_name: ${{ env.TAG_NAME }}
|
|
||||||
files: |
|
|
||||||
rustdesk-${{ env.VERSION }}-${{ matrix.job.arch }}.deb
|
|
||||||
|
|
||||||
- name: Upload Artifact
|
|
||||||
uses: actions/upload-artifact@master
|
|
||||||
if: matrix.job.extra-build-features == 'flatpak' && env.UPLOAD_ARTIFACT == 'true'
|
|
||||||
with:
|
|
||||||
name: rustdesk-${{ env.VERSION }}-${{ matrix.job.arch }}.deb
|
|
||||||
path: rustdesk-${{ env.VERSION }}-${{ matrix.job.arch }}.deb
|
|
||||||
|
|
||||||
- name: Patch archlinux PKGBUILD
|
|
||||||
if: matrix.job.extra-build-features == '' && env.UPLOAD_ARTIFACT == 'true'
|
|
||||||
run: |
|
|
||||||
sed -i "s/x86_64/${{ matrix.job.arch }}/g" res/PKGBUILD
|
|
||||||
if [[ "${{ matrix.job.arch }}" == "aarch64" ]]; then
|
|
||||||
sed -i "s/linux\/x64/linux\/arm64/g" ./res/PKGBUILD
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Build archlinux package
|
|
||||||
if: matrix.job.extra-build-features == '' && env.UPLOAD_ARTIFACT == 'true'
|
|
||||||
uses: rustdesk-org/arch-makepkg-action@master
|
|
||||||
with:
|
|
||||||
packages: >
|
|
||||||
llvm
|
|
||||||
clang
|
|
||||||
libva
|
|
||||||
libvdpau
|
|
||||||
rust
|
|
||||||
gstreamer
|
|
||||||
unzip
|
|
||||||
git
|
|
||||||
cmake
|
|
||||||
gcc
|
|
||||||
curl
|
|
||||||
wget
|
|
||||||
nasm
|
|
||||||
zip
|
|
||||||
make
|
|
||||||
pkg-config
|
|
||||||
clang
|
|
||||||
gtk3
|
|
||||||
xdotool
|
|
||||||
libxcb
|
|
||||||
libxfixes
|
|
||||||
alsa-lib
|
|
||||||
pipewire
|
|
||||||
python
|
|
||||||
ttf-arphic-uming
|
|
||||||
libappindicator-gtk3
|
|
||||||
pam
|
|
||||||
gst-plugins-base
|
|
||||||
gst-plugin-pipewire
|
|
||||||
scripts: |
|
|
||||||
cd res && HBB=`pwd`/.. FLUTTER=1 makepkg -f
|
|
||||||
|
|
||||||
- name: Publish archlinux package
|
|
||||||
if: matrix.job.extra-build-features == '' && env.UPLOAD_ARTIFACT == 'true'
|
|
||||||
uses: softprops/action-gh-release@v1
|
|
||||||
with:
|
|
||||||
prerelease: true
|
|
||||||
tag_name: ${{ env.TAG_NAME }}
|
|
||||||
files: |
|
|
||||||
res/rustdesk-${{ env.VERSION }}*.zst
|
|
||||||
|
|
||||||
- name: Build appimage package
|
|
||||||
if: matrix.job.extra-build-features == 'appimage' && env.UPLOAD_ARTIFACT == 'true'
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
# set-up appimage-builder
|
|
||||||
pushd /tmp
|
|
||||||
wget -O appimage-builder-x86_64.AppImage https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.1.0/appimage-builder-1.1.0-x86_64.AppImage
|
|
||||||
chmod +x appimage-builder-x86_64.AppImage
|
|
||||||
sudo mv appimage-builder-x86_64.AppImage /usr/local/bin/appimage-builder
|
|
||||||
popd
|
|
||||||
# run appimage-builder
|
|
||||||
pushd appimage
|
|
||||||
sudo appimage-builder --skip-tests --recipe ./AppImageBuilder-${{ matrix.job.arch }}.yml
|
|
||||||
|
|
||||||
- name: Publish appimage package
|
|
||||||
if: matrix.job.extra-build-features == 'appimage' && env.UPLOAD_ARTIFACT == 'true'
|
|
||||||
uses: softprops/action-gh-release@v1
|
|
||||||
with:
|
|
||||||
prerelease: true
|
|
||||||
tag_name: ${{ env.TAG_NAME }}
|
|
||||||
files: |
|
|
||||||
./appimage/rustdesk-${{ env.VERSION }}-*.AppImage
|
|
||||||
|
|
||||||
- name: Publish fedora package
|
|
||||||
if: matrix.job.extra-build-features == '' && env.UPLOAD_ARTIFACT == 'true'
|
|
||||||
uses: softprops/action-gh-release@v1
|
|
||||||
with:
|
|
||||||
prerelease: true
|
|
||||||
tag_name: ${{ env.TAG_NAME }}
|
|
||||||
files: |
|
|
||||||
/opt/artifacts/rpm/*.rpm
|
|
||||||
|
|
||||||
build-flatpak:
|
|
||||||
name: Build Flatpak ${{ matrix.job.target }}
|
name: Build Flatpak ${{ matrix.job.target }}
|
||||||
needs: [build-rustdesk-linux]
|
needs: [build-rustdesk-linux]
|
||||||
runs-on: ${{ matrix.job.on }}
|
runs-on: ${{ matrix.job.on }}
|
||||||
@ -1688,6 +1496,20 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
mv rustdesk-${{ env.VERSION }}-${{ matrix.job.arch }}.deb rustdesk-${{ env.VERSION }}.deb
|
mv rustdesk-${{ env.VERSION }}-${{ matrix.job.arch }}.deb rustdesk-${{ env.VERSION }}.deb
|
||||||
|
|
||||||
|
- name: Build appimage package
|
||||||
|
if: matrix.job.extra-build-features == 'appimage' && env.UPLOAD_ARTIFACT == 'true'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
# set-up appimage-builder
|
||||||
|
pushd /tmp
|
||||||
|
wget -O appimage-builder-x86_64.AppImage https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.1.0/appimage-builder-1.1.0-x86_64.AppImage
|
||||||
|
chmod +x appimage-builder-x86_64.AppImage
|
||||||
|
sudo mv appimage-builder-x86_64.AppImage /usr/local/bin/appimage-builder
|
||||||
|
popd
|
||||||
|
# run appimage-builder
|
||||||
|
pushd appimage
|
||||||
|
sudo appimage-builder --skip-tests --recipe ./AppImageBuilder-${{ matrix.job.arch }}.yml
|
||||||
|
|
||||||
- uses: rustdesk-org/run-on-arch-action@amd64-support
|
- uses: rustdesk-org/run-on-arch-action@amd64-support
|
||||||
name: Build rustdesk flatpak package for ${{ matrix.job.arch }}
|
name: Build rustdesk flatpak package for ${{ matrix.job.arch }}
|
||||||
id: rpm
|
id: rpm
|
||||||
|
@ -30,7 +30,6 @@ default = ["use_dasp"]
|
|||||||
hwcodec = ["scrap/hwcodec"]
|
hwcodec = ["scrap/hwcodec"]
|
||||||
vram = ["scrap/vram"]
|
vram = ["scrap/vram"]
|
||||||
mediacodec = ["scrap/mediacodec"]
|
mediacodec = ["scrap/mediacodec"]
|
||||||
linux_headless = ["pam" ]
|
|
||||||
virtual_display_driver = ["virtual_display"]
|
virtual_display_driver = ["virtual_display"]
|
||||||
plugin_framework = []
|
plugin_framework = []
|
||||||
linux-pkg-config = ["magnum-opus/linux-pkg-config", "scrap/linux-pkg-config"]
|
linux-pkg-config = ["magnum-opus/linux-pkg-config", "scrap/linux-pkg-config"]
|
||||||
@ -158,7 +157,7 @@ mouce = { git="https://github.com/fufesou/mouce.git" }
|
|||||||
evdev = { git="https://github.com/fufesou/evdev" }
|
evdev = { git="https://github.com/fufesou/evdev" }
|
||||||
dbus = "0.9"
|
dbus = "0.9"
|
||||||
dbus-crossroads = "0.5"
|
dbus-crossroads = "0.5"
|
||||||
pam = { git="https://github.com/fufesou/pam", optional = true }
|
pam = { git="https://github.com/fufesou/pam" }
|
||||||
users = { version = "0.11" }
|
users = { version = "0.11" }
|
||||||
x11-clipboard = {git="https://github.com/clslaid/x11-clipboard", branch = "feat/store-batch", optional = true}
|
x11-clipboard = {git="https://github.com/clslaid/x11-clipboard", branch = "feat/store-batch", optional = true}
|
||||||
x11rb = {version = "0.12", features = ["all-extensions"], optional = true}
|
x11rb = {version = "0.12", features = ["all-extensions"], optional = true}
|
||||||
|
@ -57,6 +57,7 @@ AppDir:
|
|||||||
- libpulse0
|
- libpulse0
|
||||||
- packagekit-gtk3-module
|
- packagekit-gtk3-module
|
||||||
- libcanberra-gtk3-module
|
- libcanberra-gtk3-module
|
||||||
|
- libpam0g
|
||||||
exclude:
|
exclude:
|
||||||
- humanity-icon-theme
|
- humanity-icon-theme
|
||||||
- hicolor-icon-theme
|
- hicolor-icon-theme
|
||||||
|
@ -59,6 +59,7 @@ AppDir:
|
|||||||
- libpulse0
|
- libpulse0
|
||||||
- packagekit-gtk3-module
|
- packagekit-gtk3-module
|
||||||
- libcanberra-gtk3-module
|
- libcanberra-gtk3-module
|
||||||
|
- libpam0g
|
||||||
exclude:
|
exclude:
|
||||||
- humanity-icon-theme
|
- humanity-icon-theme
|
||||||
- hicolor-icon-theme
|
- hicolor-icon-theme
|
||||||
|
@ -8,6 +8,20 @@
|
|||||||
"modules": [
|
"modules": [
|
||||||
"shared-modules/libappindicator/libappindicator-gtk3-12.10.json",
|
"shared-modules/libappindicator/libappindicator-gtk3-12.10.json",
|
||||||
"xdotool.json",
|
"xdotool.json",
|
||||||
|
{
|
||||||
|
"name": "pam",
|
||||||
|
"buildsystem": "simple",
|
||||||
|
"build-commands": [
|
||||||
|
"./configure --prefix=/app && make -j4 install"
|
||||||
|
],
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"type": "archive",
|
||||||
|
"url": "https://github.com/linux-pam/linux-pam/releases/download/v1.3.1/Linux-PAM-1.3.1.tar.xz",
|
||||||
|
"sha256": "eff47a4ecd833fbf18de9686632a70ee8d0794b79aecb217ebd0ce11db4cd0db"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "rustdesk",
|
"name": "rustdesk",
|
||||||
"buildsystem": "simple",
|
"buildsystem": "simple",
|
||||||
|
@ -81,8 +81,7 @@ pub const SEC30: Duration = Duration::from_secs(30);
|
|||||||
pub const VIDEO_QUEUE_SIZE: usize = 120;
|
pub const VIDEO_QUEUE_SIZE: usize = 120;
|
||||||
const MAX_DECODE_FAIL_COUNTER: usize = 10; // Currently, failed decode cause refresh_video, so make it small
|
const MAX_DECODE_FAIL_COUNTER: usize = 10; // Currently, failed decode cause refresh_video, so make it small
|
||||||
|
|
||||||
#[cfg(all(target_os = "linux", feature = "linux_headless"))]
|
#[cfg(target_os = "linux")]
|
||||||
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
|
|
||||||
pub const LOGIN_MSG_DESKTOP_NOT_INITED: &str = "Desktop env is not inited";
|
pub const LOGIN_MSG_DESKTOP_NOT_INITED: &str = "Desktop env is not inited";
|
||||||
pub const LOGIN_MSG_DESKTOP_SESSION_NOT_READY: &str = "Desktop session not ready";
|
pub const LOGIN_MSG_DESKTOP_SESSION_NOT_READY: &str = "Desktop session not ready";
|
||||||
pub const LOGIN_MSG_DESKTOP_XSESSION_FAILED: &str = "Desktop xsession failed";
|
pub const LOGIN_MSG_DESKTOP_XSESSION_FAILED: &str = "Desktop xsession failed";
|
||||||
|
@ -774,8 +774,7 @@ pub fn main_get_error() -> String {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn main_show_option(_key: String) -> SyncReturn<bool> {
|
pub fn main_show_option(_key: String) -> SyncReturn<bool> {
|
||||||
#[cfg(all(target_os = "linux", feature = "linux_headless"))]
|
#[cfg(target_os = "linux")]
|
||||||
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
|
|
||||||
if _key.eq(config::CONFIG_OPTION_ALLOW_LINUX_HEADLESS) {
|
if _key.eq(config::CONFIG_OPTION_ALLOW_LINUX_HEADLESS) {
|
||||||
return SyncReturn(true);
|
return SyncReturn(true);
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
use super::{CursorData, ResultType};
|
use super::{CursorData, ResultType};
|
||||||
use desktop::Desktop;
|
use desktop::Desktop;
|
||||||
#[cfg(all(feature = "linux_headless"))]
|
|
||||||
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
|
|
||||||
use hbb_common::config::CONFIG_OPTION_ALLOW_LINUX_HEADLESS;
|
use hbb_common::config::CONFIG_OPTION_ALLOW_LINUX_HEADLESS;
|
||||||
pub use hbb_common::platform::linux::*;
|
pub use hbb_common::platform::linux::*;
|
||||||
use hbb_common::{
|
use hbb_common::{
|
||||||
@ -96,8 +94,6 @@ pub struct xcb_xfixes_get_cursor_image {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
#[cfg(feature = "linux_headless")]
|
|
||||||
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
|
|
||||||
pub fn is_headless_allowed() -> bool {
|
pub fn is_headless_allowed() -> bool {
|
||||||
Config::get_option(CONFIG_OPTION_ALLOW_LINUX_HEADLESS) == "Y"
|
Config::get_option(CONFIG_OPTION_ALLOW_LINUX_HEADLESS) == "Y"
|
||||||
}
|
}
|
||||||
|
@ -44,8 +44,8 @@ fn check_desktop_manager() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --server process
|
|
||||||
pub fn start_xdesktop() {
|
pub fn start_xdesktop() {
|
||||||
|
debug_assert!(crate::is_sever());
|
||||||
std::thread::spawn(|| {
|
std::thread::spawn(|| {
|
||||||
*DESKTOP_MANAGER.lock().unwrap() = Some(DesktopManager::new());
|
*DESKTOP_MANAGER.lock().unwrap() = Some(DesktopManager::new());
|
||||||
|
|
||||||
@ -91,6 +91,7 @@ fn detect_headless() -> Option<&'static str> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn try_start_desktop(_username: &str, _passsword: &str) -> String {
|
pub fn try_start_desktop(_username: &str, _passsword: &str) -> String {
|
||||||
|
debug_assert!(crate::is_sever());
|
||||||
if _username.is_empty() {
|
if _username.is_empty() {
|
||||||
let username = get_username();
|
let username = get_username();
|
||||||
if username.is_empty() {
|
if username.is_empty() {
|
||||||
|
@ -20,8 +20,7 @@ pub mod delegate;
|
|||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
pub mod linux;
|
pub mod linux;
|
||||||
|
|
||||||
#[cfg(all(target_os = "linux", feature = "linux_headless"))]
|
#[cfg(target_os = "linux")]
|
||||||
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
|
|
||||||
pub mod linux_desktop_manager;
|
pub mod linux_desktop_manager;
|
||||||
|
|
||||||
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
||||||
|
@ -15,8 +15,8 @@ use hbb_common::{
|
|||||||
config::{self, Config, CONNECT_TIMEOUT, READ_TIMEOUT, REG_INTERVAL, RENDEZVOUS_PORT},
|
config::{self, Config, CONNECT_TIMEOUT, READ_TIMEOUT, REG_INTERVAL, RENDEZVOUS_PORT},
|
||||||
futures::future::join_all,
|
futures::future::join_all,
|
||||||
log,
|
log,
|
||||||
proxy::Proxy,
|
|
||||||
protobuf::Message as _,
|
protobuf::Message as _,
|
||||||
|
proxy::Proxy,
|
||||||
rendezvous_proto::*,
|
rendezvous_proto::*,
|
||||||
sleep,
|
sleep,
|
||||||
socket_client::{self, connect_tcp, is_ipv4},
|
socket_client::{self, connect_tcp, is_ipv4},
|
||||||
@ -89,9 +89,10 @@ impl RendezvousMediator {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
// It is ok to run xdesktop manager when the headless function is not allowed.
|
// It is ok to run xdesktop manager when the headless function is not allowed.
|
||||||
#[cfg(all(target_os = "linux", feature = "linux_headless"))]
|
#[cfg(target_os = "linux")]
|
||||||
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
|
if crate::is_server() {
|
||||||
crate::platform::linux_desktop_manager::start_xdesktop();
|
crate::platform::linux_desktop_manager::start_xdesktop();
|
||||||
|
}
|
||||||
loop {
|
loop {
|
||||||
let conn_start_time = Instant::now();
|
let conn_start_time = Instant::now();
|
||||||
*SOLVING_PK_MISMATCH.lock().await = "".to_owned();
|
*SOLVING_PK_MISMATCH.lock().await = "".to_owned();
|
||||||
@ -128,11 +129,6 @@ impl RendezvousMediator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// It should be better to call stop_xdesktop.
|
|
||||||
// But for server, it also is Ok without calling this method.
|
|
||||||
// #[cfg(all(target_os = "linux", feature = "linux_headless"))]
|
|
||||||
// #[cfg(not(any(feature = "flatpak", feature = "appimage")))]
|
|
||||||
// crate::platform::linux_desktop_manager::stop_xdesktop();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_host_prefix(host: &str) -> String {
|
fn get_host_prefix(host: &str) -> String {
|
||||||
|
@ -560,8 +560,7 @@ async fn sync_and_watch_config_dir() {
|
|||||||
|
|
||||||
let mut cfg0 = (Config::get(), Config2::get());
|
let mut cfg0 = (Config::get(), Config2::get());
|
||||||
let mut synced = false;
|
let mut synced = false;
|
||||||
let is_server = std::env::args().nth(1) == Some("--server".to_owned());
|
let tries = if crate::is_server() { 30 } else { 3 };
|
||||||
let tries = if is_server { 30 } else { 3 };
|
|
||||||
log::debug!("#tries of ipc service connection: {}", tries);
|
log::debug!("#tries of ipc service connection: {}", tries);
|
||||||
use hbb_common::sleep;
|
use hbb_common::sleep;
|
||||||
for i in 1..=tries {
|
for i in 1..=tries {
|
||||||
|
@ -7,8 +7,7 @@ use crate::common::update_clipboard;
|
|||||||
use crate::keyboard::client::map_key_to_control_key;
|
use crate::keyboard::client::map_key_to_control_key;
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
use crate::platform::linux::is_x11;
|
use crate::platform::linux::is_x11;
|
||||||
#[cfg(all(target_os = "linux", feature = "linux_headless"))]
|
#[cfg(target_os = "linux")]
|
||||||
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
|
|
||||||
use crate::platform::linux_desktop_manager;
|
use crate::platform::linux_desktop_manager;
|
||||||
#[cfg(any(target_os = "windows", target_os = "linux"))]
|
#[cfg(any(target_os = "windows", target_os = "linux"))]
|
||||||
use crate::platform::WallPaperRemover;
|
use crate::platform::WallPaperRemover;
|
||||||
@ -24,8 +23,7 @@ use crate::{
|
|||||||
#[cfg(any(target_os = "android", target_os = "ios"))]
|
#[cfg(any(target_os = "android", target_os = "ios"))]
|
||||||
use crate::{common::DEVICE_NAME, flutter::connection_manager::start_channel};
|
use crate::{common::DEVICE_NAME, flutter::connection_manager::start_channel};
|
||||||
use cidr_utils::cidr::IpCidr;
|
use cidr_utils::cidr::IpCidr;
|
||||||
#[cfg(all(target_os = "linux", feature = "linux_headless"))]
|
#[cfg(target_os = "linux")]
|
||||||
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
|
|
||||||
use hbb_common::platform::linux::run_cmds;
|
use hbb_common::platform::linux::run_cmds;
|
||||||
#[cfg(target_os = "android")]
|
#[cfg(target_os = "android")]
|
||||||
use hbb_common::protobuf::EnumOrUnknown;
|
use hbb_common::protobuf::EnumOrUnknown;
|
||||||
@ -224,8 +222,7 @@ pub struct Connection {
|
|||||||
options_in_login: Option<OptionMessage>,
|
options_in_login: Option<OptionMessage>,
|
||||||
#[cfg(not(any(target_os = "ios")))]
|
#[cfg(not(any(target_os = "ios")))]
|
||||||
pressed_modifiers: HashSet<rdev::Key>,
|
pressed_modifiers: HashSet<rdev::Key>,
|
||||||
#[cfg(all(target_os = "linux", feature = "linux_headless"))]
|
#[cfg(target_os = "linux")]
|
||||||
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
|
|
||||||
linux_headless_handle: LinuxHeadlessHandle,
|
linux_headless_handle: LinuxHeadlessHandle,
|
||||||
closed: bool,
|
closed: bool,
|
||||||
delay_response_instant: Instant,
|
delay_response_instant: Instant,
|
||||||
@ -312,8 +309,7 @@ impl Connection {
|
|||||||
let (tx_cm_stream_ready, _rx_cm_stream_ready) = mpsc::channel(1);
|
let (tx_cm_stream_ready, _rx_cm_stream_ready) = mpsc::channel(1);
|
||||||
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
||||||
let (_tx_desktop_ready, rx_desktop_ready) = mpsc::channel(1);
|
let (_tx_desktop_ready, rx_desktop_ready) = mpsc::channel(1);
|
||||||
#[cfg(all(target_os = "linux", feature = "linux_headless"))]
|
#[cfg(target_os = "linux")]
|
||||||
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
|
|
||||||
let linux_headless_handle =
|
let linux_headless_handle =
|
||||||
LinuxHeadlessHandle::new(_rx_cm_stream_ready, _tx_desktop_ready);
|
LinuxHeadlessHandle::new(_rx_cm_stream_ready, _tx_desktop_ready);
|
||||||
|
|
||||||
@ -376,8 +372,7 @@ impl Connection {
|
|||||||
options_in_login: None,
|
options_in_login: None,
|
||||||
#[cfg(not(any(target_os = "ios")))]
|
#[cfg(not(any(target_os = "ios")))]
|
||||||
pressed_modifiers: Default::default(),
|
pressed_modifiers: Default::default(),
|
||||||
#[cfg(all(target_os = "linux", feature = "linux_headless"))]
|
#[cfg(target_os = "linux")]
|
||||||
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
|
|
||||||
linux_headless_handle,
|
linux_headless_handle,
|
||||||
closed: false,
|
closed: false,
|
||||||
delay_response_instant: Instant::now(),
|
delay_response_instant: Instant::now(),
|
||||||
@ -1128,8 +1123,7 @@ impl Connection {
|
|||||||
if crate::platform::current_is_wayland() {
|
if crate::platform::current_is_wayland() {
|
||||||
platform_additions.insert("is_wayland".into(), json!(true));
|
platform_additions.insert("is_wayland".into(), json!(true));
|
||||||
}
|
}
|
||||||
#[cfg(feature = "linux_headless")]
|
#[cfg(target_os = "linux")]
|
||||||
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
|
|
||||||
if crate::platform::is_headless_allowed() {
|
if crate::platform::is_headless_allowed() {
|
||||||
if linux_desktop_manager::is_headless() {
|
if linux_desktop_manager::is_headless() {
|
||||||
platform_additions.insert("headless".into(), json!(true));
|
platform_additions.insert("headless".into(), json!(true));
|
||||||
@ -1670,14 +1664,9 @@ impl Connection {
|
|||||||
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
||||||
self.try_start_cm_ipc();
|
self.try_start_cm_ipc();
|
||||||
|
|
||||||
#[cfg(any(
|
#[cfg(not(target_os = "linux"))]
|
||||||
feature = "flatpak",
|
|
||||||
feature = "appimage",
|
|
||||||
not(all(target_os = "linux", feature = "linux_headless"))
|
|
||||||
))]
|
|
||||||
let err_msg = "".to_owned();
|
let err_msg = "".to_owned();
|
||||||
#[cfg(all(target_os = "linux", feature = "linux_headless"))]
|
#[cfg(target_os = "linux")]
|
||||||
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
|
|
||||||
let err_msg = self
|
let err_msg = self
|
||||||
.linux_headless_handle
|
.linux_headless_handle
|
||||||
.try_start_desktop(lr.os_login.as_ref());
|
.try_start_desktop(lr.os_login.as_ref());
|
||||||
@ -1714,8 +1703,7 @@ impl Connection {
|
|||||||
return false;
|
return false;
|
||||||
} else if self.is_recent_session(false) {
|
} else if self.is_recent_session(false) {
|
||||||
if err_msg.is_empty() {
|
if err_msg.is_empty() {
|
||||||
#[cfg(all(target_os = "linux", feature = "linux_headless"))]
|
#[cfg(target_os = "linux")]
|
||||||
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
|
|
||||||
self.linux_headless_handle.wait_desktop_cm_ready().await;
|
self.linux_headless_handle.wait_desktop_cm_ready().await;
|
||||||
self.send_logon_response().await;
|
self.send_logon_response().await;
|
||||||
self.try_start_cm(lr.my_id.clone(), lr.my_name.clone(), self.authorized);
|
self.try_start_cm(lr.my_id.clone(), lr.my_name.clone(), self.authorized);
|
||||||
@ -1751,8 +1739,7 @@ impl Connection {
|
|||||||
} else {
|
} else {
|
||||||
self.update_failure(failure, true, 0);
|
self.update_failure(failure, true, 0);
|
||||||
if err_msg.is_empty() {
|
if err_msg.is_empty() {
|
||||||
#[cfg(all(target_os = "linux", feature = "linux_headless"))]
|
#[cfg(target_os = "linux")]
|
||||||
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
|
|
||||||
self.linux_headless_handle.wait_desktop_cm_ready().await;
|
self.linux_headless_handle.wait_desktop_cm_ready().await;
|
||||||
self.send_logon_response().await;
|
self.send_logon_response().await;
|
||||||
self.try_start_cm(lr.my_id, lr.my_name, self.authorized);
|
self.try_start_cm(lr.my_id, lr.my_name, self.authorized);
|
||||||
@ -3226,8 +3213,7 @@ async fn start_ipc(
|
|||||||
let mut user = None;
|
let mut user = None;
|
||||||
|
|
||||||
// Cm run as user, wait until desktop session is ready.
|
// Cm run as user, wait until desktop session is ready.
|
||||||
#[cfg(all(target_os = "linux", feature = "linux_headless"))]
|
#[cfg(target_os = "linux")]
|
||||||
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
|
|
||||||
if crate::platform::is_headless_allowed() && linux_desktop_manager::is_headless() {
|
if crate::platform::is_headless_allowed() && linux_desktop_manager::is_headless() {
|
||||||
let mut username = linux_desktop_manager::get_username();
|
let mut username = linux_desktop_manager::get_username();
|
||||||
loop {
|
loop {
|
||||||
@ -3545,8 +3531,7 @@ impl Drop for Connection {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(all(target_os = "linux", feature = "linux_headless"))]
|
#[cfg(target_os = "linux")]
|
||||||
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
|
|
||||||
struct LinuxHeadlessHandle {
|
struct LinuxHeadlessHandle {
|
||||||
pub is_headless_allowed: bool,
|
pub is_headless_allowed: bool,
|
||||||
pub is_headless: bool,
|
pub is_headless: bool,
|
||||||
@ -3555,11 +3540,10 @@ struct LinuxHeadlessHandle {
|
|||||||
pub tx_desktop_ready: mpsc::Sender<()>,
|
pub tx_desktop_ready: mpsc::Sender<()>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(all(target_os = "linux", feature = "linux_headless"))]
|
#[cfg(target_os = "linux")]
|
||||||
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
|
|
||||||
impl LinuxHeadlessHandle {
|
impl LinuxHeadlessHandle {
|
||||||
pub fn new(rx_cm_stream_ready: mpsc::Receiver<()>, tx_desktop_ready: mpsc::Sender<()>) -> Self {
|
pub fn new(rx_cm_stream_ready: mpsc::Receiver<()>, tx_desktop_ready: mpsc::Sender<()>) -> Self {
|
||||||
let is_headless_allowed = crate::platform::is_headless_allowed();
|
let is_headless_allowed = crate::is_server() && crate::platform::is_headless_allowed();
|
||||||
let is_headless = is_headless_allowed && linux_desktop_manager::is_headless();
|
let is_headless = is_headless_allowed && linux_desktop_manager::is_headless();
|
||||||
Self {
|
Self {
|
||||||
is_headless_allowed,
|
is_headless_allowed,
|
||||||
|
26
src/ui.rs
26
src/ui.rs
@ -41,15 +41,23 @@ pub fn start(args: &mut [String]) {
|
|||||||
crate::platform::delegate::show_dock();
|
crate::platform::delegate::show_dock();
|
||||||
#[cfg(all(target_os = "linux", feature = "inline"))]
|
#[cfg(all(target_os = "linux", feature = "inline"))]
|
||||||
{
|
{
|
||||||
#[cfg(feature = "appimage")]
|
let app_dir = std::env::var("APPDIR").unwrap_or("".to_string());
|
||||||
let prefix = std::env::var("APPDIR").unwrap_or("".to_string());
|
let mut so_path = "/usr/lib/rustdesk/libsciter-gtk.so".to_owned();
|
||||||
#[cfg(not(feature = "appimage"))]
|
for (prefix, dir) in [
|
||||||
let prefix = "".to_string();
|
("", "/usr"),
|
||||||
#[cfg(feature = "flatpak")]
|
("", "/app"),
|
||||||
let dir = "/app";
|
(&app_dir, "/usr"),
|
||||||
#[cfg(not(feature = "flatpak"))]
|
(&app_dir, "/app"),
|
||||||
let dir = "/usr";
|
]
|
||||||
sciter::set_library(&(prefix + dir + "/lib/rustdesk/libsciter-gtk.so")).ok();
|
.iter()
|
||||||
|
{
|
||||||
|
let path = format!("{prefix}{dir}/lib/rustdesk/libsciter-gtk.so");
|
||||||
|
if std::path::Path::new(&path).exists() {
|
||||||
|
so_path = path;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sciter::set_library(&so_path).ok();
|
||||||
}
|
}
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
// Check if there is a sciter.dll nearby.
|
// Check if there is a sciter.dll nearby.
|
||||||
|
@ -913,8 +913,6 @@ pub fn is_root() -> bool {
|
|||||||
#[cfg(any(target_os = "android", target_os = "ios", feature = "flutter"))]
|
#[cfg(any(target_os = "android", target_os = "ios", feature = "flutter"))]
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn check_super_user_permission() -> bool {
|
pub fn check_super_user_permission() -> bool {
|
||||||
#[cfg(feature = "flatpak")]
|
|
||||||
return true;
|
|
||||||
#[cfg(any(windows, target_os = "linux", target_os = "macos"))]
|
#[cfg(any(windows, target_os = "linux", target_os = "macos"))]
|
||||||
return crate::platform::check_super_user_permission().unwrap_or(false);
|
return crate::platform::check_super_user_permission().unwrap_or(false);
|
||||||
#[cfg(not(any(windows, target_os = "linux", target_os = "macos")))]
|
#[cfg(not(any(windows, target_os = "linux", target_os = "macos")))]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user