diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2013-06-28 17:09:46 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-07-02 22:23:48 +0100 |
commit | 785b49e5c2ecb88a0f6de51732582253ba6b0c98 (patch) | |
tree | c77e3a23b543e6f713fa3fe20ca640c1978e4d81 /meta | |
parent | 2ed1c03b2459054f0145a77e065b0304bc5da9cb (diff) | |
download | 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')
-rw-r--r-- | meta/lib/oe/lsb.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/meta/lib/oe/lsb.py b/meta/lib/oe/lsb.py index fed1204e85..b53f361035 100644 --- a/meta/lib/oe/lsb.py +++ b/meta/lib/oe/lsb.py | |||
@@ -44,6 +44,14 @@ def release_dict_file(): | |||
44 | if line.startswith('VERSION = '): | 44 | if line.startswith('VERSION = '): |
45 | data['DISTRIB_RELEASE'] = line[10:].rstrip() | 45 | data['DISTRIB_RELEASE'] = line[10:].rstrip() |
46 | break | 46 | break |
47 | elif os.path.exists('/etc/os-release'): | ||
48 | data = {} | ||
49 | with open('/etc/os-release') as f: | ||
50 | for line in f: | ||
51 | if line.startswith('NAME='): | ||
52 | data['DISTRIB_ID'] = line[5:].rstrip().strip('"') | ||
53 | if line.startswith('VERSION_ID='): | ||
54 | data['DISTRIB_RELEASE'] = line[11:].rstrip().strip('"') | ||
47 | except IOError: | 55 | except IOError: |
48 | return None | 56 | return None |
49 | return data | 57 | return data |
@@ -58,7 +66,7 @@ def distro_identifier(adjust_hook=None): | |||
58 | else: | 66 | else: |
59 | lsb_data_file = release_dict_file() | 67 | lsb_data_file = release_dict_file() |
60 | if lsb_data_file: | 68 | if lsb_data_file: |
61 | distro_id, release = lsb_data_file['DISTRIB_ID'], lsb_data_file['DISTRIB_RELEASE'] | 69 | distro_id, release = lsb_data_file['DISTRIB_ID'], lsb_data_file.get('DISTRIB_RELEASE', None) |
62 | else: | 70 | else: |
63 | distro_id, release = None, None | 71 | distro_id, release = None, None |
64 | 72 | ||
@@ -66,4 +74,8 @@ def distro_identifier(adjust_hook=None): | |||
66 | distro_id, release = adjust_hook(distro_id, release) | 74 | distro_id, release = adjust_hook(distro_id, release) |
67 | if not distro_id: | 75 | if not distro_id: |
68 | return "Unknown" | 76 | return "Unknown" |
69 | return '{0}-{1}'.format(distro_id, release).replace(' ','-').replace('/','-') | 77 | if release: |
78 | id_str = '{0}-{1}'.format(distro_id, release) | ||
79 | else: | ||
80 | id_str = distro_id | ||
81 | return id_str.replace(' ','-').replace('/','-') | ||