From: Waldemar Kozaczuk <jwkozac...@gmail.com>
Committer: Waldemar Kozaczuk <jwkozac...@gmail.com>
Branch: master

scripts: migrate setup.py to python 3

The setup.py relies on platform.linux_distribution() to determine
linux distribution of the host. Python 3 has unfortunately deprecated
aforementioned method so in order to migrate to Python 3 this patch
changes setup.py to parse the same information from some standard files
located under /etc.

More specifically new setup.py tries to parse name and version
from /etc/os-release. If not found it falls back to /etc/lsb-release.

Signed-off-by: Waldemar Kozaczuk <jwkozac...@gmail.com>

---
diff --git a/scripts/setup.py b/scripts/setup.py
--- a/scripts/setup.py
+++ b/scripts/setup.py
@@ -1,8 +1,8 @@
-#!/usr/bin/python2
+#!/usr/bin/python3
 
 # set up a development environment for OSv.  Run as root.
 
-import sys, platform, argparse
+import sys, argparse
 import subprocess
 
 standard_ec2_packages = ['python-pip', 'wget']
@@ -304,6 +304,27 @@ class LinuxMint_19(object):
 
     versions = [LinuxMint_18_03, LinuxMint_19]
 
+def linux_distribution():
+    def parse_file(f):
+        res = {}
+        for line in f:
+            k, v = line.rstrip().split('=')
+            res[k] = v.strip('"')
+        return res
+
+    try:
+        with open('/etc/os-release') as f:
+            info = parse_file(f)
+            return (info['NAME'], info['VERSION_ID'])
+    except FileNotFoundError:
+        try:
+            with open('/etc/lsb-release') as f:
+                info = parse_file(f)
+                return (info['DISTRIB_ID'], info['DISTRIB_RELEASE'])
+        except FileNotFoundError:
+            print('Could not find linux distribution file!')
+            return ('Unknown', 'Unknown')
+
 distros = [
            Debian(),
            Fedora(),
@@ -319,11 +340,11 @@ class LinuxMint_19(object):
                     help="install packages required by testing tools")
 cmdargs = parser.parse_args()
 
-(name, version, id) = platform.linux_distribution()
+(name, version) = linux_distribution()
 
 for distro in distros:
     if type(distro.name) == type([]):
-        dname = filter(lambda n: name.startswith(n), distro.name)
+        dname = [n for n in distro.name if name.startswith(n)]
         if len(dname):
             distro.name = dname[0]
         else:
@@ -349,5 +370,5 @@ class LinuxMint_19(object):
         print ('Your distribution %s version %s is not supported by this 
script' % (name, version))
         sys.exit(1)
 
-print 'Your distribution is not supported by this script.'
+print('Your distribution is not supported by this script.')
 sys.exit(2)

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to osv-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/osv-dev/00000000000027553c059f19c069%40google.com.

Reply via email to