diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2013-06-28 17:09:46 +0100 |
---|---|---|
committer | Saul Wold <sgw@linux.intel.com> | 2013-07-02 07:58:08 -0700 |
commit | bff50b747cde04007ead65dde4207b16a8e1bf08 (patch) | |
tree | dfb4390e21b5ca1fb70bf5f619cb5ea84d3e02da /meta/lib/oe | |
parent | 458e76e470966d759067b2f6e6f00fa75a2963f3 (diff) | |
download | openembedded-core-bff50b747cde04007ead65dde4207b16a8e1bf08.tar.gz openembedded-core-bff50b747cde04007ead65dde4207b16a8e1bf08.tar.bz2 openembedded-core-bff50b747cde04007ead65dde4207b16a8e1bf08.zip |
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
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Diffstat (limited to 'meta/lib/oe')
-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(): 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('/','-') |