]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
scripts: sphinx-pre-install: improve distro detection check
authorMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 14 Apr 2020 16:56:08 +0000 (18:56 +0200)
committerJonathan Corbet <corbet@lwn.net>
Mon, 20 Apr 2020 21:19:12 +0000 (15:19 -0600)
The Arch-linux detection is hit by catting /etc/issue, whose
contents is (nowadays):

Arch Linux \r (\l)

It sounds a little ackward to print such string, so,
instead, let's use the /etc/os-release file, with exists
on lots of distributions and should provide a more reliable
result.

We'll keep the old tests before it, in order to avoid possible
regressions with the other distros, although the new way should
probably work on all the currently supported distributions.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Link: https://lore.kernel.org/r/472924557afdf2b5492ae2a48c5ecfae216d54e2.1586883286.git.mchehab+huawei@kernel.org
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
scripts/sphinx-pre-install

index fa3fb05cd54bea8f67f906f150fafcc508a2a769..ea941c6e06479ae92c09d4a49c64bd3c362f4402 100755 (executable)
@@ -780,6 +780,24 @@ $system_release = catcheck("/etc/system-release") if !$system_release;
 $system_release = catcheck("/etc/redhat-release") if !$system_release;
 $system_release = catcheck("/etc/lsb-release") if !$system_release;
 $system_release = catcheck("/etc/gentoo-release") if !$system_release;
+
+# This seems more common than LSB these days
+if (!$system_release) {
+       my %os_var;
+       if (open IN, "cat /etc/os-release|") {
+               while (<IN>) {
+                       if (m/^([\w\d\_]+)=\"?([^\"]*)\"?\n/) {
+                               $os_var{$1}=$2;
+                       }
+               }
+               $system_release = $os_var{"NAME"};
+               if (defined($os_var{"VERSION_ID"})) {
+                       $system_release .= " " . $os_var{"VERSION_ID"} if (defined($os_var{"VERSION_ID"}));
+               } else {
+                       $system_release .= " " . $os_var{"VERSION"};
+               }
+       }
+}
 $system_release = catcheck("/etc/issue") if !$system_release;
 $system_release =~ s/\s+$//;