Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Third-party software is installed to SmartRedis install directory #344

Open
billschereriii opened this issue May 22, 2023 · 1 comment
Open
Labels
area: build Issues related to builds, makefiles, installs, etc area: C++ Issues related to the C++ client area: examples Issues related to tutorials and examples area: test Issues related to the test suite area: third-party Issues related to depencies and third-party package integrations bug: major A major bug type: usability Issues related to ease of use

Comments

@billschereriii
Copy link
Contributor

billschereriii commented May 22, 2023

Description

Third-party software is added to the SmartRedis install/lib and install/include directories. This pollutes our installation and complicates clean up make targets include clean and clobber.

How to reproduce

After building the library, inspect the resulting install folder.

Expected behavior

Third-party software should remain contained to the third-party/ folder.

Insufficient fix

An initial attempt to correct this problem consisted of:

  1. updating the third-party software installation folder for hiredis and redis++ to SR_ROOT/third-party/install
  2. Updating CMakeFiles.txt for the main SmartRedis libary to add this as an include directory

While these steps are definitely needed in any solution, they are insufficient at present because several of our source files include headers that themselves include third-party dependencies, sw/redis++.h being the most common of these. With no other changes, this would add a requirement on our C++ users that they have to include a -I $(SMARTREDIS_ROOT)/third-party/install flag to their compile and link steps that they should not have to do.

The need to add an include directory would break our users' software builds. An additional step is needed to keep this from happening:

  1. Refactor the SmartRedis library source so that third-party objects are properly separated from our main interface headers.
@billschereriii billschereriii added area: build Issues related to builds, makefiles, installs, etc area: test Issues related to the test suite area: C++ Issues related to the C++ client area: third-party Issues related to depencies and third-party package integrations area: examples Issues related to tutorials and examples bug: major A major bug type: usability Issues related to ease of use labels May 22, 2023
@billschereriii billschereriii changed the title Bug: End-user software has to include third-party/include directory to build Third-party software is installed to SmartRedis install directory May 22, 2023
@billschereriii
Copy link
Contributor Author

This will need to be done in support of Dragon as well as in support of Redis, so should not be in the IceBox. The design doc start that I generated covers how to do this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: build Issues related to builds, makefiles, installs, etc area: C++ Issues related to the C++ client area: examples Issues related to tutorials and examples area: test Issues related to the test suite area: third-party Issues related to depencies and third-party package integrations bug: major A major bug type: usability Issues related to ease of use
Projects
None yet
Development

No branches or pull requests

1 participant