server icon indicating copy to clipboard operation
server copied to clipboard

[client c++] Could not find a package configuration file provided by "RapidJSON"

Open HarHarLinks opened this issue 3 years ago • 8 comments

Description

  Could not find a package configuration file provided by "RapidJSON" with
  any of the following names:

    RapidJSONConfig.cmake
    rapidjson-config.cmake

  Add the installation prefix of "RapidJSON" to CMAKE_PREFIX_PATH or set
  "RapidJSON_DIR" to a directory containing one of the above files.  If
  "RapidJSON" provides a separate development package or SDK, be sure it has
  been installed.

Triton Information trying to build client branch r22.01 (only c++ api is needed, thus excluding python and java from the suggested args)

To Reproduce Platform: CentOS 7.9.2009, cmake 3.21.1, GNU Make 3.82, icc (ICC) 2021.5.0 20211109

git clone -b r22.01 https://github.com/triton-inference-server/client

mkdir -p client/build && cd client/build

cmake -DCMAKE_INSTALL_PREFIX=`pwd`/install -DTRITON_ENABLE_CC_HTTP=ON -DTRITON_ENABLE_CC_GRPC=ON -DTRITON_ENABLE_PERF_ANALYZER=ON -DTRITON_ENABLE_GPU=ON -DTRITON_ENABLE_EXAMPLES=ON -DTRITON_ENABLE_TESTS=ON -DTRITON_COMMON_REPO_TAG=r22.01 -DTRITON_THIRD_PARTY_REPO_TAG=r22.01 -DTRITON_CORE_REPO_TAG=r22.01 -DTRITON_BACKEND_REPO_TAG=r22.01 ..

make cc-clients

Expected behavior build succeeds

HarHarLinks avatar Feb 11 '22 16:02 HarHarLinks

You must install the associated dependencies on the system first. rapidjson in this case. https://github.com/triton-inference-server/server/blob/main/Dockerfile.sdk#L67 You might have to install other dependencies as well. Use the dockerfile.sdk above as a reference.

Please re-open if you have any other questions or issues.

tanmayv25 avatar Feb 11 '22 17:02 tanmayv25

Thanks for the quick reply.

Why are the requirements not documented at the README of https://github.com/triton-inference-server/client? Please treat this issue as ticket for adding this.

Running above steps will automatically clone and build over a dozen 3P deps, including all kind of protobuf, grpc and at least 2 json libs (json and nlohmann-json). Why is RapidJSON not included in this?


Please re-open if you have any other questions or issues.

fyi I can't:

  • you can re-open your own issues if you closed them yourself
  • you cannot close or re-open issues opened by someone else
  • you cannot re-open your own issues if a repo collaborator closed them

HarHarLinks avatar Feb 11 '22 17:02 HarHarLinks

We have the cleaning up of the client build in our roadmap.

fyi I can't:

you can re-open your own issues if you closed them yourself you cannot close or re-open issues opened by someone else you cannot re-open your own issues if a repo collaborator closed them

Thanks for letting me know. Let me review the policy with team.

tanmayv25 avatar Feb 11 '22 20:02 tanmayv25

Since I don't have access rights to install rapidjson system wide, I have downloaded it and "built" it from source (i.e. generated RapidJSONConf.cmake). CMake can now find it and even sets the appropriate path as printed by message(STATUS "RapidJSON found. Headers: ${RAPIDJSON_INCLUDE_DIRS}"). However, while compiling several files (http_client.cc:45, torchserve_client_backend.cc:27 recursively includes perf_utils.h:28:10, etc...) it complains about not being able to find the included header rapidjson/document.h which is definitely present in above include path. A verbose compile call using VERBOSE=1 make cc-clients prints the g++ (i switched from intel to gcc based on another error) call generated form the build system, which does not explicitly include the rapidjson headers contrary to my expectations. This appears to be a further defect in your build system?

HarHarLinks avatar Feb 17 '22 17:02 HarHarLinks

You might have to use target_include_directories to include ${RAPIDJSON_INCLUDE_DIRS}" when building cc-clients target. Cmake does not include the headers directly. Feel free to open a PR with your changes, contributions from the community are highly appreciated.

tanmayv25 avatar Feb 17 '22 18:02 tanmayv25

Isn't this what is done here already? https://github.com/triton-inference-server/client/blob/fe6ccbb00e57ce91e284bc5540b29e8929670f06/src/c%2B%2B/library/CMakeLists.txt#L55

HarHarLinks avatar Feb 18 '22 12:02 HarHarLinks

Isn't this what is done here already? https://github.com/triton-inference-server/client/blob/fe6ccbb00e57ce91e284bc5540b29e8929670f06/src/c%2B%2B/library/CMakeLists.txt#L55

Hi, I'm facing the same issue. Have you solve it?

heibaidaolx123 avatar Jul 21 '22 08:07 heibaidaolx123

Nope sorry, I was not able to track down the issue within my time constraints and ended up not using triton.

HarHarLinks avatar Jul 21 '22 12:07 HarHarLinks

Closing issue due to lack of activity. Please re-open the issue if you would like to follow up with this issue

jbkyang-nvi avatar Nov 22 '22 03:11 jbkyang-nvi

install RapidJSON https://blog.csdn.net/lj19940110/article/details/101012837

mmchen88 avatar Jul 21 '23 03:07 mmchen88

sudo apt install rapidjson-dev

Works for me (ubuntu 22.04)

david-waterworth avatar Aug 18 '23 05:08 david-waterworth

tritonserver_buildbase might be a good env to build client.

yeahdongcn avatar Aug 18 '23 07:08 yeahdongcn

Does that have cmake in it? I tried sagemaker-tritonserver:23.<XY>-py3-sdk and it didn't. But I'm using Ubuntu 22.04 so once I managed to follow the instructions properly it worked fine without docker

david-waterworth avatar Aug 18 '23 07:08 david-waterworth

Does that have cmake in it? I tried sagemaker-tritonserver:23.<XY>-py3-sdk and it didn't. But I'm using Ubuntu 22.04 so once I managed to follow the instructions properly it worked fine without docker

Yes, tritonserver_buildbase is built along with the tritonserver image.

❯ docker run -it -v $PWD:/ws tritonserver_buildbase bash
root@7572e3b554f9:/workspace# cmake --version
cmake version 3.27.3

CMake suite maintained and supported by Kitware (kitware.com/cmake).

yeahdongcn avatar Aug 18 '23 07:08 yeahdongcn

Same issue, but with building the server from source for a CPU-only container-less build. It's rather strange that tritonserver fetches and compiles a dozen of 3rd party libraries, but doesn't do the same for rapidjson

vadimkantorov avatar Sep 20 '23 15:09 vadimkantorov