From: Paul Eggleton <paul.eggleton@linux.intel.com>
To: openembedded-core@lists.openembedded.org
Subject: [PATCH] lib/oe/lsb.py: fall back to /etc/os-release for host distro ID
Date: Fri, 28 Jun 2013 17:09:46 +0100 [thread overview]
Message-ID: <1372435786-15915-1-git-send-email-paul.eggleton@linux.intel.com> (raw)
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>
---
meta/lib/oe/lsb.py | 16 ++++++++++++++--
1 file 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('/','-')
--
1.8.1.2
reply other threads:[~2013-06-28 16:12 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1372435786-15915-1-git-send-email-paul.eggleton@linux.intel.com \
--to=paul.eggleton@linux.intel.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox