dvc: fix LD_LIBRARY_PATH on binaries

Fixes #965

Signed-off-by: Ruslan Kuprieiev <[email protected]>
This commit is contained in:
Ruslan Kuprieiev
2018-08-07 03:22:16 +03:00
parent e403568afe
commit 77b2e45a64
3 changed files with 23 additions and 3 deletions
+2
View File
@@ -9,6 +9,7 @@ from dvc.remote.base import RemoteBase
from dvc.remote.local import RemoteLOCAL
from dvc.exceptions import DvcException
from dvc.logger import Logger
from dvc.utils import fix_env
class RemoteHDFS(RemoteBase):
@@ -32,6 +33,7 @@ class RemoteHDFS(RemoteBase):
shell=True,
close_fds=True,
executable=os.getenv('SHELL'),
env=fix_env(os.environ),
stdin=PIPE,
stdout=PIPE,
stderr=PIPE)
+3 -3
View File
@@ -1,16 +1,16 @@
import os
import yaml
import itertools
import posixpath
import subprocess
from schema import Schema, SchemaError, Optional, Or, And
import posixpath
import dvc.dependency as dependency
import dvc.output as output
from dvc.exceptions import DvcException
from dvc.prompt import prompt
from dvc.logger import Logger
from dvc.utils import dict_md5
from dvc.utils import dict_md5, fix_env
class StageCmdFailedError(DvcException):
@@ -331,7 +331,7 @@ class Stage(object):
p = subprocess.Popen(self.cmd,
cwd=self.cwd,
shell=True,
env=os.environ,
env=fix_env(os.environ),
executable=os.getenv('SHELL'))
p.communicate()
if p.returncode != 0:
+18
View File
@@ -134,3 +134,21 @@ def to_chunks(l, jobs):
n = 1
return [l[x:x+n] for x in range(0, len(l), n)]
# NOTE: Fix env variables modified by PyInstaller
# http://pyinstaller.readthedocs.io/en/stable/runtime-information.html
def fix_env(env):
if env is None:
env = os.environ.copy()
else:
env = env.copy()
lp_key = 'LD_LIBRARY_PATH'
lp_orig = env.get(lp_key + '_ORIG')
if lp_orig is not None:
env[lp_key] = lp_orig
else:
env.pop(lp_key, None)
return env