[jira] [Comment Edited] (MINIFICPP-2346) Speed up MiNiFi Build with Conan package manager (C++)
[ https://issues.apache.org/jira/browse/MINIFICPP-2346?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17842449#comment-17842449 ] James Guzman (Medel) edited comment on MINIFICPP-2346 at 4/30/24 6:44 PM: -- I think it may be beneficial to leverage conan at the beginning for installing MiNiFi C++ external lib dependencies (conan supports Linux and Windows packages). For my medical robotics company, I created an ezconan python wrapper tool around conan for speeding up our C++ cmake build infrastructure for our medical robot. I can build that code on Linux and Windows with no issues and the rest of the software team and our other engineering teams use our build infrastructure. I wanted to try adding support for conan to the MiNiFi C++ project too since I am looking at using MiNiFi C++ to develop edge data pipelines programmatically as alternative to the yml approach. As for the vcpkg, CMake can generate those build files when we run CMake generate on Windows. Similar for Makefiles, where we run CMake generate on Linux and CMake generates them too. I will follow up on this thread with updates to my progress on conan for speeding up MiNiFi C++ builds [~szaszm] . I will keep you posted. I am also considering creating a MiNiFI C++ conan package that I can smoothly integrate MiNiFi C++ lib into other C++ projects like in my medical imaging robot. was (Author: james.medel): I think it may be beneficial to leverage conan at the beginning for installing MiNiFi C++ external lib dependencies (conan supports Linux and Windows packages). For my medical robotics company, I created an ezconan python wrapper tool around conan for speeding up our C++ cmake build infrastructure for our medical robot. I can build that code on Linux and Windows. I wanted to try adding support for conan to the MiNiFi C++ project too since I am looking at using MiNiFi C++ to develop edge data pipelines programmatically as alternative to the yml approach. As for the vcpkg, CMake can generate those build files when we run CMake generate on Windows. Similar for Makefiles, where we run CMake generate on Linux and CMake generates them too. I will follow up on this thread with updates to my progress on conan for speeding up MiNiFi C++ builds [~szaszm] . I will keep you posted. I am also considering creating a MiNiFI C++ conan package that I can smoothly integrate MiNiFi C++ lib into other C++ projects like in my medical imaging robot. > Speed up MiNiFi Build with Conan package manager (C++) > -- > > Key: MINIFICPP-2346 > URL: https://issues.apache.org/jira/browse/MINIFICPP-2346 > Project: Apache NiFi MiNiFi C++ > Issue Type: Improvement >Affects Versions: 0.15.0 > Environment: Ubuntu 22.04 >Reporter: James Guzman (Medel) >Assignee: James Guzman (Medel) >Priority: Minor > Labels: build, conan, ubuntu > > *Description of Issue:* Building MiNiFi C++ with just CMake is really slow. > During the the build process, it clones all the external dependencies and > then builds those external dependencies while its building MiNiFi CPP. > Sometimes the MiNiFi CPP build fails too when external lib dependencies fail > to download or fail to build. It would be faster to build MiNiFi C++ with the > external dependencies already preinstalled. > > *Potential Solution:* Integrate *conan version 2* into MiNiFi C++ project to > enable support for using *conan install* to install all or most of MiNiFi's > external dependencies, using *conan install --build=missing* to build them as > prebuilt binary conan packages, upload them to conancenter with {*}conan > upload{*}, and then run cmake generate to generate the appropriate build > files for the OS, then run make to build MiNiFi CPP. Also conan has really > good support for cross platform compatibility for Linux and Windows. At this > point because we already have most of MiNiFi CPP's external lib dependencies > installed with conan, our CMake build will just focus on building the MiNiFi > CPP code, enabling faster builds. Also I will need to account for backward > compatibility support with the previous way of installing MiNiFi CPP external > lib dependencies using CMake FetchContent_Declare(...) approach until > conanfile.py approach covers installing all these dependencies. A valid > verification of the MiNiFi C++ build would be to run GTESTs and if all the > expected test cases pass, then it may be fair to conclude we would be ready > to deprecate the slow CMake FetchContent_Declare(...) approach. > > *Steps to Perform MiNiFi C++ Build Enhancement (Plan to Integrate into > script(s)):* > # Install conan version 2 into MiNiFi C++ dev environment (my preference is > using do
[jira] [Comment Edited] (MINIFICPP-2346) Speed up MiNiFi Build with Conan package manager (C++)
[ https://issues.apache.org/jira/browse/MINIFICPP-2346?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17842451#comment-17842451 ] James Guzman (Medel) edited comment on MINIFICPP-2346 at 4/30/24 5:07 PM: -- [~szaszm] Does MiNiFi C++ have a jfrog repo where we can host conan repos publicly (alternative to conancenter)? In case I need to build conan packages for MiNiFi C++ external lib dependencies and upload them as prebuilt binary conan packages to jfrog. We could create a jfrog Windows repo for MiNiFi CPP's external libs built for Windows and a jfrog Linux repo for MiNiFi CPP's external libs built for Linux. Here is Jfrog: [https://jfrog.com/] was (Author: james.medel): [~szaszm] Does MiNiFi C++ have a jfrog repo where we can host conan repos (alternative to conancenter)? In case I need to build conan packages for MiNiFi C++ external lib dependencies and upload them as prebuilt binary conan packages to jfrog. We could create a jfrog Windows repo for MiNiFi CPP's external libs built for Windows and a jfrog Linux repo for MiNiFi CPP's external libs built for Linux. Here is Jfrog: [https://jfrog.com/] > Speed up MiNiFi Build with Conan package manager (C++) > -- > > Key: MINIFICPP-2346 > URL: https://issues.apache.org/jira/browse/MINIFICPP-2346 > Project: Apache NiFi MiNiFi C++ > Issue Type: Improvement >Affects Versions: 0.15.0 > Environment: Ubuntu 22.04 >Reporter: James Guzman (Medel) >Assignee: James Guzman (Medel) >Priority: Minor > Labels: build, conan, ubuntu > > *Description of Issue:* Building MiNiFi C++ with just CMake is really slow. > During the the build process, it clones all the external dependencies and > then builds those external dependencies while its building MiNiFi CPP. > Sometimes the MiNiFi CPP build fails too when external lib dependencies fail > to download or fail to build. It would be faster to build MiNiFi C++ with the > external dependencies already preinstalled. > > *Potential Solution:* Integrate *conan version 2* into MiNiFi C++ project to > enable support for using *conan install* to install all or most of MiNiFi's > external dependencies, using *conan install --build=missing* to build them as > prebuilt binary conan packages, upload them to conancenter with {*}conan > upload{*}, and then run cmake generate to generate the appropriate build > files for the OS, then run make to build MiNiFi CPP. Also conan has really > good support for cross platform compatibility for Linux and Windows. At this > point because we already have most of MiNiFi CPP's external lib dependencies > installed with conan, our CMake build will just focus on building the MiNiFi > CPP code, enabling faster builds. Also I will need to account for backward > compatibility support with the previous way of installing MiNiFi CPP external > lib dependencies using CMake FetchContent_Declare(...) approach until > conanfile.py approach covers installing all these dependencies. A valid > verification of the MiNiFi C++ build would be to run GTESTs and if all the > expected test cases pass, then it may be fair to conclude we would be ready > to deprecate the slow CMake FetchContent_Declare(...) approach. > > *Steps to Perform MiNiFi C++ Build Enhancement (Plan to Integrate into > script(s)):* > # Install conan version 2 into MiNiFi C++ dev environment (my preference is > using docker container) > # Create a conanfile.py file at root of MiNiFi C++ project where we run > "conan install" or "conan install --build=missing" to install MiNiFi C++ > external lib dependencies first. Then we run CMake to build MiNiFi C++. > # Find all MiNiFi C++ find_package(...) CMake function calls and check if > there is already supported conan packages on the conancenter, so we can > install those packages. > # Find all FetchContent_Declare(...) CMake function calls and check if there > is already supported conan packages on the conancenter, so we can install > those packages. > # At this point we will have used conan version 2 C++ package manager to > install almost all MiNiFi C++'s external dependencies. > ## With Conan, we will have installed these MiNiFi external lib dependencies > as prebuilt binary conan packages. > ## Or we will have instructed conan to first build each C++ external lib > dependency, upload each lib to conancenter. > # Thus, conan manages installing MiNiFi C++'s external lib dependencies, so > we can then run CMake to build MiNiFi faster. > > -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Comment Edited] (MINIFICPP-2346) Speed up MiNiFi Build with Conan package manager (C++)
[ https://issues.apache.org/jira/browse/MINIFICPP-2346?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17842451#comment-17842451 ] James Guzman (Medel) edited comment on MINIFICPP-2346 at 4/30/24 5:04 PM: -- [~szaszm] Does MiNiFi C++ have a jfrog repo where we can host conan repos (alternative to conancenter)? In case I need to build conan packages for MiNiFi C++ external lib dependencies and upload them as prebuilt binary conan packages to jfrog. We could create a jfrog Windows repo for MiNiFi CPP's external libs built for Windows and a jfrog Linux repo for MiNiFi CPP's external libs built for Linux. Here is Jfrog: [https://jfrog.com/] was (Author: james.medel): [~szaszm] Does MiNiFi C++ have a jfrog repo where we can host conan repos (alternative to conancenter)? In case I need to build conan packages for MiNiFi C++ external lib dependencies and upload them as prebuilt binary conan packages to jfrog. We could create a jfrog Windows repo for MiNiFi C++'s external libs built for Windows and a jfrog Linux repo for MiNiFi C++'s external libs built for Linux. Here is Jfrog: https://jfrog.com/ > Speed up MiNiFi Build with Conan package manager (C++) > -- > > Key: MINIFICPP-2346 > URL: https://issues.apache.org/jira/browse/MINIFICPP-2346 > Project: Apache NiFi MiNiFi C++ > Issue Type: Improvement >Affects Versions: 0.15.0 > Environment: Ubuntu 22.04 >Reporter: James Guzman (Medel) >Assignee: James Guzman (Medel) >Priority: Minor > Labels: build, conan, ubuntu > > *Description of Issue:* Building MiNiFi C++ with just CMake is really slow. > During the the build process, it clones all the external dependencies and > then builds those external dependencies while its building MiNiFi CPP. > Sometimes the MiNiFi CPP build fails too when external lib dependencies fail > to download or fail to build. It would be faster to build MiNiFi C++ with the > external dependencies already preinstalled. > > *Potential Solution:* Integrate *conan version 2* into MiNiFi C++ project to > enable support for using *conan install* to install all or most of MiNiFi's > external dependencies, using *conan install --build=missing* to build them as > prebuilt binary conan packages, upload them to conancenter with {*}conan > upload{*}, and then run cmake generate to generate the appropriate build > files for the OS, then run make to build MiNiFi CPP. Also conan has really > good support for cross platform compatibility for Linux and Windows. At this > point because we already have most of MiNiFi CPP's external lib dependencies > installed with conan, our CMake build will just focus on building the MiNiFi > CPP code, enabling faster builds. Also I will need to account for backward > compatibility support with the previous way of installing MiNiFi CPP external > lib dependencies using CMake FetchContent_Declare(...) approach until > conanfile.py approach covers installing all these dependencies. A valid > verification of the MiNiFi C++ build would be to run GTESTs and if all the > expected test cases pass, then it may be fair to conclude we would be ready > to deprecate the slow CMake FetchContent_Declare(...) approach. > > *Steps to Perform MiNiFi C++ Build Enhancement (Plan to Integrate into > script(s)):* > # Install conan version 2 into MiNiFi C++ dev environment (my preference is > using docker container) > # Create a conanfile.py file at root of MiNiFi C++ project where we run > "conan install" or "conan install --build=missing" to install MiNiFi C++ > external lib dependencies first. Then we run CMake to build MiNiFi C++. > # Find all MiNiFi C++ find_package(...) CMake function calls and check if > there is already supported conan packages on the conancenter, so we can > install those packages. > # Find all FetchContent_Declare(...) CMake function calls and check if there > is already supported conan packages on the conancenter, so we can install > those packages. > # At this point we will have used conan version 2 C++ package manager to > install almost all MiNiFi C++'s external dependencies. > ## With Conan, we will have installed these MiNiFi external lib dependencies > as prebuilt binary conan packages. > ## Or we will have instructed conan to first build each C++ external lib > dependency, upload each lib to conancenter. > # Thus, conan manages installing MiNiFi C++'s external lib dependencies, so > we can then run CMake to build MiNiFi faster. > > -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Comment Edited] (MINIFICPP-2346) Speed up MiNiFi Build with Conan package manager (C++)
[ https://issues.apache.org/jira/browse/MINIFICPP-2346?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17842449#comment-17842449 ] James Medel edited comment on MINIFICPP-2346 at 4/30/24 4:58 PM: - I think it may be beneficial to leverage conan at the beginning for installing MiNiFi C++ external lib dependencies (conan supports Linux and Windows packages). For my medical robotics company, I created an ezconan python wrapper tool around conan for speeding up our C++ cmake build infrastructure for our medical robot. I can build that code on Linux and Windows. I wanted to try adding support for conan to the MiNiFi C++ project too since I am looking at using MiNiFi C++ to develop edge data pipelines programmatically as alternative to the yml approach. As for the vcpkg, CMake can generate those build files when we run CMake generate on Windows. Similar for Makefiles, where we run CMake generate on Linux and CMake generates them too. I will follow up on this thread with updates to my progress on conan for speeding up MiNiFi C++ builds [~szaszm] . I will keep you posted. I am also considering creating a MiNiFI C++ conan package that I can smoothly integrate MiNiFi C++ lib into other C++ projects like in my medical imaging robot. was (Author: james.medel): I think it may be beneficial to leverage conan at the beginning for installing MiNiFi C++ external lib dependencies (conan supports Linux and Windows packages). For my medical robotics company, I created an ezconan python wrapper tool around conan for speeding up our C++ cmake build infrastructure for our medical robot. I can build that code on Linux and Windows. I wanted to try adding support for conan to the MiNiFi C++ project too since I am looking at using MiNiFi C++ to develop edge data pipelines programmatically as alternative to the yml approach. As for the vcpkg, CMake can generate those build files when we run CMake generate on Windows. I will follow up on this thread with updates to my progress on conan for speeding up MiNiFi C++ builds [~szaszm] . I will keep you posted. I am also considering creating a MiNiFI C++ conan package that I can smoothly integrate MiNiFi C++ lib into other C++ projects like in my medical imaging robot. > Speed up MiNiFi Build with Conan package manager (C++) > -- > > Key: MINIFICPP-2346 > URL: https://issues.apache.org/jira/browse/MINIFICPP-2346 > Project: Apache NiFi MiNiFi C++ > Issue Type: Improvement >Affects Versions: 0.15.0 > Environment: Ubuntu 22.04 >Reporter: James Medel >Assignee: James Medel >Priority: Minor > Labels: build, conan, ubuntu > > *Description of Issue:* Building MiNiFi C++ with just CMake is really slow. > During the the build process, it clones all the external dependencies and > then builds those external dependencies while its building MiNiFi CPP. > Sometimes the MiNiFi CPP build fails too when external lib dependencies fail > to download or fail to build. It would be faster to build MiNiFi C++ with the > external dependencies already preinstalled. > > *Potential Solution:* Integrate *conan version 2* into MiNiFi C++ project to > enable support for using *conan install* to install all or most of MiNiFi's > external dependencies, using *conan install --build=missing* to build them as > prebuilt binary conan packages, upload them to conancenter with {*}conan > upload{*}, and then run cmake generate to generate the appropriate build > files for the OS, then run make to build MiNiFi CPP. Also conan has really > good support for cross platform compatibility for Linux and Windows. At this > point because we already have most of MiNiFi CPP's external lib dependencies > installed with conan, our CMake build will just focus on building the MiNiFi > CPP code, enabling faster builds. Also I will need to account for backward > compatibility support with the previous way of installing MiNiFi CPP external > lib dependencies using CMake FetchContent_Declare(...) approach until > conanfile.py approach covers installing all these dependencies. A valid > verification of the MiNiFi C++ build would be to run GTESTs and if all the > expected test cases pass, then it may be fair to conclude we would be ready > to deprecate the slow CMake FetchContent_Declare(...) approach. > > *Steps to Perform MiNiFi C++ Build Enhancement (Plan to Integrate into > script(s)):* > # Install conan version 2 into MiNiFi C++ dev environment (my preference is > using docker container) > # Create a conanfile.py file at root of MiNiFi C++ project where we run > "conan install" or "conan install --build=missing" to install MiNiFi C++ > external lib dependencies first. Then we run CMake to build MiNiFi C+