2020-04-08 18:55:50

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [PATCH 1/6] scripts: sphinx-pre-install: improve distro detection check

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 <[email protected]>
---
scripts/sphinx-pre-install | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)

diff --git a/scripts/sphinx-pre-install b/scripts/sphinx-pre-install
index fa3fb05cd54b..c2071a1c69ea 100755
--- a/scripts/sphinx-pre-install
+++ b/scripts/sphinx-pre-install
@@ -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 those 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+$//;

--
2.25.2


2020-04-08 21:21:00

by Bird, Tim

[permalink] [raw]
Subject: RE: [PATCH 1/6] scripts: sphinx-pre-install: improve distro detection check



> -----Original Message-----
> From: Mauro Carvalho Chehab <[email protected]> On Behalf Of Mauro Carvalho Chehab
>
> 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 <[email protected]>
> ---
> scripts/sphinx-pre-install | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/scripts/sphinx-pre-install b/scripts/sphinx-pre-install
> index fa3fb05cd54b..c2071a1c69ea 100755
> --- a/scripts/sphinx-pre-install
> +++ b/scripts/sphinx-pre-install
> @@ -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 those days
should 'those' be 'these'?

> +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+$//;
>
> --
> 2.25.2