aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoshua Lock <joshua.g.lock@intel.com>2016-11-15 22:08:54 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-11-23 11:02:30 +0000
commite36066dcc3b56cac1c695370ea178b566c0ebfd6 (patch)
tree026fe32f080e793d632d3fbbf85a3944bfac6a8e
parent81479b191287ccbf4cf94fa2d0ad46813091bca1 (diff)
downloadopenembedded-core-contrib-e36066dcc3b56cac1c695370ea178b566c0ebfd6.tar.gz
lib/oe/lsb: better handle missing fields
Some rolling release distros, such as Arch Linux, don't include a VERSION_ID field in their os-release file. Change release_dict_osr() to better handle this optional field being absent. Further improve the resilience of the release_dict_*() methods by always returning a dict and using dict.get() in distro_identifier() to supply a default, empty string, value when then key is missing. Signed-off-by: Joshua Lock <joshua.g.lock@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
-rw-r--r--meta/lib/oe/lsb.py13
1 files changed, 5 insertions, 8 deletions
diff --git a/meta/lib/oe/lsb.py b/meta/lib/oe/lsb.py
index 5a795a12d3..3a945e0fce 100644
--- a/meta/lib/oe/lsb.py
+++ b/meta/lib/oe/lsb.py
@@ -15,9 +15,6 @@ def release_dict_osr():
if key == 'VERSION_ID':
data['DISTRIB_RELEASE'] = val.strip('"')
- if len(data.keys()) != 2:
- return None
-
return data
def release_dict_lsb():
@@ -27,7 +24,7 @@ def release_dict_lsb():
try:
output, err = bb.process.run(['lsb_release', '-ir'], stderr=PIPE)
except bb.process.CmdError as exc:
- return None
+ return {}
lsb_map = { 'Distributor ID': 'DISTRIB_ID',
'Release': 'DISTRIB_RELEASE'}
@@ -51,7 +48,7 @@ def release_dict_lsb():
def release_dict_file():
""" Try to gather release information manually when other methods fail """
- data = None
+ data = {}
try:
if os.path.exists('/etc/lsb-release'):
data = {}
@@ -78,7 +75,7 @@ def release_dict_file():
break
except IOError:
- return None
+ return {}
return data
def distro_identifier(adjust_hook=None):
@@ -96,8 +93,8 @@ def distro_identifier(adjust_hook=None):
if not distro_data:
distro_data = release_dict_file()
- distro_id = distro_data['DISTRIB_ID']
- release = distro_data['DISTRIB_RELEASE']
+ distro_id = distro_data.get('DISTRIB_ID', '')
+ release = distro_data.get('DISTRIB_RELEASE', '')
if adjust_hook:
distro_id, release = adjust_hook(distro_id, release)