James Medel created MINIFICPP-2346:
--------------------------------------

             Summary: 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


*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 C++. 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 C++. At this point because we already 
 most of MiNiFi C++'s external dependencies with conan, our CMake build will 
just focus on building the MiNiFi C++ code.

 

*Steps to Perform MiNiFi C++ Build Enhancement:*
 # 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)

Reply via email to