cmake.bbclass: allow cmake to find hosttools
PATCH 1/1 cmake.bbclass: allow cmake to find hosttools
Currently the generated toolchain file is unable to find hosttools as they do not appear in the search paths.
One example where this is useful is for projects that query git for their version number as git is usually provided via HOSTTOOLS.
Just adding HOSTTOOLS_DIR is not enough as binaries are located directly under ${HOSTTOOLS_DIR}. Like ${HOSTTOOLS_DIR}/git for example.
CMake however only searches in [s]bin sub directories of the paths specified in CMAKE_FIND_ROOT_PATH. Explicitly adding / to CMAKE_SYSTEM_PROGRAM_PATH makes CMake look in the right location.
--- meta/classes/cmake.bbclass | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
meta/classes/cmake.bbclass +5 -1
@@ -92,7 +92,7 @@ set( CMAKE_CXX_LINK_FLAGS "${OECMAKE_CXX_LINK_FLAGS}" CACHE STRING "LDFLAGS" ) # only search in the paths provided so cmake doesnt pick # up libraries and tools from the native build machine -set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) +set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN} ${HOSTTOOLS_DIR}) set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ${OECMAKE_FIND_ROOT_PATH_MODE} ) set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ${OECMAKE_FIND_ROOT_PATH_MODE} ) set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ${OECMAKE_FIND_ROOT_PATH_MODE} )
@@ -113,6 +113,10 @@ list(APPEND CMAKE_MODULE_PATH "${STAGING_DATADIR}/cmake/Modules/") # add for non /usr/lib libdir, e.g. /usr/lib64 set( CMAKE_SYSTEM_LIBRARY_PATH ${libdir} ${base_libdir}) +# by default CMake only looks in [s]bin subdirectories of CMAKE_FIND_ROOT_PATH +# adding / makes CMake look for binaries in hosttools too. +set( CMAKE_SYSTEM_PROGRAM_PATH /) + # avoid treating imports as system includes set( CMAKE_NO_SYSTEM_FROM_IMPORTED ON)
Signature · 1 line
2.11.0
✗ patchtest: failure for cmake.bbclass: allow cmake to find hosttools
== Series Details ==
Series: cmake.bbclass: allow cmake to find hosttools
Revision: 1
URL : https://patchwork.openembedded.org/series/14429/
State : failure
== Summary ==
Thank you for submitting this patch series to OpenEmbedded Core. This is an automated response. Several tests have been executed on the proposed series by patchtest resulting in the following failures:
* Issue Series does not apply on top of target branch [test_series_merge_on_head]
Suggested fix Rebase your series on top of targeted branch
Targeted branch master (currently at 9a84114a27)
If you believe any of these test results are incorrect, please reply to the mailing list ([email protected]) raising your concerns. Otherwise we would appreciate you correcting the issues and submitting a new version of the patchset if applicable. Please ensure you add/increment the version number when sending the new version (i.e. [PATCH] -> [PATCH v2] -> [PATCH v3] -> ...).
---
Guidelines: https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines Test framework: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest Test suite: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest-oe
The hashes don't match anything public and git isn't happy:
Applying: cmake.bbclass: allow cmake to find hosttools
error: sha1 information is lacking or useless (meta/classes/cmake.bbclass).
error: could not build fake ancestor
Patch failed at 0001 cmake.bbclass: allow cmake to find hosttools
Ross
Quoted 61 lines · Pascal Bach
Currently the generated toolchain file is unable to find hosttools as they do not appear in the search paths.
One example where this is useful is for projects that query git for their version
number as git is usually provided via HOSTTOOLS.Just adding
HOSTTOOLS_DIRis not enough as binaries are located directly under
${HOSTTOOLS_DIR}. Like ${HOSTTOOLS_DIR}/git for example. CMake however only searches in [s]bin sub directories of the paths specified inCMAKE_FIND_ROOT_PATH. Explicitly adding / toCMAKE_SYSTEM_PROGRAM_PATHmakes
CMake look in the right location.Signed-off-by Pascal Bach <[email protected]>--- meta/classes/cmake.bbclass | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)meta/classes/cmake.bbclass +1
-1@@ -92,7 +92,7 @@ set( CMAKE_CXX_LINK_FLAGS "${OECMAKE_CXX_LINK_FLAGS}" CACHE STRING "LDFLAGS" ) # only search in the paths provided so cmake doesnt pick # up libraries and tools from the native build machine -set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) +set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE}${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN} ${HOSTTOOLS_DIR})
set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ${OECMAKE_FIND_ROOT_PATH_MODE} )set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ${OECMAKE_FIND_ROOT_PATH_MODE} )set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ${OECMAKE_FIND_ROOT_PATH_MODE} )meta/classes/cmake.bbclass +1
-0@@ -113,6 +113,10 @@ list(APPEND CMAKE_MODULE_PATH "${STAGING_DATADIR}/cmake/Modules/") # add for non /usr/lib libdir, e.g. /usr/lib64 set( CMAKE_SYSTEM_LIBRARY_PATH ${libdir} ${base_libdir}) +# by default CMake only looks in [s]bin subdirectories of
CMAKE_FIND_ROOT_PATHmeta/classes/cmake.bbclass +3
-1+# adding / makes CMake look for binaries in hosttools too. +set( CMAKE_SYSTEM_PROGRAM_PATH /) + # avoid treating imports as system includes set( CMAKE_NO_SYSTEM_FROM_IMPORTED ON) --2.11.0
--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Quoted 6 lines · Ross
The hashes don't match anything public and git isn't happy:
Applying: cmake.bbclass: allow cmake to find hosttools
error: sha1 information is lacking or useless (meta/classes/cmake.bbclass).
error: could not build fake ancestor
Patch failed at 0001 cmake.bbclass: allow cmake to find hosttools
I noticed too, the patch was based on another patch I sent. Should have sent these as a patch set even tough they are not really related.
I will resubmit.
Pascal
Quoted 55 lines
Ross
On Tue, 9 Oct 2018 at 14:36, Pascal Bach <[email protected] <mailto:[email protected]>> wrote:
Currently the generated toolchain file is unable to find hosttools as they do not appear in the search paths.
One example where this is useful is for projects that query git for their version number as git is usually provided via HOSTTOOLS.
Just adding
HOSTTOOLS_DIRis not enough as binaries are located directly under ${HOSTTOOLS_DIR}. Like ${HOSTTOOLS_DIR}/git for example.
CMake however only searches in [s]bin sub directories of the paths specified inCMAKE_FIND_ROOT_PATH. Explicitly adding / toCMAKE_SYSTEM_PROGRAM_PATHmakes CMake look in the right location.Signed-off-by Pascal Bach <[email protected] <mailto:[email protected]>>---
meta/classes/cmake.bbclass | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass
index684f71299a..421d85fd9d100644
--- a/meta/classes/cmake.bbclass
+++ b/meta/classes/cmake.bbclass
@@ -92,7 +92,7 @@set( CMAKE_CXX_LINK_FLAGS "${OECMAKE_CXX_LINK_FLAGS}" CACHE STRING "LDFLAGS" )# only search in the paths provided so cmake doesnt pick
# up libraries and tools from the native build machine
-set(CMAKE_FIND_ROOT_PATH${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) +set(CMAKE_FIND_ROOT_PATH${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN} ${HOSTTOOLS_DIR})set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ${OECMAKE_FIND_ROOT_PATH_MODE} )
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM${OECMAKE_FIND_ROOT_PATH_MODE} )
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY${OECMAKE_FIND_ROOT_PATH_MODE} )
@@ -113,6 +113,10 @@list(APPEND CMAKE_MODULE_PATH "${STAGING_DATADIR}/cmake/Modules/")
# add for non/usr/liblibdir, e.g./usr/lib64
set(CMAKE_SYSTEM_LIBRARY_PATH${libdir} ${base_libdir})+# by default CMake only looks in [s]bin subdirectories of
CMAKE_FIND_ROOT_PATH+# adding / makes CMake look for binaries in hosttools too.
+set(CMAKE_SYSTEM_PROGRAM_PATH/)
+
# avoid treating imports as system includes
set(CMAKE_NO_SYSTEM_FROM_IMPORTEDON)--
2.11.0--
_______________________________________________
Openembedded-core mailing list
[email protected] <mailto:[email protected]>
http://lists.openembedded.org/mailman/listinfo/openembedded-core