From 6e0636c8cfeaaa9995dcec538d95c262be17da65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Wed, 20 Dec 2023 11:44:46 +0100 Subject: [PATCH] Initial commit --- README.md | 31 + automation/scripts/aliendalvik | 66 + automation/scripts/aliendalvik-config | 62 + automation/scripts/aliendalvik-setup | 30 + .../scripts/aliendalvik-user-dependencies | 57 + .../system/aliendalvik-config.service | 8 + .../system/aliendalvik-setup.service | 11 + .../aliendalvik-user-dependencies.service | 12 + .../system/aliendalvik.service | 13 + .../apkd-bridge-user-connman-shim.service | 10 + .../systemd-services/user/alienaudio.service | 10 + .../user/alienkeyboard-maliit-shim.service | 10 + .../user/alienkeyboard.service | 9 + .../user/apkd-bridge-user.service | 11 + .../systemd-services/user/apkd-bridge.service | 11 + configure.txt | 65 + files.txt | 111 + .../random-reverse-engineering-docs.txt | 582 ++ ...ngelog_from_3.3.0.16_to_3.4.0.24-FINAL.txt | 4913 ++++++++++++ ...ngelog_from_3.4.0.24_to_4.0.1.48.FINAL.txt | 5659 +++++++++++++ ...ngelog_from_4.0.1.48_to_4.1.0.24.final.txt | 3112 ++++++++ ...ngelog_from_4.1.0.24_to_4.2.0.21.final.txt | 2700 +++++++ .../Changelog_from_4.2.0.21_to_4.3.0.12.md | 2001 +++++ .../Changelog_from_4.3.0.12_to_4.3.0.15.md | 80 + .../Changelog_from_4.3.0.15_to_4.4.0.58.md | 3392 ++++++++ .../Changelog_from_4.4.0.58_to_4.4.0.64_2.md | 202 + .../Changelog_from_4.4.0.64_to_4.4.0.68_2.md | 638 ++ .../Changelog_from_4.4.0.68_to_4.4.0.72.md | 130 + .../Changelog_from_4.4.0.72_to_4.5.0.16.md | 7084 +++++++++++++++++ .../Changelog_from_4.5.0.16_to_4.5.0.18.md | 44 + .../Changelog_from_4.5.0.18_to_4.5.0.19.md | 98 + .../Changelog_from_4.5.0.19_to_4.5.0.21.md | 170 + .../Changelog_from_4.5.0.21_to_4.5.0.24.md | 70 + other-docs/systemd-status-dump.txt | 361 + ...xdg-shell-disable-pinging-of-windows.patch | 37 + ...eometry-scale-for-alien-windows-to-1.patch | 65 + ...ayland-disable-xdg_toplevel_minimize.patch | 29 + ...ut-small-improvements-which-are-hope.patch | 36 + ...ut-replace-focus-for-aliendalvik-wit.patch | 200 + ...on-t-be-so-angry-about-client-errors.patch | 73 + ...r-zwp_text_input_v3-to-alien-clients.patch | 53 + running.txt | 110 + setup-environment.txt | 40 + .../alienaudioservice/alienaudio-shim.conf | 24 + shimming/alienaudioservice/alienaudio-shim.py | 1057 +++ .../alienaudioservice/alienaudio-shim.service | 10 + .../alienkeyboard-maliit-shim | 443 ++ .../alienkeyboard-maliit-shim.service | 10 + shimming/alienkeyboardservice/dbussy.py | 7021 ++++++++++++++++ .../protocols/content_type_v1/__init__.py | 26 + .../wp_content_type_manager_v1.py | 107 + .../content_type_v1/wp_content_type_v1.py | 110 + .../protocols/cursor_shape_v1/__init__.py | 24 + .../wp_cursor_shape_device_v1.py | 154 + .../wp_cursor_shape_manager_v1.py | 123 + .../protocols/drm_lease_v1/__init__.py | 29 + .../drm_lease_v1/wp_drm_lease_connector_v1.py | 174 + .../drm_lease_v1/wp_drm_lease_device_v1.py | 206 + .../drm_lease_v1/wp_drm_lease_request_v1.py | 120 + .../protocols/drm_lease_v1/wp_drm_lease_v1.py | 120 + .../ext_foreign_toplevel_list_v1/__init__.py | 30 + .../ext_foreign_toplevel_handle_v1.py | 192 + .../ext_foreign_toplevel_list_v1.py | 151 + .../protocols/ext_idle_notify_v1/__init__.py | 26 + .../ext_idle_notification_v1.py | 102 + .../ext_idle_notifier_v1.py | 111 + .../protocols/ext_session_lock_v1/__init__.py | 25 + .../ext_session_lock_manager_v1.py | 93 + .../ext_session_lock_surface_v1.py | 166 + .../ext_session_lock_v1.py | 246 + .../protocols/fractional_scale_v1/__init__.py | 25 + .../wp_fractional_scale_manager_v1.py | 106 + .../wp_fractional_scale_v1.py | 93 + .../fullscreen_shell_unstable_v1/__init__.py | 27 + .../zwp_fullscreen_shell_mode_feedback_v1.py | 91 + .../zwp_fullscreen_shell_v1.py | 260 + .../idle_inhibit_unstable_v1/__init__.py | 25 + .../zwp_idle_inhibit_manager_v1.py | 103 + .../zwp_idle_inhibitor_v1.py | 76 + .../input_method_unstable_v1/__init__.py | 27 + .../zwp_input_method_context_v1.py | 510 ++ .../zwp_input_method_v1.py | 97 + .../zwp_input_panel_surface_v1.py | 93 + .../zwp_input_panel_v1.py | 80 + .../input_timestamps_unstable_v1/__init__.py | 25 + .../zwp_input_timestamps_manager_v1.py | 166 + .../zwp_input_timestamps_v1.py | 114 + .../__init__.py | 25 + ...p_keyboard_shortcuts_inhibit_manager_v1.py | 107 + .../zwp_keyboard_shortcuts_inhibitor_v1.py | 120 + .../linux_dmabuf_unstable_v1/__init__.py | 26 + .../zwp_linux_buffer_params_v1.py | 336 + .../zwp_linux_dmabuf_feedback_v1.py | 294 + .../zwp_linux_dmabuf_v1.py | 279 + .../__init__.py | 27 + .../zwp_confined_pointer_v1.py | 143 + .../zwp_locked_pointer_v1.py | 172 + .../zwp_pointer_constraints_v1.py | 221 + .../pointer_gestures_unstable_v1/__init__.py | 20 + .../zwp_pointer_gesture_hold_v1.py | 140 + .../zwp_pointer_gesture_pinch_v1.py | 183 + .../zwp_pointer_gesture_swipe_v1.py | 164 + .../zwp_pointer_gestures_v1.py | 142 + .../protocols/presentation_time/__init__.py | 25 + .../presentation_time/wp_presentation.py | 166 + .../wp_presentation_feedback.py | 193 + .../relative_pointer_unstable_v1/__init__.py | 26 + .../zwp_relative_pointer_manager_v1.py | 96 + .../zwp_relative_pointer_v1.py | 146 + .../single_pixel_buffer_v1/__init__.py | 24 + .../wp_single_pixel_buffer_manager_v1.py | 114 + .../protocols/tablet_unstable_v1/__init__.py | 30 + .../zwp_tablet_manager_v1.py | 100 + .../tablet_unstable_v1/zwp_tablet_seat_v1.py | 115 + .../tablet_unstable_v1/zwp_tablet_tool_v1.py | 612 ++ .../tablet_unstable_v1/zwp_tablet_v1.py | 168 + .../protocols/tablet_unstable_v2/__init__.py | 34 + .../zwp_tablet_manager_v2.py | 100 + .../zwp_tablet_pad_group_v2.py | 245 + .../zwp_tablet_pad_ring_v2.py | 209 + .../zwp_tablet_pad_strip_v2.py | 209 + .../tablet_unstable_v2/zwp_tablet_pad_v2.py | 304 + .../tablet_unstable_v2/zwp_tablet_seat_v2.py | 139 + .../tablet_unstable_v2/zwp_tablet_tool_v2.py | 605 ++ .../tablet_unstable_v2/zwp_tablet_v2.py | 168 + .../protocols/tearing_control_v1/__init__.py | 25 + .../wp_tearing_control_manager_v1.py | 118 + .../wp_tearing_control_v1.py | 102 + .../text_input_unstable_v1/__init__.py | 25 + .../zwp_text_input_manager_v1.py | 77 + .../zwp_text_input_v1.py | 612 ++ .../text_input_unstable_v3/__init__.py | 30 + .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 360 bytes .../zwp_text_input_manager_v3.cpython-311.pyc | Bin 0 -> 3345 bytes .../zwp_text_input_v3.cpython-311.pyc | Bin 0 -> 24179 bytes .../zwp_text_input_manager_v3.py | 96 + .../zwp_text_input_v3.py | 542 ++ .../protocols/viewporter/__init__.py | 25 + .../protocols/viewporter/wp_viewport.py | 213 + .../protocols/viewporter/wp_viewporter.py | 108 + .../protocols/wayland/__init__.py | 49 + .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 1561 bytes .../__pycache__/wl_buffer.cpython-311.pyc | Bin 0 -> 4428 bytes .../__pycache__/wl_callback.cpython-311.pyc | Bin 0 -> 2594 bytes .../__pycache__/wl_compositor.cpython-311.pyc | Bin 0 -> 3233 bytes .../wl_data_device.cpython-311.pyc | Bin 0 -> 14487 bytes .../wl_data_device_manager.cpython-311.pyc | Bin 0 -> 4760 bytes .../__pycache__/wl_data_offer.cpython-311.pyc | Bin 0 -> 14903 bytes .../wl_data_source.cpython-311.pyc | Bin 0 -> 11767 bytes .../__pycache__/wl_display.cpython-311.pyc | Bin 0 -> 6990 bytes .../__pycache__/wl_keyboard.cpython-311.pyc | Bin 0 -> 11592 bytes .../__pycache__/wl_output.cpython-311.pyc | Bin 0 -> 15109 bytes .../__pycache__/wl_pointer.cpython-311.pyc | Bin 0 -> 26806 bytes .../__pycache__/wl_region.cpython-311.pyc | Bin 0 -> 4358 bytes .../__pycache__/wl_registry.cpython-311.pyc | Bin 0 -> 6407 bytes .../__pycache__/wl_seat.cpython-311.pyc | Bin 0 -> 10069 bytes .../__pycache__/wl_shell.cpython-311.pyc | Bin 0 -> 3815 bytes .../wl_shell_surface.cpython-311.pyc | Bin 0 -> 19645 bytes .../__pycache__/wl_shm.cpython-311.pyc | Bin 0 -> 7186 bytes .../__pycache__/wl_shm_pool.cpython-311.pyc | Bin 0 -> 6189 bytes .../wl_subcompositor.cpython-311.pyc | Bin 0 -> 6254 bytes .../__pycache__/wl_subsurface.cpython-311.pyc | Bin 0 -> 12576 bytes .../__pycache__/wl_surface.cpython-311.pyc | Bin 0 -> 33139 bytes .../__pycache__/wl_touch.cpython-311.pyc | Bin 0 -> 12937 bytes .../protocols/wayland/wl_buffer.py | 108 + .../protocols/wayland/wl_callback.py | 86 + .../protocols/wayland/wl_compositor.py | 98 + .../protocols/wayland/wl_data_device.py | 319 + .../wayland/wl_data_device_manager.py | 125 + .../protocols/wayland/wl_data_offer.py | 325 + .../protocols/wayland/wl_data_source.py | 273 + .../protocols/wayland/wl_display.py | 173 + .../protocols/wayland/wl_keyboard.py | 288 + .../protocols/wayland/wl_output.py | 349 + .../protocols/wayland/wl_pointer.py | 591 ++ .../protocols/wayland/wl_region.py | 138 + .../protocols/wayland/wl_registry.py | 167 + .../protocols/wayland/wl_seat.py | 231 + .../protocols/wayland/wl_shell.py | 106 + .../protocols/wayland/wl_shell_surface.py | 462 ++ .../protocols/wayland/wl_shm.py | 234 + .../protocols/wayland/wl_shm_pool.py | 159 + .../protocols/wayland/wl_subcompositor.py | 149 + .../protocols/wayland/wl_subsurface.py | 270 + .../protocols/wayland/wl_surface.py | 703 ++ .../protocols/wayland/wl_touch.py | 304 + .../__init__.py | 27 + ...zwp_primary_selection_device_manager_v1.py | 109 + .../zwp_primary_selection_device_v1.py | 130 + .../zwp_primary_selection_offer_v1.py | 118 + .../zwp_primary_selection_source_v1.py | 117 + .../protocols/xdg_activation_v1/__init__.py | 26 + .../xdg_activation_token_v1.py | 184 + .../xdg_activation_v1/xdg_activation_v1.py | 126 + .../xdg_decoration_unstable_v1/__init__.py | 25 + .../zxdg_decoration_manager_v1.py | 119 + .../zxdg_toplevel_decoration_v1.py | 160 + .../xdg_foreign_unstable_v1/__init__.py | 27 + .../zxdg_exported_v1.py | 94 + .../zxdg_exporter_v1.py | 103 + .../zxdg_imported_v1.py | 107 + .../zxdg_importer_v1.py | 99 + .../xdg_foreign_unstable_v2/__init__.py | 27 + .../zxdg_exported_v2.py | 94 + .../zxdg_exporter_v2.py | 107 + .../zxdg_imported_v2.py | 112 + .../zxdg_importer_v2.py | 100 + .../xdg_output_unstable_v1/__init__.py | 25 + .../zxdg_output_manager_v1.py | 95 + .../xdg_output_unstable_v1/zxdg_output_v1.py | 251 + .../protocols/xdg_shell/__init__.py | 33 + .../protocols/xdg_shell/xdg_popup.py | 310 + .../protocols/xdg_shell/xdg_positioner.py | 358 + .../protocols/xdg_shell/xdg_surface.py | 334 + .../protocols/xdg_shell/xdg_toplevel.py | 707 ++ .../protocols/xdg_shell/xdg_wm_base.py | 197 + .../xdg_shell_unstable_v5/__init__.py | 29 + .../xdg_shell_unstable_v5/xdg_popup.py | 130 + .../xdg_shell_unstable_v5/xdg_shell.py | 240 + .../xdg_shell_unstable_v5/xdg_surface.py | 561 ++ .../xdg_shell_unstable_v6/__init__.py | 31 + .../xdg_shell_unstable_v6/zxdg_popup_v6.py | 239 + .../zxdg_positioner_v6.py | 297 + .../xdg_shell_unstable_v6/zxdg_shell_v6.py | 196 + .../xdg_shell_unstable_v6/zxdg_surface_v6.py | 312 + .../xdg_shell_unstable_v6/zxdg_toplevel_v6.py | 562 ++ .../__init__.py | 25 + .../zwp_xwayland_keyboard_grab_manager_v1.py | 119 + .../zwp_xwayland_keyboard_grab_v1.py | 65 + .../protocols/xwayland_shell_v1/__init__.py | 25 + .../xwayland_shell_v1/xwayland_shell_v1.py | 125 + .../xwayland_shell_v1/xwayland_surface_v1.py | 134 + .../__init__.py | 28 + .../zwp_linux_buffer_release_v1.py | 131 + .../zwp_linux_explicit_synchronization_v1.py | 132 + .../zwp_linux_surface_synchronization_v1.py | 194 + shimming/alienkeyboardservice/ravel.py | 3723 +++++++++ .../apkd-bridge-user-connman-shim | 352 + .../apkd-bridge-user-connman-shim.service | 10 + .../apkd-bridge-user/net.connman-shim.service | 5 + 240 files changed, 71117 insertions(+) create mode 100644 README.md create mode 100755 automation/scripts/aliendalvik create mode 100755 automation/scripts/aliendalvik-config create mode 100755 automation/scripts/aliendalvik-setup create mode 100755 automation/scripts/aliendalvik-user-dependencies create mode 100644 automation/systemd-services/system/aliendalvik-config.service create mode 100644 automation/systemd-services/system/aliendalvik-setup.service create mode 100644 automation/systemd-services/system/aliendalvik-user-dependencies.service create mode 100644 automation/systemd-services/system/aliendalvik.service create mode 100644 automation/systemd-services/system/apkd-bridge-user-connman-shim.service create mode 100644 automation/systemd-services/user/alienaudio.service create mode 100644 automation/systemd-services/user/alienkeyboard-maliit-shim.service create mode 100644 automation/systemd-services/user/alienkeyboard.service create mode 100644 automation/systemd-services/user/apkd-bridge-user.service create mode 100644 automation/systemd-services/user/apkd-bridge.service create mode 100644 configure.txt create mode 100644 files.txt create mode 100644 other-docs/random-reverse-engineering-docs.txt create mode 100644 other-docs/sailfish-changelogs/Changelog_from_3.3.0.16_to_3.4.0.24-FINAL.txt create mode 100644 other-docs/sailfish-changelogs/Changelog_from_3.4.0.24_to_4.0.1.48.FINAL.txt create mode 100644 other-docs/sailfish-changelogs/Changelog_from_4.0.1.48_to_4.1.0.24.final.txt create mode 100644 other-docs/sailfish-changelogs/Changelog_from_4.1.0.24_to_4.2.0.21.final.txt create mode 100644 other-docs/sailfish-changelogs/Changelog_from_4.2.0.21_to_4.3.0.12.md create mode 100644 other-docs/sailfish-changelogs/Changelog_from_4.3.0.12_to_4.3.0.15.md create mode 100644 other-docs/sailfish-changelogs/Changelog_from_4.3.0.15_to_4.4.0.58.md create mode 100644 other-docs/sailfish-changelogs/Changelog_from_4.4.0.58_to_4.4.0.64_2.md create mode 100644 other-docs/sailfish-changelogs/Changelog_from_4.4.0.64_to_4.4.0.68_2.md create mode 100644 other-docs/sailfish-changelogs/Changelog_from_4.4.0.68_to_4.4.0.72.md create mode 100644 other-docs/sailfish-changelogs/Changelog_from_4.4.0.72_to_4.5.0.16.md create mode 100644 other-docs/sailfish-changelogs/Changelog_from_4.5.0.16_to_4.5.0.18.md create mode 100644 other-docs/sailfish-changelogs/Changelog_from_4.5.0.18_to_4.5.0.19.md create mode 100644 other-docs/sailfish-changelogs/Changelog_from_4.5.0.19_to_4.5.0.21.md create mode 100644 other-docs/sailfish-changelogs/Changelog_from_4.5.0.21_to_4.5.0.24.md create mode 100644 other-docs/systemd-status-dump.txt create mode 100644 patches/mobile-mutter/0001-xdg-shell-disable-pinging-of-windows.patch create mode 100644 patches/mobile-mutter/0002-window-force-geometry-scale-for-alien-windows-to-1.patch create mode 100644 patches/mobile-mutter/0003-window-wayland-disable-xdg_toplevel_minimize.patch create mode 100644 patches/mobile-mutter/0004-wayland-text-input-small-improvements-which-are-hope.patch create mode 100644 patches/mobile-mutter/0005-wayland-text-input-replace-focus-for-aliendalvik-wit.patch create mode 100644 patches/wayland/0001-server-don-t-be-so-angry-about-client-errors.patch create mode 100644 patches/wayland/0002-don-t-offer-zwp_text_input_v3-to-alien-clients.patch create mode 100644 running.txt create mode 100644 setup-environment.txt create mode 100644 shimming/alienaudioservice/alienaudio-shim.conf create mode 100644 shimming/alienaudioservice/alienaudio-shim.py create mode 100644 shimming/alienaudioservice/alienaudio-shim.service create mode 100755 shimming/alienkeyboardservice/alienkeyboard-maliit-shim create mode 100644 shimming/alienkeyboardservice/alienkeyboard-maliit-shim.service create mode 100644 shimming/alienkeyboardservice/dbussy.py create mode 100644 shimming/alienkeyboardservice/protocols/content_type_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/content_type_v1/wp_content_type_manager_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/content_type_v1/wp_content_type_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/cursor_shape_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/cursor_shape_v1/wp_cursor_shape_device_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/cursor_shape_v1/wp_cursor_shape_manager_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/drm_lease_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/drm_lease_v1/wp_drm_lease_connector_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/drm_lease_v1/wp_drm_lease_device_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/drm_lease_v1/wp_drm_lease_request_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/drm_lease_v1/wp_drm_lease_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/ext_foreign_toplevel_list_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/ext_foreign_toplevel_list_v1/ext_foreign_toplevel_handle_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/ext_foreign_toplevel_list_v1/ext_foreign_toplevel_list_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/ext_idle_notify_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/ext_idle_notify_v1/ext_idle_notification_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/ext_idle_notify_v1/ext_idle_notifier_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/ext_session_lock_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/ext_session_lock_v1/ext_session_lock_manager_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/ext_session_lock_v1/ext_session_lock_surface_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/ext_session_lock_v1/ext_session_lock_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/fractional_scale_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/fractional_scale_v1/wp_fractional_scale_manager_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/fractional_scale_v1/wp_fractional_scale_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/fullscreen_shell_unstable_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/fullscreen_shell_unstable_v1/zwp_fullscreen_shell_mode_feedback_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/fullscreen_shell_unstable_v1/zwp_fullscreen_shell_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/idle_inhibit_unstable_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/idle_inhibit_unstable_v1/zwp_idle_inhibit_manager_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/idle_inhibit_unstable_v1/zwp_idle_inhibitor_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/input_method_unstable_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/input_method_unstable_v1/zwp_input_method_context_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/input_method_unstable_v1/zwp_input_method_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/input_method_unstable_v1/zwp_input_panel_surface_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/input_method_unstable_v1/zwp_input_panel_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/input_timestamps_unstable_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/input_timestamps_unstable_v1/zwp_input_timestamps_manager_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/input_timestamps_unstable_v1/zwp_input_timestamps_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/keyboard_shortcuts_inhibit_unstable_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/keyboard_shortcuts_inhibit_unstable_v1/zwp_keyboard_shortcuts_inhibit_manager_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/keyboard_shortcuts_inhibit_unstable_v1/zwp_keyboard_shortcuts_inhibitor_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/linux_dmabuf_unstable_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/linux_dmabuf_unstable_v1/zwp_linux_buffer_params_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/linux_dmabuf_unstable_v1/zwp_linux_dmabuf_feedback_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/linux_dmabuf_unstable_v1/zwp_linux_dmabuf_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/pointer_constraints_unstable_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/pointer_constraints_unstable_v1/zwp_confined_pointer_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/pointer_constraints_unstable_v1/zwp_locked_pointer_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/pointer_constraints_unstable_v1/zwp_pointer_constraints_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/pointer_gestures_unstable_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/pointer_gestures_unstable_v1/zwp_pointer_gesture_hold_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/pointer_gestures_unstable_v1/zwp_pointer_gesture_pinch_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/pointer_gestures_unstable_v1/zwp_pointer_gesture_swipe_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/pointer_gestures_unstable_v1/zwp_pointer_gestures_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/presentation_time/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/presentation_time/wp_presentation.py create mode 100644 shimming/alienkeyboardservice/protocols/presentation_time/wp_presentation_feedback.py create mode 100644 shimming/alienkeyboardservice/protocols/relative_pointer_unstable_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/relative_pointer_unstable_v1/zwp_relative_pointer_manager_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/relative_pointer_unstable_v1/zwp_relative_pointer_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/single_pixel_buffer_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/single_pixel_buffer_v1/wp_single_pixel_buffer_manager_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/tablet_unstable_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/tablet_unstable_v1/zwp_tablet_manager_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/tablet_unstable_v1/zwp_tablet_seat_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/tablet_unstable_v1/zwp_tablet_tool_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/tablet_unstable_v1/zwp_tablet_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/tablet_unstable_v2/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/tablet_unstable_v2/zwp_tablet_manager_v2.py create mode 100644 shimming/alienkeyboardservice/protocols/tablet_unstable_v2/zwp_tablet_pad_group_v2.py create mode 100644 shimming/alienkeyboardservice/protocols/tablet_unstable_v2/zwp_tablet_pad_ring_v2.py create mode 100644 shimming/alienkeyboardservice/protocols/tablet_unstable_v2/zwp_tablet_pad_strip_v2.py create mode 100644 shimming/alienkeyboardservice/protocols/tablet_unstable_v2/zwp_tablet_pad_v2.py create mode 100644 shimming/alienkeyboardservice/protocols/tablet_unstable_v2/zwp_tablet_seat_v2.py create mode 100644 shimming/alienkeyboardservice/protocols/tablet_unstable_v2/zwp_tablet_tool_v2.py create mode 100644 shimming/alienkeyboardservice/protocols/tablet_unstable_v2/zwp_tablet_v2.py create mode 100644 shimming/alienkeyboardservice/protocols/tearing_control_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/tearing_control_v1/wp_tearing_control_manager_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/tearing_control_v1/wp_tearing_control_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/text_input_unstable_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/text_input_unstable_v1/zwp_text_input_manager_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/text_input_unstable_v1/zwp_text_input_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/text_input_unstable_v3/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/text_input_unstable_v3/__pycache__/__init__.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/text_input_unstable_v3/__pycache__/zwp_text_input_manager_v3.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/text_input_unstable_v3/__pycache__/zwp_text_input_v3.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/text_input_unstable_v3/zwp_text_input_manager_v3.py create mode 100644 shimming/alienkeyboardservice/protocols/text_input_unstable_v3/zwp_text_input_v3.py create mode 100644 shimming/alienkeyboardservice/protocols/viewporter/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/viewporter/wp_viewport.py create mode 100644 shimming/alienkeyboardservice/protocols/viewporter/wp_viewporter.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/__init__.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_buffer.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_callback.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_compositor.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_data_device.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_data_device_manager.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_data_offer.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_data_source.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_display.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_keyboard.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_output.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_pointer.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_region.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_registry.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_seat.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_shell.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_shell_surface.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_shm.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_shm_pool.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_subcompositor.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_subsurface.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_surface.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/__pycache__/wl_touch.cpython-311.pyc create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_buffer.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_callback.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_compositor.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_data_device.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_data_device_manager.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_data_offer.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_data_source.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_display.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_keyboard.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_output.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_pointer.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_region.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_registry.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_seat.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_shell.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_shell_surface.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_shm.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_shm_pool.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_subcompositor.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_subsurface.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_surface.py create mode 100644 shimming/alienkeyboardservice/protocols/wayland/wl_touch.py create mode 100644 shimming/alienkeyboardservice/protocols/wp_primary_selection_unstable_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/wp_primary_selection_unstable_v1/zwp_primary_selection_device_manager_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/wp_primary_selection_unstable_v1/zwp_primary_selection_device_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/wp_primary_selection_unstable_v1/zwp_primary_selection_offer_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/wp_primary_selection_unstable_v1/zwp_primary_selection_source_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_activation_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_activation_v1/xdg_activation_token_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_activation_v1/xdg_activation_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_decoration_unstable_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_decoration_unstable_v1/zxdg_decoration_manager_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_decoration_unstable_v1/zxdg_toplevel_decoration_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_foreign_unstable_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_foreign_unstable_v1/zxdg_exported_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_foreign_unstable_v1/zxdg_exporter_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_foreign_unstable_v1/zxdg_imported_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_foreign_unstable_v1/zxdg_importer_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_foreign_unstable_v2/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_foreign_unstable_v2/zxdg_exported_v2.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_foreign_unstable_v2/zxdg_exporter_v2.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_foreign_unstable_v2/zxdg_imported_v2.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_foreign_unstable_v2/zxdg_importer_v2.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_output_unstable_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_output_unstable_v1/zxdg_output_manager_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_output_unstable_v1/zxdg_output_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_shell/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_shell/xdg_popup.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_shell/xdg_positioner.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_shell/xdg_surface.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_shell/xdg_toplevel.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_shell/xdg_wm_base.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_shell_unstable_v5/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_shell_unstable_v5/xdg_popup.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_shell_unstable_v5/xdg_shell.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_shell_unstable_v5/xdg_surface.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_shell_unstable_v6/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_shell_unstable_v6/zxdg_popup_v6.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_shell_unstable_v6/zxdg_positioner_v6.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_shell_unstable_v6/zxdg_shell_v6.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_shell_unstable_v6/zxdg_surface_v6.py create mode 100644 shimming/alienkeyboardservice/protocols/xdg_shell_unstable_v6/zxdg_toplevel_v6.py create mode 100644 shimming/alienkeyboardservice/protocols/xwayland_keyboard_grab_unstable_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/xwayland_keyboard_grab_unstable_v1/zwp_xwayland_keyboard_grab_manager_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/xwayland_keyboard_grab_unstable_v1/zwp_xwayland_keyboard_grab_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/xwayland_shell_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/xwayland_shell_v1/xwayland_shell_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/xwayland_shell_v1/xwayland_surface_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/zwp_linux_explicit_synchronization_unstable_v1/__init__.py create mode 100644 shimming/alienkeyboardservice/protocols/zwp_linux_explicit_synchronization_unstable_v1/zwp_linux_buffer_release_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/zwp_linux_explicit_synchronization_unstable_v1/zwp_linux_explicit_synchronization_v1.py create mode 100644 shimming/alienkeyboardservice/protocols/zwp_linux_explicit_synchronization_unstable_v1/zwp_linux_surface_synchronization_v1.py create mode 100644 shimming/alienkeyboardservice/ravel.py create mode 100755 shimming/apkd-bridge-user/apkd-bridge-user-connman-shim create mode 100644 shimming/apkd-bridge-user/apkd-bridge-user-connman-shim.service create mode 100644 shimming/apkd-bridge-user/net.connman-shim.service diff --git a/README.md b/README.md new file mode 100644 index 0000000..ee26307 --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +# Running Jolla AppSupport/aliendalvik on regular linux distros + +This is a small repo documenting the reverse enginieering of Jolla's Android AppSupport (aka Aliendalvik), including steps on how to run it on other linux distros than Sailfish OS. + +## Note for everyone attempting this + +Aliendalvik is a complex piece of software and requires lots of setup to run. This is a very rough set of steps, it *won't* work on the first try, be prepared to solve problems. + +## Steps to run outside of Sailfish OS + +1. Get a supported phone with Sailfish OS and Android AppSupport (see https://shop.jolla.com/) and grab the necessary binaries + - Start the phone, go through setup of Sailfish OS and setup Android AppSupport + - Get all the necessary files from the phone via SSH, see files.txt + +2. Set up dependencies on the target device + - Install dependencies from the Arch ARM repos: lxc packagekit-qt5 mlite qt5-sensors qt5-location python-pywayland + - Build necessary libraries that aren't in the Arch ARM repos: libglibutil libgbinder + - Build custom libraries from forks: [libQtContacts](https://github.com/jonas2515/qtpim/tree/alien-everwhere), [libqtcontacts_folks](https://github.com/jonas2515/qtfolks), [libqtposition_geoclue2](https://github.com/jonas2515/qtpositioning/tree/alien-everwhere), [libqtsensors_iio-sensor-proxy](https://github.com/jonas2515/qtsensors/tree/alien-everywhere) + - Install shimming services on the target device, see shimming/ + - Build and install patched mobile-mutter and libwayland, see patches/ + - Get the vanilla (not GApps) android system.img and vendor.img from Waydroid + +3. Copy all the aliendalvik config, binaries and libraries to the target device, see files.txt + +4. Create necessary users, groups, and configure a few more things on the device, see setup-environment.txt + +5. Edit the aliendalvik configuration on the device, see configure.txt + +6. Do a manual test-run of aliendalvik to check if everything works, see running.txt + +7. If you managed to run everything, there's some systemd services and scripts to automate startup of aliendalvik in the automation/ folder diff --git a/automation/scripts/aliendalvik b/automation/scripts/aliendalvik new file mode 100755 index 0000000..1d8ae25 --- /dev/null +++ b/automation/scripts/aliendalvik @@ -0,0 +1,66 @@ +#!/bin/sh + +set -e + +active_wayland_user= + +for session in $(loginctl list-sessions --no-legend | awk '{ print $1 }'); do + if [ "$(loginctl show-session --value -p Type ${session})" != "wayland" ]; then + continue + fi + + if [ "$(loginctl show-session --value -p Class ${session})" != "user" ]; then + continue + fi + + if [ "$(loginctl show-session --value -p Remote ${session})" != "no" ]; then + continue + fi + + if [ "$(loginctl show-session --value -p State ${session})" != "active" ]; then + continue + fi + + active_wayland_user="$(loginctl show-session --value -p Name ${session})" + break +done + +if [ "${active_wayland_user}" == "" ]; then + echo "No active wayland session found" + exit 1 +fi + +data_dir="/home/${active_wayland_user}/.local/share/appsupport/data/" + +rm -f ${data_dir}/alien_boot_completed + +( + while [ ! -f ${data_dir}/alien_boot_completed ]; do + sleep 1; + done + + if [ "$(cat ${data_dir}/alien_boot_completed)" = "1" ]; then + echo "alien bootup finished, running post startup" + +# use the commands from alien-post-startup.sh script here +lxc-attach --name=aliendalvik --lxcpath=/tmp/appsupport -- /system/bin/sh -c "" + +lxc-attach --name=aliendalvik --lxcpath=/tmp/appsupport -- /system/bin/sh -c "source /etc/mkshrc; +# enable gesture navigation +cmd overlay disable com.android.internal.systemui.navbar.gestural +cmd overlay enable com.android.internal.systemui.navbar.gestural" + + systemd-notify --ready + fi +) & + +lxc-start --rcfile=/tmp/appsupport/aliendalvik/config --lxcpath=/tmp/appsupport -n aliendalvik -F + +if [ "$(cat ${data_dir}/alien_boot_completed)" = "2" ]; then + echo "alien crashed" + exit 1 +fi + +echo "alien graceful shutdown" +exit 0 + diff --git a/automation/scripts/aliendalvik-config b/automation/scripts/aliendalvik-config new file mode 100755 index 0000000..0cbe21d --- /dev/null +++ b/automation/scripts/aliendalvik-config @@ -0,0 +1,62 @@ +#!/bin/sh + +set -e + +active_wayland_user= +active_wayland_uid= + +while true; do + for session in $(loginctl list-sessions --no-legend | awk '{ print $1 }'); do + if [ "$(loginctl show-session --value -p Type ${session})" != "wayland" ]; then + continue + fi + + if [ "$(loginctl show-session --value -p Class ${session})" != "user" ]; then + continue + fi + + if [ "$(loginctl show-session --value -p Remote ${session})" != "no" ]; then + continue + fi + + if [ "$(loginctl show-session --value -p State ${session})" != "active" ]; then + continue + fi + + active_wayland_user="$(loginctl show-session --value -p Name ${session})" + active_wayland_uid="$(loginctl show-session --value -p User ${session})" + break + done + + if [ "${active_wayland_user}" == "" ]; then + echo "No active wayland session found, waiting for one" + sleep 5 + continue + fi + + if [ ! -S "/run/user/${active_wayland_uid}/wayland-0" ]; then + echo "No wayland socket for user ${active_wayland_user} found, waiting a bit longer" + sleep 2 + continue + fi + + break +done + +chown ${active_wayland_user}:appsupport-wayland /run/user/${active_wayland_uid}/wayland-0 +chmod 775 /run/user/${active_wayland_uid}/wayland-0 + +rm -f /tmp/appsupport/aliendalvik/* +mkdir -p /tmp/appsupport/aliendalvik/ +cp -r /opt/alien/config/* /tmp/appsupport/aliendalvik/ + +sed -i "s/__UID__/${active_wayland_uid}/g" /tmp/appsupport/aliendalvik/10-bsp_config +sed -i "s/__UID__/${active_wayland_uid}/g" /tmp/appsupport/aliendalvik/20-privilege_config + +mkdir -p /home/${active_wayland_user}/.local/share/appsupport/data/ +chown ${active_wayland_user}:${active_wayland_user} /home/${active_wayland_user}/.local/share/appsupport/ + +data_dir="/home/${active_wayland_user}/.local/share/appsupport/data/" +chown appsupport-root:appsupport-root ${data_dir} + +sed -i "s|__DATA_DIR__|${data_dir}|g" /tmp/appsupport/aliendalvik/10-bsp_config diff --git a/automation/scripts/aliendalvik-setup b/automation/scripts/aliendalvik-setup new file mode 100755 index 0000000..001bb1d --- /dev/null +++ b/automation/scripts/aliendalvik-setup @@ -0,0 +1,30 @@ +#!/bin/sh + +set -e + +mkdir /tmp/from +mkdir /tmp/to +mkdir /tmp/work +mount /opt/alien/system.img /tmp/from +mount -t overlay -o lowerdir=/tmp/from,upperdir=/tmp/to,workdir=/tmp/work overlay /opt/alien/rootfs + +sed -i 's/setprop sys.use_memfd false/#setprop sys.use_memfd false/g' /opt/alien/rootfs/system/etc/init/hw/init.rc + +chmod 777 /dev/binder +chmod 777 /dev/hwbinder +chmod 777 /dev/vndbinder +chmod 777 /dev/dri/card0 + +mkdir /tmp/from2 +mkdir /tmp/to2 +mkdir /tmp/work2 +mkdir /tmp/waydroid-vendor +mount /var/lib/waydroid/images/vendor.img /tmp/from2 +mount -t overlay -o lowerdir=/tmp/from2,upperdir=/tmp/to2,workdir=/tmp/work2 overlay /tmp/waydroid-vendor +rm /tmp/waydroid-vendor/lib64/hw/android.hardware.gatekeeper@1.0-impl.so +rm /tmp/waydroid-vendor/lib/hw/android.hardware.gatekeeper@1.0-impl.so + +mkdir /tmp/waydroid-system +mount /var/lib/waydroid/images/system.img /tmp/waydroid-system +cp /tmp/waydroid-system/system/product/app/webview/webview.apk /opt/alien/rootfs/system/app/webview/webview.apk +cp -r /tmp/waydroid-system/system/product/overlay /opt/alien/rootfs/product/ diff --git a/automation/scripts/aliendalvik-user-dependencies b/automation/scripts/aliendalvik-user-dependencies new file mode 100755 index 0000000..6d1d369 --- /dev/null +++ b/automation/scripts/aliendalvik-user-dependencies @@ -0,0 +1,57 @@ +#!/bin/sh + +set -e + +USER_SERVICES="alienaudio.service alienkeyboard.service apkd-bridge.service apkd-bridge-user.service" + +active_wayland_user= + +for session in $(loginctl list-sessions --no-legend | awk '{ print $1 }'); do + if [ "$(loginctl show-session --value -p Type ${session})" != "wayland" ]; then + continue + fi + + if [ "$(loginctl show-session --value -p Class ${session})" != "user" ]; then + continue + fi + + if [ "$(loginctl show-session --value -p Remote ${session})" != "no" ]; then + continue + fi + + if [ "$(loginctl show-session --value -p State ${session})" != "active" ]; then + continue + fi + + active_wayland_user="$(loginctl show-session --value -p Name ${session})" + break +done + +if [ "${active_wayland_user}" == "" ]; then + echo "No active wayland session found" + exit 1 +fi + +if [ "$1" == "start" ]; then + # User services behave buggy if they're kept running while container is down + # or started without hwservicemanager running in the container. + # So start the services right after hwservicemanager is started in the container. + # + # systemd should ensure that we're always started and stopped in sync with + # aliendalvik.service (because of BindsTo= dependency) + while [ "$(lxc-attach --name=aliendalvik --lxcpath=/tmp/appsupport -- /system/bin/getprop hwservicemanager.ready)" != "true" ]; do + echo "User services startup waiting for hwservicemanager in container" + sleep 1 + done + + for SERVICE in $USER_SERVICES; do + echo "Starting $SERVICE" + systemctl --user -M ${active_wayland_user}@ start ${SERVICE} + done +elif [ "$1" == "stop" ]; then + for SERVICE in $USER_SERVICES; do + echo "Stopping $SERVICE" + systemctl --user -M ${active_wayland_user}@ stop ${SERVICE} + done +fi + diff --git a/automation/systemd-services/system/aliendalvik-config.service b/automation/systemd-services/system/aliendalvik-config.service new file mode 100644 index 0000000..7f89dcb --- /dev/null +++ b/automation/systemd-services/system/aliendalvik-config.service @@ -0,0 +1,8 @@ +[Unit] +Description=Aliendalvik config generator +Requires=systemd-user-sessions.service aliendalvik-setup.service +After=systemd-user-sessions.service aliendalvik-setup.service + +[Service] +Type=oneshot +ExecStart=/usr/bin/aliendalvik-config diff --git a/automation/systemd-services/system/aliendalvik-setup.service b/automation/systemd-services/system/aliendalvik-setup.service new file mode 100644 index 0000000..e0bd5c4 --- /dev/null +++ b/automation/systemd-services/system/aliendalvik-setup.service @@ -0,0 +1,11 @@ +[Unit] +Description=Aliendalvik setup +After=multi-user.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/aliendalvik-setup + +[Install] +WantedBy=graphical.target diff --git a/automation/systemd-services/system/aliendalvik-user-dependencies.service b/automation/systemd-services/system/aliendalvik-user-dependencies.service new file mode 100644 index 0000000..f4c194d --- /dev/null +++ b/automation/systemd-services/system/aliendalvik-user-dependencies.service @@ -0,0 +1,12 @@ +[Unit] +Description=Aliendalvik user dependencies starter +Requires=systemd-user-sessions.service aliendalvik-config.service +BindsTo=aliendalvik.service +After=systemd-user-sessions.service aliendalvik-config.service + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/aliendalvik-user-dependencies start +# ExecStopPost because we also want to run on failure of aliendalvik.service +ExecStopPost=/usr/bin/aliendalvik-user-dependencies stop diff --git a/automation/systemd-services/system/aliendalvik.service b/automation/systemd-services/system/aliendalvik.service new file mode 100644 index 0000000..a328dba --- /dev/null +++ b/automation/systemd-services/system/aliendalvik.service @@ -0,0 +1,13 @@ +[Unit] +Description=Aliendalvik container +Requires=systemd-user-sessions.service network.target lxc-net.service aliendalvik-config.service +BindsTo=aliendalvik-user-dependencies.service +After=systemd-user-sessions.service network.target lxc-net.service aliendalvik-config.service + +[Service] +Type=notify +ExecStart=/usr/bin/aliendalvik +ExecStop=/usr/bin/lxc-attach --name=aliendalvik --lxcpath=/tmp/appsupport -- /system/bin/reboot -p + +[Install] +WantedBy=graphical.target diff --git a/automation/systemd-services/system/apkd-bridge-user-connman-shim.service b/automation/systemd-services/system/apkd-bridge-user-connman-shim.service new file mode 100644 index 0000000..4413af7 --- /dev/null +++ b/automation/systemd-services/system/apkd-bridge-user-connman-shim.service @@ -0,0 +1,10 @@ +[Unit] +Description=Aliendalvik main bridge connman DBus shim +After=dbus.socket +Requires=dbus.socket + +[Service] +Type=dbus +BusName=net.connman +Restart=always +ExecStart=/usr/bin/apkd-bridge-user-connman-shim diff --git a/automation/systemd-services/user/alienaudio.service b/automation/systemd-services/user/alienaudio.service new file mode 100644 index 0000000..dfce235 --- /dev/null +++ b/automation/systemd-services/user/alienaudio.service @@ -0,0 +1,10 @@ +[Unit] +Description=Aliendalvik audio bridge +After=dbus.socket graphical-session.target +Requires=dbus.socket graphical-session.target + +[Service] +Restart=always +RestartSec=5 +ExecStart=/usr/bin/alienaudioservice -d /dev/binder -n /dev/vndbinder -w /dev/hwbinder -p pulseaudio +#ExecStartPost=false diff --git a/automation/systemd-services/user/alienkeyboard-maliit-shim.service b/automation/systemd-services/user/alienkeyboard-maliit-shim.service new file mode 100644 index 0000000..e860f54 --- /dev/null +++ b/automation/systemd-services/user/alienkeyboard-maliit-shim.service @@ -0,0 +1,10 @@ +[Unit] +Description=Aliendalvik keyboard maliit DBus shim +After=dbus.socket graphical-session.target +Requires=dbus.socket graphical-session.target + +[Service] +Type=simple +Restart=always +RestartSec=5 +ExecStart=/usr/bin/alienkeyboard-maliit-shim/alienkeyboard-maliit-shim diff --git a/automation/systemd-services/user/alienkeyboard.service b/automation/systemd-services/user/alienkeyboard.service new file mode 100644 index 0000000..8b279d6 --- /dev/null +++ b/automation/systemd-services/user/alienkeyboard.service @@ -0,0 +1,9 @@ +[Unit] +Description=Aliendalvik keyboard bridge +After=dbus.socket graphical-session.target alienkeyboard-maliit-shim.service +Requires=dbus.socket graphical-session.target alienkeyboard-maliit-shim.service + +[Service] +Restart=always +RestartSec=5 +ExecStart=/usr/bin/alienkeyboardservice diff --git a/automation/systemd-services/user/apkd-bridge-user.service b/automation/systemd-services/user/apkd-bridge-user.service new file mode 100644 index 0000000..f537abd --- /dev/null +++ b/automation/systemd-services/user/apkd-bridge-user.service @@ -0,0 +1,11 @@ +[Unit] +Description=Aliendalvik main bridge +After=dbus.socket graphical-session.target +Requires=dbus.socket graphical-session.target + +[Service] +Restart=always +ExecStart=/usr/bin/apkd-bridge-user + +# looks like it doesn't clean up after itself +ExecStopPost=/usr/bin/rm -f /tmp/apkd/ diff --git a/automation/systemd-services/user/apkd-bridge.service b/automation/systemd-services/user/apkd-bridge.service new file mode 100644 index 0000000..3e7b96c --- /dev/null +++ b/automation/systemd-services/user/apkd-bridge.service @@ -0,0 +1,11 @@ +[Unit] +Description=Aliendalvik control bridge +After=dbus.socket graphical-session.target +Requires=dbus.socket graphical-session.target + +[Service] +Type=dbus +BusName=com.jolla.apkd +Restart=always +Environment="QTCONTACTS_MANAGER_OVERRIDE=folks" +ExecStart=/usr/bin/apkd-bridge diff --git a/configure.txt b/configure.txt new file mode 100644 index 0000000..b2778a7 --- /dev/null +++ b/configure.txt @@ -0,0 +1,65 @@ +- remove the android settings app from blocklisted apps so it shows up in your apps for testing + remove "com.android.settings" entry from /etc/apkd/app-blacklist + +- edit central aliendalvik configuration in /etc/appsupport.conf.d/00-defaults.conf + comment out "RequiredDevNodes=ashmem" + comment out "DevNodes=ion" + +- edit central aliendalvik configuration in /etc/appsupport.conf.d/10-hybris.conf + comment out the 3 "Proxies=" entries (we don't have any libhybris android HALs running underneath that we can proxy into the container) + comment out all the entries in "[Features]" block + +- edit central aliendalvik configuration in /etc/appsupport.conf.d/80-aas-config.conf + set "DataRoot=/opt/alien/" + set "StoragePath=/opt/alien/data/media/0" + set "WaylandSocketPath=/run/user/100000/wayland-0" + set "BinderDev=binder" + set "HwBinderDev=hwbinder" + set "VndBinderDev=vndbinder" + set "PackageBlacklistFiles=/etc/apkd/app-blacklist" + set "NotifBlacklistFiles=/etc/apkd/notif-blacklist" + +- edit LXC configuration in /tmp/appsupport/aliendalvik/10-bsp_config + replace "/dev/puddlejumper" with "/dev/binder" + replace "/dev/hwpuddlejumper" with "/dev/hwbinder" + replace "/dev/vndpuddlejumper" with "/dev/vndbinder" + comment out the /dev/ashmem, /dev/ion, /dev/uhid and /dev/kgsl-3d0 mounts + replace "/home/.android/data" with "__DATA_DIR__" + replace "/run/display" mount with "/run/user/__UID__/wayland-0 run/display/wayland-0 none bind,nodev,nosuid,create=file 0 0" + replace "/vendor" with "/tmp/waydroid-vendor" + comment out /odm/lib, /odm/lib64, /system/etc/apns-conf.xml, /dev/alien_video32, /dev/alien_video33 and /dev/video mounts + comment out /home/defaultuser, /home/defaultuser/android_storage and /run/media/defaultuser mounts + +- edit LXC configuration in /tmp/appsupport/aliendalvik/20-privilege_config + # add a line to start properly on apparmor devices + lxc.apparmor.profile = unconfined + + # replace "lxc.idmap = u 100000 100000 1" line with + lxc.idmap = u 100000 __UID__ 1 + + # replace "lxc.idmap = g 100000 100000 1" line with + lxc.idmap = g 100000 __UID__ 1 + +- edit LXC configuration in /tmp/appsupport/aliendalvik/30-net_config + comment out tmpfs mount to "sys/fs/selinux" + +- edit android props in /tmp/appsupport/aliendalvik/generated_props + comment out these props: ro.vendor.extension_library, ro.hardware.vulkan, ro.board.platform + update these props "ro.alien.no_camera=1", "ro.alien.no_soundtrigger=1", "ro.com.android.mobiledata=false" + when you're on a pinephone pro, set "ro.opengles.version=196609" + add these props at the end: + ro.alien.qti.c2.service=0 + ro.alien.qti.allocator.service=0 + debug.stagefright.ccodec=0 + ro.hardware.gralloc=gbm + ro.hardware.egl=mesa + sys.use_memfd=true + ro.alien.logcatdump=1 + + update DPI and display size values for your device + ro.sf.lcd_density=DPI + ro.alien.host.display_width=WIDTH + ro.alien.host.display_height=HEIGHT + ro.alien.host.dpi_x=DPI + ro.alien.host.dpi_y=DPI + diff --git a/files.txt b/files.txt new file mode 100644 index 0000000..f4d1ce6 --- /dev/null +++ b/files.txt @@ -0,0 +1,111 @@ +note: a lot of these files are just symlinks, just copy the symlink in that case (in case of folders also copy the symlink, no need to copy what's inside) + +binaries: + +/usr/bin/alienaudioservice +/usr/bin/alienkeyboardservice +/usr/bin/apkd-bridge +/usr/bin/apkd-bridge-user +/usr/bin/apkd-harbour-rpm-post +/usr/bin/apkd-harbour-rpm-preun +/usr/bin/apkd-install +/usr/bin/apkd-install-preload +/usr/bin/apkd-launcher +/usr/bin/apkd-uninstall + + +libraries (some of those are open source, we can probably build them ourselves): + +/usr/lib/libalienaudioservice.so.1 +/usr/lib/libalienaudioservice.so.1.12 +/usr/lib/libalienaudioservice.so.1.12.0 +/usr/lib/libambermpris.so.1 +/usr/lib/libambermpris.so.1.1 +/usr/lib/libambermpris.so.1.1.10 +/usr/lib/libapkd.so.1 +/usr/lib/libapkd.so.1.0 +/usr/lib/libapkd.so.1.0.0 +/usr/lib/libconnman-qt5.so.1 +/usr/lib/libconnman-qt5.so.1.3 +/usr/lib/libconnman-qt5.so.1.3.0 +/usr/lib/libdbusaccess.so.1 +/usr/lib/libdbusaccess.so.1.0 +/usr/lib/libdbusaccess.so.1.0.18 +/usr/lib/libiphb.so.0 +/usr/lib/libiphb.so.0.0.0 +/usr/lib/libkeepalive.so.1 +/usr/lib/libkeepalive.so.1.8 +/usr/lib/libkeepalive.so.1.8.9 +/usr/lib/libkeepalive-glib.so.1 +/usr/lib/libkeepalive-glib.so.1.0.0 +/usr/lib/libnemonotifications-qt5.so.1 +/usr/lib/libnemonotifications-qt5.so.1.2 +/usr/lib/libnemonotifications-qt5.so.1.2.18 +/usr/lib/libngf0-0.24.so.0 +/usr/lib/libngf0-0.24.so.0.1.1 +/usr/lib/libprofile.so.0 +/usr/lib/libresource.so.0 +/usr/lib/libresource.so.0.0.18 +/usr/lib/libresource-glib.so.0 +/usr/lib/libresource-glib.so.0.0.18 +/usr/lib/libsailfishpolicy.so.0 +/usr/lib/libsailfishpolicy.so.0.4 +/usr/lib/libsailfishpolicy.so.0.4.17 +/usr/lib/qt5/qml/Sailfish/Policy/libsailfishpolicyplugin.so +/usr/lib/alienaudioservice/pulseaudio.so +/usr/lib/alienaudioservice/sailfish.so +/usr/lib/apkd-bridge-user/available/libgeo-qtpositioning.so +/usr/lib/apkd-bridge-user/libgeo-qtpositioning.so + + +config: + +/etc/aas-seccomp-profile +/etc/apkd/app-blacklist +/etc/apkd/notif-blacklist +/etc/appsupport.conf.d/00-defaults.conf +/etc/appsupport.conf.d/10-hybris.conf +/etc/appsupport.conf.d/80-aas-config.conf +/etc/appsupport.conf.d/mount-hooks/10-mount-rootfs.sh +/etc/appsupport.conf.d/property-post-hooks/50-config-properties.sh +/etc/appsupport.conf.d/property-post-hooks/80-create-container-nodes.sh +/etc/appsupport.conf.d/property-post-hooks/90-create-storage-directory.sh +/etc/appsupport.conf.d/property-pre-hooks/10-codecs.sh +/etc/appsupport.conf.d/property-pre-hooks/20-vulkan.sh +/etc/appsupport.conf.d/property-pre-hooks/50-networking.sh +/etc/appsupport.conf.d/property-pre-hooks/50-wait-lipstick.sh +/etc/gbinder.conf +/etc/gbinder.d/alien.conf + + +aliendalvik build props + system and vendor image: + +/opt/alien/build.prop +/opt/alien/system.img +/opt/alien/vendor/etc/media_codecs.xml +/opt/alien/vendor/etc/media_codecs_google_audio.xml +/opt/alien/vendor/etc/media_codecs_google_telephony.xml +/opt/alien/vendor/etc/media_codecs_google_video.xml +/opt/alien/vendor/etc/media_codecs_vendor_audio.xml +/opt/alien/vendor/etc/media_profiles_V1_0.xml +/opt/alien/vendor/etc/video_system_specs.json +/opt/alien/vendor/etc/vintf/manifest.xml +/opt/alien/vendor/firmware +/opt/alien/vendor/lib +/opt/alien/vendor/lib64 + + +runtime generated LXC config: + +/tmp/appsupport/aliendalvik/10-bsp_config +/tmp/appsupport/aliendalvik/20-privilege_config +/tmp/appsupport/aliendalvik/30-net_config +/tmp/appsupport/aliendalvik/40-rootfs_config +/tmp/appsupport/aliendalvik/alien.user +/tmp/appsupport/aliendalvik/config +/tmp/appsupport/aliendalvik/generated_props + + +optional script with some commands to run inside android container after startup: + +/usr/libexec/appsupport/alien-post-startup.sh diff --git a/other-docs/random-reverse-engineering-docs.txt b/other-docs/random-reverse-engineering-docs.txt new file mode 100644 index 0000000..79f7ae7 --- /dev/null +++ b/other-docs/random-reverse-engineering-docs.txt @@ -0,0 +1,582 @@ +general stuff + - we can't use ashmem (sailfish has it) because that was dropped from mainline kernels + - android supports memfd these days, but that has to be enabled via prop sys.use_memfd + - this is overwritten by android init system though + - need to comment the override out it system/etc/init/hw/init.rc (can use overlayfs for that) + + - for graphics, we mostly need these props just like waydroid + ro.hardware.gralloc=gbm + ro.hardware.egl=mesa + +apkd: + - providing some kind of host integration + - probably for startup and management of the container + - daemon running as root listening to com.jolla.apkd.control on dbus + - user daemon apkd-bridge + - install dbus configs not into /etc/ but into /usr/share/dbus-1/system.d/ + - appears to want to talk to systemd about aliendalvik.service + - that service needs to be installed + +apkd-bridge: + - deps: + - libnemonotifications compiled from jolla + - libqt5contacts.so + - sailfish-policy package (for library) from phone + - (maybe not necessary) group privileged needs to exist, otherwise error + - package packagekit-qt5 for libraries + - forwards notifications and app launch requests to host + - runs as user on host + - only registers it's launcher thing on the binder if it sees that aliendalvik.service is running + - can check with binder-list -d /dev/binder for alien.notification and alien.launcher + - still doesn't seem to launch apps successfully though + - ahaa, it seems like it only works when all HALs sucessfully load or something? + +alienaudioservice + - needs libalienaudioservice + - needs symlink from /usr/lib64 to /usr/lib :( + - appears to need /etc/gbinder.conf and /etc/gbinder.d/alien.conf + - alienaudioservice -d /dev/binder -n /dev/vndbinder -w /dev/hwbinder --verbose + - ugh, the thing doesn't read configuration in /etc/appsupport.d/, so need to set binder devices via argument + - now wants to connect to default_alien and AlienAudioService: fails there + - ooof this one is tricky + - it appears to be something on /dev/vndbinder + - oh wow, it appears to work when starting android shortly before + - probably it needs a service manager to be running to register the services + + - ERROR: service: Cannot connect to alien.audio.control/android.media.IAlienAudioControlService + - seems to not be a problem/blocking at this stage, this service starts up fairly late in android + - nothing to worry about as long as early startup isn't through + + - what is the problem is that this enumeration of audio devices doesn't happen + - that's what it looks like on stdout with --verbose + [AlienAudioService] service: Shared buffer fd 31 (0x7dd32d1000) size 7680 + [AlienAudioService] service: Output standby (0/125) + [AlienAudioService] service: Set parameters 125: "routing=2" + [AlienAudioService] service: Open output (0) io_handle(133) devices(2) flags(0x00000008) sample_rate(48000) channel_mask(3) format(1) -> 0 + + - ugh.. the problem is the UID mapping in lxc container config.. the whole thing has to run as the UID mapped there + + - alright this thing works pretty well now + - seems that with pipewire-pulse, sound output stops after a while + - lets just use pulseaudio on the host for the time being + +apkd-bridge-user: + - not needed to finish bootup + - fairly independent from other things it seems. + - what it does is bridge the HALs in #Proxies=android.hardware.graphics.allocator@4.0 et al into the container + - when Proxies are set in config, Service 'package_native' will wait and block boot for these + - install libQt5Sensors.so.5 from pacman (don't copy from dev, must match installed QT version) + - for gps stuff it needs (somewhat optional, also starts without it) /usr/lib64/apkd-bridge-user/libgeo-qtpositioning.so (jolla pkg apkd-plugin-geo-qtpositioning) + - that pulls in libQt5Positioning.so (arch pkg qt5-location) + + + - aha, actually this thing somehow provides HALs on hwbinder for gnss, sensors, wifi.supplicant, wifi + - it does a ton more stuff when looking at strings on the binary... + - it also does the mpris indicator + - yup, it also adds service on the normal binder: alien.NativeCall, alien.mediabrowsercontrol.bridge, alien.mce, wifinl80211 + + - arghhhh, I've spent 6 hours or something looking into why it doesn't install services on the hwbinder + - and it ended up being another damn UID thing: ro.alien.privileged_host_uid needs to be set to the one that's mapped to 1 apparently + +system/vendor: + - general strategy: use aliendalvik vendor blob and put waydroid vendor blob on top (alien doesn't ship mesa drivers that work with mainline) + - symlinks of /etc/media_* must be removed and also replaced with waydroid ones + - otherwise signal won't start? + + - graphics.allocator HAL? seems it's fine to comment that out + - apparently it's also possible to make it work by installing the waydroid vendor/bin stuff + + - we can't *quite* reuse the normal aliendalvik vendor blob + - in alien vendor lib(64)/hw points to /host_vendor/lib(64)/hw + - we need lib(64) pointing to /host_vendor/lib(64) + - why? because /host_vendor is waydroid vendor, and we need to access egl drivers in there (and also various libs these drivers need) + + - also in etc/vintf/manifest.xml, android.hardware.power and android.hardware.graphics.allocator need to be commented out + - there's no power HAL nor graphics allocator HAL available + - both are forwarded from hybris on sailfish + - graphics allocator we could provide via waydroid vendor, but doesn't seem to get us any benefits + +video codecs: + - with libhybris we could forward the HW decoder directly it seems + + - looks like we fail to decode h264/h265, but not in MKV container (test-videos.co.uk/bigbuckbunny is very helpful) + - hmm with the mediaextractor minijail thing we did for Signal this seems to work, just super slow + - so debug.stagefright.ccodec=0 makes stagefright try to use sw codecs + - ccodec appears to the abstraction for hw codecs, going through libcodec2_client into libcodec2_vndk.so or libcodec2_hidl_client.so + - it tries to use libcodec2_vndk.so by default, that tries to access /dev/ion and crashes + - looks like ro.alien.hwservicemanager and ro.alien.host_has_hwservicemanager12 play a role here, they are used in all these libs + [tester@suagaze system-img]$ grep -r ro.alien.hwservicemanager + grep: system/lib64/libhidlbase.so: binary file matches + grep: system/lib64/libcodec2_client.so: binary file matches + grep: system/lib/libhidlbase.so: binary file matches + grep: system/lib/libcodec2_client.so: binary file matches + grep: system/apex/com.android.media.swcodec/lib64/libhidlbase.so: binary file matches + grep: system/apex/com.android.media/lib64/extractors/libmpeg2extractor.so: binary file matches + grep: system/apex/com.android.neuralnetworks/lib64/libneuralnetworks.so: binary file matches + grep: system/apex/com.android.neuralnetworks/lib/libneuralnetworks.so: binary file matches + - when unsetting ro.alien.hwservicemanager, android.hardware.media.omx fails to start and we hang when starting video + - appears to crash in libminijail due to: blocked syscall: recvfrom + - there should be policy for that in /vendor/etc/seccomp_policy/mediaswcodec.policy, but that file doesn't exist + - now it's complaining about /host_vendor/etc/seccomp_policy/mediacodec.policy, give him that too + - looks a lot like ro.alien.hwservicemanager=0 and debug.stagefright.ccodec=0 do the same thing + + - hmm couldn't figure that out, I feel like this debug message plays a role + Unsupported profile 4 for video/mp4v-es + + - oh there's also a few properties that can be set by appsupport-generate-config tool: + - ro.media.xml_variant.codecs, ro.media.xml_variant.codecs_performance, ro.media.xml_variant.profiles + - also CodecXmlSuffix in config + + - playing videos in telegram doesn't work + + - in Signal, getting called gives us a mediaextractor crash + - problem seems to be minijail blocking syscalls + - works by adding /opt/alien/vendor/etc/seccomp_policy/mediaextractor.policy with this content + - https://github.com/waydroid/android_external_stagefright-plugins/blob/da49cdba7b938ec9d973b9a74c9aac210b55bc8e/codec2/seccomp_policy/android.hardware.media.c2%401.1-ffmpeg-arm64.policy + - but remove all the fancy comparisons and make it always 1, otherwise filter won't compile + + - outgoing call on whatsapp to iphone, voip connection takes super long +08-09 10:41:27.164 140 272 I WindowManager: Input event dispatching timed out sending to com.whatsapp/com.whatsapp.voipcalling.VoipActivityV2. Reason: ad09381 com.whatsapp/com.whatsapp.voipcalling.VoipActivityV2 (server) is not responding. Waited 5005ms for FocusEvent(hasFocus=true) + + +input/OSK: + - normal zwp_text_input through wayland appears to actually work + - but it's buggy and crashes on preedit_string(null) + - this is explicitly legal according to protocol + - hack might be to not send preedit_string with NIL string?? + - it's actually *very* messy + - set_surrounding_text() only returns the text that's before the cursor, nothing behind it + - it also doesn't handle selected text at all + - preedit_string() doesn't appear to be handled at all + - commit_string() is only handled when cursor is at 0 (maybe this is connected to an empty set_surrounded_text() coming in before) + - or when doing commit_string() twice, but that might be the set_surrounded_text() reason + - either way, any commit_string() causes it to disable() and re-enable() the input panel + - this causes it to never disable() it anymore later. + - oh wow even better the damn thing seems to append "\n" to any string + - actually emulating normal wl_keyboard events might be our best bet + - then the auto-hide should keep working, and we're left with the auto-hide bug only for the emoji panel + + - sailfish uses maliit and a custom keyboard on top of it + - maliit itself just spawns a fullscreens wayland surface to show the OSK + - yay, it's using qt_extended_surface protocol extension to implement always-on-top (https://github.com/qt/qtwayland/blob/dev/src/extensions/surface-extension.xml) + - actually that protocol doesn't seem too bad + - small dump of init of the OSK surface + [3342860.994] -> wl_compositor@4.create_surface(new id wl_surface@20) + [3342861.309] -> wl_registry@2.bind(11, "wl_shell", 1, new id [unknown]@21) + [3342861.565] -> wl_shell@21.get_shell_surface(new id wl_shell_surface@22, wl_surface@20) + [3342861.684] -> qt_surface_extension@9.get_extended_surface(new id qt_extended_surface@23, wl_surface@20) + [3342861.806] -> wl_shell_surface@22.set_title("") + [3342861.866] -> wl_shell_surface@22.set_class("maliit-server") + [3342861.907] -> wl_shell_surface@22.set_toplevel() + [3342861.947] -> wl_surface@20.set_buffer_scale(1) + [3342861.997] -> qt_extended_surface@23.set_content_orientation_mask(0) + [3342862.040] -> qt_extended_surface@23.set_window_flags(2) + [3342862.128] -> wl_shell_surface@22.set_fullscreen(0, 0, nil) + [3342862.208] -> wl_surface@20.set_buffer_transform(0) + [3342862.248] -> wl_surface@20.commit() + [3342863.572] -> wl_compositor@4.create_region(new id wl_region@24) + [3342863.686] -> wl_region@24.add(0, 2520, 1080, 0) + [3342863.796] -> wl_surface@20.set_opaque_region(wl_region@24) + [3342863.839] -> wl_region@24.destroy() + [3342863.989] -> qt_extended_surface@23.update_generic_property("CATEGORY", array) + [3342864.076] -> qt_extended_surface@23.update_generic_property("MOUSE_REGION", array) + [3342910.604] -> wl_compositor@4.create_surface(new id wl_surface@25) + + - maybe zwp_input_panel_surface_v1 is what we want for that actually + + - it seems that on sailfish, all IM/text input communication with OSK goes through peer-to-peer dbus socket, zero wayland involved + - /run/user/uid/maliit-server/dbus-socket + - could sniff that with advanced and very fancy eBPF stuff: https://bulimov.me/post/2021/12/02/unix-socket-snoop/, https://github.com/mechpen/sockdump + - qt apps talk directly on that private dbus (in qt it proabably works via IM plugin, set using global QT_IM_MODULE=Maliit) + - maliit also appears to support zwp_input_method_context_v1 + - if we implement that in mutter, we could make communication Gtk<->maliit go through that + - that'd be what we want for OSK's in the future either way + - alienkeyboardservice talks directly to that socket just as qt + - oh hey we can snoop that using QDBUS_DEBUG=1 alienkeyboardservice + - uhh okay this is not too bad + - maybe we could shim a few things and keep using wl_text_input_v3 + + - shifting up input fields on android works via maliit + - + - could try to shim that? + - or we just run a full blown maliit as our keyboard + - possibly supporting zwp_input_method_context_v1 is "all" we need for that in mutter + - apparently there's also input_method_v2 from purism (https://lists.freedesktop.org/archives/wayland-devel/2018-August/039255.html) + - seems not really worth it to implement v1 when it will get replaced anyway + + - clipboard sharing works on sailfish from container to host, not other way round + - seems that sends proper wl_data_source.offer() via surfaceflinger, neat.... + + - alienkeyboardservice: + - yayy, this thing has a -d argument for the binder dev, but it doesn't actually use it + - can just use hex editor and change the binder dev in the binary, it's a NUL-terminated string, easy + - talks to the inputmethod jolla inside android + - talks to maliit-server over dbus p2p socket + - still not sure how to enable debugging there, strings suggests it has a verbose mode, no idea how it works + - we might want to shim maliit for the text-input shifting behavior inside android + + - oh well, shimming maliit was nicely possible with some fancy python things + - buuut the damn thing crashes when wl_text_input is enabled at same time as alienkeyboard thingy + - only solution for us is to kill wl_text_input (their implementation is super duper buggy anyway) + - add a WAYLAND_DISABLE_PROTOCOL env var to wayland + - and make our shim a small wayland client for zwp_text_input + - pip3 install --user --break-system-packages pywayland + - python3 -m pywayland.scanner --with-protocols -o protocols + + - oof, this is getting more and more tricky + - had to go the whole route and disable wl_text_input_v3 for alien + - now it does work, but the damn python dbus+wayland thing I wrote is pretty weird + + - so getting a working keyboard now needs + - python fake-server.py + - python test.py + - alienkeyboardservice + +compositor things: + - wayland socket is located at /run/display and is world-read+writeable on sailfish + - this is to allow surfaceflinger in the android container (with different user) to access it + - seems a bit dangerous that it's also accessible to random android processes? + - looks like we can create a separate user+group for SurfaceFlinger (it runs with UID 501000) + - then chown wayland socket for that group and make it 775 + + - okay fun, lipstick also implements a surface role for wayland: alien_manager / alien_surface + - looks like that is actually just a way of working around that lipstick doesn't do xdg-toplevel/xdg-wm + - seems like because of that we get to see the bugs now + - tried implementing the protocol in mutter, but doing two surface roles at the same time is a bad idea (and surfaceflinger really wants to) + + - surfaceflinger crashes in wl_log() when enabling wayland debugging via debug.sf.wayland + + - so surfaceflinger crashes on closing the last open window, then opening a new one, then touching it + - we send xdg_wm_base pings on input to windows to make sure they're alive + - it seems that when it sees a ping in some cases, it crashes when handling the event + - disabling pinging in mutter seems to do the trick + + - also surfaceflinger sometimes accesses xdg_surfaces that have implicitly been freed after it requested wl_surface.destroy() + - causes client error from libwayland, tearing down the connection + - these can be worked around by making those client errors non-fatal in wayland + - another workaround seems to be waiting a bit longer with freeing the wl_resource on surface destroy in mutter + - REPRODUCER: open netflix, error appears and click "learn more", app crashes and surfaceflinger fucks up + - REPRODUCER: or open other apps and click the back button to leave them + Jul 12 15:36:19 oneplus6 gnome-shell[448812]: [4197137.171] -> xdg_surface#42.configure(93) + Jul 12 15:36:19 oneplus6 gnome-shell[448812]: [4197137.201] -> wl_keyboard#12.leave(301, wl_surface#41) + Jul 12 15:36:19 oneplus6 gnome-shell[448812]: [4197137.214] -> zwp_text_input_v3#3.leave(wl_surface#41) + Jul 12 15:36:19 oneplus6 gnome-shell[448812]: [4197141.457] wl_surface#41.destroy() + Jul 12 15:36:19 oneplus6 gnome-shell[448812]: [4197167.465] -> wl_display#1.delete_id(33) + Jul 12 15:36:19 oneplus6 gnome-shell[448812]: [4197167.501] -> wl_display#1.delete_id(42) + Jul 12 15:36:19 oneplus6 gnome-shell[448812]: [4197167.538] -> wl_display#1.delete_id(41) + Jul 12 15:36:19 oneplus6 gnome-shell[448812]: [4197167.549] wl_display#1.sync(new id wl_callback#46) + Jul 12 15:36:19 oneplus6 gnome-shell[448812]: [4197167.557] -> wl_callback#46.done(301) + Jul 12 15:36:19 oneplus6 gnome-shell[448812]: [4197167.563] -> wl_display#1.delete_id(46) + Jul 12 15:36:19 oneplus6 gnome-shell[448812]: [4197167.780] -> wl_display#1.error(wl_display#1, 0, "invalid object 42") + Jul 12 15:36:19 oneplus6 gnome-shell[448812]: WL: error in client communication (pid 456513) + - another occurence + Jul 12 14:52:47 oneplus6 gnome-shell[425720]: [1585117.972] -> wl_display@1.error(wl_display@1, 1, "invalid arguments for wl_surface@55.attach") + Jul 12 14:52:47 oneplus6 gnome-shell[425720]: WL: unknown object (2117946272), message attach(?oii) + Jul 12 14:52:47 oneplus6 gnome-shell[425720]: WL: error in client communication (pid 439093) + + - when starting apps, they often only start drawing on touch input + - could have something to do with us only focusing the app on input? + - maybe it's the configure() event we send them when focusing + + - scaling is borked, on hidpi alien windows are blurry + - lipstick supports wl_output, but does wl_output.scale(1), apparently scaling is done via env variable or smth + - can fix that by reading the wm_class and then special-casing alien windows in mutter + + - it seems they're leaking their wl_region's, lovely... + - sailfish sets opaque regions too, good thing their phones have so much ram :D + + - we also get our fair share of bugs :) + - looks like we sometimes send zwp_text_input.leave event after wl_surface.destroy() + - REPRODUCER: sometimes this works: open netflix, error appears and click "learn more", now app crashes + Jul 12 14:46:10 oneplus6 gnome-shell[425720]: [1187342.350] wl_surface@34.destroy() + Jul 12 14:46:10 oneplus6 gnome-shell[425720]: [1187342.532] -> zwp_text_input_v3@3.leave(wl_surface@34) + Jul 12 14:46:10 oneplus6 gnome-shell[425720]: WL: error marshalling arguments for leave (signature uo): null value passed for arg 1 + + - on the pinephone pro, we crash after a while in the gallium driver + - fixed by setting different openglES version: ro.opengles.version=196609 + +network access/fake wifi: + - there's two props that exclude each other: ro.alien.sailfish_networking ro.alien.default_networking + - sailfish uses the former by default, controlled by /etc/appsupport.conf.d/property-pre-hooks/50-networking.sh + - ah damn, it's also provided somehow by apkd-bridge-user + + - waydroid uses lxc networking spawning an eth0 inside the container + - sets up manually a waydroid0 interface on host with firwall and masquerading (https://github.com/waydroid/waydroid/blob/822598850d0c16a968fb8ea4b5768d4ba323f0e5/data/scripts/waydroid-net.sh) + - see for lxc config https://github.com/waydroid/waydroid/blob/822598850d0c16a968fb8ea4b5768d4ba323f0e5/data/configs/config_1 + - probably due to being eth0, this requires fake wifi stuff + - waydroid has a fake wifi thing controlled by persist.waydroid.fake_wifi (https://github.com/waydroid/android_vendor_waydroid/commit/629b76f254d07d373092f7c18efcbefbc0f9ad94) + - seems to be per app (https://github.com/waydroid/docs/blob/9b5be41b9233aecf201471596fc6e84f7423ab85/usage/waydroid-prop-options.md?plain=1#L22) + - not used by default? + + - alright, alien also uses lxc to install a bridge into the container + - but at the same time it implements a wifi HAL to pretend to be connected to wifi + - it asks connman for connected wifi and then returns that SSID, interesting + - need to copy lxc-net from device, seems that arch lxc no longer ships that script + - need to shim connman dbus + - what we're looking for from the contianer is starting the scanner, then notifying the net + com.jolla.apkd.wifi: apkd: android.net.wifi.nl80211.IWifiScannerImpl 10 + + com.jolla.apkd.wifi: apkd - supplicant - notifyWifiNetwork 0xaaaae832fac0 "iPhone von Jonas" + + - connman installed on system is still needed (probably only for the dbus interface definition) + + - alright took me like another hour to get the shim working for android to pick up the network + - but then android said "no internet", I thought I'm missing something else in the shim + - after two more hours of randomly shimming other apis and trying whatever finally figured it out + - android can't resolve dns, and its not because of the shim + - it'S because it uses the dns cache of the host and sets its dns 127.0.0.1 + - connman provided a resolver on localhost:53, and the systemd-resolved NM uses apparently doesn't answer those queries + - can test with "dig heise.de @127.0.0.1" + - resolved listens on 127.0.0.53 by default + - setting DNSStubListenerExtra=127.0.0.1 makes it work, arghhhhh. + +cellular network + - android is always looking for iRadio HAL, need to check if that one's exposed by apkd-bridge on jolla + - things work just fine with the wifi shim for now + - looks like exposing cellular info via connman shim doesn't work :/ + - actually iRadio HAL is not exposed by any apkd-* tools, instead it's exposed by ofono it seems + - that's unfortunate, it's probably bound to ofono making use of hybris radio HALs somehow + - yup, there's /usr/lib64/ofono/plugins/alienbinderplugin.so + +gps + - good news, appears to go via geoclue + - kinda works OOTB, but location is not as accurate as on host it seems + - apkd-bridge-user has debug output for it + - there's a nice gtk app for debugging: Satellite on flathub (it talks to ModemManager directly) + - turns out modemManager doesn't do gps without a sim card + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/183 + + - okay, so there's the geoclue2 API backend for qtpositioning, that's good + - sadly it doesn't have a satellites API anymore like Geoclue dbus api had + - alright, let's build qtLocation 5.0 ourselves + - looks like it really wants to use the old Geoclue1 api, the plugin has a higher prio + - can run geoclue with debug using sudo G_MESSAGES_DEBUG=Geoclue /usr/lib/geoclue + - aha, here's our problem: the thing only requests shit accuracy from geoclue + - seems it relies on a thing that both the android and geoclue1 plugin do: set default accuracy to ALL in plugin constructor + - if we do that too, things work!! + +sensors + - qtsensors has a fairly minimal iio-sensor-proxy backend + - no support for proximity + - fairly easy, can wire that up quickly + - no accellerometer (iio-sensor-proxy doesn't expose) + - https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/merge_requests/193 + - first need to allow querying iio-sensor-proxy as user by changing polkit + /usr/share/polkit-1/actions/net.hadess.SensorProxy.policy + - for compass access also need to change dbus policy + /usr/share/dbus-1/system.d/net.hadess.SensorProxy.conf + - compass doesn't have a backend that works on most phones yet, see + https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/merge_requests/316 + - rotation/gyro sensor is not really wanted in iio-sensor-proxy without a use-case + https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/issues/221 + - seems that messengers use proximity sensor for audio route during voice messages actually + - looool telegram combines it with accelerometer readings it seems, how insane + - seems like also android makes use of orientation sensor and rotates apps, we probably don't want that + + +app rotation + - android does it itself based on orientation sensor readings + - looks weird and interferes with mutter, rotating, also doesn't adhere to "allow autorotation" gsetting + - can disable with "settings put system accelerometer_rotation 0;" in container + +vibration + - can debug feedbackd with G_MESSAGES_DEBUG=all /usr/lib/feedbackd + - doesn't work by default + - seems to be provided by alienaudioservice actually + - more specifically by the sailfish plugin, interesting + - let's try loading the plugin + - fails without these libs: libprofile, libresource, libresource-glib, libngf0 + - now it hangs up looking for org.maemo.resource.manager on dbus it seems + - is exposed by ohmd (open hardware manager) + - more specifically by this plugin it seems https://github.com/sailfishos/ohm-plugins-misc/blob/master/plugins/resource/ + - trace of system dbus on initialization here: dbus-trace-alienaudio-sailfish-plugin.txt + - let's shim it, ah neat preexisting stuff to shim the policy manager + https://github.com/sailfishos/libresource/blob/master/tests/dbus/dummy-policy-manager.py + + +audio routing: + - goes through alienaudioservice sailfish plugin + https://github.com/sailfishos/ohm-plugins-misc/blob/master/plugins/route/org.nemomobile.Route.Manager.xml + https://github.com/sailfishos/ohm-plugins-misc/blob/master/plugins/route/ohm-ext/route.h + + - routing to earpiece during voice messages that goes a bit differently + - sailfish doesn't re-route here + - app reads sensors and sets media role: + [AlienAudioService] sailfish: Stream 29 set 'media.role'='phone' + [AlienAudioService] sailfish: Stream 29 set 'module-stream-restore.id'='sink-input-by-media-role:voip' + + - maybe this is how it works on android and we're supposed to route to earpiece now? + +lockscreen calls: + - seems sailfish doesn't do fullscreen intents for incoming calls + - we can possibly hack that and put app into lockscreen overlay by looking at notification + - resident == true && category == call + - activate default action and show surface as lockscreen overlay + - tricky: telegram behaves differently depending on screen was off or on + - when off, it shows swipy thing to not accidentlly click, when on, it shows clicky thing + + - what about ongoing calls on lockscreen + - there's again a notification, maybe can use that still + +ringtone silencing + - on sailfish, ngfd just enforces the silent profile by killing haptics + https://github.com/sailfishos/ngfd/blob/master/src/ngf/haptic.c#L187 + - seems like same goes for ringtone, the stream is created, but appears to be killed by pulse based on media.role=ringing + - what do we do? + - in the future, call ringtone and vibration will be played by notification server anyway + - we know when an alien call is ringing, so can probably kill vibration and mute the alien stream in our audio shim to allow notification server taking over + - kills custom ringtones on android, oh well + - won't work for alarm clocks, there we don't know about ringing state + + - or we just let things through normally and enforce silent profile in the shim for both haptics and audio on incoming call + - maybe that's the best way for now + +contacts sync: + - another tricky one, they replace system contacts UI and database with host one + - breaks things for us of course + - we might have to shim com.jolla.contacts.ui dbus + - we can see createContact() being called from android + - handled by apkd-bridge + - according to changelogs, bridge "Sync all contacts to alien on service connect" + - to ensure it works, on startup of container, look for this + com.jolla.apkd.binder: Connected to Alien Service alien.contacts + com.jolla.apkd.contacts: Checking if Alien contacts service is ready for synchronisation + com.jolla.apkd.contacts: Alien contacts service is available, performing initial sync + Successfully notified Alien contacts service of current contacts. + + - also contact modification should be detected + "Notifying Alien contacts service of contact addition:" + + - okayy, so this talks to libQtContacts and a custom sqlite backend on sailfish + - wowwww, we're lucky, there's a libfolks backend from ~2010 for QtCOntacts available + - https://wiki.gnome.org/Projects/Folks/QtFolks + - https://blog.barisione.org/2010/11/17/folks-and-qtcontacts/ + - https://launchpad.net/~m-gehre/+archive/ubuntu/ppa/+packages + - damn was finding those sources hard + - okay with a few adjustments it builds and the demo confirms it works, yaaaaay! + - now still have to make sure it gets loaded and used by apkd-bridge + - ah wow that was super tricky, because strings didn't find any references to the plugin name (org.nemomobile.contacts.sqlite) in any binaries + - turns out apkd-bridge still demands that plugin, it probably puts the string together in an un-greppable way, damn.... + - okay so we're gonna have to force our own plugin then via custom build of libQt5Contacts + - ugh, it's still not working, but at least now apkd-bridge spews a log on contact changes in folks, let's try removing data dir + - damn, another few hours later, managed to get some debug output from contacts sync on sailfish now + - apkd-bridge can only read contacts db when run with invoker, but then we don't get debug output + - so instead run it as root to read new contacts db, and create contacts with jolla-contacts run as root + - okay now we know that successful initial sync looks like this + [D] unknown:0 - Alien contacts service is available, performing initial sync + [D] unknown:0 - Notifying Alien contacts service of all current contacts: 1 + [D] unknown:0 - Successfully notified Alien contacts service of contact change. + [W] unknown:0 - Successfully notified Alien contacts service of current contacts. + - turns out there's also a race involved + - apkd-bridge gets the contacts via ManagerEngine::contacts() before we got our invidiuals-changed from folks + - this means it doesn't sync any contacts initially, but doesn't explain why it also won't pick up changes to contacts + - oh woooow + - adding and modifying contact changes seems to go via dbus (all with variant (au)) + - org.nemomobile.contacts.sqlite.contactsAdded + - org.nemomobile.contacts.sqlite.contactsChanged + - deleting can go via both QtCOntacts API signal or dbus signal + - org.nemomobile.contacts.sqlite.contactsRemoved + - it seems that sailfish creates two contacts for everyone, possibly one system one and one android one + - the IDs on their dbus output are QContactId.toString() + - the IDs passed on their dbus signals are the QContactId without prefix 73716c2d3 (QByteArrayLiteral("sql-")) + - so these dbus signals are emitted from the sqlite backend actually, no idea why that would be done in addition to the normal cpp-signals + - after another two days, got it to pick up dbus emissions too by setting the QCollectionId (QByteArrayLiteral("col-")) and QContactType on individual contacts now, yaayyy + +desktop files for apps + - mostly appears to work + - jolla style of icons is a bit annoying + - handled by apkd-bridge + +file sharing between host and container + - looks like some xdg-folders are synced into container as sdcard + - home directory is synced into android as sdcard via config MountHome + - it's just mounted by lxc, neat + +other things + - after startup bluetooth crashes all the time + - seems to be an "upstream" bug, jolla solves this using alien-post-startup.sh by disabling bluetooth daemon (see comment in there) + + - video decoding for some videos doesn't work (see video codecs section) + + - the media control service can crash sometimes (playing around with switching between apps during playing spotify music) + - see media-control-service-while-starting-spotify crash file + + - system webview is crashing + - it appears to try using ashmem and then fails because + 07-13 16:57:45.257 8198 8198 E chromium: [ERROR:platform_shared_memory_region_android.cc(189)] Ashmem region has a wrong protection mask: it is not read-only but it should be + - it's a memfd instead of ashmem specific issue, there's a patch that fixes it in waydroid + https://chromium.googlesource.com/chromium/src/+/HEAD/third_party/ashmem/patches/0004-Fixup-ashmem_get_prot_region-for-memfd.patch + - can work around by replacing webview with the one from waydroid + + - camera will only work when running on top libhybris and forwarding the HAL + +what's needed to be done: + - lots of dbus shimming (sorted by importance) + - launching of system apps from within android (just a single dbus call invoking the thing) + - browser + - contacts + - more... + + - send configure() wayland events so that clients start drawing immediately + +incomplete list of deps and files: +apdk-bridge deps + - libnemonotifications-qt5.so.1 (get from phone) + - libpackagekitqt5.so.1 (arch pkg packagekit-qt5) + - libQt5Contacts.so.5 (no arch pkg, build it ourselves) + +alienaudioservice + - libalienaudioservice (get from phone) + - libglibutil.so.1 (arch pkg libglibutil) + - libgbinder.so.1 (arch pkg libgbinder) + +apkd-bridge-user + - libmlite5.so.0 (arch pkg mlite) + - libkeepalive.so.1 and libkeepalive-glib.so.1 (get from phone) + - libambermpris (get from phone) + - libapkd (get from phone) + - libqt5sensors (arch pkg qt5-sensors) + - libiphb.so.0 (get from phone) + - libdbusaccess.so.1 (get from phone) + - libconnman-qt5.so.1 (get from phone) + - apkd-plugin-geo-qtpositioning + - installs /usr/lib64/apkd-bridge-user/libgeo-qtpositioning.so + - libQt5Positioning.so (arch pkg qt5-location) + +config files + /etc/aas-seccomp-profile + /etc/apkd/app-blacklist (here we removed settings app) + /etc/apkd/notif-blacklist + /etc/gbinder.conf + /etc/gbinder.d/alien.conf + /etc/appsupport.conf.d/* + /usr/lib/systemd/system/aliendalvik.service + +aliendalvik system img + vendor img + build.prop: + /opt/alien/vendor/* + /opt/alien/system.img + /opt/alien/build.prop + + +useful stuff: + all tools are using Qt debugging tools, debug using QT_LOGGING_RULES="*.debug=true" + shell inside container: lxc-attach --name=aliendalvik --lxcpath=/tmp/appsupport -- /system/bin/sh + trace files that get opened: strace -f -t -e trace=file binary + debugging wayland because debug.sf.wayland causes crash: put WAYLAND_DEBUG into /etc/environment of host to use mutter debugging + starting app inside android: am start com.android.settings + installing app inside android: pm install -t -f /data/local/tmp/app.apk (needs right permissions) + + +starting things automatically + - it's kinda bound to be a mess :( + - alien it depends on stuff running in the user session, and can only start when the user session is up + - alien itself needs to be run by root though + - and that's not enough, most things in the user session need to be started at a specific pointer after container is up + - so what do we do? + - really nice would be starting and stopping the whole thing from a user service + - could talk to a root helper via dbus which then does configuration and starts/stops the container + - would have to fiddle with user services as root again though + + - for data isolation between users + - let's have the data dirs inside user dirs so they can be encrypted + - maybe make it an img file that can be owned fully by the user and is mounted into lxc diff --git a/other-docs/sailfish-changelogs/Changelog_from_3.3.0.16_to_3.4.0.24-FINAL.txt b/other-docs/sailfish-changelogs/Changelog_from_3.3.0.16_to_3.4.0.24-FINAL.txt new file mode 100644 index 0000000..eb6237f --- /dev/null +++ b/other-docs/sailfish-changelogs/Changelog_from_3.3.0.16_to_3.4.0.24-FINAL.txt @@ -0,0 +1,4913 @@ +SAILFISH OS +Changelog from 3.3.0.16 to 3.4.0.24 + +This post contains the detailed changelog entries for the Sailfish OS update **3.4.0.22**  (compared to 3.3.0.16). + + +# Packages obsoleted + +### pyOpenSSL - 0.15.1-1.2.13.jolla obsoleted by python3-openssl - 19.1.0+git1-1.2.1.jolla +- pyOpenSSL - 0.15.1-1.2.16.jolla obsoleted by python3-openssl - 19.1.0+git1-1.2.1.jolla +### python-magic - 5.35+git3-1.2.3.jolla obsoleted by python3-magic - 5.37+git4-1.2.1.jolla +- python-magic - 5.35+git3-1.2.4.jolla obsoleted by python3-magic - 5.37+git4-1.2.1.jolla + +# Packages removed + +### groff +- groff - 1.18.1.4-1.3.1.jolla +- groff-perl - 1.18.1.4-1.2.8.jolla +### jolla-firstsession +- jolla-firstsession - 0.50-1.5.1.jolla +- jolla-firstsession-qa - 0.50-1.5.1.jolla +### libzypp-bindings +- python-zypp - 0.7.4+git3-1.2.14.jolla +### mer-kickstarter +- mer-kickstarter - 0.20.1-1.2.5.jolla +### ngfd-plugin-pulse +- ngfd-plugin-pulse - 0.91.0.2-1.2.1.jolla +### package-groups +- package-groups - 0.1-1.2.1.jolla +### pyOpenSSL +- pyOpenSSL - 0.15.1-1.2.13.jolla +### python-cheetah +- python-cheetah - 2.4.4+mer1-1.1.39.jolla +### python-distro +- python-distro - 1.0.4+mer1-1.1.12.jolla +### python-iniparse +- python-iniparse - 0.3.1+mer1-1.1.35.jolla +### python-lxml +- python-lxml - 3.2.0-1.1.17.jolla +### python-magic +- python-magic - 5.35+git3-1.2.3.jolla +- python-magic-doc - 5.35+git3-1.2.4.jolla +### python-markdown +- python-markdown - 2.0.3-1.1.40.jolla +### python-pycurl +- python-pycurl - 7.19.0+mer1-1.2.5.jolla +### python-urlgrabber +- python-urlgrabber - 3.9.1+mer1-1.1.41.jolla +### python-yaml +- python-yaml - 3.10-1.1.12.jolla, python-yaml - 3.10-1.1.13.jolla +### quillimagefilter-qt5 +- quillimagefilter-qt5 - 1.2.3-1.1.21.jolla +- quillimagefilter-qt5-benchmark - 1.2.3-1.1.21.jolla +- quillimagefilter-qt5-devel - 1.2.3-1.1.21.jolla +- quillimagefilter-qt5-tests - 1.2.3-1.2.1.jolla +### rpmlint-MeeGo +- rpmlint-MeeGo - 1.0-1.1.9.jolla +### tinycdb +- tinycdb - 0.77-1.2.1.jolla +- tinycdb-devel - 0.77-1.2.1.jolla +### tone-generator +- tone-generator - 1.5.4-1.3.1.jolla +### tumbler +- tumbler - 0.1.32-1.3.1.jolla +- tumbler-devel - 0.1.32-1.3.1.jolla +- tumbler-tests - 0.1.32-1.3.1.jolla +### zsh +- zsh - 5.0.2+mer1-1.2.2.jolla + +# Packages modified + +### PackageKit +- Updated : 1.1.9+git9-1.11.1.jolla -- 1.1.13+git9-1.14.4.jolla +- [Upgrade] Only sync zypp caches on actual upgrade. +- [PackageKit] Reset update mode along with upgrade during zypp reset. +- [aarch64] Fix location of systemd unit files. +- [Packagekit] Depend on autoconf-archive. +- [cache] Erase tmp repo from pool after tmp repo removing. +- [sailfish] Make sure cache is in sync after failed local install. +- [sailfish] Fix typo in transaction db SQL. +- [sailfish] Extension for resolving repositories for packages. +- [sailfish] Fix some memory leaks. +- [sailfish] Updated extension for querying download sizes. +- [sailfish] Use statements for SQL queries with input. +- [aarch64] Use macros, not hardcoded paths. +- [sailfish] Update base to upstream version 1.1.13. +- [sailfish] Update patches and packaging. +### PackageKit-Qt5 +- Updated : 0.9.6+git-1.4.1.jolla -- 0.9.6+git-1.5.1.jolla +- [aarch64] Use macros, not hardcoded paths. +### SDL2 +- Updated : 2.0.9+git3-1.4.1.jolla -- 2.0.12+git1-1.5.1.jolla +- [sdl] Update to 2.0.12 release. +### SDL2_image +- Updated : 2.0.4+git2-1.5.1.jolla -- 2.0.5+git1-1.6.1.jolla +- [libsdl-image] Update to 2.0.5 release. +### alienaudioservice +- Updated : 0.6.2-1.5.2.jolla -- 0.7.0-1.7.1.jolla +- [alienaudioservice] Follow host for system sound state. +- [alienaudioservice] Support ashmem for recording. +- [alienaudioservice] allow STRIP command to be replaced through external environment variable STRIP. +- [alienaudioservice] set call state to ringing if there is a call on the android side. +- [alienaudioservice] set media.role to music if stream type unknown. +- [alienaudioservice] support side by side builds. +### aliendalvik +- Android App Support was split in a new way. While doing this, the version numbering of aliendalvik package was restarted from 1.0.0. +- This change appears as a reversion for OBS but it was just the version ID that was changed. +- The new division is: + - aliendalvik is a meta package only there to get dependencies right + - aliendalvik-system contains the system parts of Android App Support + - aliendalvik-configs contains the configurations and scripts for Android 8 based Android App Support +- The new packages, aliendalvik-system and aliendalvik-configs, appear in the last section of the changelog, under "Packages added". +- "Reverted" : 8.1.0.73.6-1.13.1.jolla -- 1.0.92-1 +- Make sure alien_start_guard.sh is aware of the device owner username properly. +- Don't store thumbnails unecessarily to save some memory. +- Properly get the device owner username and locale.conf. +### aliendalvik-translations-all-translations +- Updated : 0.7.3-1.9.1.jolla -- 0.7.4-1.9.1.jolla +- [all-translations] Add nemo-qml-plugin-systemsettings. +### aliendalvik-translations-l10n +- Updated : 1.12-1.5.2.jolla -- 1.13-1.7.1.jolla +- [l10n] New files added from Jolla localisation based on templates +### alienkeyboardservice +- Updated : 0.5-1.4.2.jolla -- 0.6-1.6.1.jolla +- [alienkeyboardservice] Rename remote keyboard listener interface. +### all-translations +- Updated : 0.7.3-1.9.1.jolla -- 0.7.4-1.9.7.jolla +- [all-translations] Add nemo-qml-plugin-systemsettings. +### ambienced +- Updated : 0.29.12-1.11.1.jolla -- 0.29.18-1.13.12.jolla +- [ambienced] Fix ambience for first login. +- [ambienced] Treat darkonlight as allowed value. +- [ambienced] Quote variable in string comparison. +- [aarch64] Use macros, not hardcoded paths. +- [ambienced] Communicate changes in colors and wallpapers if the currrent ambience is regenerated. +- [ambienced] Trigger reset for all users. +- [oneshots] Run for all users and new users. +### apkd +- Updated : 0.8.14-1.13.1.jolla -- 0.8.17.2-1.13.1.jolla +- [systemd] Start aliendalvik only for device owner. +- [settings] Hide Runtime settings from additional users. +- [apkd] Fix build with systemd v233. +- [apkd] Add extra policy for allowing sailfish-system to use alien settings interface. +- [apkd] Remove obsolete priv-app functionality. +### apkd-l10n +- Updated : 1.126.1-1.24.1.jolla -- 1.130.2-1.27.1.jolla +- Binaries added : apkd-l10n-ro - 1.130.2-1.27.1.jolla +- [l10n] Commit from Jolla localisation: 38 of 38 strings translated (0 need review). +- [l10n] Branched apkd from version 1.130 +- [l10n] Commit from Jolla localisation: 38 of 38 strings translated (0 need review). +- [l10n] New files added from Jolla localisation based on templates +- [l10n] spec file updated +- [tpl] translation templates update for 0.8.15 +- [l10n] Commit from Jolla localisation: 45 of 45 strings translated (0 need review). +### apkd8 +- Updated : 8.1.0.56-1.9.1.jolla -- 8.1.0.64.2-1.11.1.jolla +- [apkd] Properly obsolete aliennaticecallservice package. +- [settings] Hide Runtime settings from additional users. +- [multiuser] Adapt apkd to run for different users. +- [apkd] Clean up license headers. +- [apkd] Clear NetworkService pointer on disconnect. +- [apkd] Drop direct dependency on glib. +- [apkd8] Fix build with systemd v233. +- [apkd] Remove obsolete priv-app functionality. +- [apkd8] Avoid scrollable app page with invisible content. +- [apkd] Avoid application configuration page being scrollable on error state. +- [apkd8] Add missing Galileo satellite IDs. +### apkd8-l10n +- Updated : 1.25.2-1.10.1.jolla -- 1.32.2-1.13.1.jolla +- Binaries added : apkd8-l10n-ro - 1.32.2-1.13.1.jolla +- [l10n] Commit from Jolla localisation: 44 of 44 strings translated (0 need review). +- [l10n] Branched apkd8 from version 1.32 +- [l10n] Commit from Jolla localisation: 44 of 44 strings translated (0 need review). +- [l10n] New files added from Jolla localisation based on templates +- [l10n] spec file updated +- [l10n] Commit from Jolla localisation: 44 of 44 strings translated (0 need review). +- [tpl] translation templates update for 8.1.0.63 +- [l10n] Commit from Jolla localisation: 44 of 44 strings translated (0 need review). +- [tpl] translation templates update for 8.1.0.58 +- [tpl] translation templates update for 8.1.0.59 +- [l10n] Commit from Jolla localisation: 51 of 51 strings translated (0 need review). +### audiosystem-passthrough +- Updated : 1.0.0-1.2.1.jolla -- 1.1.2-1.2.1.jolla +- Binaries added : audiosystem-passthrough-dummy-hw2_0 - 1.1.2-1.2.1.jolla +- [audiosystem-passthrough] Move dummy-af service to system session. +- [packaging] Fix pkgconfig file location. +- [packaging] Fix systemd service file locations. +- [hw2_0] Add hw2_0 implementation. +### audit +- Updated : 2.8.4+git4-1.3.1.jolla -- 2.8.4+git5-1.4.3.jolla +- [aarch64] Fix location of systemd unit files. +### augeas +- Updated : 1.12.0+git1-1.4.1.jolla -- 1.12.0+git2-1.5.1.jolla +- [aarch64] Specify libdir. +### bind-utils +- Updated : 9.10.2-1.2.2.jolla -- 9.11.19+git1-1.3.5.jolla +- [bind-utils] Add tar git packaging. +- [bind-utils] Fix aarch64 build. +- [bind-utils] Update to upstream version 9.11.19. +### bison +- Updated : 3.3.2-1.3.1.jolla -- 3.3.2+git1-1.4.1.jolla +- [bison] Disable make check. +### bluebinder +- Updated : 1.0.8-1.8.1.jolla -- 1.0.10-1.9.1.jolla +- [bluebinder] Handle initializationComplete callback more accurate. +- [bluebinder] link with glib. +### bluez +- Updated : 4.101+git77-1.4.1.jolla -- 4.101+git78-1.5.1.jolla +- [bluez] Use systemd macros to build on aarch64. +### bluez5 +- Updated : 5.50+git4-1.11.1.jolla -- 5.54+git2-1.13.4.jolla +- [sailfish] Fix segfault caused by interrupted transfer. +- [sailfish] Update to 5.54. +- [sailfish] Use systemd macros to build on aarch64. +### boost +- Updated : 1.66.0-1.5.1.jolla -- 1.66.0+git1-1.6.2.jolla +- Binaries removed : boost-python, boost-doc +- [boost] Remove doc subpackage. +- [boost] Remove python subpackage. +### btrfs-balancer +- Updated : 1.2.4-1.2.1.jolla -- 1.2.6-1.3.1.jolla +- [balance] Use systemsettings for battery info. +- [balance] Get battery data from mce. +### btrfs-progs +- Updated : 3.16+git2-1.5.1.jolla -- 3.16+git3-1.6.1.jolla +- [btrfs-progs] Use macros, not hardcoded paths. +### buteo-mtp-qt5 +- Updated : 0.7.7-1.8.1.jolla -- 0.8.0.1-1.12.1.jolla +- [tracker] Disable metadata writes from MTP to tracker. +- [buteo-mtp] Add support for android.com 1.0 MTP extension. +- [mtpresponder] Cleanup -Wimplicit-fallthrough warnings +- [mts] Silence C++ warnings about memcpy() +- [mts] Silence warnings about deprecated kernel structures +- [buteo-mtp] Fix unable of copy big files to SD card over MTP. +- [aarch64] Fix location of systemd unit files. +- [buteo-mtp] Use systemd macro and QT_INSTALL_LIBS +### buteo-sync-plugin-caldav +- Updated : 0.1.60-1.10.1.jolla -- 0.1.70-1.11.1.jolla +- [buteo-sync-plugin-caldav] Use QT_INSTALL_LIBS. +- [buteo-sync-plugin-caldav] Don't add one day on dtEnd for all days when exporting. +- [buteo-sync-plugin-caldav] Ensure that incidences are in memory. +- [buteo-sync-plugin-caldav] Retrieve full event after PUT when the etag is missing. +- [buteo-sync-plugin-caldav] Use series load when necessary to save memory. +- [buteo-sync-plugin-caldav] Remove hardcoded references to nemo user. +- [buteo-sync-plugin-caldav] Correct handling of percent encoded paths in discovery code. +- [buteo-sync-plugin-caldav] Detect account service based on profile_id, +- [buteo-sync-plugin-caldav] Inquire calendar privileges on server and apply them locally. Contributes to TJC#223428 +- [buteo-sync-plugin-caldav] Rework caldavclient code path and add a test for it. +- [buteo-sync-plugin-caldav] Store remote path at notebook creation. Contributes to TJC#224936 +- [buteo-sync-plugin-caldav] Try to auto-detect the calendars root path. +- [buteo-sync-plugin-caldav] Add a test for the various propfind requests. +- [buteo-sync-plugin-caldav] Fix calendar discovery failing if current-user-principal exists for calendars. +- [buteo-sync-plugin-caldav] Continue sync if exception dissociation fails. +- [buteo-sync-plugin-caldav] Fix packaging. +- [buteo-sync-plugin-caldav] Add CalDAV invitation plugin for mkcal. +- [buteo-sync-plugin-caldav] Read user principal mailto address. +### buteo-sync-plugin-carddav +- Updated : 0.0.32-1.6.1.jolla -- 0.0.34-1.8.1.jolla +- [buteo-sync-plugin-carddav] Fix plugin path for aarch64. +- [buteo-sync-plugin-carddav] Fix handling of empty contact name. +### buteo-sync-plugin-webcal +- Updated : 0.1.3-1.2.1.jolla -- 0.1.4-1.3.1.jolla +- [buteo-sync-plugin-webcal] Fix plugin path for aarch64. +### buteo-sync-plugins-email +- Updated : 0.1.5-1.7.1.jolla -- 0.1.6-1.8.1.jolla +- [buteo-sync-plugins-email] Fix plugin path for aarch64. +### buteo-sync-plugins-qt5 +- Updated : 0.8.26-1.4.3.jolla -- 0.8.27-1.5.10.jolla +- [buteo-sync-plugins] Use QT_INSTALL_LIBS. +### buteo-syncfw-qt5 +- Updated : 0.8.27-1.12.3.jolla -- 0.9.13-1.14.1.jolla +- [buteo-syncfw] Don't search for unknown connection type in allowed types. +- [buteo-syncfw] Accept unrecognised connection types if applicable. +- [buteo-syncfw] Fix plugin path for aarch64. +- [buteo-syncfw] Use systemd user unit dir macro. +- [buteo-syncfw] Disable Bluez(4) usage. +- [buteo-syncfw] Suppress parseFile warning. +- [buteo-syncfw] Signal external syncs to stop during backup/restore. +- [buteo-syncfw] Always set the result schedule flag in SyncSession. +- [buteo-syncfw] Add named intervals and calculate isSyncScheduled() for interval syncs. +- [buteo-syncfw] Add per-profile configuration of supported network connections. +### buteo-syncml-qt5 +- Updated : 0.5.12-1.6.1.jolla -- 0.5.13-1.7.6.jolla +- [aarch64] Do not hardcode lib dir. +### cairo +- Updated : 1.16.0-1.4.1.jolla -- 1.16.0+git1-1.5.2.jolla +- [cairo] Enable OpenGL ES 3.0 support. +### calligra +- Updated : 3.1.0+git19-1.13.1.jolla -- 3.1.0+git22-1.14.4.jolla +- [calligra] Add optimisations for importing readonly XLSX docs. +- [aarch64] Do not hardcode lib dir. +- [calligra] Sync upstream. +### cmake +- Updated : 3.11.4+git4-1.7.1.jolla -- 3.11.4+git6-1.8.1.jolla +- [cmake] Remove CMAKE_INSTALL_LIBDIR from %cmake macro. +- [cmake] Do not use absolute path in RPM macro. +### commhistory-daemon +- Updated : 0.8.18-1.5.1.jolla -- 0.8.23.1-1.9.1.jolla +- [commhistory-daemon] Send MMS messages with sendMessageFd. +- [commhistory-daemon] Make commhistoryd work under defaultu. +- [commhistory-daemon] Allow mms-engine to run under any account. +- [spec] Shortened version in the spec because it's not being maintained +- [commhistory-daemon] Drop references to Qt 4 +- [commhistoryd] Port to Python 3. +- [commhistoryd] Add displayName to notification actions. +- [aarch64] Use macros. Do not hardcode lib dir. +### commhistory-daemon-l10n +- Updated : 1.69.2-1.15.1.jolla -- 1.74.3-1.18.1.jolla +- Binaries added : commhistory-daemon-l10n-ro - 1.74.3-1.18.1.jolla +- [l10n] Commit from Jolla localisation: 43 of 43 strings translated (0 need review). +- [l10n] Branched commhistory-daemon from version 1.74 +- [l10n] Commit from Jolla localisation: 43 of 43 strings translated (0 need review). +- [l10n] New files added from Jolla localisation based on templates +- [l10n] spec file updated +- [l10n] Commit from Jolla localisation: 43 of 43 strings translated (0 need review). +- [tpl] translation templates update for 0.8.20 +- [l10n] Commit from Jolla localisation: 38 of 38 strings translated (0 need review). +### connectionagent-qt5 +- Updated : 0.11.37-1.6.1.jolla -- 0.11.38-1.7.1.jolla +- [aarch64] Use macros, not hardcoded paths. +### connman +- Updated : 1.32+git116-1.32.1.jolla -- 1.32+git136.2-1.36.1.jolla +- Binaries added : connman-plugin-vpn-openfortivpn - 1.32+git136-1.35.3.jolla +- [systemd login] Fix IO condition flag checks +- [build] Add libglibutil and libdbusaccess devel as build deps +- [systemd login] Handle ENOENT in active session check. +- [unit] Add session not ready to systemd login unit tests. +- [vpn] Move vpn_provider_get_ident() decl. to vpn-provider.h. +- [connman] Fix errorous use of technology_load_values(). +- [connman] Move tech value loading to separate function. +- [aarch64] Use macros for unitdir and fix tmpfiles.d path. +- [doc] Add txt files to the -doc package. +- [doc] Update firewall documentation. +- [firewall] Fix iptables validator bugs. +- [firewall] Fix tests and special cases. +- [unit] Add tests for iptables validator. +- [wifi] Clear wifi_bss -> wifi_network pointers on delete. +- [openfortivpn] Implement VPN plugin for openfortivpn. +- [connman] Add includes for uid_t type into public header files. +- [build] Remove unnecessary use of storage in iptables tools. +- [config] Register to storage notifications for config inotify. +- [connman] Add uid changed notifier use to storage callbacks. +- [connman] Add vpnd crash recovery functionality. +- [notifier] Add storage uid changed notify functionality. +- [storage] Limit user change reqs, vpnd crash recovery with timeouts. +- [systemd login] Register to storage notifications. +- [unit] Fix iptables, globalproxy, storage, systemd login tests. +- [unit] Improve storage tests for vpnd crash and request limit. +- [connman] Add connman_service_get_saved() API. +- [wifi] Expose raw rssi value from signalpoll +- [wifi] Housekeeping +- [wifi] Optimize reporting of Wi-Fi networks to connman core. +- [config] Use user storagedir in load/read. +- [connman] Fix STORAGEDIR uses. +- [jolla-stats] Use connman_storage_dir_for() instead of STORAGEDIR. +- [sailfish datacounters] Use connman_storage_dir_for() instead of STORAGEDIR. +- [stats] Replace use of STORAGEDIR with connman_storage_dir_for(). +- [storage] Add generic storage dir getter. +- [vpn-config] Return correct VPN dir in get_dir() and constify it. +- [build] Link with gio-2.0 and gobject-2.0 when necessary. +- [connman] Fix glib assertion 'datetime != NULL' +- [connman] Fix WLAN issues in user change and device bootup. +- [storage] Handle manually removed and added services. +- [systemd login] Disable all techs when user is opening session. +- [technology] Add a generic rfkill-agnostic state changed func. +- [technology] Delay enabling if tech is rfkill enabled or busy. +- [technology] Disable all techs regardless of the keyfile. +- [unit] Add missing stub for systemd login unit test. +- [unit] Correct return values of storage unit test. +- [build] Bump build requirements +- [wifi] Don't schedule a scan when hidden network reappears. +- [service] Immediately notify about service change in unload. +- [service] Unload VPN services and always reply from GetProperties. +- [storage] Get correct storagedir for VPN config. +- [storage] Use uid and user data in finalize. +- [unit] Fix finalize_cb() in storage unit test. +- [unit] Fix vpn-settings username/uid tests. +- [vpn-settings] Improve binary username and override checks. +- [vpn] Use get_connections() as connmand finalize func. +- [connman] Implement login manager stub and config option. +- [storage] Add internal function for changing user. +- [systemd login] Implement systemd login manager. +- [unit] Add internal user change unit tests. +- [unit] Implement unit tests for systemd login. +- [connman] Eliminate deprecated function use and warnings. +- [connman] Ignore g_type_class_add_private deprecated warnings. +- [connman] Replace deprecated g_get_current_time() in service. +- [connman] Improve EAP error handling. +- [connman] Add support for setting user dirs via D-Bus. +- [connman] Implement access policy for storage.c. +- [connman] Register access control functions for storage. +- [doc] Document net.connman.Storage ChangeUser D-Bus API. +- [service] Implement service unload and load functions. +- [storage] Add support for changing storage directory. +- [storage] Use D-Bus access control for storage ChangeUser. +- [technology] Add pre and post setup functions for user change. +- [unit] Create tests for storage.c. +- [unit] Fix sailfish iptables ext test. +- [unit] Fix tests and tools for storage access use. +- [unit] Fix unit tests and tools after storage changes. +- [unit] Improve vpn-settings unit tests and test user override. +- [vpn] Add support for setting user dirs via D-Bus. +- [vpn] Implement D-Bus access control for VPN user change. +- [vpn-provider] Add functions to load and unload providers. +- [vpn] Register access control functions for VPN storage. +- [vpn-settings] Implement user override for running a VPN. +- [vpn-settings] Make VPN plugin dir configurable. +- [connman] Add EAP-TLS properties. +### connman-qt5 +- Updated : 1.2.28-1.15.2.jolla -- 1.2.34-1.15.5.jolla +- [libconnman-qt] Support DefaultRoute VPN property. +- [libconnman-qt] Respect arch specific lib dir. +- [libconnman-qt] Add missing implementation. +- [libconnman-qt] Add AnonymousIdentity -property. +- [libconnman-qt] Added connectingWifi property to NetworkManager. +- [libconnman-qt] Update library version. +### contactsd +- Updated : 1.3.6-1.3.1.jolla -- 1.3.11-1.5.11.jolla +- [aarch64] Fix location of systemd unit files. +- [aarch64] Use macros for userunitdir. +- [contactsd] Port to Python 3. +- [contactsd] Add accounts-qt5 as a build dependency. +- [contactsd] Transfer CalDAV account enable events to notebook visibility. +### contactsd-l10n +- Updated : 1.43.1-1.9.1.jolla -- 1.44.2-1.11.1.jolla +- Binaries added : contactsd-l10n-ro - 1.44.2-1.11.1.jolla +- [l10n] Commit from Jolla localisation: 5 of 5 strings translated (0 need review). +- [l10n] Branched contactsd from version 1.44 +- [l10n] Commit from Jolla localisation: 5 of 5 strings translated (0 need review). +- [l10n] New files added from Jolla localisation based on templates +- [l10n] spec file updated +### cor +- Updated : 0.1.20-1.3.1.jolla -- 0.1.21-1.4.7.jolla +- [cor] Disable build for aarch64. +### crash-reporter +- Updated : 1.15.0-1.10.3.jolla -- 1.15.6-1.11.7.jolla +- [aarch64] Fix location of systemd unit files. +- [crash-reporter] Add displayName to notification actions. +- [crash-reporter] Don't use Text.WordWrap when Text.Wrap is more appropriate. +- [crash-reporter] Sort pending uploads by newest to oldest. +- [aarch64] Use macros, not hardcoded paths. +- [crash-reporter] Drop man page generation. +- [crash-reporter] Fix build with systemd v233. +### crda +- Updated : 4.14+git3-1.5.1.jolla -- 4.14+git4-1.6.2.jolla +- [crda] Fix path according to wireless-regdb. +### createrepo_c +- Updated : 0.10.0+git2-1.3.2.jolla -- 0.10.0+git3-1.4.11.jolla +- [createrepo_c] Compile with largefile support. +### cross-aarch64-gcc +- Updated : 8.3.0-1.6.1.jolla -- 8.3.0-1.7.3.jolla +- Aarch64 path fix. +- Enable lsan for aarch64. +- Fix mpc-devel package name. +- Force libdir for aarch64. +### cross-aarch64-gdb +- Updated : 8.2.1+git7-1.6.1.jolla -- 8.2.1+git8-1.7.2.jolla +- [aarch64] aarch64 fixes. We are using now using lib64. +### cross-armv7hl-gcc +- Updated : 8.3.0-1.6.3.jolla -- 8.3.0-1.7.3.jolla +- Aarch64 path fix. +- Enable lsan for aarch64. +- Fix mpc-devel package name. +- Force libdir for aarch64. +### cross-armv7hl-gdb +- Updated : 8.2.1+git7-1.6.1.jolla -- 8.2.1+git8-1.7.2.jolla +- [aarch64] aarch64 fixes. We are using now using lib64. +### cross-glibc-devel-inject +- Updated : 2.30+git3-1.2.1.jolla -- 2.30+git4-1.2.1.jolla +- Binaries added : cross-aarch64-glibc-devel - 2.30+git4-1.2.1.jolla +- No new changelog entries! +### cross-glibc-headers-inject +- Updated : 2.30+git3-1.1.20.jolla -- 2.30+git4-1.2.1.jolla +- Binaries added : cross-aarch64-glibc-headers - 2.30+git4-1.2.1.jolla +- No new changelog entries! +### cross-glibc-inject +- Updated : 2.30+git3-1.2.1.jolla -- 2.30+git4-1.2.1.jolla +- Binaries added : cross-aarch64-glibc - 2.30+git4-1.2.1.jolla +- No new changelog entries! +### cross-i486-gcc +- Updated : 8.3.0-1.6.1.jolla -- 8.3.0-1.7.1.jolla +- Aarch64 path fix. +- Enable lsan for aarch64. +- Fix mpc-devel package name. +- Force libdir for aarch64. +### cross-i486-gdb +- Updated : 8.2.1+git7-1.6.1.jolla -- 8.2.1+git8-1.7.2.jolla +- [aarch64] aarch64 fixes. We are using now using lib64. +### csd +- Updated : 0.16.9.1-1.25.2.jolla -- 0.16.20-1.25.12.jolla +- [audio] Fix receiver test on non-English locales. +- [audio] Fix receiver test on non-English locales. Fixes OMP#OS-1571 +- [aarch64] Use macros. Do not hardcode lib dir. +- [csd] Don't use Text.WordWrap when Text.Wrap is more appropriate. +- [camera] Make taken photo orientation to be the same as in camera preview. +- [csd] Fix MDM banner was wrongly appeared in some conditions during GPS test startup. +- [csd] Fix VerificationGpsLock test for some GPS modules which don't report verticalAccuracy data. +- [csd] Fix permission for Key test for make access to volume keys. +- [csd] Add NFC test. +- [csd] Fix reboot test. +- [csd] Fix warning. Set default value for initialTestTime. +- [csd] Ensure the CellPositioning test is marked pass or fail. +- [csd] Fix branded OS name. +- [csd] Update add-oneshot arguments. +### csd-l10n +- Updated : 1.78.2-1.20.1.jolla -- 1.85.3-1.23.1.jolla +- Binaries removed : csd-l10n-ko, csd-l10n-kn, csd-l10n-sv, csd-l10n-te, csd-l10n-it, csd-l10n-sl, csd-l10n-el, csd-l10n-pl, csd-l10n-mr, csd-l10n-pa, csd-l10n-bg, csd-l10n-cs, csd-l10n-ml, csd-l10n-pt, csd-l10n-gu, csd-l10n-tr, csd-l10n-ru, csd-l10n-tt, csd-l10n-ja, csd-l10n-hi, csd-l10n-es_ES, csd-l10n-hu, csd-l10n-et, csd-l10n-zh_TW, csd-l10n-fi, csd-l10n-da, csd-l10n-de, csd-l10n-pt_BR, csd-l10n-nb, csd-l10n-ta, csd-l10n-es, csd-l10n-bn_IN, csd-l10n-fr, csd-l10n-nl, csd-l10n-en_US +- [l10n] Commit from Jolla localisation: 482 of 482 strings translated (0 need review). +- [l10n] Branched csd from version 1.85 +- [l10n] Commit from Jolla localisation: 15 of 484 strings translated (1 need review). +- [l10n] spec file updated +- [l10n] Commit from Jolla localisation: 482 of 482 strings translated (0 need review). +- [tpl] translation templates update for 0.16.16 +- [tpl] translation templates update for 0.16.17 +- [l10n] Commit from Jolla localisation: 482 of 482 strings translated (0 need review). +- [tpl] translation templates update for 0.16.12 +- [tpl] translation templates update for 0.16.14 +- [l10n] Commit from Jolla localisation: 0 of 474 strings translated (0 need review). +- [l10n] Commit from Jolla localisation: 474 of 474 strings translated (0 need review). +- [tpl] translation templates update for 0.16.11 +- [l10n] Commit from Jolla localisation: 474 of 474 strings translated (0 need review). +### curl +- Updated : 7.64.0+git1-1.9.1.jolla -- 7.71.0+git1-1.10.1.jolla +- [curl] Upgrade to 7.71.0. +- [spec] Drop 0107-curl-7.21.4-libidn-valgrind.patch. +- [curl] Upgrade to 7.70.0 and enable http2 support. +- [curl] Update to 7.69.1. +### cython +- Updated : 0.29.14+git1-1.4.1.jolla -- 0.29.14+git2-1.5.2.jolla +- Binaries removed : python-cython +- [packaging] Drop python2 support +- [python-cython] drop python2 support. +### dbus +- Updated : 1.13.12+git5-1.6.1.jolla -- 1.13.12+git6-1.7.2.jolla +- [aarch64] Use macros, not hardcoded paths. +### dbus-python3 +- Updated : 1.2.0-1.3.2.jolla -- 1.2.16+git1-1.4.4.jolla +- Binaries added : python3-dbus - 1.2.16+git1-1.4.4.jolla +- Binaries removed : dbus-python3 +- [dbus-python3] Update to support aarch64 build. +### dbuslog-tools +- Updated : 1.0.17-1.6.1.jolla -- 1.0.19-1.8.2.jolla +- [libdbuslog] Added dbus_log_server_set_category_level(). +- [libdbuslog] Added log level conversion functions. +- [libdbuslog] Added test_util. +- [libdbuslog] Improved unit test coverage. +- [libdbuslog] Fixed warning: G_ADD_PRIVATE. +- [libdbuslog] Hide internal symbols. +- [libdbuslog] Respect arch specific lib dir. +### dconf +- Updated : 0.28.0+git4-1.4.1.jolla -- 0.36.0+git1-1.5.4.jolla +- [dconf] Update to 0.36.0 version. +- [dconf] Update to 0.34.0 version. +### declarative-transferengine-qt5 +- Updated : 0.3.14-1.12.1.jolla -- 0.3.17.1-1.13.1.jolla +- [transferengine] Don't show mime type icon on top of thumbnail. +- [declarative-transferengine] Use Silica for transfer settings page's mime-to-icon mapping. +- [declarative-transferengine] Allow file sharing path to be edited. +- [ui-declarative-transferengine] Launch dialog box when opening transferred files. +### declarative-transferengine-qt5-l10n +- Updated : 1.99.3-1.23.1.jolla -- 1.106.2-1.24.1.jolla +- Binaries added : declarative-transferengine-qt5-l10n-ro - 1.106.2-1.24.1.jolla +- [l10n] Commit from Jolla localisation: 29 of 29 strings translated (0 need review). +- [tpl] translation templates update for 0.3.17.1 +- [l10n] Branched declarative-transferengine-qt5 from version 1.106 +- [l10n] Commit from Jolla localisation: 29 of 29 strings translated (0 need review). +- [l10n] New files added from Jolla localisation based on templates +- [l10n] spec file updated +- [l10n] Commit from Jolla localisation: 29 of 29 strings translated (0 need review). +- [tpl] translation templates update for 0.3.15 +- [tpl] translation templates update for 0.3.16 +- [tpl] translation templates update for 0.3.17 +- [l10n] Commit from Jolla localisation: 34 of 34 strings translated (0 need review). +- [tpl] translation templates update for 0.3.14 +- [l10n] Commit from Jolla localisation: 34 of 34 strings translated (0 need review). +### deltarpm +- Updated : 3.5-1.3.1.jolla -- 3.6.2+git1-1.4.2.jolla +- Binaries added : python3-deltarpm - 3.6.2+git1-1.4.2.jolla +- Binaries removed : python-deltarpm +- [deltarpm] Clean up spec file and python3 package. +- [deltarpm] Don't use python to build. Upgrade to 3.6.2. +- [packaging] Add deltarpm-doc subpackage. +### droid-config-f5121 +- Updated : 1.3.7-1.18.27.jolla -- 1.3.12-1.21.42.jolla +- [media] Add gmp-droid for browser hw video decoding. +- [bluez5] Disable EATT in bluez5 configuration. +- [ofono] Lookup operator names in mbpi. +- [flashing] Clean up extra BINARY_PATH from flash.sh. +- [flashing] Print device details when flashing. +- [flashing] Print oem blob details when flashing. +- [camera] Hide option for front flash if does not exist. +### droid-config-f5122 +- Updated : 1.3.7-1.18.26.jolla -- 1.3.12-1.21.39.jolla +- [media] Add gmp-droid for browser hw video decoding. +- [bluez5] Disable EATT in bluez5 configuration. +- [ofono] Lookup operator names in mbpi. +- [flashing] Clean up extra BINARY_PATH from flash.sh. +- [flashing] Print device details when flashing. +- [flashing] Print oem blob details when flashing. +- [camera] Hide option for front flash if does not exist. +### droid-config-geminipda +- Updated : 0.2.28-1.10.25.jolla -- 0.2.29-1.11.46.jolla +- [media] Add gmp-droid for browser hw video decoding. +### droid-config-h3113 +- Updated : 0.2.59.1-1.16.1.jolla -- 0.2.65-1.17.33.jolla +- [media] Add gmp-droid for browser hw video decoding. +- [ofono] Lookup operator names in mbpi. +- [patterns] Replace audioflingeglue with audiosystem-passthrough. +- [flashing] Print device details when flashing. +- [flashing] Print oem blob details when flashing. +- [flashing] Clean up extra BINARY_PATH from flash.sh. +- [fingerprint] do not skip the enumerate call. +- [camera] Hide option for front flash if does not exist. +### droid-config-h3213 +- Updated : 0.2.59.1-1.15.1.jolla -- 0.2.65-1.16.33.jolla +- [media] Add gmp-droid for browser hw video decoding. +- [ofono] Lookup operator names in mbpi. +- [patterns] Replace audioflingeglue with audiosystem-passthrough. +- [flashing] Print device details when flashing. +- [flashing] Print oem blob details when flashing. +- [flashing] Clean up extra BINARY_PATH from flash.sh. +- [fingerprint] do not skip the enumerate call. +- [camera] Hide option for front flash if does not exist. +### droid-config-h3413 +- Updated : 0.2.59.1-1.14.1.jolla -- 0.2.65-1.15.29.jolla +- [media] Add gmp-droid for browser hw video decoding. +- [ofono] Lookup operator names in mbpi. +- [patterns] Replace audioflingeglue with audiosystem-passthrough. +- [flashing] Print device details when flashing. +- [flashing] Print oem blob details when flashing. +- [flashing] Clean up extra BINARY_PATH from flash.sh. +- [fingerprint] do not skip the enumerate call. +- [camera] Hide option for front flash if does not exist. +### droid-config-h4113 +- Updated : 0.2.59.1-1.16.1.jolla -- 0.2.65-1.17.28.jolla +- [media] Add gmp-droid for browser hw video decoding. +- [ofono] Lookup operator names in mbpi. +- [patterns] Replace audioflingeglue with audiosystem-passthrough. +- [flashing] Print device details when flashing. +- [flashing] Print oem blob details when flashing. +- [flashing] Clean up extra BINARY_PATH from flash.sh. +- [fingerprint] do not skip the enumerate call. +- [camera] Hide option for front flash if does not exist. +### droid-config-h4213 +- Updated : 0.2.59.1-1.15.1.jolla -- 0.2.65-1.16.26.jolla +- [media] Add gmp-droid for browser hw video decoding. +- [ofono] Lookup operator names in mbpi. +- [patterns] Replace audioflingeglue with audiosystem-passthrough. +- [flashing] Print device details when flashing. +- [flashing] Print oem blob details when flashing. +- [flashing] Clean up extra BINARY_PATH from flash.sh. +- [fingerprint] do not skip the enumerate call. +- [camera] Hide option for front flash if does not exist. +### droid-config-h4413 +- Updated : 0.2.59.1-1.14.1.jolla -- 0.2.65-1.15.26.jolla +- [media] Add gmp-droid for browser hw video decoding. +- [ofono] Lookup operator names in mbpi. +- [patterns] Replace audioflingeglue with audiosystem-passthrough. +- [flashing] Print device details when flashing. +- [flashing] Print oem blob details when flashing. +- [flashing] Clean up extra BINARY_PATH from flash.sh. +- [fingerprint] do not skip the enumerate call. +- [camera] Hide option for front flash if does not exist. +### droid-config-i3113 +- Updated : 0.0.48-1.8.4.jolla -- 0.0.52-1.10.8.jolla +- [media] Add gmp-droid for browser hw video decoding. +- [patterns] Replace audioflingeglue with audiosystem-passthrough-dummy-af. +- [flashing] Print device details when flashing. +- [flashing] Print oem blob details when flashing. +- [flashing] Clean up extra BINARY_PATH from flash.sh. +- [camera] Hide flash option for front camera. +### droid-config-i3213 +- Updated : 0.0.48-1.8.4.jolla -- 0.0.52-1.10.8.jolla +- [media] Add gmp-droid for browser hw video decoding. +- [patterns] Replace audioflingeglue with audiosystem-passthrough-dummy-af. +- [flashing] Print device details when flashing. +- [flashing] Print oem blob details when flashing. +- [flashing] Clean up extra BINARY_PATH from flash.sh. +- [camera] Hide flash option for front camera. +### droid-config-i4113 +- Updated : 0.0.48-1.8.4.jolla -- 0.0.52-1.10.8.jolla +- [media] Add gmp-droid for browser hw video decoding. +- [patterns] Replace audioflingeglue with audiosystem-passthrough-dummy-af. +- [flashing] Print device details when flashing. +- [flashing] Print oem blob details when flashing. +- [flashing] Clean up extra BINARY_PATH from flash.sh. +- [camera] Hide flash option for front camera. +### droid-config-i4213 +- Updated : 0.0.48-1.8.4.jolla -- 0.0.52-1.10.8.jolla +- [media] Add gmp-droid for browser hw video decoding. +- [patterns] Replace audioflingeglue with audiosystem-passthrough-dummy-af. +- [flashing] Print device details when flashing. +- [flashing] Print oem blob details when flashing. +- [flashing] Clean up extra BINARY_PATH from flash.sh. +- [camera] Hide flash option for front camera. +### droid-config-l500d +- Updated : 0.14.15-1.12.16.jolla -- 0.14.18-1.15.29.jolla +- [media] Add gmp-droid for browser hw video decoding. +- [bluez5] Disable EATT in bluez5 configuration. +- [ks] Adapt ks for latest factory script. +### droid-config-tbj +- Updated : 0.9.15-1.12.11.jolla -- 0.9.17-1.14.26.jolla +- [media] Add gmp-droid for browser hw video decoding. +- [patterns] Don't require obsoleted preload pictures config. +### droid-hal-discovery +- Updated : 0.1.21-1.10.1.jolla -- 0.1.23-1.11.1.jolla +- [system/core] hybris: Allow input group to use vibrator. +- [rpm] dhd: Add mechanism to remove users from hw adaptation groups. +- [rpm] dhd: Don't add regular user to system group. +- [rpm] helpers: fix img-boot dependency handling. +- [rpm] helpers/img-boot: handle droid-hal-$DEVICE and droid-hal-$HABUILD_DEVICE. +### droid-hal-f5121 +- Updated : 0.5.6-1.8.1.jolla -- 0.5.9-1.10.1.jolla +- [kernel/sony/msm] Enable quota. +- [system/core] hybris: Allow input group to use vibrator. +- [rpm] dhd: Add mechanism to remove users from hw adaptation groups. +- [rpm] dhd: Don't add regular user to system group. +- [rpm] helpers: fix img-boot dependency handling. +- [rpm] helpers/img-boot: handle droid-hal-$DEVICE and droid-hal-$HABUILD_DEVICE. +### droid-hal-geminipda +- Updated : 0.0.12-1.5.1.jolla -- 0.0.15-1.7.1.jolla +- [gemini-kernel] Enable quota. +- [system] hybris: Allow input group to use vibrator. +- [rpm] dhd: Add mechanism to remove users from hw adaptation groups. +- [rpm] dhd: Don't add regular user to system group. +- [rpm] helpers: fix img-boot dependency handling. +- [rpm] helpers/img-boot: handle droid-hal-$DEVICE and droid-hal-$HABUILD_DEVICE. +### droid-hal-kirin +- Updated : 0.0.37-1.5.1.jolla -- 0.0.41-1.5.1.jolla +- [kernel] clk: qcom: Prevent update_config failure. +- [kernel] Revert "(hybris) Revert "fuse: don't mess with blocking signals" to fix suspend." +- [kernel] upstream updates for 4.9.221 +- [kernel] upstream: sdm660: Enable gfx3d_src parent clocks. +- [kernel] upstream updates for 4.9.215 +- [hybris-patches] Allow input group to use vibrator. +- [dhd] Add mechanism to remove users from hw adaptation groups. +- [dhd] Don't add regular user to system group. +- [helpers] fix img-boot dependency handling. +- [helpers][img-boot] handle droid-hal-$DEVICE and droid-hal-$HABUILD_DEVICE. +### droid-hal-l500d +- Updated : 0.0.92-1.10.1.jolla -- 0.0.95-1.11.1.jolla +- [l500d-kernel] Enable quota. +- [system/core] hybris: Allow input group to use vibrator. +- [rpm] dhd: Add mechanism to remove users from hw adaptation groups. +- [rpm] dhd: Don't add regular user to system group. +- [rpm] helpers: fix img-boot dependency handling. +- [rpm] helpers/img-boot: handle droid-hal-$DEVICE and droid-hal-$HABUILD_DEVICE. +### droid-hal-mermaid +- Updated : 0.0.37-1.5.1.jolla -- 0.0.41-1.5.1.jolla +- [kernel] clk: qcom: Prevent update_config failure. +- [kernel] Revert "(hybris) Revert "fuse: don't mess with blocking signals" to fix suspend." +- [kernel] upstream updates for 4.9.221 +- [kernel] upstream: sdm660: Enable gfx3d_src parent clocks. +- [kernel] upstream updates for 4.9.215 +- [hybris-patches] Allow input group to use vibrator. +- [dhd] Add mechanism to remove users from hw adaptation groups. +- [dhd] Don't add regular user to system group. +- [helpers] fix img-boot dependency handling. +- [helpers][img-boot] handle droid-hal-$DEVICE and droid-hal-$HABUILD_DEVICE. +### droid-hal-pioneer +- Updated : 0.1.21-1.11.1.jolla -- 0.1.23-1.12.1.jolla +- [system/core] hybris: Allow input group to use vibrator. +- [rpm] dhd: Add mechanism to remove users from hw adaptation groups. +- [rpm] dhd: Don't add regular user to system group. +- [rpm] helpers: fix img-boot dependency handling. +- [rpm] helpers/img-boot: handle droid-hal-$DEVICE and droid-hal-$HABUILD_DEVICE. +### droid-hal-tbj +- Updated : 0.0.47-1.6.1.jolla -- 0.0.51-1.8.1.jolla +- [tbj-kernel] Fix config for quota support. +- [tbj-kernel] Enable quota. +- [tbj-device_intel_common] Make sw_sync accessible by graphics group. +- [rpm] dhd: Add mechanism to remove users from hw adaptation groups. +- [rpm] dhd: Don't add regular user to system group. +- [rpm] helpers: fix img-boot dependency handling. +- [rpm] helpers/img-boot: handle droid-hal-$DEVICE and droid-hal-$HABUILD_DEVICE. +### droid-hal-voyager +- Updated : 0.1.21-1.9.1.jolla -- 0.1.23-1.10.1.jolla +- [system/core] hybris: Allow input group to use vibrator. +- [rpm] dhd: Add mechanism to remove users from hw adaptation groups. +- [rpm] dhd: Don't add regular user to system group. +- [rpm] helpers: fix img-boot dependency handling. +- [rpm] helpers/img-boot: handle droid-hal-$DEVICE and droid-hal-$HABUILD_DEVICE. +### droid-system-kirin +- Updated : 0.0.7-1.2.1.jolla -- 0.0.8-1.4.1.jolla +- [system] Do not log battery status to kernel log. +### droid-system-kirin-i3113 +- Updated : 0.0.7-1.2.1.jolla -- 0.0.8-1.4.1.jolla +- [system] Do not log battery status to kernel log. +### droid-system-kirin-i4113 +- Updated : 0.0.7-1.2.1.jolla -- 0.0.8-1.4.1.jolla +- [system] Do not log battery status to kernel log. +### droid-system-mermaid +- Updated : 0.0.7-1.2.1.jolla -- 0.0.8-1.4.1.jolla +- [system] Do not log battery status to kernel log. +### droid-system-mermaid-i3213 +- Updated : 0.0.7-1.2.1.jolla -- 0.0.8-1.4.1.jolla +- [system] Do not log battery status to kernel log. +### droid-system-mermaid-i4213 +- Updated : 0.0.7-1.2.1.jolla -- 0.0.8-1.4.1.jolla +- [system] Do not log battery status to kernel log. +### droid-system-packager +- Updated : 0.1.9-1.1.40.jolla -- 0.1.11-1.4.1.jolla +- [groups] Create proper android groups and users. +- [systemd] Fix location of systemd unit files. +### droid-system-sbj +- Updated : 0.4.6-1.2.34.jolla -- 0.4.8-1.5.1.jolla +- [groups] Create proper android groups and users. +- [droid-system-sbj] Fix location of systemd unit files. +### droid-system-vendor-kirin +- Updated : 0.0.8-1.2.1.jolla -- 0.0.9-1.4.1.jolla +- [vendor] Do not log battery status to kernel log. +### droid-system-vendor-kirin-i3113 +- Updated : 0.0.8-1.2.1.jolla -- 0.0.9-1.4.1.jolla +- [vendor] Do not log battery status to kernel log. +### droid-system-vendor-kirin-i4113 +- Updated : 0.0.8-1.2.1.jolla -- 0.0.9-1.4.1.jolla +- [vendor] Do not log battery status to kernel log. +### droid-system-vendor-mermaid +- Updated : 0.0.8-1.2.1.jolla -- 0.0.9-1.4.1.jolla +- [vendor] Do not log battery status to kernel log. +### droid-system-vendor-mermaid-i3213 +- Updated : 0.0.8-1.2.1.jolla -- 0.0.9-1.4.1.jolla +- [vendor] Do not log battery status to kernel log. +### droid-system-vendor-mermaid-i4213 +- Updated : 0.0.8-1.2.1.jolla -- 0.0.9-1.4.1.jolla +- [vendor] Do not log battery status to kernel log. +### droidmedia +- Updated : 0.20191025.0-1.19.1.jolla -- 0.20200728.0-1.1.1.jolla +- [droidmedia] Autodetect target architecture. +- [droidmedia] Update the meta-data of buffers when they are recycled. +- [droidmedia] Add explicit include for cutils/atomic.h +- [droidmedia] Cache and re-use queue DroidMediaBuffer instances. +- [droidmedia] Enforce the HW_TEXTURE flag on all allocated buffers. +- [droidmedia] Prevent a deadlock on codec destruction. +- [droidmedia] Fix an unsafe access to a buffer queue in media codec. +### dsme +- Updated : 0.80.0-1.11.1.jolla -- 0.81.2-1.14.3.jolla +- Binaries added : dsme-plugin-devel - 0.81.2-1.14.3.jolla +- [runlevel] Expect systemctl to reside in /usr/bin. +- [runlevel] Fix whitespace issues +- [aarch64] Do not hardcode libdir. Fix location of systemd unit files. +- [dsme] Allow custom modules to be loaded. +- [dsme] Fix include path in dsme-plugin package config file. +- [dsme] Keep dsme buildable without autotools. +- [dsme] Remove stale dsme_dbus_if package config file +- [dsme] Update local header dependencies. +- [packaging] Add dsme-plugin-devel package. +- [packaging] Add .pc.in-file for dsme-plugin-devel package. +### embedlite-components-qt5 +- Updated : 1.20.8-1.10.3.jolla -- 1.21.8-1.12.3.jolla +- [embedlite-components] Fix password saving dialog. +- [embedlite-components] Add API to save active window to pdf file. +- [embedlite-components] Ensure touch events also fire mouse clicks. +- [embedlite-components] Clear previous downloads upon browser start. +- [embedlite-components] Fix html body, div, heading, and table cell to cope text selection. +- [embedlite-components] Improve context menu media handling. +- [user-agent] Cleanup user-agent overrides. +- [embedlite-components] Add "preventAddionalDialog" hint for non auth prompts. +- [embedlite-components] Fix password saving and auto login. +- [embedlite-components] Fix private browsing for login. +- [embedlite-components] Adapt Firefox nsLoginManagerPrompter.js to embedlite-components. +- [embedlite-components] Import FF nsLoginManagerPrompter.js. +- [embedlite-compenents] Add gitignore for build output. +- [embedlite-components] Add old changes. +- [embedlite-components] Align APIs to esr52 changes. +- [embedlite-components] Cleanup C++ logging. +- [embedlite-components] Condition logging for JS components. +- [embedlite-components] Drop C++ EmbedPromptService. +- [embedlite-components] Drop embed C++ FilePicker implementation from widget factory. +- [embedlite-components] Fix/align nsFilePicker API. +- [embedlite-components] Fix/align nsIAlertsService API. +- [embedlite-components] Fix clipboard copy string. +- [embedlite-components] Fix correct nsClipBoard implementation to be loaded. +- [embedlite-components] Implement PromptService.js as a JS Component. +- [embedlite-components] Port FilePicker.js implementation. +- [embedlite-components-qt5] Port FilePicker.js implementation. +- [embedlite-components] Rename C++ prompt module to match the name. +- [embedlite-components] Rename C++ widgetfactory module to match the name. +- [embedlite-components] Rename winid to winId. +- [embedlite] Rename C++ prompt module to match the name. +- [embedlite] Rename C++ widgetfactory module to match the name. +- [embedlite-components] Use https for search-engines submodule. +- [embedlite-components] Use promptForSaveToFileAsync. +- [embedlite-components] Entering secure JS context by pushing AutoNoJSAPI to the stack. +- [embedlite-components] Don't load gecko addons at startup. +- [embedlite-components] Add support for select all in text selection. +- [embedlite-components] Fix