From 2d1b434b48c9f4e61b695589fa7acfa196335246 Mon Sep 17 00:00:00 2001 From: SpaceIm <30052553+SpaceIm@users.noreply.github.com> Date: Mon, 20 Dec 2021 11:15:02 +0100 Subject: [PATCH] Remove -Wl,-rpath from `AutotoolsDeps`/`GnuDeps`/`PkgConfigDeps` (#10192) * remove -Wl,-rpath from pkg_config generator * remove -Wl,-rpath from PkgConfigDeps generator * remove -Wl,-rpath from AutotoolsDeps/GnuDeps/CompilerArgs generators * Revert "remove -Wl,-rpath from pkg_config generator" This reverts commit 4c757a4340c5c3248840e35e0c1492018c8da637. * remove comment related to -Wl,-rpath in tests * revert remove -Wl,-rpath to CompilerArgs --- conan/tools/gnu/autotoolsdeps.py | 2 - conan/tools/gnu/gnudeps_flags.py | 10 ---- .../gnu/pkgconfigdeps/pc_files_templates.py | 6 --- .../toolchains/gnu/test_pkgconfigdeps.py | 46 +------------------ .../autotools/autotools_deps_test.py | 2 - 5 files changed, 2 insertions(+), 64 deletions(-) diff --git a/conan/tools/gnu/autotoolsdeps.py b/conan/tools/gnu/autotoolsdeps.py index 25303b4aadd..b45770fff8e 100644 --- a/conan/tools/gnu/autotoolsdeps.py +++ b/conan/tools/gnu/autotoolsdeps.py @@ -37,8 +37,6 @@ def environment(self): ldflags.extend(flags.frameworks) ldflags.extend(flags.framework_paths) ldflags.extend(flags.lib_paths) - # FIXME: Previously we had an argument "include_rpath_flags" defaulted to False - ldflags.extend(flags.rpath_flags) # cflags cflags = flags.cflags diff --git a/conan/tools/gnu/gnudeps_flags.py b/conan/tools/gnu/gnudeps_flags.py index 44fad5bacbd..c07ceb627e9 100644 --- a/conan/tools/gnu/gnudeps_flags.py +++ b/conan/tools/gnu/gnudeps_flags.py @@ -14,7 +14,6 @@ def __init__(self, conanfile, cpp_info): # From cppinfo, calculated flags self.include_paths = self._format_include_paths(cpp_info.includedirs) self.lib_paths = self._format_library_paths(cpp_info.libdirs) - self.rpath_flags = self._rpath_flags(cpp_info.libdirs) self.defines = self._format_defines(cpp_info.defines) self.libs = self._format_libraries(cpp_info.libs) self.frameworks = self._format_frameworks(cpp_info.frameworks) @@ -35,15 +34,6 @@ def __init__(self, conanfile, cpp_info): _GCC_LIKE = ['clang', 'apple-clang', 'gcc'] - def _rpath_flags(self, lib_paths): - if not lib_paths: - return [] - if self._base_compiler in self._GCC_LIKE: - rpath_separator = "," - return ['-Wl,-rpath%s"%s"' % (rpath_separator, self._adjust_path(x)) - for x in lib_paths if x] - return [] - def _format_defines(self, defines): return ["-D%s" % define for define in defines] if defines else [] diff --git a/conan/tools/gnu/pkgconfigdeps/pc_files_templates.py b/conan/tools/gnu/pkgconfigdeps/pc_files_templates.py index e0dbe84babe..6fce53364f4 100644 --- a/conan/tools/gnu/pkgconfigdeps/pc_files_templates.py +++ b/conan/tools/gnu/pkgconfigdeps/pc_files_templates.py @@ -18,12 +18,6 @@ def _get_pc_file_template(): {%- for shared_flag in (cpp_info.sharedlinkflags + cpp_info.exelinkflags) -%} {{ shared_flag + " " }} {%- endfor -%} - {%- for _ in libdirs -%} - {%- set flag = gnudeps_flags._rpath_flags(["${libdir%s}" % loop.index]) -%} - {%- if flag|length -%} - {{ flag[0] + " " }} - {%- endif -%} - {%- endfor -%} {%- for framework in (gnudeps_flags.frameworks + gnudeps_flags.framework_paths) -%} {{ framework + " " }} {%- endfor -%} diff --git a/conans/test/functional/toolchains/gnu/test_pkgconfigdeps.py b/conans/test/functional/toolchains/gnu/test_pkgconfigdeps.py index 10f48420339..5b91eee39d8 100644 --- a/conans/test/functional/toolchains/gnu/test_pkgconfigdeps.py +++ b/conans/test/functional/toolchains/gnu/test_pkgconfigdeps.py @@ -1,5 +1,4 @@ import os -import platform import textwrap from conans.test.assets.genconanfile import GenConanfile @@ -14,7 +13,6 @@ def get_requires_from_content(content): return "" -# Without compiler, def rpath_flags(settings, os_build, lib_paths): doesn't append the -Wl...etc def test_pkg_config_dirs(): # https://github.com/conan-io/conan/issues/2756 conanfile = textwrap.dedent(""" @@ -44,9 +42,6 @@ def package_info(self): pc_path = os.path.join(client.current_folder, "MyLib.pc") assert os.path.exists(pc_path) is True pc_content = load(pc_path) - expected_rpaths = "" - if platform.system() in ("Linux", "Darwin"): - expected_rpaths = ' -Wl,-rpath,"${libdir1}" -Wl,-rpath,"${libdir2}"' expected_content = textwrap.dedent("""\ libdir1=/my_absoulte_path/fake/mylib/lib libdir2=${prefix}/lib2 @@ -55,8 +50,8 @@ def package_info(self): Name: MyLib Description: Conan package: MyLib Version: 0.1 - Libs: -L"${libdir1}" -L"${libdir2}"%s - Cflags: -I"${includedir1}\"""" % expected_rpaths) + Libs: -L"${libdir1}" -L"${libdir2}" + Cflags: -I"${includedir1}\"""") # Avoiding trailing whitespaces in Jinja template for line in pc_content.splitlines()[1:]: @@ -110,43 +105,6 @@ def package_info(self): assert "\n".join(pc_content.splitlines()[1:]) == expected -def test_pkg_config_rpaths(): - # rpath flags are only generated for gcc and clang - profile = textwrap.dedent("""\ - [settings] - os=Linux - compiler=gcc - compiler.version=7 - compiler.libcxx=libstdc++ - """) - conanfile = textwrap.dedent(""" - from conans import ConanFile - - class PkgConfigConan(ConanFile): - name = "MyLib" - version = "0.1" - settings = "os", "compiler" - exports = "mylib.so" - - def package(self): - self.copy("mylib.so", dst="lib") - - def package_info(self): - self.cpp_info.libs = ["mylib"] - """) - client = TestClient() - client.save({"conanfile.py": conanfile, - "linux_gcc": profile, - "mylib.so": "fake lib content"}) - client.run("create . -pr=linux_gcc") - client.run("install MyLib/0.1@ -g PkgConfigDeps -pr=linux_gcc") - - pc_path = os.path.join(client.current_folder, "MyLib.pc") - assert os.path.exists(pc_path) is True - pc_content = load(pc_path) - assert '-Wl,-rpath,"${libdir1}"' in pc_content - - def test_system_libs(): conanfile = textwrap.dedent(""" from conans import ConanFile diff --git a/conans/test/unittests/client/toolchain/autotools/autotools_deps_test.py b/conans/test/unittests/client/toolchain/autotools/autotools_deps_test.py index e4d6b79ee42..96a5928e361 100644 --- a/conans/test/unittests/client/toolchain/autotools/autotools_deps_test.py +++ b/conans/test/unittests/client/toolchain/autotools/autotools_deps_test.py @@ -91,8 +91,6 @@ def test_foo(): '-F /path/to/folder_dep2/one/framework/path/dep2 ' \ '-L/path/to/folder_dep1/one/lib/path/dep1 ' \ '-L/path/to/folder_dep2/one/lib/path/dep2 ' \ - '-Wl,-rpath,"/path/to/folder_dep1/one/lib/path/dep1" ' \ - '-Wl,-rpath,"/path/to/folder_dep2/one/lib/path/dep2" ' \ '--sysroot=/path/to/folder/dep1 OtherSuperStuff' assert env["CXXFLAGS"] == 'dep1_a_cxx_flag dep2_a_cxx_flag --sysroot=/path/to/folder/dep1'