summaryrefslogtreecommitdiffstats
path: root/perl-install
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install')
-rw-r--r--perl-install/NEWS1
-rw-r--r--perl-install/any.pm36
-rw-r--r--perl-install/lang.pm4
3 files changed, 29 insertions, 12 deletions
diff --git a/perl-install/NEWS b/perl-install/NEWS
index 7db075a70..e64a51694 100644
--- a/perl-install/NEWS
+++ b/perl-install/NEWS
@@ -1,3 +1,4 @@
+- fix inconsistent use of any::sessions()
- fix autologin session selection for GDM
Version 18.70 - 29 November 2025
diff --git a/perl-install/any.pm b/perl-install/any.pm
index dcf028853..830ec7eb5 100644
--- a/perl-install/any.pm
+++ b/perl-install/any.pm
@@ -811,6 +811,30 @@ sub setupBootloader__grub2 {
}
}
+sub session_dirs() {
+ qw( /usr/share/xsessions /usr/share/wayland-sessions );
+}
+
+sub session_files() {
+ my %sessions;
+ foreach my $session_dir (session_dirs()) {
+ foreach my $session_file (glob("$::prefix$session_dir/*.desktop")) {
+ my $basename = $session_file;
+ $basename =~ s!\.[^.]+$!!;
+ $basename =~ s!.*/!!;
+ my %session = read_gnomekderc($session_file, 'Desktop Entry');
+ $session{Name} =~ s/\s+//g;
+ $sessions{$session{Name}} = { dir => $session_dir, basename => $basename };
+ }
+ }
+ %sessions;
+}
+
+sub session_names() {
+ my %session_files = session_files();
+ sort(keys %session_files);
+}
+
sub get_session_file {
my ($desktop) = @_;
my @dir_wm = qw(xsessions wayland-sessions);
@@ -864,7 +888,7 @@ sub get_autologin() {
my $lightdm_conffile = "$::prefix/etc/lightdm/lightdm.conf.d/50-mageia-autologin.conf";
my $lxdm_conffile = "$::prefix/etc/lxdm/lxdm.conf";
my $autologin_file = "$::prefix/etc/sysconfig/autologin";
- my $desktop = $desktop{DESKTOP} || first(sessions());
+ my $desktop = $desktop{DESKTOP} || first(session_names());
my $dm =
basename(readlink("$::prefix/etc/systemd/system/display-manager.service")) =~ s/(.*)\.service/$1/r ||
desktop_to_dm($desktop) ||
@@ -1164,14 +1188,6 @@ sub ask_user_and_root {
$ret && $u;
}
-sub sessions() {
- my @l;
- my @dir_wm = qw(xsessions wayland-sessions);
- foreach my $dwm (@dir_wm) {
- push @l, map { s/.desktop$//; basename($_) } glob("$::prefix/usr/share/$dwm/*.desktop");
- }
- @l;
-}
sub sessions_with_order() {
my %h = map { /(.*)=(.*)/ } split(' ', run_program::rooted_get_stdout($::prefix, '/usr/sbin/chksession', '-L'));
\%h;
@@ -1257,7 +1273,7 @@ sub format_wm {
sub autologin {
my ($o, $in) = @_;
- my @wm = sessions();
+ my @wm = session_names();
my @users = map { $_->{name} } @{$o->{users} || []};
my $kde_desktop = find { member($_, 'KDE', 'KDE4') } @wm;
diff --git a/perl-install/lang.pm b/perl-install/lang.pm
index 5301bd1f3..6767a33d0 100644
--- a/perl-install/lang.pm
+++ b/perl-install/lang.pm
@@ -970,8 +970,8 @@ sub IM2packages {
my ($locale) = @_;
if ($locale->{IM}) {
require any;
- my @sessions = any::sessions();
- $is_plasma = any { /plasma/ } @sessions;
+ my @sessions = any::session_names();
+ $is_plasma = any { /plasma/i } @sessions;
my $per_lang = $IM_config{$locale->{IM}}{packages} || {};
my $main_lang = analyse_locale_name($locale->{lang})->{main};
my $packages = $per_lang->{$main_lang} || $per_lang->{generic};