diff --git a/root/etc/e-smith/events/actions/systemd-default b/root/etc/e-smith/events/actions/systemd-default index 5e78a08..b0b0613 100644 --- a/root/etc/e-smith/events/actions/systemd-default +++ b/root/etc/e-smith/events/actions/systemd-default @@ -54,7 +54,9 @@ if (!symlink($old_qfn, $new_qfn)) { # we let the dedicated systemd command tryin to do what we will do later in this script # as up to systemd 236 it is bugged see: -# https://github.com/systemd/systemd/pull/7158 and https://github.com/systemd/systemd/pull/7289 +# https://github.com/systemd/systemd/pull/7158 : systemctl: respect [Install] section in drop-ins: should be fixed in SME 12 (239) +# https://github.com/systemd/systemd/issues/9477 : aliases; open +# https://github.com/systemd/systemd/pull/9901 allow instantiated units to be enabled via presets v240 system("/usr/bin/systemctl preset-all"); # in case preset-all messed up with our default target system("/usr/bin/systemctl set-default sme-server.target"); @@ -101,10 +103,11 @@ foreach my $filen (reverse sort keys %files) { my $service=$2; my $stats=$1; # print $_ ."\n"; - #ignore service that does not exists ! + # ignore service that does not exists ! + # here we are searching for service@instance.service type my $multiple = $service; ($multiple = $service ) =~ s/([a-zA-Z0-9\-_.]+@)(.*)/$1.service/ if ( $service =~ /@/ ); - #print "$stats $service $multiple\n"; + #print "$stats $service $multiple\n" if $service ne $multiple; next unless ( -e "/usr/lib/systemd/system/$service" or -e "/etc/systemd/system/$service" or -e "/usr/lib/systemd/system/$multiple"); # eliminate duplicates, this way we keep only the last entry of the lowest file as we do it in reverse order of file, # but from top to bottom of file. @@ -117,7 +120,7 @@ foreach my $filen (reverse sort keys %files) { #print "want $service \n"; } else { - my $wanted = `grep -P '^WantedBy=.*sme-server.target' /usr/lib/systemd/system/$service* /etc/systemd/system/$service* -rsh` ; + my $wanted = `grep -P '^WantedBy=.*sme-server.target' /usr/lib/systemd/system/$service* /etc/systemd/system/$service* /usr/lib/systemd/system/$multiple* /etc/systemd/system/$multiple* -rsh` ; chomp $wanted; $wantedBy{$service}=1 unless ( $wanted eq ""); #print "want $service \n" unless ( $wanted eq "") ; diff --git a/smeserver-base.spec b/smeserver-base.spec index 2e32511..3a9a8c9 100644 --- a/smeserver-base.spec +++ b/smeserver-base.spec @@ -4,7 +4,7 @@ Summary: smeserver server and gateway - base module %define name smeserver-base Name: %{name} %define version 11.0.0 -%define release 20 +%define release 21 Version: %{version} Release: %{release}%{?dist} License: GPL @@ -184,6 +184,9 @@ fi %changelog +* Fri Jan 03 2025 Jean-Philippe Pialasse 11.0.0-21.sme +- improve support of systemd service with instance service@instance.service [SME: 12859] + * Thu Jan 02 2025 Jean-Philippe Pialasse 11.0.0-20.sme - Primary default to SSL required and redirect [SME: 12858] - cleanup remove primary=system [SME: 8268]