commit 5ca9e8081734434ace8e9934b2f830d20f04b144 Author: Marcin Krol <h...@tld-linux.org> Date: Sat Apr 27 17:57:13 2024 +0200
- remove dpkg code (patch from Debian), disable notify, segfaults when built with libayatana-appindicator 0.5.5 lxsession.spec | 6 +- no-dpkg.patch | 738 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 742 insertions(+), 2 deletions(-) --- diff --git a/lxsession.spec b/lxsession.spec index 23237c4..7208ed8 100644 --- a/lxsession.spec +++ b/lxsession.spec @@ -1,19 +1,20 @@ # # Conditional build: %bcond_without gtk3 # use GTK+3 instead of GTK+2 -%bcond_without notify # libnotify/indicators based notification +%bcond_with notify # libnotify/indicators based notification Summary: Default session manager for LXDE Summary(pl.UTF-8): Domyślny zarząda sesji dla LXDE Name: lxsession Version: 0.5.5 -Release: 3 +Release: 4 License: GPL v2+ Group: X11/Applications Source0: https://downloads.sourceforge.net/lxde/%{name}-%{version}.tar.xz # Source0-md5: e8380acef215ee7c99c067a2241c2c7b Patch0: libayatana.patch Patch1: no-keyring.patch +Patch2: no-dpkg.patch URL: http://www.lxde.org/ BuildRequires: dbus-devel BuildRequires: dbus-glib-devel @@ -69,6 +70,7 @@ uruchomić je ponownie przy kolejnym zalogowaniu tego użytkownika. %setup -q %patch0 -p1 %patch1 -p1 +%patch2 -p1 %build %{__libtoolize} diff --git a/no-dpkg.patch b/no-dpkg.patch new file mode 100644 index 0000000..4946b30 --- /dev/null +++ b/no-dpkg.patch @@ -0,0 +1,738 @@ +Author: Andriy Grytsenko <and...@rep.kiev.ua> +Description: Remove all dpkg related code from lxsession, it's forbidden by the Debian policy. + +diff -urNp -x '*.orig' lxsession-0.5.5.org/lxsession/app.vala lxsession-0.5.5/lxsession/app.vala +--- lxsession-0.5.5.org/lxsession/app.vala 2024-04-27 17:55:56.230210370 +0200 ++++ lxsession-0.5.5/lxsession/app.vala 2024-04-27 17:55:56.306211412 +0200 +@@ -1125,534 +1125,6 @@ public class ScreenshotManagerApp: Simpl + } + } + +-public class UpdatesManagerApp: SimpleAppObject +-{ +- string updatesmanager_command; +- +- IconObject updates_icon; +- MenuObject icon_menu; +- +- IconObject language_icon; +- +- IconObject reboot_icon; +- +- string apt_update_path = "/var/lib/apt/periodic/update-success-stamp"; +- GLib.File apt_update_file ; +- GLib.FileMonitor apt_update_monitor ; +- +- string dpkg_update_path = "/var/lib/dpkg/status"; +- GLib.File dpkg_update_file ; +- GLib.FileMonitor dpkg_update_monitor ; +- +- string dpkg_run_path = "/var/lib/update-notifier/dpkg-run-stamp"; +- GLib.File dpkg_run_file ; +- GLib.FileMonitor dpkg_run_monitor ; +- +- string apt_lists_update_path = "/var/lib/apt/lists"; +- GLib.File apt_lists_update_file ; +- GLib.FileMonitor apt_lists_update_monitor ; +- +- string reboot_path = "/var/run/reboot-required"; +- GLib.File reboot_file ; +- GLib.FileMonitor reboot_monitor ; +- +- string dpkg_lock_file = "/var/lib/dpkg/lock"; +- +- int lock_check = 0; +- +- public UpdatesManagerApp () +- { +- init(); +- } +- +- public override void read_settings() +- { +- updatesmanager_command = global_settings.get_item_string("Session", "updates_manager", "command"); +- +- switch (updatesmanager_command) +- { +- case null: +- break; +- case "": +- break; +- case " ": +- break; +- case "update-notifier-clone": +- setup_apt_config(); +- setup_reboot_config(); +- run_check(); +- break; +- default: +- string[] create_command = updatesmanager_command.split_set(" ",0); +- this.name = create_command[0]; +- this.command = create_command; +- break; +- } +- } +- +- public void test_inactivate() +- { +- updates_icon.inactivate(); +- } +- +- public void test_activate() +- { +- updates_icon.activate(); +- } +- +- public void run_check() +- { +- if (this.lock_check == 0) +- { +- if (check_lock_file(dpkg_lock_file) == true) +- { +- this.lock_check = 1; +- int timeout = 60; +- if (global_settings.get_item_string("Session", "updates_manager", "timeout") != null) +- { +- timeout = int.parse(global_settings.get_item_string("Session", "updates_manager", "timeout")); +- } +- GLib.Timeout.add_seconds(timeout, on_apt_update_file_change); +- } +- } +- } +- +- public void reboot_launch() +- { +- var session = new SessionObject(); +- session.lxsession_restart(); +- } +- +- public void run_check_reboot() +- { +- string notification_text =""; +- +- if (this.reboot_file.query_exists ()) +- { +- if (this.reboot_icon == null) +- { +- var reboot_icon_menu = new MenuObject() ; +- string line = _("Reboot required"); +- +- try +- { +- var dis = new DataInputStream (this.reboot_file.read ()); +- line = dis.read_line (); +- } +- catch (GLib.Error e) +- { +- message ("Error: %s\n", e.message); +- } +- +- if (line != null) +- { +- notification_text = line; +- } +- +- var menu_item = new MenuItemObject(); +- menu_item.set_label(notification_text); +- menu_item.activate.connect(() => { +- reboot_launch(); +- }); +- menu_item.show(); +- reboot_icon_menu.add(menu_item); +- +- this.reboot_icon = new IconObject("RebootIcon", "system-reboot", notification_text, reboot_icon_menu); +- this.reboot_icon.init(); +- this.reboot_icon.clear_actions (); +- this.reboot_icon.add_action ("launch_reboot", _("Reboot"), () => +- { +- reboot_launch(); +- }); +- this.reboot_icon.activate(); +- } +- } +- else +- { +- if (this.reboot_icon != null) +- { +- this.reboot_icon.inactivate(); +- } +- } +- } +- +- public void language_launch() +- { +- if (this.language_icon != null) +- { +- try +- { +- Process.spawn_command_line_async("gnome-language-selector"); +- this.language_icon.inactivate(); +- } +- catch (SpawnError err) +- { +- warning (err.message); +- } +- } +- } +- +- public void check_language_support() +- { +- string command = "check-language-support"; +- +- string standard_output; +- string standard_error; +- int exit_status; +- +- string launch_string = _("Launch language support"); +- +- try +- { +- Process.spawn_command_line_sync (command, out standard_output, out standard_error, out exit_status); +- +- message ("Launching %s", command); +- message ("Language state: %s", standard_error); +- message ("Language exit status: %i", exit_status); +- message ("Language output: %s", standard_output); +- +- } +- catch (SpawnError err) +- { +- warning (err.message); +- } +- +- if (standard_output != null) +- { +- if (standard_output.length >= 3) +- { +- if (this.language_icon == null) +- { +- var language_icon_menu = new MenuObject() ; +- +- var menu_item = new MenuItemObject(); +- menu_item.set_label(launch_string); +- menu_item.activate.connect(() => { +- language_launch(); +- }); +- menu_item.show(); +- language_icon_menu.add(menu_item); +- +- this.language_icon = new IconObject("LanguageIcon", "preferences-desktop-locale", _("Language support missing"), language_icon_menu); +- this.language_icon.init(); +- this.language_icon.clear_actions (); +- this.language_icon.add_action ("launch_language_support", launch_string, () => +- { +- language_launch(); +- }); +- this.language_icon.activate(); +- } +- } +- else if (this.language_icon != null) +- { +- this.language_icon.inactivate(); +- } +- } +- else if (this.language_icon != null) +- { +- this.language_icon.inactivate(); +- } +- } +- +- public void upgrade_launch (string upgrade_manager_command) +- { +- try +- { +- Process.spawn_command_line_async(upgrade_manager_command); +- } +- catch (SpawnError err) +- { +- warning (err.message); +- } +- } +- +- public bool on_apt_update_file_change() +- { +- /* Launch something that check if updates are available */ +- /* For now, use lxsession-apt-check, which is apt-check from update-notifier */ +- +- string standard_output; +- string standard_error; +- int exit_status; +- +- string notification_text = _("Updates available"); +- +- string launch_string = _("Launch Update Manager"); +- string upgrade_manager_command = ""; +- +- string[] updates_num; +- int updates_urgent = 0; +- int updates_normal = 0; +- int updates_state = 0; +- int number_updates = 0; +- +- /* Lock the check process, to avoid launching the check many times when one is already running */ +- this.lock_check = 1; +- +- if (this.icon_menu == null) +- { +- this.icon_menu = new MenuObject(); +- +- if (global_settings.get_item_string("Session", "upgrade_manager", "command") != null) +- { +- upgrade_manager_command = global_settings.get_item_string("Session", "upgrade_manager", "command"); +- +- var menu_item = new MenuItemObject(); +- menu_item.set_label(launch_string); +- menu_item.activate.connect(() => { +- upgrade_launch (upgrade_manager_command); +- }); +- menu_item.show(); +- icon_menu.add(menu_item); +- } +- } +- +- string command = "/usr/bin/nice" + " " + "/usr/bin/ionice" + " " + "-c3" + " " + "/usr/lib/update-notifier/apt-check"; +- +- string error_string = ""; +- +- try +- { +- Process.spawn_command_line_sync (command, out standard_output, out standard_error, out exit_status); +- +- message ("Launching %s", command); +- message ("Update state: %s", standard_error); +- message ("Update exit status: %i", exit_status); +- +- } +- catch (SpawnError err) +- { +- warning (err.message); +- } +- +- if (this.updates_icon == null) +- { +- this.updates_icon = new IconObject("UpdatesIcon", "software-update-available", notification_text, this.icon_menu); +- this.updates_icon.init(); +- if (global_settings.get_item_string("Session", "upgrade_manager", "command") != null) +- { +- upgrade_manager_command = global_settings.get_item_string("Session", "upgrade_manager", "command"); +- this.updates_icon.clear_actions (); +- this.updates_icon.add_action ("launch_upgrade_manager", launch_string, () => +- { +- upgrade_launch (upgrade_manager_command); +- }); +- } +- this.updates_icon.inactivate(); +- } +- else +- { +- this.updates_icon.inactivate(); +- } +- +- if (standard_error != "") +- { +- if (standard_error[0:1] == "E") +- { +- updates_urgent = 0; +- updates_normal = 0; +- updates_state = 1; +- error_string = _("An error occurred, please run Package Manager from the left-click menu or apt-get in a terminal to see what is wrong."); +- if (standard_error.length > 3) +- { +- notification_text = error_string + "\n" + _("The error message was: ") + standard_error; +- } +- else +- { +- notification_text = error_string; +- } +- } +- else +- { +- updates_num = standard_error.split_set(";",2); +- message ("Number of upgrades: %s", updates_num[0]); +- message ("Number of security upgrades: %s", updates_num[1]); +- updates_num[2] = "0"; +- +- updates_urgent = int.parse(updates_num[1]); +- updates_normal = int.parse(updates_num[0]); +- number_updates = updates_normal + updates_urgent; +- +- if (number_updates == 1) +- { +- notification_text = number_updates.to_string() + _(" Update available"); +- } +- else if (number_updates > 1) +- { +- notification_text = number_updates.to_string() + (" ") + _("Updates available"); +- } +- } +- +- } +- else +- { +- updates_state = 1; +- } +- +- +- if (number_updates > 0) +- { +- message("Activate icon because of updates available"); +- this.updates_icon.set_notification_body(notification_text); +- this.updates_icon.activate(); +- } +- +- if (updates_urgent > 0) +- { +- message("Set urgent icon"); +- this.updates_icon.set_icon("software-update-urgent"); +- this.updates_icon.set_notification_body(notification_text); +- } +- +- +- if (updates_state > 0) +- { +- message("Problem in package state"); +- this.updates_icon.set_icon("software-update-urgent"); +- this.updates_icon.set_notification_body(notification_text); +- this.updates_icon.clear_actions (); +- this.updates_icon.add_action ("launch_upgrade_manager", launch_string, () => +- { +- upgrade_launch ("synaptic-pkexec"); +- }); +- var new_menu = new MenuObject(); +- var new_menu_item = new MenuItemObject(); +- new_menu_item.set_label(launch_string); +- new_menu_item.activate.connect(() => { +- upgrade_launch ("synaptic-pkexec"); +- }); +- new_menu_item.show(); +- new_menu.add(new_menu_item); +- this.updates_icon.set_menu(new_menu); +- this.updates_icon.activate(); +- } +- +- /* Check if language support is complete */ +- check_language_support(); +- +- /* Check if a reboot is requiered */ +- run_check_reboot(); +- +- /* Unlock the check */ +- this.lock_check = 0; +- +- return false; +- } +- +- public void setup_apt_config () +- { +- /* Note directories monitored by update-notifier : +- "/var/lib/apt/lists/" ==> files of meta data of the repositories +- "/var/lib/apt/lists/partial/" +- "/var/cache/apt/archives/" ==> .deb in cache +- "/var/cache/apt/archives/partial/" +- +- Files monitored by update-notifier : +- "/var/lib/dpkg/status" => big file of dpkg status +- "/var/lib/update-notifier/dpkg-run-stamp" update-notifier stamp for dpkg ? +- "/var/lib/apt/periodic/update-success-stamp" +- */ +- +- try +- { +- this.apt_update_file = File.new_for_path(this.apt_update_path); +- this.apt_update_monitor = apt_update_file.monitor_file(GLib.FileMonitorFlags.NONE); +- this.apt_update_monitor.changed.connect(run_check); +- message ("Monitoring apt changes"); +- } +- catch (GLib.Error err) +- { +- message (err.message); +- } +- +- try +- { +- this.dpkg_update_file = File.new_for_path(this.dpkg_update_path); +- this.dpkg_update_monitor = dpkg_update_file.monitor_file(GLib.FileMonitorFlags.NONE); +- this.dpkg_update_monitor.changed.connect(run_check); +- message ("Monitoring dpkg changes"); +- } +- catch (GLib.Error err) +- { +- message (err.message); +- } +- +- try +- { +- this.dpkg_run_file = File.new_for_path(this.dpkg_run_path); +- this.dpkg_run_monitor = dpkg_run_file.monitor_file(GLib.FileMonitorFlags.NONE); +- this.dpkg_run_monitor.changed.connect(run_check); +- message ("Monitoring dpkg run changes"); +- } +- catch (GLib.Error err) +- { +- message (err.message); +- } +- +- try +- { +- this.apt_lists_update_file = File.new_for_path(this.apt_lists_update_path); +- this.apt_lists_update_monitor = apt_lists_update_file.monitor_directory(GLib.FileMonitorFlags.NONE); +- this.apt_lists_update_monitor.changed.connect(run_check); +- message ("Monitoring apt_lists changes"); +- } +- catch (GLib.Error err) +- { +- message (err.message); +- } +- } +- +- public void setup_reboot_config () +- { +- try +- { +- this.reboot_file = File.new_for_path(this.reboot_path); +- this.reboot_monitor = reboot_file.monitor_file(GLib.FileMonitorFlags.NONE); +- this.reboot_monitor.changed.connect(run_check_reboot); +- message ("Monitoring reboot changes"); +- } +- catch (GLib.Error err) +- { +- message (err.message); +- } +- } +- +- /* From https://mail.gnome.org/archives/vala-list/2010-October/msg00036.html */ +- public bool check_lock_file(string check_file) +- { +- +- string lock_file_name = check_file; +- int fd = Posix.open (lock_file_name, Posix.O_RDWR); +- if (fd == -1) +- { +- print ("There was an error opening the file '" +- + lock_file_name + " (Error number " +- + Posix.errno.to_string() + ")\n"); +- return true; +- } +- +- // Try to get a lock +- Posix.Flock fl = Posix.Flock(); +- fl.l_type = Posix.F_WRLCK; +- fl.l_whence = Posix.SEEK_SET; +- fl.l_start = 100; +- fl.l_len = 0; +- +- int fcntl_return = Posix.fcntl (fd, Posix.F_SETLK, fl); +- if (fcntl_return == -1) +- return true; +- +- // Release the lock again +- fl.l_type = Posix.F_UNLCK; +- fl.l_whence = Posix.SEEK_SET; +- fl.l_start = 100; +- fl.l_len = 0; +- fcntl_return = Posix.fcntl (fd, Posix.F_SETLK, fl); +- +- return false; +- } +- +-} + public class CrashManagerApp: SimpleAppObject + { + string crash_manager_command; +diff -urNp -x '*.orig' lxsession-0.5.5.org/lxsession/dbus-lxde-session.vala lxsession-0.5.5/lxsession/dbus-lxde-session.vala +--- lxsession-0.5.5.org/lxsession/dbus-lxde-session.vala 2024-04-27 17:55:56.230210370 +0200 ++++ lxsession-0.5.5/lxsession/dbus-lxde-session.vala 2024-04-27 17:55:56.306211412 +0200 +@@ -421,21 +421,6 @@ namespace Lxsession + XrandrActivate(); + break; + +- case "updates_manager": +- if (option == "check") +- { +- UpdatesCheck(); +- } +- else if (option == "activate") +- { +- UpdatesAct(); +- } +- else if (option == "inactivate") +- { +- UpdatesInactivate(); +- } +- break; +- + case "crash_manager": + if (option == "activate") + { +@@ -455,91 +440,6 @@ namespace Lxsession + } + } + +- private void UpdatesActivate() +- { +- message("Reload updates_manager"); +- if (global_settings.get_item_string("Session", "updates_manager", "command") == null) +- { +- warning("Updates_manager not set"); +- } +- else if (global_updates == null) +- { +- message("Updates_manager doesn't exist, creating it"); +- var updates = new UpdatesManagerApp(); +- global_updates = updates; +- global_updates.launch(); +- } +- else +- { +- message("Reload existing Updates_manager"); +- global_updates.reload(); +- } +- } +- +- private void UpdatesCheck() +- { +- message("Reload updates_manager"); +- if (global_settings.get_item_string("Session", "updates_manager", "command") == null) +- { +- warning("Updates_manager not set"); +- } +- else if (global_updates == null) +- { +- message("Updates_manager doesn't exist, creating it"); +- var updates = new UpdatesManagerApp(); +- global_updates = updates; +- global_updates.launch(); +- global_updates.run_check(); +- } +- else +- { +- message("Check Updates"); +- global_updates.run_check(); +- } +- } +- +- private void UpdatesAct() +- { +- message("Reload updates_manager"); +- if (global_settings.get_item_string("Session", "updates_manager", "command") == null) +- { +- warning("Updates_manager not set"); +- } +- else if (global_updates == null) +- { +- message("Updates_manager doesn't exist, creating it"); +- var updates = new UpdatesManagerApp(); +- global_updates = updates; +- global_updates.test_activate(); +- } +- else +- { +- message("Check Updates"); +- global_updates.test_activate(); +- } +- } +- +- private void UpdatesInactivate() +- { +- message("Reload updates_manager"); +- if (global_settings.get_item_string("Session", "updates_manager", "command") == null) +- { +- warning("Updates_manager not set"); +- } +- else if (global_updates == null) +- { +- message("Updates_manager doesn't exist, creating it"); +- var updates = new UpdatesManagerApp(); +- global_updates = updates; +- global_updates.test_inactivate(); +- } +- else +- { +- message("Check Updates"); +- global_updates.test_inactivate(); +- } +- } +- + public void CrashManagerLaunch() + { + message("Launch crash manager"); +@@ -1102,13 +1002,6 @@ namespace Lxsession + } + } + +- /* Package manager running */ +- public async void PackageManagerRunning (out bool is_running) +- { +- message ("Check if package manager is running"); +- is_running = check_package_manager_running(); +- } +- + /* Test interface */ + public void TestIconNotification() + { +diff -urNp -x '*.orig' lxsession-0.5.5.org/lxsession/main.vala lxsession-0.5.5/lxsession/main.vala +--- lxsession-0.5.5.org/lxsession/main.vala 2024-04-27 17:55:56.230210370 +0200 ++++ lxsession-0.5.5/lxsession/main.vala 2024-04-27 17:55:56.306211412 +0200 +@@ -53,7 +53,6 @@ namespace Lxsession { + GenericSimpleApp global_im_manager; + XrandrApp global_xrandr; + A11yApp global_a11y; +- UpdatesManagerApp global_updates; + CrashManagerApp global_crash; + GenericSimpleApp global_im1; + GenericSimpleApp global_im2; +@@ -469,13 +468,6 @@ namespace Lxsession { + global_proxy.launch(); + } + +- if (global_settings.get_item_string("Session", "updates_manager", "command") != null) +- { +- var updates = new UpdatesManagerApp(); +- global_updates = updates; +- //global_updates.launch(); +- } +- + if (global_settings.get_item_string("Session", "crash_manager", "command") != null) + { + var crash = new CrashManagerApp(); +diff -urNp -x '*.orig' lxsession-0.5.5.org/lxsession/utils.vala lxsession-0.5.5/lxsession/utils.vala +--- lxsession-0.5.5.org/lxsession/utils.vala 2019-02-27 23:02:03.000000000 +0100 ++++ lxsession-0.5.5/lxsession/utils.vala 2024-04-27 17:55:56.306211412 +0200 +@@ -139,37 +139,4 @@ public bool detect_laptop() + } + } + +-public bool check_package_manager_running () +-{ +- GLib.File dpkg, apt_archives, apt_lists, unattended_upgrades; +- bool return_value = false; +- +- dpkg = File.new_for_path("/var/lib/dpkg/lock"); +- apt_archives = File.new_for_path("/var/cache/apt/archives/lock"); +- apt_lists = File.new_for_path("/var/lib/apt/lists/lock"); +- unattended_upgrades = File.new_for_path("/var/run/unattended-upgrades.lock"); +- +- if (dpkg.query_exists ()) +- { +- return_value = true; +- } +- +- if (apt_archives.query_exists ()) +- { +- return_value = true; +- } +- +- if (apt_lists.query_exists ()) +- { +- return_value = true; +- } +- +- if (unattended_upgrades.query_exists ()) +- { +- return_value = true; +- } +- +- return return_value; +-} +- + } ================================================================ ---- gitweb: http://git.pld-linux.org/gitweb.cgi/packages/lxsession.git/commitdiff/5ca9e8081734434ace8e9934b2f830d20f04b144 _______________________________________________ pld-cvs-commit mailing list pld-cvs-commit@lists.pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit