feat: appimage package script

revert: flutter lock file
This commit is contained in:
Kingtous 2022-06-09 17:30:26 +08:00
parent 0eeb0bacbd
commit 618be48726
10 changed files with 166 additions and 171 deletions

4
.gitignore vendored
View File

@ -19,3 +19,7 @@ sciter.dll
src/bridge_generated.rs
*deb
rustdesk
# appimage
appimage/AppDir
appimage/*.AppImage
appimage/appimage-build

View File

@ -20,6 +20,7 @@ inline = []
hbbs = []
cli = []
with_rc = ["simple_rc"]
appimage = []
use_samplerate = ["samplerate"]
use_rubato = ["rubato"]
use_dasp = ["dasp"]

View File

@ -1,183 +1,134 @@
# appimage-builder recipe see https://appimage-builder.readthedocs.io for details
# Tested Linux Distro: Ubuntu 20.04 LTS
version: 1
script:
# Remove any previous build
- rm -rf AppDir | true
# Install application dependencies
- pip3 install --system --ignore-installed --prefix=/usr --root=AppDir -r ./requirements.txt
# Download sciter.so
- mkdir -p AppDir/usr/lib/rustdesk/
- curl https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so -o AppDir/usr/lib/rustdesk/libsciter-gtk.so
# pynput_service.py
- cp ../pynput_service.py ./AppDir/usr/lib/rustdesk
# Build rustdesk
- pushd .. && python3 inline-sciter.py && cargo build --features inline,appimage --release && popd
- mkdir -p AppDir/usr/bin
- cp ../target/release/rustdesk AppDir/usr/bin/rustdesk
# Make usr and icons dirs
- mkdir -p AppDir/usr/share/icons/hicolor/128x128 && cp ../128x128.png AppDir/usr/share/icons/hicolor/128x128/rustdesk.png
- mkdir -p AppDir/usr/share/icons/hicolor/32x32 && cp ../32x32.png AppDir/usr/share/icons/hicolor/32x32/rustdesk.png
- cp rustdesk.desktop AppDir/
AppDir:
path: /home/kingtous/projects/rustdesk/appimage/AppDir
path: ./AppDir
app_info:
id: rustdesk
name: RustDesk
icon: rustdesk
version: latest
version: 1.2.0
exec: usr/bin/rustdesk
exec_args: $@
pacman:
apt:
arch:
- amd64
allow_unauthenticated: true
sources:
- sourceline: deb http://archive.ubuntu.com/ubuntu/ focal main restricted
- sourceline: deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted
- sourceline: deb http://archive.ubuntu.com/ubuntu/ focal universe
- sourceline: deb http://archive.ubuntu.com/ubuntu/ focal-updates universe
- sourceline: deb http://archive.ubuntu.com/ubuntu/ focal multiverse
- sourceline: deb http://archive.ubuntu.com/ubuntu/ focal-updates multiverse
- sourceline: deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted
universe multiverse
- sourceline: deb http://archive.ubuntu.com/ubuntu/ focal-security main restricted
- sourceline: deb http://archive.ubuntu.com/ubuntu/ focal-security universe
- sourceline: deb http://archive.ubuntu.com/ubuntu/ focal-security multiverse
include:
- at-spi2-atk
- at-spi2-core
- atk
- brotli
- bzip2
- cairo
- dbus-x11
- expat
- flac
- fontconfig
- freetype2
- fribidi
- gcc-libs
- gdk-pixbuf2
- glib2
- glibc-linux4
- graphite-mozilla
- gtk3-no-tracker
- harfbuzz
- icu
- json-glib
- libasyncns
- libcap
- libcloudproviders
- libdatrie
- libepoxy
- libffi
- libgcrypt
- libgpg-error
- libjpeg-turbo
- libogg
- libpng
- libpulse
- libsndfile
- libstemmer
- libthai
- libtiff
- libvorbis
- libx11
- libxau
- libxcb
- libxcomposite
- libxcursor
- libxdamage
- libxdmcp
- libxext
- libxfixes
- libxi
- libxinerama
- libxkbcommon
- libxml2
- libxrandr
- libxrender
- libxtst
- lz4
- opus
- pango
- pcre
- pixman
- sqlite
- systemd-libs-git
- tracker3
- util-linux-libs
- wayland
- xdotool
- xz
- zlib
- zstd
exclude: []
- libexpat1:amd64
- libgcc-s1:amd64
- libgpg-error0:amd64
- liblzma5:amd64
- libmount1:amd64
- libpcre3:amd64
- libpulse0:amd64
- libsystemd0:amd64
- libuuid1:amd64
- zlib1g:amd64
- python3:amd64
- python3-pkg-resources:amd64
files:
include:
- /lib64/ld-linux-x86-64.so.2
- /usr/lib/ld-linux-x86-64.so.2
- /usr/lib/libFLAC.so.8
- /usr/lib/libX11.so.6
- /usr/lib/libXau.so.6
- /usr/lib/libXcomposite.so.1
- /usr/lib/libXcursor.so.1
- /usr/lib/libXdamage.so.1
- /usr/lib/libXdmcp.so.6
- /usr/lib/libXext.so.6
- /usr/lib/libXfixes.so.3
- /usr/lib/libXi.so.6
- /usr/lib/libXinerama.so.1
- /usr/lib/libXrandr.so.2
- /usr/lib/libXrender.so.1
- /usr/lib/libXtst.so.6
- /usr/lib/libasyncns.so.0
- /usr/lib/libatk-1.0.so.0
- /usr/lib/libatk-bridge-2.0.so.0
- /usr/lib/libatspi.so.0
- /usr/lib/libblkid.so.1
- /usr/lib/libbrotlicommon.so.1
- /usr/lib/libbrotlidec.so.1
- /usr/lib/libbz2.so.1.0
- /usr/lib/libc.so.6
- /usr/lib/libcairo-gobject.so.2
- /usr/lib/libcairo.so.2
- /usr/lib/libcap.so.2
- /usr/lib/libcloudproviders.so.0
- /usr/lib/libdatrie.so.1
- /usr/lib/libdbus-1.so.3
- /usr/lib/libepoxy.so.0
- /usr/lib/libexpat.so.1
- /usr/lib/libffi.so.8
- /usr/lib/libfontconfig.so.1
- /usr/lib/libfreetype.so.6
- /usr/lib/libfribidi.so.0
- /usr/lib/libgcc_s.so.1
- /usr/lib/libgcrypt.so.20
- /usr/lib/libgdk-3.so.0
- /usr/lib/libgdk_pixbuf-2.0.so.0
- /usr/lib/libgio-2.0.so.0
- /usr/lib/libglib-2.0.so.0
- /usr/lib/libgmodule-2.0.so.0
- /usr/lib/libgobject-2.0.so.0
- /usr/lib/libgpg-error.so.0
- /usr/lib/libgraphite2.so.3
- /usr/lib/libgtk-3.so.0
- /usr/lib/libharfbuzz.so.0
- /usr/lib/libicudata.so.71
- /usr/lib/libicui18n.so.71
- /usr/lib/libicuuc.so.71
- /usr/lib/libjpeg.so.8
- /usr/lib/libjson-glib-1.0.so.0
- /usr/lib/liblz4.so.1
- /usr/lib/liblzma.so.5
- /usr/lib/libm.so.6
- /usr/lib/libmount.so.1
- /usr/lib/libogg.so.0
- /usr/lib/libopus.so.0
- /usr/lib/libpango-1.0.so.0
- /usr/lib/libpangocairo-1.0.so.0
- /usr/lib/libpangoft2-1.0.so.0
- /usr/lib/libpcre.so.1
- /usr/lib/libpixman-1.so.0
- /usr/lib/libpng16.so.16
- /usr/lib/libpthread.so.0
- /usr/lib/libpulse-simple.so.0
- /usr/lib/libpulse.so.0
- /usr/lib/libsndfile.so.1
- /usr/lib/libsqlite3.so.0
- /usr/lib/libstdc++.so.6
- /usr/lib/libstemmer.so.0
- /usr/lib/libsystemd.so.0
- /usr/lib/libthai.so.0
- /usr/lib/libtiff.so.5
- /usr/lib/libtracker-sparql-3.0.so.0
- /usr/lib/libvorbis.so.0
- /usr/lib/libvorbisenc.so.2
- /usr/lib/libwayland-client.so.0
- /usr/lib/libwayland-cursor.so.0
- /usr/lib/libwayland-egl.so.1
- /usr/lib/libxcb-randr.so.0
- /usr/lib/libxdo.so.3
- /usr/lib/libxkbcommon.so.0
- /usr/lib/libxml2.so.2
- /usr/lib/libz.so.1
- /usr/lib/libzstd.so.1
- /usr/lib/locale/locale-archive
- /usr/lib/pulseaudio/libpulsecommon-15.0.so
- /lib/x86_64-linux-gnu/libFLAC.so.8
- /lib/x86_64-linux-gnu/libX11.so.6
- /lib/x86_64-linux-gnu/libXau.so.6
- /lib/x86_64-linux-gnu/libXcomposite.so.1
- /lib/x86_64-linux-gnu/libXcursor.so.1
- /lib/x86_64-linux-gnu/libXdamage.so.1
- /lib/x86_64-linux-gnu/libXdmcp.so.6
- /lib/x86_64-linux-gnu/libXext.so.6
- /lib/x86_64-linux-gnu/libXfixes.so.3
- /lib/x86_64-linux-gnu/libXi.so.6
- /lib/x86_64-linux-gnu/libXinerama.so.1
- /lib/x86_64-linux-gnu/libXrandr.so.2
- /lib/x86_64-linux-gnu/libXrender.so.1
- /lib/x86_64-linux-gnu/libXtst.so.6
- /lib/x86_64-linux-gnu/libapparmor.so.1
- /lib/x86_64-linux-gnu/libasyncns.so.0
- /lib/x86_64-linux-gnu/libatk-1.0.so.0
- /lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0
- /lib/x86_64-linux-gnu/libatspi.so.0
- /lib/x86_64-linux-gnu/libbsd.so.0
- /lib/x86_64-linux-gnu/libcairo-gobject.so.2
- /lib/x86_64-linux-gnu/libcairo.so.2
- /lib/x86_64-linux-gnu/libdatrie.so.1
- /lib/x86_64-linux-gnu/libepoxy.so.0
- /lib/x86_64-linux-gnu/libffi.so.7
- /lib/x86_64-linux-gnu/libfontconfig.so.1
- /lib/x86_64-linux-gnu/libfreetype.so.6
- /lib/x86_64-linux-gnu/libfribidi.so.0
- /lib/x86_64-linux-gnu/libgcrypt.so.20
- /lib/x86_64-linux-gnu/libgdk-3.so.0
- /lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0
- /lib/x86_64-linux-gnu/libgio-2.0.so.0
- /lib/x86_64-linux-gnu/libglib-2.0.so.0
- /lib/x86_64-linux-gnu/libgmodule-2.0.so.0
- /lib/x86_64-linux-gnu/libgobject-2.0.so.0
- /lib/x86_64-linux-gnu/libgraphite2.so.3
- /lib/x86_64-linux-gnu/libgtk-3.so.0
- /lib/x86_64-linux-gnu/libharfbuzz.so.0
- /lib/x86_64-linux-gnu/liblz4.so.1
- /lib/x86_64-linux-gnu/libogg.so.0
- /lib/x86_64-linux-gnu/libpango-1.0.so.0
- /lib/x86_64-linux-gnu/libpangocairo-1.0.so.0
- /lib/x86_64-linux-gnu/libpangoft2-1.0.so.0
- /lib/x86_64-linux-gnu/libpcre2-8.so.0
- /lib/x86_64-linux-gnu/libpixman-1.so.0
- /lib/x86_64-linux-gnu/libpng16.so.16
- /lib/x86_64-linux-gnu/libpulse-simple.so.0
- /lib/x86_64-linux-gnu/libpulse.so.0
- /lib/x86_64-linux-gnu/libsndfile.so.1
- /lib/x86_64-linux-gnu/libthai.so.0
- /lib/x86_64-linux-gnu/libvorbis.so.0
- /lib/x86_64-linux-gnu/libvorbisenc.so.2
- /lib/x86_64-linux-gnu/libwayland-client.so.0
- /lib/x86_64-linux-gnu/libwayland-cursor.so.0
- /lib/x86_64-linux-gnu/libwayland-egl.so.1
- /lib/x86_64-linux-gnu/libwrap.so.0
- /lib/x86_64-linux-gnu/libxcb-randr.so.0
- /lib/x86_64-linux-gnu/libxdo.so.3
- /lib/x86_64-linux-gnu/libxkbcommon.so.0
exclude:
- usr/share/man
- usr/share/doc/*/README.*
- usr/share/doc/*/changelog.*
- usr/share/doc/*/NEWS.*
- usr/share/doc/*/TODO.*
runtime:
env:
PYTHONHOME: '${APPDIR}/usr'
PYTHONPATH: '${APPDIR}/usr/lib/python3.8/site-packages'
test:
fedora-30:
image: appimagecrafters/tests-env:fedora-30

20
appimage/README.md Normal file
View File

@ -0,0 +1,20 @@
# How to build and run RustDesk in AppImage
Begin by installing `appimage-builder` and predependencies mentioned in official website.
Assume that `appimage-builder` is setup correctly, run commands below, `bash` or `zsh` is recommended:
```bash
cd /path/to/rustdesk_root
./build_appimage.py
```
After a success package, you can see the message in console like:
```shell
INFO:root:AppImage created successfully
```
The AppImage package is shown in `./appimage/RustDesk-VERSION-TARGET_PLATFORM.AppImage`.
Note: AppImage version of rustdesk is an early version which requires more test. If you find problems, please open an issue.

View File

@ -0,0 +1 @@
pynput

11
build_appimage.py Normal file → Executable file
View File

@ -1,8 +1,11 @@
#!/usr/bin/python3
import os
if __name__ == '__main__':
pass
os.chdir("appimage")
ret = os.system("appimage-builder --recipe AppImageBuilder.yml --skip-test")
if ret == 0:
print("RustDesk AppImage build success :)")
print("Check AppImage in '/path/to/rustdesk/appimage/RustDesk-VERSION-TARGET_PLATFORM.AppImage'")
else:
print("RustDesk AppImage build failed :(")

View File

@ -491,7 +491,11 @@ fn start_pynput_service(rx: mpsc::Receiver<(PyMsg, bool)>) {
if !std::path::Path::new(&py).exists() {
py = "/usr/lib/rustdesk/pynput_service.py".to_owned();
if !std::path::Path::new(&py).exists() {
log::error!("{} not exits", py);
// enigo libs, not rustdesk root project, so skip using appimage features
py = std::env::var("APPDIR").unwrap_or("".to_string()) + "/usr/lib/rustdesk/pynput_service.py";
if !std::path::Path::new(&py).exists() {
log::error!("{} not exists", py);
}
}
}
}

View File

@ -377,10 +377,18 @@ pub fn get_time() -> i64 {
}
pub fn run_me<T: AsRef<std::ffi::OsStr>>(args: Vec<T>) -> std::io::Result<std::process::Child> {
let cmd = std::env::var("APPDIR").unwrap();
let p = Path::new(&cmd).join("AppRun");
log::info!("path: {:?}", p);
return std::process::Command::new(p).args(&args).spawn();
#[cfg(not(feature = "appimage"))]
{
let cmd = std::env::current_exe()?;
return std::process::Command::new(cmd).args(&args).spawn();
}
#[cfg(feature = "appimage")]
{
let appdir = std::env::var("APPDIR").unwrap();
let appimage_cmd = Path::new(&appdir).join("AppRun");
log::info!("path: {:?}", appimage_cmd);
return std::process::Command::new(appimage_cmd).args(&args).spawn();
}
}
pub fn username() -> String {

View File

@ -57,7 +57,10 @@ pub fn start(args: &mut [String]) {
}
#[cfg(all(target_os = "linux", feature = "inline"))]
{
#[cfg(feature = "appimage")]
let prefix = std::env::var("APPDIR").unwrap_or("".to_string());
#[cfg(not(feature = "appimage"))]
let prefix = "".to_string();
sciter::set_library(&(prefix + "/usr/lib/rustdesk/libsciter-gtk.so")).ok();
}
// https://github.com/c-smile/sciter-sdk/blob/master/include/sciter-x-types.h