From 6996afaf467bd213d6347fe68ee574a02266d3d9 Mon Sep 17 00:00:00 2001 From: Pedro Algarvio Date: Wed, 22 May 2013 02:00:44 +0100 Subject: [PATCH] Work around `__file__` `NameError` thrown by `bbfreeze`. Fixes #5172. --- salt/version.py | 12 +++++++++++- setup.py | 18 +++++++++++++----- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/salt/version.py b/salt/version.py index 8293267660a..9c5f05793b1 100644 --- a/salt/version.py +++ b/salt/version.py @@ -34,11 +34,21 @@ def __get_version(version, version_info): import warnings import subprocess + try: + cwd = os.path.abspath(os.path.dirname(__file__)) + except NameError: + # We're most likely being frozen and __file__ triggered this NameError + # Let's work around that + import inspect + cwd = os.path.abspath( + os.path.dirname(inspect.getsourcefile(__get_version)) + ) + try: kwargs = dict( stdout=subprocess.PIPE, stderr=subprocess.PIPE, - cwd=os.path.abspath(os.path.dirname(__file__)) + cwd=cwd ) if not sys.platform.startswith('win'): diff --git a/setup.py b/setup.py index 9750742d60a..4952278e77a 100755 --- a/setup.py +++ b/setup.py @@ -15,7 +15,13 @@ from distutils.command.clean import clean from distutils.sysconfig import get_python_lib, PREFIX # Change to salt source's directory prior to running any command -setup_dirname = os.path.dirname(__file__) +try: + setup_dirname = os.path.dirname(__file__) +except NameError: + # We're most likely being frozen and __file__ triggered this NameError + # Let's work around that + setup_dirname = os.path.dirname(sys.argv[0]) + if setup_dirname != '': os.chdir(setup_dirname) @@ -54,11 +60,13 @@ try: except ImportError: HAS_ESKY = False -salt_version = os.path.join(os.path.abspath( - os.path.dirname(__file__)), 'salt', 'version.py') +salt_version = os.path.join( + os.path.abspath(setup_dirname), 'salt', 'version.py' +) -salt_reqs = os.path.join(os.path.abspath( - os.path.dirname(__file__)), 'requirements.txt') +salt_reqs = os.path.join( + os.path.abspath(setup_dirname), 'requirements.txt' +) exec(compile(open(salt_version).read(), salt_version, 'exec'))