From dfccc15492384be04af3c391f501ee900db49730 Mon Sep 17 00:00:00 2001 From: Luis Date: Fri, 6 Aug 2021 09:40:41 +0200 Subject: [PATCH 1/6] Subfolder for the configure script --- conan/tools/gnu/autotools.py | 9 +++++-- .../unittests/tools/gnu/autotools_test.py | 26 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 conans/test/unittests/tools/gnu/autotools_test.py diff --git a/conan/tools/gnu/autotools.py b/conan/tools/gnu/autotools.py index 03c2f10eee6..74e20a2b265 100644 --- a/conan/tools/gnu/autotools.py +++ b/conan/tools/gnu/autotools.py @@ -1,3 +1,4 @@ +import os from conan.tools.files import load_toolchain_args from conan.tools.gnu.make import make_jobs_cmd_line_arg from conan.tools.microsoft import unix_path @@ -13,7 +14,7 @@ def __init__(self, conanfile): self._configure_args = toolchain_file_content.get("configure_args") self._make_args = toolchain_file_content.get("make_args") - def configure(self): + def configure(self, source_folder=None): """ http://jingfenghanmax.blogspot.com.es/2010/09/configure-with-host-target-and-build.html https://gcc.gnu.org/onlinedocs/gccint/Configure-Terms.html @@ -22,7 +23,11 @@ def configure(self): if not self._conanfile.should_configure: return - configure_cmd = "{}/configure".format(self._conanfile.source_folder) + source = self._conanfile.source_folder + if source_folder: + source = os.path.join(self._conanfile.source_folder, source_folder) + + configure_cmd = "{}/configure".format(source) configure_cmd = unix_path(self._conanfile, configure_cmd) cmd = "{} {}".format(configure_cmd, self._configure_args) self._conanfile.output.info("Calling:\n > %s" % cmd) diff --git a/conans/test/unittests/tools/gnu/autotools_test.py b/conans/test/unittests/tools/gnu/autotools_test.py new file mode 100644 index 00000000000..b927a5df1a2 --- /dev/null +++ b/conans/test/unittests/tools/gnu/autotools_test.py @@ -0,0 +1,26 @@ +import os +import textwrap + +from conan.tools.files import save_toolchain_args +from conan.tools.gnu import Autotools +from conans.test.utils.mocks import ConanFileMock +from conans.test.utils.test_files import temp_folder + + +def test_source_folder_works(): + folder = temp_folder() + os.chdir(folder) + save_toolchain_args({ + "configure_args": "-foo bar", + "make_args": ""} + ) + conanfile = ConanFileMock() + conanfile.folders.set_base_install(folder) + sources = "/path/to/sources" + conanfile.folders.set_base_source(sources) + autotools = Autotools(conanfile) + autotools.configure(source_folder="subfolder") + assert conanfile.command == "/path/to/sources/subfolder/configure -foo bar" + + autotools.configure() + assert conanfile.command == "/path/to/sources/configure -foo bar" From cf7910126d2092f04859cf8e543a6eed04b5078b Mon Sep 17 00:00:00 2001 From: Luis Date: Fri, 6 Aug 2021 10:28:32 +0200 Subject: [PATCH 2/6] Fix windows test --- conans/test/unittests/tools/gnu/autotools_test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conans/test/unittests/tools/gnu/autotools_test.py b/conans/test/unittests/tools/gnu/autotools_test.py index b927a5df1a2..efea2177dd5 100644 --- a/conans/test/unittests/tools/gnu/autotools_test.py +++ b/conans/test/unittests/tools/gnu/autotools_test.py @@ -20,7 +20,7 @@ def test_source_folder_works(): conanfile.folders.set_base_source(sources) autotools = Autotools(conanfile) autotools.configure(source_folder="subfolder") - assert conanfile.command == "/path/to/sources/subfolder/configure -foo bar" + assert conanfile.command.replace("\\", "/") == "/path/to/sources/subfolder/configure -foo bar" autotools.configure() - assert conanfile.command == "/path/to/sources/configure -foo bar" + assert conanfile.command.replace("\\", "/") == "/path/to/sources/configure -foo bar" From 6e0cda48163e3a52996eea9d93f1320e7da3dd32 Mon Sep 17 00:00:00 2001 From: Luis Date: Fri, 6 Aug 2021 12:06:22 +0200 Subject: [PATCH 3/6] Renamed to build_script_folder --- conan/tools/cmake/cmake.py | 6 +++--- conan/tools/gnu/autotools.py | 6 +++--- conans/test/unittests/tools/gnu/autotools_test.py | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/conan/tools/cmake/cmake.py b/conan/tools/cmake/cmake.py index e124984cf73..afaa4732592 100644 --- a/conan/tools/cmake/cmake.py +++ b/conan/tools/cmake/cmake.py @@ -73,14 +73,14 @@ def __init__(self, conanfile, parallel=True): self._cmake_program = "cmake" # Path to CMake should be handled by environment - def configure(self, source_folder=None): + def configure(self, build_script_folder=None): # TODO: environment? if not self._conanfile.should_configure: return source = self._conanfile.source_folder - if source_folder: - source = os.path.join(self._conanfile.source_folder, source_folder) + if build_script_folder: + source = os.path.join(self._conanfile.source_folder, build_script_folder) build_folder = self._conanfile.build_folder generator_folder = self._conanfile.generators_folder diff --git a/conan/tools/gnu/autotools.py b/conan/tools/gnu/autotools.py index 74e20a2b265..d28a9dbda75 100644 --- a/conan/tools/gnu/autotools.py +++ b/conan/tools/gnu/autotools.py @@ -14,7 +14,7 @@ def __init__(self, conanfile): self._configure_args = toolchain_file_content.get("configure_args") self._make_args = toolchain_file_content.get("make_args") - def configure(self, source_folder=None): + def configure(self, build_script_folder=None): """ http://jingfenghanmax.blogspot.com.es/2010/09/configure-with-host-target-and-build.html https://gcc.gnu.org/onlinedocs/gccint/Configure-Terms.html @@ -24,8 +24,8 @@ def configure(self, source_folder=None): return source = self._conanfile.source_folder - if source_folder: - source = os.path.join(self._conanfile.source_folder, source_folder) + if build_script_folder: + source = os.path.join(self._conanfile.source_folder, build_script_folder) configure_cmd = "{}/configure".format(source) configure_cmd = unix_path(self._conanfile, configure_cmd) diff --git a/conans/test/unittests/tools/gnu/autotools_test.py b/conans/test/unittests/tools/gnu/autotools_test.py index efea2177dd5..9e0acff3c2a 100644 --- a/conans/test/unittests/tools/gnu/autotools_test.py +++ b/conans/test/unittests/tools/gnu/autotools_test.py @@ -19,7 +19,7 @@ def test_source_folder_works(): sources = "/path/to/sources" conanfile.folders.set_base_source(sources) autotools = Autotools(conanfile) - autotools.configure(source_folder="subfolder") + autotools.configure(build_script_folder="subfolder") assert conanfile.command.replace("\\", "/") == "/path/to/sources/subfolder/configure -foo bar" autotools.configure() From 364fa49f264015149168371c353676ce8e2ce023 Mon Sep 17 00:00:00 2001 From: Luis Date: Wed, 11 Aug 2021 16:45:29 +0200 Subject: [PATCH 4/6] Build script modules --- .../cmake/cmakedeps/test_cmakedeps_build_modules.py | 2 +- .../cmakedeps/test_cmakedeps_components_names.py | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/conans/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_build_modules.py b/conans/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_build_modules.py index 0b5ec1f46e0..83116f2a447 100644 --- a/conans/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_build_modules.py +++ b/conans/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_build_modules.py @@ -175,7 +175,7 @@ class Recipe(ConanFile): def build(self): cmake = CMake(self) - cmake.configure(source_folder="src") + cmake.configure(build_script_folder="src") cmake.build() def package(self): diff --git a/conans/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_components_names.py b/conans/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_components_names.py index 61b18280d67..f413ce83564 100644 --- a/conans/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_components_names.py +++ b/conans/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_components_names.py @@ -36,7 +36,7 @@ class GreetingsConan(ConanFile): def build(self): cmake = CMake(self) - cmake.configure(source_folder="src") + cmake.configure(build_script_folder="src") cmake.build() def package(self): @@ -143,7 +143,7 @@ class Chat(ConanFile): def build(self): cmake = CMake(self) - cmake.configure(source_folder="src") + cmake.configure(build_script_folder="src") cmake.build() def package(self): @@ -359,7 +359,7 @@ class HelloConan(ConanFile): def build(self): cmake = CMake(self) - cmake.configure(source_folder="src") + cmake.configure(build_script_folder="src") cmake.build() def package(self): @@ -531,7 +531,7 @@ class Conan(ConanFile): def build(self): cmake = CMake(self) - cmake.configure(source_folder="src") + cmake.configure(build_script_folder="src") cmake.build() def package(self): @@ -587,7 +587,7 @@ class Conan(ConanFile): def build(self): cmake = CMake(self) - cmake.configure(source_folder="src") + cmake.configure(build_script_folder="src") cmake.build() def package(self): @@ -616,7 +616,7 @@ class Conan(ConanFile): def build(self): cmake = CMake(self) - cmake.configure(source_folder="src") + cmake.configure(build_script_folder="src") cmake.build() self.run(".%smain" % os.sep) """.format("CMakeDeps")) From 2834edd6e69d6bffe471634e2183b38fce3ad0be Mon Sep 17 00:00:00 2001 From: Luis Date: Fri, 13 Aug 2021 09:21:10 +0200 Subject: [PATCH 5/6] Fixed Mac test --- .../toolchains/cmake/cmakedeps/test_apple_frameworks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conans/test/functional/toolchains/cmake/cmakedeps/test_apple_frameworks.py b/conans/test/functional/toolchains/cmake/cmakedeps/test_apple_frameworks.py index 4230e6030ab..676f5d6db0e 100644 --- a/conans/test/functional/toolchains/cmake/cmakedeps/test_apple_frameworks.py +++ b/conans/test/functional/toolchains/cmake/cmakedeps/test_apple_frameworks.py @@ -74,7 +74,7 @@ class AppleframeworkConan(ConanFile): def build(self): cmake = CMake(self) - cmake.configure(source_folder="src") + cmake.configure(build_script_folder="src") cmake.build() cmake.install() self.run("otool -L '%s/hello.framework/hello'" % self.build_folder) From 42c63a09383596d3aea43a6281a98337435e3092 Mon Sep 17 00:00:00 2001 From: Luis Date: Mon, 16 Aug 2021 10:46:25 +0200 Subject: [PATCH 6/6] review --- conan/tools/cmake/cmake.py | 6 +++--- .../toolchains/cmake/cmakedeps/test_apple_frameworks.py | 5 ++++- .../cmake/cmakedeps/test_cmakedeps_build_modules.py | 5 ++++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/conan/tools/cmake/cmake.py b/conan/tools/cmake/cmake.py index afaa4732592..7aa8b27e5f5 100644 --- a/conan/tools/cmake/cmake.py +++ b/conan/tools/cmake/cmake.py @@ -78,9 +78,9 @@ def configure(self, build_script_folder=None): if not self._conanfile.should_configure: return - source = self._conanfile.source_folder + cmakelist_folder = self._conanfile.source_folder if build_script_folder: - source = os.path.join(self._conanfile.source_folder, build_script_folder) + cmakelist_folder = os.path.join(self._conanfile.source_folder, build_script_folder) build_folder = self._conanfile.build_folder generator_folder = self._conanfile.generators_folder @@ -101,7 +101,7 @@ def configure(self, build_script_folder=None): arg_list.append('-DCMAKE_INSTALL_PREFIX="{}"'.format(pkg_folder)) if platform.system() == "Windows" and self._generator == "MinGW Makefiles": arg_list.append('-DCMAKE_SH="CMAKE_SH-NOTFOUND"') - arg_list.append('"{}"'.format(source)) + arg_list.append('"{}"'.format(cmakelist_folder)) command = " ".join(arg_list) self._conanfile.output.info("CMake command: %s" % command) diff --git a/conans/test/functional/toolchains/cmake/cmakedeps/test_apple_frameworks.py b/conans/test/functional/toolchains/cmake/cmakedeps/test_apple_frameworks.py index 676f5d6db0e..0a9b16b785a 100644 --- a/conans/test/functional/toolchains/cmake/cmakedeps/test_apple_frameworks.py +++ b/conans/test/functional/toolchains/cmake/cmakedeps/test_apple_frameworks.py @@ -72,9 +72,12 @@ class AppleframeworkConan(ConanFile): name = "mylibrary" version = "1.0" + def layout(self): + self.folders.source = "src" + def build(self): cmake = CMake(self) - cmake.configure(build_script_folder="src") + cmake.configure() cmake.build() cmake.install() self.run("otool -L '%s/hello.framework/hello'" % self.build_folder) diff --git a/conans/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_build_modules.py b/conans/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_build_modules.py index 83116f2a447..7983cfead88 100644 --- a/conans/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_build_modules.py +++ b/conans/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_build_modules.py @@ -173,9 +173,12 @@ class Recipe(ConanFile): exports_sources = ["src/*", "build-module.cmake"] generators = "cmake" + def layout(self): + self.folders.source = "src" + def build(self): cmake = CMake(self) - cmake.configure(build_script_folder="src") + cmake.configure() cmake.build() def package(self):