X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2Farchitecture.py;h=ad06c80e9ef6b819c62652dead451892a8f6498a;hb=9d976c8e73cbccd8326e2046c6d7b4b86b974b93;hp=5b8711b4a05d3e87e2a519da7fa767a3d00e8a66;hpb=1cb97ddd3ce3e6c17e74db6a4772c38a1ebd2115;p=tools%2Fsat.git diff --git a/src/architecture.py b/src/architecture.py index 5b8711b..ad06c80 100644 --- a/src/architecture.py +++ b/src/architecture.py @@ -21,30 +21,49 @@ In this file : all the stuff that can change with the architecture on which SAT is running ''' -import os, sys, platform +import os, sys +from platform import system,python_version,release + +# linux_distribution is removed from platform module in python 3.8+ +# we have to use distro module, which is not standard. +# write an error message if distro is not installed +try: + from platform import linux_distribution +except Exception: + try: + from distro import linux_distribution + except Exception: + print ("\nError :\n" + " linux_distribution was removed from platform module in Python 3.8+\n" + " For python 3.8+ sat requires distro module to get information on linux distribution.\n" + " Please install distro module with : pip install distro") + sys.exit(-1) + def is_windows(): '''method that checks windows OS :rtype: boolean ''' - return platform.system() == 'Windows' + return system() == 'Windows' def get_user(): '''method that gets the username that launched sat :rtype: str ''' - # In windows case, the USERNAME environment variable has to be set - if is_windows(): - if not 'USERNAME' in os.environ: - raise Exception('USERNAME environment variable not set') - return os.environ['USERNAME'] - else: # linux - import pwd - return pwd.getpwuid(os.getuid())[0] - - + try : + if is_windows(): + # In windows case, the USERNAME environment variable has to be set + user_name=os.environ['USERNAME'] + else: # linux + import pwd + user_name=pwd.getpwuid(os.getuid())[0] + except Exception: + user_name="Unknown" + return user_name + + def get_distribution(codes): '''Gets the code for the distribution @@ -54,10 +73,10 @@ def get_distribution(codes): :rtype: str ''' if is_windows(): - return "Win" + return "W" # else get linux distribution description from platform, and encode it with code - lin_distrib = platform.dist()[0].lower() + lin_distrib = linux_distribution()[0].lower() distrib="not found" for dist in codes: if dist in lin_distrib: @@ -74,9 +93,9 @@ def get_version_XY(): """ Return major and minor version of the distribution from a CentOS example, returns '7.6' - extracted from platform.dist() + extracted from platform.linux_distribution() """ - dist_version=platform.dist()[1].split('.') + dist_version=linux_distribution()[1].split('.') if len(dist_version)==1: version = dist_version[0] else: @@ -97,10 +116,10 @@ def get_distrib_version(distrib): ''' if is_windows(): - return platform.release() + return release() # get version from platform - dist_version=platform.dist()[1].split('.') + dist_version=linux_distribution()[1].split('.') # encode it (conform to src/internal_config/distrib.pyconf VERSIONS dist if distrib == "CO": @@ -128,7 +147,7 @@ def get_python_version(): ''' # The platform python module gives the answer - return platform.python_version() + return python_version() def get_nb_proc(): '''Gets the number of processors of the machine @@ -141,6 +160,12 @@ def get_nb_proc(): try : import multiprocessing nb_proc=multiprocessing.cpu_count() - except : - nb_proc=int(os.sysconf('SC_NPROCESSORS_ONLN')) + except Exception: + if is_windows(): + if os.environ.has_key("NUMBER_OF_PROCESSORS"): + nb_proc = int(os.environ["NUMBER_OF_PROCESSORS"]) + else: + nb_proc = 1 + else: + nb_proc=int(os.sysconf('SC_NPROCESSORS_ONLN')) return nb_proc