summaryrefslogtreecommitdiffstats
path: root/meta/lib
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2013-06-28 17:09:46 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-07-02 22:23:48 +0100
commit785b49e5c2ecb88a0f6de51732582253ba6b0c98 (patch)
treec77e3a23b543e6f713fa3fe20ca640c1978e4d81 /meta/lib
parent2ed1c03b2459054f0145a77e065b0304bc5da9cb (diff)
downloadast2050-yocto-poky-785b49e5c2ecb88a0f6de51732582253ba6b0c98.zip
ast2050-yocto-poky-785b49e5c2ecb88a0f6de51732582253ba6b0c98.tar.gz
lib/oe/lsb.py: fall back to /etc/os-release for host distro ID
The new standard for host distribution identification [1] is /etc/os-release, and a number of newer distributions provide this file, so add support for this in order to pick up more distributions. Additionally, handle "rolling release" style distributions that don't report a version number, e.g. Arch Linux. With this change we can identify the most common distributions, so this should satisfy [YOCTO #4271]. Note that this doesn't imply support for these distros as build hosts, just that we can identify them. [1] http://www.freedesktop.org/software/systemd/man/os-release.html (From OE-Core rev: bff50b747cde04007ead65dde4207b16a8e1bf08) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib')
-rw-r--r--meta/lib/oe/lsb.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/meta/lib/oe/lsb.py b/meta/lib/oe/lsb.py
index fed1204..b53f361 100644
--- a/meta/lib/oe/lsb.py
+++ b/meta/lib/oe/lsb.py
@@ -44,6 +44,14 @@ def release_dict_file():
if line.startswith('VERSION = '):
data['DISTRIB_RELEASE'] = line[10:].rstrip()
break
+ elif os.path.exists('/etc/os-release'):
+ data = {}
+ with open('/etc/os-release') as f:
+ for line in f:
+ if line.startswith('NAME='):
+ data['DISTRIB_ID'] = line[5:].rstrip().strip('"')
+ if line.startswith('VERSION_ID='):
+ data['DISTRIB_RELEASE'] = line[11:].rstrip().strip('"')
except IOError:
return None
return data
@@ -58,7 +66,7 @@ def distro_identifier(adjust_hook=None):
else:
lsb_data_file = release_dict_file()
if lsb_data_file:
- distro_id, release = lsb_data_file['DISTRIB_ID'], lsb_data_file['DISTRIB_RELEASE']
+ distro_id, release = lsb_data_file['DISTRIB_ID'], lsb_data_file.get('DISTRIB_RELEASE', None)
else:
distro_id, release = None, None
@@ -66,4 +74,8 @@ def distro_identifier(adjust_hook=None):
distro_id, release = adjust_hook(distro_id, release)
if not distro_id:
return "Unknown"
- return '{0}-{1}'.format(distro_id, release).replace(' ','-').replace('/','-')
+ if release:
+ id_str = '{0}-{1}'.format(distro_id, release)
+ else:
+ id_str = distro_id
+ return id_str.replace(' ','-').replace('/','-')
OpenPOWER on IntegriCloud