That would work. Sys.info()['release'] # release # "5.4.72-microsoft-standard-WSL2"
Brenton From: Martin Maechler Sent: Wednesday, April 14, 2021 03:28 To: Brenton Wiernik Cc: r-devel@r-project.org Subject: Re: [Rd] Sys.timezone() fails on Linux under Microsoft WSL >>>>> Brenton Wiernik >>>>> on Tue, 13 Apr 2021 09:15:50 -0400 writes: > In Microsoft’s Windows Subsystem for Linux (WSL or WSL2), > there is not system framework, so utilities that depend on > it fail. This includes timedatectl which R uses in > Sys.timezone(). The timedatectl utility is present on > Linux systems installed under WSL/WSL2, but is > non-functional. So, when Sys.timezone() checks for > Sys.which("timedatectl"), it receives a false > positive. The subsequent methods after this if () do work, > however. > This can be fixed if line 42 of Sys.timezone() were changed from: > if (nzchar(Sys.which("timedatectl"))) { > to: > if (nzchar(Sys.which("timedatectl")) && !grepl("microsoft", system("uname -r", intern = TRUE), ignore.case = TRUE)) { > "uname -r" returns for example: "5.4.72-microsoft-standard-WSL2" > So checking for "microsoft" or "WSL" would probably work. > Brenton Wiernik Thank you. This all makes sense. However, using system("uname -r") creates another platform dependency (it fails, i.e., signals an error, e.g., on our Windows Server). Could Sys.info() be used instead? What does it give on your platform? > [[alternative HTML version deleted]] > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel