diff --git a/master/buildbot/buildbot_net_usage_data.py b/master/buildbot/buildbot_net_usage_data.py index f73495ce3f2..954c8cf6684 100644 --- a/master/buildbot/buildbot_net_usage_data.py +++ b/master/buildbot/buildbot_net_usage_data.py @@ -27,6 +27,7 @@ import hashlib import inspect import json +import os import platform import socket @@ -42,12 +43,21 @@ PHONE_HOME_URL = "https://events.buildbot.net/events/phone_home" -def get_distro(): - try: - from distro import linux_distribution - except ImportError: - linux_distribution = None +def linux_distribution(): + os_release = "/etc/os-release" + meta_data = {'ID': "unknown_linux", 'VERSION_ID': "unknown_version"} + if os.path.exists(os_release): + with open("/etc/os-release") as f: + for line in f: + try: + k, v = line.strip().split("=") + meta_data[k] = v.strip('""') + except Exception: + pass + return meta_data['ID'], meta_data['VERSION_ID'] + +def get_distro(): system = platform.system() if system == "Linux": dist = linux_distribution() diff --git a/master/buildbot/test/unit/test_buildbot_net_usage_data.py b/master/buildbot/test/unit/test_buildbot_net_usage_data.py index b8ffaa206b9..709c804a91f 100644 --- a/master/buildbot/test/unit/test_buildbot_net_usage_data.py +++ b/master/buildbot/test/unit/test_buildbot_net_usage_data.py @@ -19,6 +19,7 @@ from future.moves.urllib import request as urllib_request import os +import platform from unittest.case import SkipTest from twisted.internet import reactor @@ -29,6 +30,7 @@ from buildbot import config from buildbot.buildbot_net_usage_data import _sendBuildbotNetUsageData from buildbot.buildbot_net_usage_data import computeUsageData +from buildbot.buildbot_net_usage_data import linux_distribution from buildbot.config import BuilderConfig from buildbot.config import ConfigWarning from buildbot.master import BuildMaster @@ -143,3 +145,12 @@ def test_real(self): " TEST_BUILDBOTNET_USAGEDATA is set") _sendBuildbotNetUsageData({'foo': 'bar'}) + + def test_linux_distro(self): + system = platform.system() + if system != "Linux": + raise SkipTest("test is only for linux") + distro = linux_distribution() + self.assertEqual(len(distro), 2) + self.assertNotIn("unknown", distro[0]) + self.assertNotIn("unknown", distro[1]) diff --git a/master/setup.py b/master/setup.py index 8d501e5b4de..135507b3bbf 100755 --- a/master/setup.py +++ b/master/setup.py @@ -458,12 +458,6 @@ def define_plugin_entries(groups): 'PyJWT', ] -# based on https://discourse.numenta.org/t/setup-py-error-invalid-environment-marker/1298/4 -if LooseVersion(setuptools_version.__version__) >= LooseVersion("20.2.2"): - setup_args['install_requires'].append('distro;platform_system==="Linux"') -elif platform.system() == 'Linux': - setup_args['install_requires'].append('distro') - # Unit test dependencies. test_deps = [ # http client libraries