def generate_args(self):
        configure_args = []
        configure_args.extend(self.configure_args)

        if self.default_configure_install_args and self._conanfile.package_folder:
            def _get_cpp_info_value(name):
                # Why not taking cpp.build? because this variables are used by the "cmake install"
                # that correspond to the package folder (even if the root is the build directory)
                elements = getattr(self._conanfile.cpp.package, name)
                return elements[0] if elements else None

            # If someone want arguments but not the defaults can pass them in args manually
            configure_args.extend(
                    ['--prefix=%s' % self._conanfile.package_folder.replace("\\", "/"),
                     "--bindir=${prefix}/%s" % _get_cpp_info_value("bindirs"),
                     "--sbindir=${prefix}/%s" % _get_cpp_info_value("bindirs"),
                     "--libdir=${prefix}/%s" % _get_cpp_info_value("libdirs"),
                     "--includedir=${prefix}/%s" % _get_cpp_info_value("includedirs"),
                     "--oldincludedir=${prefix}/%s" % _get_cpp_info_value("includedirs"),
                     "--datarootdir=${prefix}/%s" % _get_cpp_info_value("resdirs")])
        user_args_str = args_to_string(self.configure_args)
        for flag, var in (("host", self._host), ("build", self._build), ("target", self._target)):
            if var and flag not in user_args_str:
                configure_args.append('--{}={}'.format(flag, var))

        args = {"configure_args": args_to_string(configure_args),
                "make_args":  args_to_string(self.make_args)}

        save_toolchain_args(args, namespace=self._namespace)
Beispiel #2
0
 def generate(self):
     save_toolchain_args(
         {
             "bazel_config":
             self._conanfile.conf.get("tools.google.bazel:config"),
             "bazelrc_path":
             self._conanfile.conf.get("tools.google.bazel:bazelrc_path")
         },
         namespace=self._namespace)
Beispiel #3
0
def test_save_toolchain_args_full():
    folder = temp_folder()
    content = {
        'win_path': r'my\win\path',
        'command': r'conan --option "My Option"',
        'my_regex': r'([A-Z])\w+'
    }
    save_toolchain_args(content, generators_folder=folder)
    args = load(os.path.join(folder, CONAN_TOOLCHAIN_ARGS_FILE))
    assert "[%s]" % CONAN_TOOLCHAIN_ARGS_SECTION in args
    assert r'win_path = my\win\path' in args
def test_cmake_make_program(conanfile):
    save_toolchain_args({"cmake_generator": "MinGW Makefiles"},
                        generators_folder=conanfile.folders.generators_folder)

    def run(command):
        assert '-DCMAKE_MAKE_PROGRAM="C:/mymake.exe"' in command

    conanfile.run = run
    conanfile.conf.define("tools.gnu:make_program", "C:\\mymake.exe")
    with mock.patch("platform.system", mock.MagicMock(return_value='Windows')):
        cmake = CMake(conanfile)
        cmake.configure()
Beispiel #5
0
    def generate_args(self):
        configure_args = []
        configure_args.extend(self.configure_args)
        user_args_str = args_to_string(self.configure_args)
        for flag, var in (("host", self._host), ("build", self._build),
                          ("target", self._target)):
            if var and flag not in user_args_str:
                configure_args.append('--{}={}'.format(flag, var))

        args = {
            "configure_args": args_to_string(configure_args),
            "make_args": args_to_string(self.make_args),
            "autoreconf_args": args_to_string(self.autoreconf_args)
        }

        save_toolchain_args(args, namespace=self._namespace)
Beispiel #6
0
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(build_script_folder="subfolder")
    assert conanfile.command.replace(
        "\\", "/") == '"/path/to/sources/subfolder/configure" -foo bar'

    autotools.configure()
    assert conanfile.command.replace(
        "\\", "/") == '"/path/to/sources/configure" -foo bar'
Beispiel #7
0
def test_configure_arguments():
    tmp = temp_folder()
    os.chdir(tmp)
    save_toolchain_args({
        "configure_args": "my_configure_args",
        "make_args": "my_make_args"
    })
    runner = RunnerMock()
    conanfile = ConanFile(Mock(), runner=runner)
    conanfile.settings = MockSettings({})
    conanfile.folders.set_base_install(tmp)
    conanfile.folders.set_base_source(tmp)
    conanfile.conf = Conf()
    conanfile.conf["tools.gnu:make_program"] = "my_make"
    conanfile.conf["tools.build:jobs"] = 23
    ab = Autotools(conanfile)
    ab.configure()
    assert "configure\" my_configure_args" in runner.command_called

    ab = Autotools(conanfile)
    ab.make()
    assert "my_make my_make_args -j23" in runner.command_called
Beispiel #8
0
def test_save_toolchain_args_empty():
    folder = temp_folder()
    content = {}
    save_toolchain_args(content, generators_folder=folder)
    args = load(os.path.join(folder, CONAN_TOOLCHAIN_ARGS_FILE))
    assert "[%s]" % CONAN_TOOLCHAIN_ARGS_SECTION in args