[packages/lxsession] - remove dpkg code (patch from Debian), disable notify, segfaults when built with libayatana-appin
hawk
hawk at pld-linux.org
Sat Apr 27 18:26:26 CEST 2024
commit 5ca9e8081734434ace8e9934b2f830d20f04b144
Author: Marcin Krol <hawk at 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 <andrej at 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
More information about the pld-cvs-commit
mailing list