[oe-commits] Paul Eggleton : lib/oe/lsb.py: fall back to /etc/ os-release for host distro ID

git at git.openembedded.org git at git.openembedded.org
Tue Jul 2 21:20:43 UTC 2013


Module: openembedded-core.git
Branch: master
Commit: bff50b747cde04007ead65dde4207b16a8e1bf08
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=bff50b747cde04007ead65dde4207b16a8e1bf08

Author: Paul Eggleton <paul.eggleton at linux.intel.com>
Date:   Fri Jun 28 17:09:46 2013 +0100

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 at linux.intel.com>
Signed-off-by: Saul Wold <sgw at linux.intel.com>

---

 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 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('/','-')



More information about the Openembedded-commits mailing list