testing/intiface-central: new aport

This commit is contained in:
Lauren N. Liberda 2023-08-04 17:56:56 +02:00 committed by Kevin Daudt
parent 04e2ddf864
commit d24e3b2301
9 changed files with 4936 additions and 0 deletions

View File

@ -0,0 +1,89 @@
# Contributor: Lauren N. Liberda <lauren@selfisekai.rocks>
# Maintainer: Lauren N. Liberda <lauren@selfisekai.rocks>
pkgname=intiface-central
pkgver=2.4.3
pkgrel=0
pkgdesc="Frontend application for the Buttplug Sex Toy Control Library"
url="https://intiface.com/central/"
arch="aarch64 x86_64" # flutter
license="GPL-3.0-only"
makedepends="
cargo
corrosion
dbus-dev
eudev-dev
flutter-desktop
openssl-dev
patchelf
"
options="net !check" # no tests
source="
https://github.com/intiface/intiface-central/archive/refs/tags/v$pkgver/intiface-central-$pkgver.tar.gz
system-corrosion.patch
system-flutter.patch
lock.patch
pmos-fit-screen.patch
pkgconf2.patch
no-werror.patch
intiface-central
intiface-central.desktop
"
case "$CARCH" in
x86_64) _flutter_arch="x64" ;;
aarch64) _flutter_arch="arm64" ;;
esac
prepare() {
default_prepare
flutter pub get --enforce-lockfile
(
cd intiface-engine-flutter-bridge
cargo fetch --target="$CTARGET" --locked
)
}
build() {
flutter build linux --release
for _elf in build/linux/$_flutter_arch/release/bundle/lib/lib*.so; do
# running patchelf on libapp (the AOT snapshot of the whole Dart codebase)
# breaks it with "[FATAL:flutter/runtime/dart_vm_initializer.cc(89)]
# Error while initializing the Dart VM: Invalid vm isolate snapshot seen".
#
# it has no rpath and only links to libc soname anyway. 🤷‍♀️
[ "$(basename "$_elf")" != "libapp.so" ] || continue
patchelf --set-rpath '$ORIGIN' "$_elf"
done
}
package() {
local bundle="$builddir"/build/linux/$_flutter_arch/release/bundle
install -Dm755 "$bundle"/${pkgname/-/_} "$pkgdir"/usr/lib/$pkgname/${pkgname/-/_}
cp -r "$bundle"/lib "$pkgdir"/usr/lib/$pkgname/lib
cp -r "$bundle"/data "$pkgdir"/usr/lib/$pkgname/data
install -Dm755 "$srcdir"/$pkgname "$pkgdir"/usr/bin/$pkgname
install -Dm644 "$srcdir"/$pkgname.desktop "$pkgdir"/usr/share/applications/$pkgname.desktop
install -Dm644 assets/icons/intiface_central_icon.png "$pkgdir"/usr/share/icons/hicolor/512x512/apps/$pkgname.png
}
sha512sums="
3de8a563587ea32c3fd223a053352816430e8bda8a2e3da273622b299b1cc0036215e0e1a90e69fbd57adc87d7e0ad89527568493c1019e16d6edb9f8f3082aa intiface-central-2.4.3.tar.gz
ecad3c5cee9c53fc88b539d3088907539aff0b28980a89d4be2acb3c329a7a2154cb12743c0786e5c4a33de78af06b61b5b35f8eee633989cc943dc14e87dba6 system-corrosion.patch
91014708ab7bb81518ce93db0612209d6479dfa503064d9e9d3186cd5e861165a3f63e286d271d5aac8a1d676868fc3acf51648ac01c16a215062a317ccb6623 system-flutter.patch
cbd0ac34175d812dd5ce29610e9998fd82daceb7e46e325e99218b8c34b81eae3de2ce31aab5bf8c275aca740fcfc323e3646b050e5f0b9b1f66d1d89e7f37ac lock.patch
0e0b76ef2b9ffe5555a06b85a04df73283a9360c80803dead7776ed055883ffcb5c9d5a1faf6411431ee0c5b587dcc5aac3446d2846628845af8815841bf045a pmos-fit-screen.patch
7f56c2cec0c2c3d400d412b14307865938c98d5b43089330bdef641f1b55488c5f6d9e0dafd8da4998a4992555d2589ec9f97c46addfb26ad3c5c936a2270836 pkgconf2.patch
1d2b7d28a09e26ed48d89aa5f5dffb738ba367fa2760b12980225239705e16fa1ec89901d7aecf26c8527de721a5f50f50cc77ea009cd5f25f219d1af8730ed8 no-werror.patch
a69d49b59ebd0dbeeace74954d72cd97c38aa79597887648f0c8f5ec4ecb191a1b47c43d3007e7c826323800a601951e621ee60ed739f17f67fca2f8855d95b0 intiface-central
4015b388f997eb3abc2ecd69947bb703926e01de82807a940a42902f46e90d6759f609921215ba865cb6c91f5c6d404115c16a0a7ebe4bcc35315a4910adc081 intiface-central.desktop
"

View File

@ -0,0 +1,7 @@
#!/bin/sh
# fixes "Error loading shared library lib/libintiface_engine_flutter_bridge.so:
# No such file or directory"
cd /usr/lib/intiface-central
exec /usr/lib/intiface-central/intiface_central

View File

@ -0,0 +1,8 @@
[Desktop Entry]
Type=Application
Name=Intiface Central
Icon=intiface-central
Exec=intiface-central %U
Categories=Utility;Robotics;
Keywords=Buttplug;Teledildonics;
X-Purism-FormFactor=Workstation;Mobile;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,11 @@
--- ./linux/CMakeLists.txt.orig
+++ ./linux/CMakeLists.txt
@@ -41,7 +41,7 @@
# of modifying this function.
function(APPLY_STANDARD_SETTINGS TARGET)
target_compile_features(${TARGET} PUBLIC cxx_std_14)
- target_compile_options(${TARGET} PRIVATE -Wall -Werror)
+ target_compile_options(${TARGET} PRIVATE -Wall)
target_compile_options(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:-O3>")
target_compile_definitions(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:NDEBUG>")
endfunction()

View File

@ -0,0 +1,22 @@
--- ./intiface-engine-flutter-bridge/Cargo.toml.orig
+++ ./intiface-engine-flutter-bridge/Cargo.toml
@@ -46,3 +46,7 @@
[build-dependencies]
flutter_rust_bridge_codegen = "1.78.0"
+
+[patch.crates-io.pkg-config]
+git = "https://github.com/selfisekai/pkg-config-rs.git"
+rev = "4ea97bced7657de9f93b8ba151ac5029e6346ecc"
--- ./intiface-engine-flutter-bridge/Cargo.lock.orig
+++ ./intiface-engine-flutter-bridge/Cargo.lock
@@ -2142,8 +2142,7 @@
[[package]]
name = "pkg-config"
version = "0.3.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
+source = "git+https://github.com/selfisekai/pkg-config-rs.git?rev=4ea97bced7657de9f93b8ba151ac5029e6346ecc#4ea97bced7657de9f93b8ba151ac5029e6346ecc"
[[package]]
name = "ppv-lite86"

View File

@ -0,0 +1,122 @@
From 369131e50242091de00163d0b1fc16de33336928 Mon Sep 17 00:00:00 2001
From: "Lauren N. Liberda" <lauren@selfisekai.rocks>
Date: Tue, 30 May 2023 03:06:58 +0200
Subject: [PATCH 1/2] fix window/layout on pmos
---
.../intiface_configuration_cubit.dart | 19 ++++++++++++++---
lib/intiface_central_app.dart | 21 +++++++++++--------
lib/util/intiface_util.dart | 8 +++++++
3 files changed, 36 insertions(+), 12 deletions(-)
diff --git a/lib/configuration/intiface_configuration_cubit.dart b/lib/configuration/intiface_configuration_cubit.dart
index 6d761bf..0f23aa4 100644
--- a/lib/configuration/intiface_configuration_cubit.dart
+++ b/lib/configuration/intiface_configuration_cubit.dart
@@ -81,6 +81,11 @@ class WebsocketServerPort extends IntifaceConfigurationState {
WebsocketServerPort(this.value);
}
+class Pmos extends IntifaceConfigurationState {
+ final bool value;
+ Pmos(this.value);
+}
+
class UseCompactDisplay extends IntifaceConfigurationState {
final bool value;
UseCompactDisplay(this.value);
@@ -139,8 +144,10 @@ class IntifaceConfigurationCubit extends Cubit<IntifaceConfigurationState> {
// Our initializer runs through all of our known configuration values, either setting them to what they already are,
// or providing them with default values.
- // Window settings for desktop. Will be ignored on mobile. Default to expanded.
- useCompactDisplay = _prefs.getBool("useCompactDisplay") ?? false;
+ pmos = await isPostmarket();
+
+ // Window settings for desktop. Will be ignored on mobile. Default to expanded except pmos.
+ useCompactDisplay = _prefs.getBool("useCompactDisplay") ?? pmos;
// Check all of our values to make sure they exist. If not, set defaults, based on platform if needed.
serverName = _prefs.getString("serverName") ?? "Intiface Server";
@@ -157,7 +164,7 @@ class IntifaceConfigurationCubit extends Cubit<IntifaceConfigurationState> {
showExtendedUI = _prefs.getBool("showExtendedUI") ?? false;
allowRawMessages = _prefs.getBool("allowRawMessages") ?? false;
unreadNews = _prefs.getBool("unreadNews") ?? false;
- useSideNavigationBar = _prefs.getBool("useSideNavigationBar") ?? isDesktop();
+ useSideNavigationBar = _prefs.getBool("useSideNavigationBar") ?? isDesktop() && !pmos;
useLightTheme = _prefs.getBool("useLightTheme") ?? true;
// True on all platforms
@@ -206,6 +213,12 @@ class IntifaceConfigurationCubit extends Cubit<IntifaceConfigurationState> {
emit(CurrentDeviceConfigEtag(value));
}
+ bool get pmos => _prefs.getBool("pmos")!;
+ set pmos(bool value) {
+ _prefs.setBool("pmos", value);
+ emit(Pmos(value));
+ }
+
// Slam to false until we figure out how to window resizing.
bool get useCompactDisplay => false; //_prefs.getBool("useCompactDisplay")!;
set useCompactDisplay(bool value) {
diff --git a/lib/intiface_central_app.dart b/lib/intiface_central_app.dart
index 1fac674..d547773 100644
--- a/lib/intiface_central_app.dart
+++ b/lib/intiface_central_app.dart
@@ -90,20 +90,23 @@ class IntifaceCentralApp extends StatelessWidget with WindowListener {
);
windowManager.addListener(this);
- windowManager.setPosition(guiSettingsCubit.getWindowPosition());
- windowDisplayModeResize(configCubit.useCompactDisplay, guiSettingsCubit);
+ if (!configCubit.pmos) {
+ windowManager.setPosition(guiSettingsCubit.getWindowPosition());
+ windowDisplayModeResize(configCubit.useCompactDisplay, guiSettingsCubit);
+
+ configCubit.stream.listen((event) {
+ if (event is! UseCompactDisplay) {
+ return;
+ }
+ windowDisplayModeResize(event.value, guiSettingsCubit);
+ });
+ }
+
windowManager.waitUntilReadyToShow(windowOptions, () async {
await windowManager.show();
await windowManager.focus();
});
- configCubit.stream.listen((event) {
- if (event is! UseCompactDisplay) {
- return;
- }
- windowDisplayModeResize(event.value, guiSettingsCubit);
- });
-
// Only add app update checks on desktop, mobile apps will use stores.
updateRepo.addProvider(IntifaceCentralDesktopUpdater(configCubit.currentAppVersion));
} else {
diff --git a/lib/util/intiface_util.dart b/lib/util/intiface_util.dart
index 2f2ccb6..fb3031e 100644
--- a/lib/util/intiface_util.dart
+++ b/lib/util/intiface_util.dart
@@ -1,3 +1,4 @@
+import 'package:device_info_plus/device_info_plus.dart';
import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart' as p;
import 'dart:io';
@@ -81,3 +82,10 @@ class IntifacePaths {
bool isDesktop() => Platform.isLinux || Platform.isMacOS || Platform.isWindows;
bool isMobile() => Platform.isAndroid || Platform.isIOS;
+Future<bool> isPostmarket() async {
+ if (!Platform.isLinux) return false;
+
+ DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
+ LinuxDeviceInfo linuxInfo = await deviceInfo.linuxInfo;
+ return linuxInfo.id == "postmarketos";
+}
--
2.40.1

View File

@ -0,0 +1,24 @@
--- ./linux/rust.cmake.orig
+++ ./linux/rust.cmake
@@ -2,19 +2,9 @@
# many dependencies we would need to install Corrosion on the system.
# See instructions on https://github.com/AndrewGaspar/corrosion#cmake-install
# Once done, uncomment this line:
-# find_package(Corrosion REQUIRED)
+find_package(Corrosion REQUIRED)
-include(FetchContent)
-
-FetchContent_Declare(
- Corrosion
- GIT_REPOSITORY https://github.com/AndrewGaspar/corrosion.git
- GIT_TAG origin/master # Optionally specify a version tag or branch here
-)
-
-FetchContent_MakeAvailable(Corrosion)
-
-corrosion_import_crate(MANIFEST_PATH ../intiface-engine-flutter-bridge/Cargo.toml)
+corrosion_import_crate(MANIFEST_PATH ../intiface-engine-flutter-bridge/Cargo.toml FROZEN)
# Flutter-specific

View File

@ -0,0 +1,15 @@
--- a/linux/CMakeLists.txt
+++ b/linux/CMakeLists.txt
@@ -110,12 +110,6 @@
install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}"
COMPONENT Runtime)
-install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}"
- COMPONENT Runtime)
-
-install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
- COMPONENT Runtime)
-
foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES})
install(FILES "${bundled_library}"
DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"