diff options
author | Petr Viktorin <pviktori@redhat.com> | 2015-05-22 13:06:48 +0200 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2015-06-10 06:06:18 +0200 |
commit | 2bf1443bd0f1cb95d11f42db5ef4a7637981ee6b (patch) | |
tree | 25c059a854fe03713c0af658e2dd90598c6ae22d /buildtools | |
parent | 728cfa5d3983c545f2a09947c8aabc90da3b5bc5 (diff) | |
download | samba-2bf1443bd0f1cb95d11f42db5ef4a7637981ee6b.tar.gz |
buildtools: Always reset the build environment
In install_library, the Build object's environment was not reset
after an early return, so the extrapython env would be used in
subsequent build steps.
Wrap everything in a try-finally block to make sure the env is reset.
(Almost all of the change is indentation, `git show -w` recommended.)
Signed-off-by: Petr Viktorin <pviktori@redhat.com>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Jelmer Vernooij <jelmer@samba.org>
Diffstat (limited to 'buildtools')
-rw-r--r-- | buildtools/wafsamba/samba_install.py | 163 |
1 files changed, 82 insertions, 81 deletions
diff --git a/buildtools/wafsamba/samba_install.py b/buildtools/wafsamba/samba_install.py index af8d2adc60c..3d0c23a521c 100644 --- a/buildtools/wafsamba/samba_install.py +++ b/buildtools/wafsamba/samba_install.py @@ -60,95 +60,96 @@ def install_library(self): bld = self.bld default_env = bld.all_envs['default'] - if self.env['IS_EXTRA_PYTHON']: - bld.all_envs['default'] = bld.all_envs['extrapython'] + try: + if self.env['IS_EXTRA_PYTHON']: + bld.all_envs['default'] = bld.all_envs['extrapython'] - install_ldflags = install_rpath(self) - build_ldflags = build_rpath(bld) + install_ldflags = install_rpath(self) + build_ldflags = build_rpath(bld) - if not Options.is_install or not getattr(self, 'samba_install', True): - # just need to set the build rpath if we are not installing - self.env.RPATH = build_ldflags - return + if not Options.is_install or not getattr(self, 'samba_install', True): + # just need to set the build rpath if we are not installing + self.env.RPATH = build_ldflags + return - # setup the install path, expanding variables - install_path = getattr(self, 'samba_inst_path', None) - if install_path is None: - if getattr(self, 'private_library', False): - install_path = '${PRIVATELIBDIR}' + # setup the install path, expanding variables + install_path = getattr(self, 'samba_inst_path', None) + if install_path is None: + if getattr(self, 'private_library', False): + install_path = '${PRIVATELIBDIR}' + else: + install_path = '${LIBDIR}' + install_path = bld.EXPAND_VARIABLES(install_path) + + target_name = self.target + + if install_ldflags != build_ldflags: + # we will be creating a new target name, and using that for the + # install link. That stops us from overwriting the existing build + # target, which has different ldflags + self.done_install_library = True + t = self.clone(self.env) + t.posted = False + t.target += '.inst' + self.env.RPATH = build_ldflags else: - install_path = '${LIBDIR}' - install_path = bld.EXPAND_VARIABLES(install_path) - - target_name = self.target - - if install_ldflags != build_ldflags: - # we will be creating a new target name, and using that for the - # install link. That stops us from overwriting the existing build - # target, which has different ldflags - self.done_install_library = True - t = self.clone(self.env) - t.posted = False - t.target += '.inst' - self.env.RPATH = build_ldflags - else: - t = self - - t.env.RPATH = install_ldflags - - dev_link = None - - # in the following the names are: - # - inst_name is the name with .inst. in it, in the build - # directory - # - install_name is the name in the install directory - # - install_link is a symlink in the install directory, to install_name - - if getattr(self, 'samba_realname', None): - install_name = self.samba_realname - install_link = None - if getattr(self, 'soname', ''): + t = self + + t.env.RPATH = install_ldflags + + dev_link = None + + # in the following the names are: + # - inst_name is the name with .inst. in it, in the build + # directory + # - install_name is the name in the install directory + # - install_link is a symlink in the install directory, to install_name + + if getattr(self, 'samba_realname', None): + install_name = self.samba_realname + install_link = None + if getattr(self, 'soname', ''): + install_link = self.soname + if getattr(self, 'samba_type', None) == 'PYTHON': + inst_name = bld.make_libname(t.target, nolibprefix=True, python=True) + else: + inst_name = bld.make_libname(t.target) + elif self.vnum: + vnum_base = self.vnum.split('.')[0] + install_name = bld.make_libname(target_name, version=self.vnum) + install_link = bld.make_libname(target_name, version=vnum_base) + inst_name = bld.make_libname(t.target) + if not self.private_library: + # only generate the dev link for non-bundled libs + dev_link = bld.make_libname(target_name) + elif getattr(self, 'soname', ''): + install_name = bld.make_libname(target_name) install_link = self.soname - if getattr(self, 'samba_type', None) == 'PYTHON': - inst_name = bld.make_libname(t.target, nolibprefix=True, python=True) - else: inst_name = bld.make_libname(t.target) - elif self.vnum: - vnum_base = self.vnum.split('.')[0] - install_name = bld.make_libname(target_name, version=self.vnum) - install_link = bld.make_libname(target_name, version=vnum_base) - inst_name = bld.make_libname(t.target) - if not self.private_library: - # only generate the dev link for non-bundled libs - dev_link = bld.make_libname(target_name) - elif getattr(self, 'soname', ''): - install_name = bld.make_libname(target_name) - install_link = self.soname - inst_name = bld.make_libname(t.target) - else: - install_name = bld.make_libname(target_name) - install_link = None - inst_name = bld.make_libname(t.target) - - if t.env.SONAME_ST: - # ensure we get the right names in the library - if install_link: - t.env.append_value('LINKFLAGS', t.env.SONAME_ST % install_link) else: - t.env.append_value('LINKFLAGS', t.env.SONAME_ST % install_name) - t.env.SONAME_ST = '' - - # tell waf to install the library - bld.install_as(os.path.join(install_path, install_name), - os.path.join(self.path.abspath(bld.env), inst_name), - chmod=MODE_755) - if install_link and install_link != install_name: - # and the symlink if needed - bld.symlink_as(os.path.join(install_path, install_link), os.path.basename(install_name)) - if dev_link: - bld.symlink_as(os.path.join(install_path, dev_link), os.path.basename(install_name)) + install_name = bld.make_libname(target_name) + install_link = None + inst_name = bld.make_libname(t.target) - bld.all_envs['default'] = default_env + if t.env.SONAME_ST: + # ensure we get the right names in the library + if install_link: + t.env.append_value('LINKFLAGS', t.env.SONAME_ST % install_link) + else: + t.env.append_value('LINKFLAGS', t.env.SONAME_ST % install_name) + t.env.SONAME_ST = '' + + # tell waf to install the library + bld.install_as(os.path.join(install_path, install_name), + os.path.join(self.path.abspath(bld.env), inst_name), + chmod=MODE_755) + if install_link and install_link != install_name: + # and the symlink if needed + bld.symlink_as(os.path.join(install_path, install_link), os.path.basename(install_name)) + if dev_link: + bld.symlink_as(os.path.join(install_path, dev_link), os.path.basename(install_name)) + finally: + bld.all_envs['default'] = default_env @feature('cshlib') |