From c782959cd2f55d07832e31a62cbd56eb72d16f29 Mon Sep 17 00:00:00 2001 From: czoido Date: Tue, 23 Feb 2021 16:45:36 +0100 Subject: [PATCH 1/7] update to 0.17.0-dev --- conan.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conan.cmake b/conan.cmake index 321e95cc..1ab9db22 100644 --- a/conan.cmake +++ b/conan.cmake @@ -33,7 +33,7 @@ # but it is only necessary on the end-user side. It is not necessary to create conan # packages, in fact it shouldn't be use for that. Check the project documentation. -# version: 0.16.0 +# version: 0.17.0-dev include(CMakeParseArguments) From 184abfabfd6859532530ed358d2927120b3ec138 Mon Sep 17 00:00:00 2001 From: czoido Date: Thu, 25 Feb 2021 11:31:50 +0100 Subject: [PATCH 2/7] add OUTPUT_QUIET and ERROR_QUIET --- conan.cmake | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/conan.cmake b/conan.cmake index 1ab9db22..7b9f3599 100644 --- a/conan.cmake +++ b/conan.cmake @@ -531,13 +531,11 @@ function(conan_cmake_install) conan_check(REQUIRED) endif() - set(installOptions UPDATE NO_IMPORTS) + set(installOptions UPDATE NO_IMPORTS OUTPUT_QUIET ERROR_QUIET) set(installOneValueArgs PATH_OR_REFERENCE REFERENCE REMOTE LOCKFILE LOCKFILE_OUT LOCKFILE_NODE_ID INSTALL_FOLDER) set(installMultiValueArgs GENERATOR BUILD ENV ENV_HOST ENV_BUILD OPTIONS_HOST OPTIONS OPTIONS_BUILD PROFILE PROFILE_HOST PROFILE_BUILD SETTINGS SETTINGS_HOST SETTINGS_BUILD) cmake_parse_arguments(ARGS "${installOptions}" "${installOneValueArgs}" "${installMultiValueArgs}" ${ARGN}) - conan_parse_arguments(${ARGV}) - foreach(arg ${installOptions}) if(ARGS_${arg}) set(${arg} ${${arg}} ${ARGS_${arg}}) @@ -612,17 +610,19 @@ function(conan_cmake_install) string(REPLACE ";" " " _install_args "${install_args}") message(STATUS "Conan executing: ${CONAN_CMD} ${_install_args}") + if(ARGS_OUTPUT_QUIET) - execute_process(COMMAND ${CONAN_CMD} ${install_args} - RESULT_VARIABLE return_code - OUTPUT_VARIABLE conan_output - ERROR_VARIABLE conan_output - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) - else() - execute_process(COMMAND ${CONAN_CMD} ${install_args} - RESULT_VARIABLE return_code - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + set(OUTPUT_OPT OUTPUT_QUIET) endif() + if(ARGS_ERROR_QUIET) + set(ERROR_OPT ERROR_QUIET) + endif() + + execute_process(COMMAND ${CONAN_CMD} ${install_args} + RESULT_VARIABLE return_code + ${OUTPUT_OPT} + ${ERROR_OPT} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) if(NOT "${return_code}" STREQUAL "0") message(FATAL_ERROR "Conan install failed='${return_code}'") From 3521611a085130ce522acd533e4c347914113ad0 Mon Sep 17 00:00:00 2001 From: czoido Date: Thu, 25 Feb 2021 11:35:18 +0100 Subject: [PATCH 3/7] add test --- tests.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tests.py b/tests.py index 5f2d67d3..2461a7aa 100644 --- a/tests.py +++ b/tests.py @@ -200,6 +200,33 @@ def test_conan_cmake_install_find_package(self): run("cmake .. {} -DCMAKE_BUILD_TYPE=Release".format(generator)) run("cmake --build . --config Release") + def test_conan_cmake_install_quiet(self): + content = textwrap.dedent(""" + cmake_minimum_required(VERSION 3.5) + project(FormatOutput CXX) + list(APPEND CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}) + list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}) + add_definitions("-std=c++11") + include(conan.cmake) + conan_cmake_configure(REQUIRES fmt/6.1.2 GENERATORS cmake_find_package) + conan_cmake_autodetect(settings) + conan_cmake_install(PATH_OR_REFERENCE . + BUILD missing + REMOTE conan-center + SETTINGS ${settings} + OUTPUT_QUIET ERROR_QUIET) + find_package(fmt) + add_executable(main main.cpp) + target_link_libraries(main fmt::fmt) + """) + save("CMakeLists.txt", content) + os.makedirs("build") + os.chdir("build") + run("cmake .. {} -DCMAKE_BUILD_TYPE=Release > output.txt".format(generator)) + with open('output.txt', 'r') as file: + data = file.read() + assert not "conanfile.txt: Installing package" in data + def test_conan_add_remote(self): content = textwrap.dedent(""" cmake_minimum_required(VERSION 2.8) From 00a8f9420307141942e3743e3f4894d28004b63b Mon Sep 17 00:00:00 2001 From: czoido Date: Thu, 25 Feb 2021 12:54:19 +0100 Subject: [PATCH 4/7] respect quiet error --- conan.cmake | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/conan.cmake b/conan.cmake index 7b9f3599..2d4a922b 100644 --- a/conan.cmake +++ b/conan.cmake @@ -625,7 +625,11 @@ function(conan_cmake_install) WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) if(NOT "${return_code}" STREQUAL "0") - message(FATAL_ERROR "Conan install failed='${return_code}'") + if (ARGS_ERROR_QUIET) + message(WARNING "Conan install failed='${return_code}'") + else() + message(FATAL_ERROR "Conan install failed='${return_code}'") + endif() endif() endfunction() From 45a5c24e4a364cb8c0e97d303ac10b0d930dba33 Mon Sep 17 00:00:00 2001 From: czoido Date: Thu, 25 Feb 2021 15:35:40 +0100 Subject: [PATCH 5/7] test ERROR_QUIET --- tests.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests.py b/tests.py index 2461a7aa..ff671e55 100644 --- a/tests.py +++ b/tests.py @@ -227,6 +227,28 @@ def test_conan_cmake_install_quiet(self): data = file.read() assert not "conanfile.txt: Installing package" in data + def test_conan_cmake_error_quiet(self): + content = textwrap.dedent(""" + cmake_minimum_required(VERSION 3.5) + project(FormatOutput CXX) + list(APPEND CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}) + list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}) + add_definitions("-std=c++11") + include(conan.cmake) + conan_cmake_configure(REQUIRES fmt/6.1.2 GENERATORS cmake_find_package) + conan_cmake_autodetect(settings) + set (CONAN_COMMAND not_existing_conan) + conan_cmake_install(PATH_OR_REFERENCE . + BUILD missing + REMOTE conan-center + SETTINGS ${settings} + ERROR_QUIET) + """) + save("CMakeLists.txt", content) + os.makedirs("build") + os.chdir("build") + run("cmake .. {} -DCMAKE_BUILD_TYPE=Release".format(generator)) + def test_conan_add_remote(self): content = textwrap.dedent(""" cmake_minimum_required(VERSION 2.8) From 7efb876b144e285aad1cf55d74bdbb20e28807c9 Mon Sep 17 00:00:00 2001 From: czoido Date: Thu, 25 Feb 2021 18:27:45 +0100 Subject: [PATCH 6/7] fix version --- conan.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conan.cmake b/conan.cmake index 2d4a922b..fb6ec225 100644 --- a/conan.cmake +++ b/conan.cmake @@ -33,7 +33,7 @@ # but it is only necessary on the end-user side. It is not necessary to create conan # packages, in fact it shouldn't be use for that. Check the project documentation. -# version: 0.17.0-dev +# version: 0.16.0 include(CMakeParseArguments) From f2902937b5762d55bb093b639915ec6d214fd31b Mon Sep 17 00:00:00 2001 From: czoido Date: Thu, 25 Feb 2021 19:13:46 +0100 Subject: [PATCH 7/7] update readme --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index de83a0d7..94c06985 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,9 @@ parameter takes the `all` value, Conan will build everything from source), `ENV` `SETTINGS`, `SETTINGS_HOST`, `SETTINGS_BUILD`. For more information, check [conan install](https://docs.conan.io/en/latest/reference/commands/consumer/install.html) documentation. +It will also accept `OUTPUT_QUIET` and `ERROR_QUIET` arguments so that when it runs the `conan install` +command the output is quiet or the error is bypassed (or both). + ```cmake conan_cmake_run(REQUIRES fmt/1.9.4 cgal/5.0.2