You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It's possible that the installation LIBDIR to be in a different directory from INCLUDEDIR.
Currently, the AWSSDK logic assumes that it can traverse up then over to the lib directory.
Expected Behavior
Since a package manager installed aws-sdk-cpp, aws-sdk-cpp should re-use the install(TARGETS information to conclude where to find a package (or at least prefer this method) with find_package(). This should also work with export(TARGETS as well.
Current Behavior
At least for nix, the current behavior is that the find_package(AWSSDK COMPONENTS [components]) ... AWSSDK_LINK_LIBRARIES workflow is largely useless.
Reproduction Steps
This would probably not be worthwhile.
Possible Solution
Use find_package(aws-sdk-core) + get_target_property(AWS_CORE_HEADER_DIR aws-sdk-core INCLUDE_DIRECTORIES)
Takes into account different installation locations (e.g. /usr/local/ vs /usr/ vs build dir)
Additional Information/Context
Nixpkgs for aws-sdk-cpp installs build dependencies separately from runtime
$ nix-build <nixpkgs> -A aws-sdk-cpp.all
/nix/store/8acky9zc3kldyz0m6728ff4vf24sg3rb-aws-sdk-cpp-1.9.238
/nix/store/34qdbh5bn2wdsm76m9gxqvyfxix65p0j-aws-sdk-cpp-1.9.238-dev
$ ls /nix/store/34qdbh5bn2wdsm76m9gxqvyfxix65p0j-aws-sdk-cpp-1.9.238-dev/include/aws/core/Aws.h
/nix/store/34qdbh5bn2wdsm76m9gxqvyfxix65p0j-aws-sdk-cpp-1.9.238-dev/include/aws/core/Aws.h
$ ls /nix/store/8acky9zc3kldyz0m6728ff4vf24sg3rb-aws-sdk-cpp-1.9.238/lib/libaws-cpp-sdk-core.so
/nix/store/8acky9zc3kldyz0m6728ff4vf24sg3rb-aws-sdk-cpp-1.9.238/lib/libaws-cpp-sdk-core.so
Traversing from the -dev output will set AWS_SDK_ROOT_DIR to something which will not contain the respective library, which breaks the AWSSDK logic.
In practice, this isn't too much of an issue as find_package(<pkg>) will find the corresponding <pkg>-targets.cmake, which will correctly reflect the passed CMAKE_INSTALL_LIBDIR and CMAKE_INSTALL_INCLUDEDIR values for the build. But it does mean that the QoL features of AWSSDK are largely unusable on packaging tools which don't assume FHS (or similar unification of dependencies).
AWS CPP SDK version used
1.9.238
Compiler and Version used
gcc 11
Operating System and version
NixOS 22.11pre393074.614a842b74b (unstable)
The text was updated successfully, but these errors were encountered:
This relates to #1888, although likely out-of-scope; as it looks like there is lower hanging fruit which would impact people more outside of this "niche" use case.
jmklix
added
needs-review
This issue or pull request needs review from a core team member.
p3
This is a minor priority issue
and removed
needs-triage
This issue or PR still needs to be triaged.
labels
Nov 4, 2022
Describe the bug
It's possible that the installation LIBDIR to be in a different directory from INCLUDEDIR.
Currently, the AWSSDK logic assumes that it can traverse up then over to the lib directory.
Expected Behavior
Since a package manager installed aws-sdk-cpp, aws-sdk-cpp should re-use the
install(TARGETS
information to conclude where to find a package (or at least prefer this method) withfind_package()
. This should also work withexport(TARGETS
as well.Current Behavior
At least for nix, the current behavior is that the
find_package(AWSSDK COMPONENTS [components]) ... AWSSDK_LINK_LIBRARIES
workflow is largely useless.Reproduction Steps
This would probably not be worthwhile.
Possible Solution
find_package(aws-sdk-core)
+get_target_property(AWS_CORE_HEADER_DIR aws-sdk-core INCLUDE_DIRECTORIES)
Additional Information/Context
Nixpkgs for aws-sdk-cpp installs build dependencies separately from runtime
Traversing from the
-dev
output will set AWS_SDK_ROOT_DIR to something which will not contain the respective library, which breaks the AWSSDK logic.In practice, this isn't too much of an issue as
find_package(<pkg>)
will find the corresponding<pkg>-targets.cmake
, which will correctly reflect the passedCMAKE_INSTALL_LIBDIR
andCMAKE_INSTALL_INCLUDEDIR
values for the build. But it does mean that the QoL features of AWSSDK are largely unusable on packaging tools which don't assume FHS (or similar unification of dependencies).AWS CPP SDK version used
1.9.238
Compiler and Version used
gcc 11
Operating System and version
NixOS 22.11pre393074.614a842b74b (unstable)
The text was updated successfully, but these errors were encountered: