Devuan bug report logs - #468
python platform.linux_distribution() returns debian

version graph

Package: libpython2.7-minimal; Maintainer for libpython2.7-minimal is (unknown); Source for libpython2.7-minimal is src:python2.7.

Reported by: peter@pwduffy.org.uk

Date: Thu, 21 May 2020 15:48:01 UTC

Severity: normal

Found in version 2.7.13

Done: Mark Hindley <mark@hindley.org.uk>

Full log


🔗 View this message in rfc822 format

MIME-Version: 1.0
X-Mailer: MIME-tools 5.509 (Entity 5.509)
X-Loop: owner@bugs.devuan.org
From: "Devuan bug Tracking System" <owner@bugs.devuan.org>
To: peter@pwduffy.org.uk
Subject: bug#468 closed by Mark Hindley <mark@hindley.org.uk> (Re:
 bug#468: python platform.linux_distribution() returns debian)
Message-ID: <handler.468.D468.167458068215557.notifdone@bugs.devuan.org>
References: <Y9ASvbMAw0lc6BV7@hindley.org.uk>
 <1590075215.2942.97.camel@baldur.shiftshaper.org.uk>
X-Devuan-PR-Message: they-closed 468
X-Devuan-PR-Package: libpython2.7-minimal
Reply-To: 468@bugs.devuan.org
Date: Tue, 24 Jan 2023 17:20:04 +0000
Content-Type: multipart/mixed; boundary="----------=_1674580804-15641-1"
[Message part 1 (text/plain, inline)]
This is an automatic notification regarding your bug report
which was filed against the libpython2.7-minimal package:

#468: python platform.linux_distribution() returns debian

It has been closed by Mark Hindley <mark@hindley.org.uk>.

Their explanation is attached below along with your original report.
If this explanation is unsatisfactory and you have not received a
better one in a separate message then please contact Mark Hindley <mark@hindley.org.uk> by
replying to this email.


-- 
468: https://bugs.devuan.org/cgi/bugreport.cgi?bug=468
Devuan Bug Tracking System
Contact owner@bugs.devuan.org with problems
[Message part 2 (message/rfc822, inline)]
From: Mark Hindley <mark@hindley.org.uk>
To: peter@pwduffy.org.uk, 468-done@bugs.devuan.org
Subject: Re: bug#468: python platform.linux_distribution() returns debian
Date: Tue, 24 Jan 2023 17:17:49 +0000
Peter,

I am going to close this as libpython2.7-minimal was removed from Debian[1] and
the python3 platform library doesn't have linux_distribution().

Mark

[1]  https://bugs.debian.org/1027108
[Message part 3 (message/rfc822, inline)]
From: Peter Duffy <peter@pwduffy.org.uk>
To: submit@bugs.devuan.org
Subject: python platform.linux_distribution() returns debian
Date: Thu, 21 May 2020 16:33:35 +0100
Package: libpython2.7-minimal
Version: 2.7.13

Environment in which bug seen: Devuan 2.1 (ascii)

Problem behaviour: python function platform.linux_distribution() returns
"debian" instead of "devuan"

To reproduce: 

(from command-line):
python

(from python prompt):
import platform
platform.linux_distribution()

(should return: "('debian','9','')"

quit()

Test fix:

platform.linux_distribution() tries to use the file /etc/lsb-release.
This doesn't appear to exist either in Debian stretch or Devuan ascii -
unless it's present in a package which isn't included in the default
install. Creating it with appropriate values fixes the problem:

Check whether /etc/lsb-release exists: it shouldn't, - but if so,
rename it (and rename it back after the test).

lsb_release -a > /etc/lsb-release

Edit /etc/lsb-release and change as follows:

"Distributor ID: " => "DISTRIB_ID="
"Description: " => "DISTRIB_DESCRIPTION="
"Release: "     => "DISTRIB_RELEASE="
"Codename: "    => "DISTRIB_CODENAME="

Above test should now return: "('Devuan','2.1','ascii')"

Additional information:

The problem is apparently caused by the combination of the absence
of /etc/lsb-release, and the presence of /etc/debian_release. The
algorithm in platform.linux_distribution() is apparently to try
reading /etc/lsb-release, and if it doesn't exist, look for any file
matching /etc/*_(version|release)

The bug also exists in python3 (package libpython3.5-minimal, version
3.5.3) - to reproduce, repeat the above test using "python3" instead of
"python"

The bug also exists in beowulf

Not sure whether above "fix" is feasible in practice - maybe other
python-based packages rely on getting back "debian" from
platform.linux_distribution()?

This problem came to light because it breaks the waagent package -
because it believes that it's running on debian, waagent tries to use
systemd-based commands and functions. I'm currently working this
problem, but I'm approaching it by putting in place internal tests to
ascertain whether debian or devuan, rather than relying on a
system-level fix. 

platform.linux_distribution() is deprecated and slated for removal

If it's decided that this can be safely fixed by
creating /etc/lsb-release, one question needs answering: whether to
lowercase the DISTRIB_ID field, or to leave it as returned by
lsb_release

Send a report that this bug log contains spam.


Devuan BTS -- Powered by Debian bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson,
2005-2017 Don Armstrong, and many other contributors.

Devuan Bugs Owner <owner@bugs.devuan.org>.
Last modified: Sat Apr 27 22:29:59 2024;