:return: the replaced variable
:rtype: str
"""
- if "$" in value:
+ if src.architecture.is_windows():
+ delim = "%"
+ else:
+ delim = "$"
+ if delim in value:
# The string.Template class is a string class
# for supporting $-substitutions
zt = string.Template(value)
+ zt.delimiter = delim
try:
value = zt.substitute(self.environ)
except KeyError as exc:
sorted_nodes)
self.sorted_product_list=sorted_nodes
+ # store the list of compile time products
+ # they should be added in build env
+ compile_time_products=[]
+ for (pname,pinfo) in all_products_infos:
+ if src.product.product_is_compile_time(pinfo) or\
+ src.product.product_is_compile_and_runtime(pinfo) :
+ compile_time_products.append(pname)
+ self.compile_time_products=compile_time_products
+
def append(self, key, value, sep=os.pathsep):
"""\
"""
if self.for_package:
- self.set("PRODUCT_ROOT_DIR", "out_dir_Path")
+ if src.architecture.is_windows():
+ self.set("PRODUCT_ROOT_DIR", "%out_dir_Path%")
+ else:
+ self.set("PRODUCT_ROOT_DIR", "out_dir_Path")
+
else:
self.cfg.APPLICATION.environ.PRODUCT_ROOT_DIR = src.pyconf.Reference(self.cfg, src.pyconf.DOLLAR, "workdir")
self.add_line(1)
self.add_comment("reset these sensitive variables to avoid bad environment interactions")
self.add_comment("comment these to lines if you wish a different behaviour")
- self.set("LD_LIBRARY_PATH", "")
+ if not src.architecture.is_windows():
+ self.set("LD_LIBRARY_PATH", "")
self.set("PYTHONPATH", "")
self.add_line(1)
# Construct XXX_ROOT_DIR
env_root_dir = self.get(pi.name + "_ROOT_DIR")
l_binpath_libpath = []
-
# create additional ROOT_DIR for CPP components
if 'component_name' in pi:
compo_name = pi.component_name
# Get the informations corresponding to the product
pi = src.product.get_product_config(self.cfg, product)
-
# skip compile time products at run time
if not self.forBuild:
if src.product.product_is_compile_time(pi):
if self.for_package:
+ prod_base_name=os.path.basename(pi.install_dir)
+ if prod_base_name.startswith("config"):
+ # case of a products installed in base. We remove "config-i"
+ prod_base_name=os.path.basename(os.path.dirname(pi.install_dir))
pi.install_dir = os.path.join(
"out_dir_Path",
self.for_package,
- os.path.basename(pi.install_dir))
+ prod_base_name)
if not self.silent:
logger.write(_("Setting environment for %s\n") % product, 4)
self.set_a_product("Python", logger)
self.set_python_libdirs()
+ # for a build environment, add compile time products (like cmake)
+ if self.forBuild :
+ for product in self.compile_time_products:
+ if product == "Python":
+ continue
+ self.set_a_product(product, logger)
+
# The loop on the products
for product in self.sorted_product_list:
if product == "Python":
continue
+ if self.forBuild and product in self.compile_time_products:
+ continue
self.set_a_product(product, logger)
def set_full_environ(self, logger, env_info):
"""
DBG.write("set_full_environ for", env_info)
# DBG.write("set_full_environ config", self.cfg.APPLICATION.environ, True)
-
# set product environ
self.set_application_env(logger)
self.set_a_product("Python", logger)
self.set_python_libdirs()
+ # for a build environment, add compile time products (like cmake)
+ if self.forBuild :
+ for product in self.compile_time_products:
+ if product == "Python":
+ continue
+ self.set_a_product(product, logger)
+
# set products
for product in sorted_product_list:
if product == "Python":
continue
+ if self.forBuild and product in self.compile_time_products:
+ continue
self.set_a_product(product, logger)
class FileEnvWriter:
if not self.silent:
self.logger.write(_("Create environment file %s\n") %
src.printcolors.printcLabel(filename), 3)
-
# create then env object
env_file = open(os.path.join(self.out_dir, filename), "w")
else:
# set env from the APPLICATION
env.set_application_env(self.logger)
-
# set the products
env.set_products(self.logger,
src_root=self.src_root)
-
# Add the additional environment if it is not empty
if len(additional_env) != 0:
env.add_line(1)