From: Waldemar Kozaczuk <[email protected]> Committer: Waldemar Kozaczuk <[email protected]> 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 <[email protected]> --- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/osv-dev/00000000000027553c059f19c069%40google.com.
