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

From: Bird, Tim
Date: Wed Apr 08 2020 - 13:01:25 EST




> -----Original Message-----
> From: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx> 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 <mchehab+huawei@xxxxxxxxxx>
> ---
> 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