From aa479ad8809460e13948e791b598aefbb23909ad Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Thu, 2 Nov 2017 21:12:57 +0400 Subject: [PATCH] make: Use proper separators for LD_LIBRARY_PATH and use BEGINLIBPATH on OS/2. Improper handling would blow up the environment with a too long string and make DosExecPgm freak out when calling gcc and return ERROR_BAD_ENVIRONMENT. See http://trac.netlabs.org/rpm/ticket/275 for more info. --- buildtools/wafsamba/samba_conftests.py | 10 +++------- buildtools/wafsamba/samba_utils.py | 18 +++++++++++++----- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/buildtools/wafsamba/samba_conftests.py b/buildtools/wafsamba/samba_conftests.py index 72e432164984..e890acd49618 100644 --- a/buildtools/wafsamba/samba_conftests.py +++ b/buildtools/wafsamba/samba_conftests.py @@ -4,7 +4,7 @@ import os, shutil, re import Build, Configure, Utils, Options, Logs from Configure import conf -from samba_utils import TO_LIST, ADD_LD_LIBRARY_PATH +from samba_utils import TO_LIST, ADD_LD_LIBRARY_PATH, SET_LD_LIBRARY_PATH def add_option(self, *k, **kw): @@ -329,11 +329,7 @@ def CHECK_LIBRARY_SUPPORT(conf, rpath=False, version_script=False, msg=None): lastprog = o.link_task.outputs[0].abspath(env) if not rpath: - if 'LD_LIBRARY_PATH' in os.environ: - old_ld_library_path = os.environ['LD_LIBRARY_PATH'] - else: - old_ld_library_path = None - ADD_LD_LIBRARY_PATH(os.path.join(bdir, 'default/libdir')) + old_ld_library_path = ADD_LD_LIBRARY_PATH(os.path.join(bdir, 'default/libdir')) # we need to run the program, try to get its result args = conf.SAMBA_CROSS_ARGS(msg=msg) @@ -347,7 +343,7 @@ def CHECK_LIBRARY_SUPPORT(conf, rpath=False, version_script=False, msg=None): ret = (proc.returncode == 0) if not rpath: - os.environ['LD_LIBRARY_PATH'] = old_ld_library_path or '' + SET_LD_LIBRARY_PATH(old_ld_library_path) conf.check_message(msg, '', ret) return ret diff --git a/buildtools/wafsamba/samba_utils.py b/buildtools/wafsamba/samba_utils.py index 49a87597a9f8..16671e70cd06 100644 --- a/buildtools/wafsamba/samba_utils.py +++ b/buildtools/wafsamba/samba_utils.py @@ -36,15 +36,23 @@ def GET_TARGET_TYPE(ctx, target): def ADD_LD_LIBRARY_PATH(path): - '''add something to LD_LIBRARY_PATH''' - if 'LD_LIBRARY_PATH' in os.environ: - oldpath = os.environ['LD_LIBRARY_PATH'] + '''add something to LD_LIBRARY_PATH (BEGINLIBPATH on OS/2) and return its previous contents''' + var = 'BEGINLIBPATH' if os.name == 'os2' else 'LD_LIBRARY_PATH' + if var in os.environ: + oldpath = os.environ[var] else: oldpath = '' - newpath = oldpath.split(':') + newpath = [] if oldpath == '' else oldpath.split(os.pathsep) if not path in newpath: newpath.append(path) - os.environ['LD_LIBRARY_PATH'] = ':'.join(newpath) + os.environ[var] = os.pathsep.join(newpath) + return oldpath + + +def SET_LD_LIBRARY_PATH(path): + '''set LD_LIBRARY_PATH (BEGINLIBPATH on OS/2) to path''' + var = 'BEGINLIBPATH' if os.name == 'os2' else 'LD_LIBRARY_PATH' + os.environ[var] = path def needs_private_lib(bld, target):