Generate a correct env for all command, not just for meson.
Other tools also need a correct env.
This commit is contained in:
parent
9f1942a0e1
commit
390ca29ba3
|
@ -284,17 +284,36 @@ class BuildEnv:
|
||||||
if retcode == 0:
|
if retcode == 0:
|
||||||
return n
|
return n
|
||||||
|
|
||||||
def run_command(self, command, cwd, context, env=None, input=None, allow_wrapper=True):
|
def _set_env(self, env):
|
||||||
os.makedirs(cwd, exist_ok=True)
|
|
||||||
if allow_wrapper and self.wrapper:
|
|
||||||
command = "{} {}".format(self.wrapper, command)
|
|
||||||
if env is None:
|
if env is None:
|
||||||
env = dict(os.environ)
|
env = Defaultdict(str, os.environ)
|
||||||
for k, v in self.cross_env.get('env', {}).items():
|
for k, v in self.cross_env.get('env', {}).items():
|
||||||
if k.startswith('_format_'):
|
if k.startswith('_format_'):
|
||||||
v = v.format(**self.cross_env)
|
v = v.format(**self.cross_env)
|
||||||
k = k[8:]
|
k = k[8:]
|
||||||
env[k] = v
|
env[k] = v
|
||||||
|
pkgconfig_path = pj(self.install_dir, self.libprefix, 'pkgconfig')
|
||||||
|
env['PKG_CONFIG_PATH'] = (env['PKG_CONFIG_PATH'] + ':' + pkgconfig_path
|
||||||
|
if env['PKG_CONFIG_PATH']
|
||||||
|
else pkgconfig_path
|
||||||
|
)
|
||||||
|
env['PATH'] = ':'.join([pj(self.install_dir, 'bin'), env['PATH']])
|
||||||
|
ld_library_path = ':'.join([
|
||||||
|
pj(self.install_dir, 'lib'),
|
||||||
|
pj(self.install_dir, 'lib64')
|
||||||
|
])
|
||||||
|
env['LD_LIBRARY_PATH'] = (env['LD_LIBRARY_PATH'] + ':' + ld_library_path
|
||||||
|
if env['LD_LIBRARY_PATH']
|
||||||
|
else ld_library_path
|
||||||
|
)
|
||||||
|
env['LDFLAGS'] = '-L'+pj(self.install_dir, 'lib')
|
||||||
|
return env
|
||||||
|
|
||||||
|
def run_command(self, command, cwd, context, env=None, input=None, allow_wrapper=True):
|
||||||
|
os.makedirs(cwd, exist_ok=True)
|
||||||
|
if allow_wrapper and self.wrapper:
|
||||||
|
command = "{} {}".format(self.wrapper, command)
|
||||||
|
env = self._set_env(env)
|
||||||
log = None
|
log = None
|
||||||
try:
|
try:
|
||||||
if not self.options.verbose:
|
if not self.options.verbose:
|
||||||
|
@ -617,21 +636,12 @@ class CMakeBuilder(MakeBuilder):
|
||||||
|
|
||||||
class MesonBuilder(Builder):
|
class MesonBuilder(Builder):
|
||||||
configure_option = ""
|
configure_option = ""
|
||||||
def _gen_env(self):
|
|
||||||
env = Defaultdict(str, os.environ)
|
|
||||||
env['PKG_CONFIG_PATH'] = (env['PKG_CONFIG_PATH'] + ':' + pj(self.buildEnv.install_dir, self.buildEnv.libprefix, 'pkgconfig')
|
|
||||||
if env['PKG_CONFIG_PATH']
|
|
||||||
else pj(self.buildEnv.install_dir, self.buildEnv.libprefix, 'pkgconfig')
|
|
||||||
)
|
|
||||||
env['PATH'] = ':'.join([pj(self.buildEnv.install_dir, 'bin'), env['PATH']])
|
|
||||||
return env
|
|
||||||
|
|
||||||
def _configure(self, context):
|
def _configure(self, context):
|
||||||
context.try_skip(self.build_path)
|
context.try_skip(self.build_path)
|
||||||
if os.path.exists(self.build_path):
|
if os.path.exists(self.build_path):
|
||||||
shutil.rmtree(self.build_path)
|
shutil.rmtree(self.build_path)
|
||||||
os.makedirs(self.build_path)
|
os.makedirs(self.build_path)
|
||||||
env = self._gen_env()
|
|
||||||
if self.buildEnv.build_static:
|
if self.buildEnv.build_static:
|
||||||
library_type = 'static'
|
library_type = 'static'
|
||||||
else:
|
else:
|
||||||
|
@ -651,15 +661,13 @@ class MesonBuilder(Builder):
|
||||||
buildEnv=self.buildEnv,
|
buildEnv=self.buildEnv,
|
||||||
cross_option = "--cross-file {}".format(self.buildEnv.meson_crossfile) if self.buildEnv.meson_crossfile else ""
|
cross_option = "--cross-file {}".format(self.buildEnv.meson_crossfile) if self.buildEnv.meson_crossfile else ""
|
||||||
)
|
)
|
||||||
self.buildEnv.run_command(command, self.source_path, context, env=env, allow_wrapper=False)
|
self.buildEnv.run_command(command, self.source_path, context, allow_wrapper=False)
|
||||||
|
|
||||||
def _compile(self, context):
|
def _compile(self, context):
|
||||||
env = self._gen_env()
|
|
||||||
command = "{} -v".format(self.buildEnv.ninja_command)
|
command = "{} -v".format(self.buildEnv.ninja_command)
|
||||||
self.buildEnv.run_command(command, self.build_path, context, env=env, allow_wrapper=False)
|
self.buildEnv.run_command(command, self.build_path, context, allow_wrapper=False)
|
||||||
|
|
||||||
def _install(self, context):
|
def _install(self, context):
|
||||||
env = self._gen_env()
|
|
||||||
command = "{} -v install".format(self.buildEnv.ninja_command)
|
command = "{} -v install".format(self.buildEnv.ninja_command)
|
||||||
self.buildEnv.run_command(command, self.build_path, context, allow_wrapper=False)
|
self.buildEnv.run_command(command, self.build_path, context, allow_wrapper=False)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue