mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-20 02:55:39 +00:00
nixos/switch-to-configuration: Lock the switch
This prevents any concurrent switches from happening which is not an issue I have seen people complaining about but it seems like a good measure.
This commit is contained in:
parent
3397af26c4
commit
5d7723dd5b
@ -22,6 +22,7 @@ use JSON::PP;
|
|||||||
use IPC::Cmd;
|
use IPC::Cmd;
|
||||||
use Sys::Syslog qw(:standard :macros);
|
use Sys::Syslog qw(:standard :macros);
|
||||||
use Cwd qw(abs_path);
|
use Cwd qw(abs_path);
|
||||||
|
use Fcntl ':flock';
|
||||||
|
|
||||||
## no critic(ControlStructures::ProhibitDeepNests)
|
## no critic(ControlStructures::ProhibitDeepNests)
|
||||||
## no critic(ErrorHandling::RequireCarping)
|
## no critic(ErrorHandling::RequireCarping)
|
||||||
@ -91,6 +92,8 @@ if (!-f "/etc/NIXOS" && (read_file("/etc/os-release", err_mode => "quiet") // ""
|
|||||||
}
|
}
|
||||||
|
|
||||||
make_path("/run/nixos", { mode => oct(755) });
|
make_path("/run/nixos", { mode => oct(755) });
|
||||||
|
open(my $stc_lock, '>>', '/run/nixos/switch-to-configuration.lock') or die "Could not open lock - $!";
|
||||||
|
flock($stc_lock, LOCK_EX) or die "Could not acquire lock - $!";
|
||||||
openlog("nixos", "", LOG_USER);
|
openlog("nixos", "", LOG_USER);
|
||||||
|
|
||||||
# Install or update the bootloader.
|
# Install or update the bootloader.
|
||||||
@ -983,4 +986,5 @@ if ($res == 0) {
|
|||||||
syslog(LOG_ERR, "switching to system configuration $toplevel failed (status $res)");
|
syslog(LOG_ERR, "switching to system configuration $toplevel failed (status $res)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
close($stc_lock) or die "Could not close lock - $!";
|
||||||
exit($res);
|
exit($res);
|
||||||
|
Loading…
Reference in New Issue
Block a user