cmake-native: Depend on ncurses-native too
PATCH 1/1 cmake-native: Depend on ncurses-native too
cmake detects the presence of curses automatically during configure so cmake-native must also depend on ncurses-native to stop it being removed from the sysroot during the build.
--- meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb +1 -1
@@ -2,7 +2,7 @@ require cmake.inc inherit native # Using cmake's internal libarchive, so some dependencies are needed -DEPENDS += "bzip2-native zlib-native" +DEPENDS += "bzip2-native zlib-native ncurses-native" SRC_URI += "file://cmlibarchive-disable-ext2fs.patch"
Signature · 1 line
1.8.5.3
Quoted 14 lines · Mike Crowe
cmake detects the presence of curses automatically during configure so cmake-native must also depend on ncurses-native to stop it being removed from the sysroot during the build.
Signed-off-by Mike Crowe <[email protected]>--- meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb +0
-0
meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb require cmake.inc · line 8
Quoted 8 lines
meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb +1
-1@@ -2,7 +2,7 @@ require cmake.inc inherit native # Using cmake's internal libarchive, so some dependencies are needed -DEPENDS += "bzip2-native zlib-native" +DEPENDS += "bzip2-native zlib-native ncurses-native" SRC_URI += "file://cmlibarchive-disable-ext2fs.patch"
What does an ncurses enabled cmake give us that is desirable?
Cheers,
Richard
Quoted 17 lines · Richard Purdie
Quoted 16 lines · Mike Crowe
cmake detects the presence of curses automatically during configure so cmake-native must also depend on ncurses-native to stop it being removed from the sysroot during the build.
Signed-off-by Mike Crowe <[email protected]>--- meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb +0
-0@@ -2,7 +2,7 @@ require cmake.inc inherit native
Quoted 8 lines
meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb require cmake.inc · line 8
Quoted 6 lines
meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb +1
-1# Using cmake's internal libarchive, so some dependencies are needed -DEPENDS += "bzip2-native zlib-native" +DEPENDS += "bzip2-native zlib-native ncurses-native" SRC_URI += "file://cmlibarchive-disable-ext2fs.patch"What does an ncurses enabled cmake give us that is desirable?
I'm not really sure.
CMake's bootstrap configure script detects curses and tries to use it which causes build failures if curses has gone missing in the meantime.
In the failure I saw bitbake was building cmake-native and ncurses-native in parallel in a tree that had previously been used to build for a different machine. This caused curses.h to be present during cmake-native.do_configure but go missing before or during cmake-native.do_compile.
It seems to be possible to disable building the "CursesDialog" component to remove the need for ncurses but I couldn't immediately see how to do that for a bootstrap build.
The non-native cmake recipe depends on ncurses even though it passes -DBUILD_CursesDialog=0.
Thanks.
Mike.
Quoted 38 lines · Mike Crowe
Quoted 17 lines · Richard Purdie
Quoted 16 lines · Mike Crowe
cmake detects the presence of curses automatically during configure so cmake-native must also depend on ncurses-native to stop it being removed from the sysroot during the build.
Signed-off-by Mike Crowe <[email protected]>--- meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb +0
-0@@ -2,7 +2,7 @@ require cmake.inc inherit nativeQuoted 8 lines
meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb require cmake.inc · line 8
Quoted 6 lines
meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb +1
-1# Using cmake's internal libarchive, so some dependencies are needed -DEPENDS += "bzip2-native zlib-native" +DEPENDS += "bzip2-native zlib-native ncurses-native" SRC_URI += "file://cmlibarchive-disable-ext2fs.patch"What does an ncurses enabled cmake give us that is desirable?
I'm not really sure.
CMake's bootstrap configure script detects curses and tries to use it which causes build failures if curses has gone missing in the meantime.
In the failure I saw bitbake was building cmake-native and ncurses-native in parallel in a tree that had previously been used to build for a different machine. This caused
curses.hto be present during cmake-native.do_configure but go missing before or during cmake-native.do_compile.
Quoted 6 lines
It seems to be possible to disable building the "CursesDialog" component to remove the need for ncurses but I couldn't immediately see how to do that for a bootstrap build.
The non-native cmake recipe depends on ncurses even though it passes -DBUILD_CursesDialog=0.
I'd much prefer to disable the need for curses if we can since the more convoluted the dependency chain, the longer our build times. If we don't need this, it would be much nicer to disable it, even if we have to patch it out.
Cheers,
Richard
Quoted 6 lines · Mike Crowe
It seems to be possible to disable building the "CursesDialog" component to remove the need for ncurses but I couldn't immediately see how to do that for a bootstrap build.
The non-native cmake recipe depends on ncurses even though it passes -DBUILD_CursesDialog=0.
you need to disable it completely in CMakefile.txt, just that define does not suffice you might try something like
http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-util/cmake/files/cmake-2.8.10-libform.patch?diff_format=f&view=markup
Quoted 11 lines · Khem Raj
Quoted 6 lines · Mike Crowe
It seems to be possible to disable building the "CursesDialog" component to remove the need for ncurses but I couldn't immediately see how to do that for a bootstrap build.
The non-native cmake recipe depends on ncurses even though it passes -DBUILD_CursesDialog=0.
you need to disable it completely in CMakefile.txt, just that define does not suffice you might try something like
http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-util/cmake/files/cmake-2.8.10-libform.patch?diff_format=f&view=markup
As far as I can tell (by poisoning curses.h in the sysroot) the non-native cmake build does successfully avoid using curses by specifying -DBUILD_CursesDialog=0. I have successfully tested removing the ncurses dependency from the recipe too.
The cmake-native bootstrap procedure means that it is not possible to get that parameter through to the ultimate cmake native build. So I came up with this patch:
bootstrap renamed from bootstrap~ +1 -0
@@ -1578,6 +1578,7 @@ export MAKE # Run bootstrap CMake to configure real CMake cmake_options="-DCMAKE_BOOTSTRAP=1" +cmake_options="${cmake_options} -DBUILD_CursesDialog=0" if [ -n "${cmake_verbose}" ]; then cmake_options="${cmake_options} -DCMAKE_VERBOSE_MAKEFILE=1" fi
If I apply this for cmake-native then it also doesn't require curses (tested with the same poisoning.)
The Gentoo patch may be somewhat safer in the long term because it does a better job of ensuring that the curses dependency can't come back with newer cmake versions; it is more likely that the patch would not apply or the link would fail.
Do you prefer the one line patch above or the Gentoo one?
Thanks.
Mike.
-Khem
Quoted 50 lines · Mike Crowe
Quoted 2 lines · Khem Raj
Quoted 1 line · Mike Crowe
It seems to be possible to disable building the "CursesDialog"
component to
Quoted 1 line
Quoted 1 line
remove the need for ncurses but I couldn't immediately see how to do
that
Quoted 8 lines
Quoted 4 lines
for a bootstrap build.
The non-native cmake recipe depends on ncurses even though it passes -DBUILD_CursesDialog=0.
you need to disable it completely in CMakefile.txt, just that define does not suffice you might try something like
As far as I can tell (by poisoning
curses.hin the sysroot) the non-native cmake build does successfully avoid using curses by specifying -DBUILD_CursesDialog=0. I have successfully tested removing the ncurses dependency from the recipe too.The cmake-native bootstrap procedure means that it is not possible to get that parameter through to the ultimate cmake native build. So I came up with this patch:
bootstrap 2014-04-01 21:27:23.841996822 +0100 renamed from bootstrap~ 2014-01-16 17:15:09.000000000 +0000 +1
-0@@ -1578,6 +1578,7 @@ export MAKE # Run bootstrap CMake to configure real CMake cmake_options="-DCMAKE_BOOTSTRAP=1" +cmake_options="${cmake_options} -DBUILD_CursesDialog=0" if [ -n "${cmake_verbose}" ]; then cmake_options="${cmake_options} -DCMAKE_VERBOSE_MAKEFILE=1" fiIf I apply this for cmake-native then it also doesn't require curses (tested with the same poisoning.)
The Gentoo patch may be somewhat safer in the long term because it does a better job of ensuring that the curses dependency can't come back with newer cmake versions; it is more likely that the patch would not apply or the link would fail.
Do you prefer the one line patch above or the Gentoo one?
Thanks.
Mike.
-Khem
Quoted 4 lines · Mike Crowe
Quoted 2 lines · Khem Raj
Quoted 1 line · Mike Crowe
It seems to be possible to disable building the "CursesDialog"
component to
Quoted 1 line
Quoted 1 line
Quoted 1 line
remove the need for ncurses but I couldn't immediately see how to do
that
Quoted 8 lines
Quoted 8 lines
Quoted 4 lines
for a bootstrap build.
The non-native cmake recipe depends on ncurses even though it passes -DBUILD_CursesDialog=0.
you need to disable it completely in CMakefile.txt, just that define does not suffice you might try something like
Quoted 21 lines
As far as I can tell (by poisoning
curses.hin the sysroot) the non-native cmake build does successfully avoid using curses by specifying -DBUILD_CursesDialog=0. I have successfully tested removing the ncurses dependency from the recipe too.The cmake-native bootstrap procedure means that it is not possible to get that parameter through to the ultimate cmake native build. So I came up with this patch:
bootstrap 2014-04-01 21:27:23.841996822 +0100 renamed from bootstrap~ 2014-01-16 17:15:09.000000000 +0000 +1
-0@@ -1578,6 +1578,7 @@ export MAKE # Run bootstrap CMake to configure real CMake cmake_options="-DCMAKE_BOOTSTRAP=1" +cmake_options="${cmake_options} -DBUILD_CursesDialog=0" if [ -n "${cmake_verbose}" ]; then cmake_options="${cmake_options} -DCMAKE_VERBOSE_MAKEFILE=1" fi
Quoted 3 lines
If I apply this for cmake-native then it also doesn't require curses (tested with the same poisoning.)
this seems to be ok too
Quoted 10 lines
The Gentoo patch may be somewhat safer in the long term because it does a better job of ensuring that the curses dependency can't come back with newer cmake versions; it is more likely that the patch would not apply or the link would fail.
Do you prefer the one line patch above or the Gentoo one?
Thanks.
Mike.
PATCH 1/2 cmake-native: Stop building ccmake
The bootstrapped cmake is called in such a way that it will automatically enable building ccmake if curses is found. This tool isn't particularly useful to us and it will cause build problems if ncurses-native is built in parallel with cmake-native so let's just pass -DBUILD_CursesDialog=0 to disable the feature altogether as the non-native cmake does.
Unfortunately this requires patching the bootstrap script since there appears to be no way to get this option through.
--- meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb | 5 ++++- .../cmake/cmake/disable-bootstrap-cursesdialog.patch | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-devtools/cmake/cmake/disable-bootstrap-cursesdialog.patch
meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb +4 -1
@@ -4,7 +4,10 @@ inherit native # Using cmake's internal libarchive, so some dependencies are needed DEPENDS += "bzip2-native zlib-native" -SRC_URI += "file://cmlibarchive-disable-ext2fs.patch" +SRC_URI += "\ + file://cmlibarchive-disable-ext2fs.patch \ + file://disable-bootstrap-cursesdialog.patch \ +" SRC_URI[md5sum] = "17c6513483d23590cbce6957ec6d1e66" SRC_URI[sha256sum] = "8c6574e9afabcb9fc66f463bb1f2f051958d86c85c37fccf067eb1a44a120e5e"
meta/recipes-devtools/cmake/cmake/disable-bootstrap-cursesdialog.patch new file +17 -0
@@ -0,0 +1,17 @@ +Disable building CursesDialog so that cmake-native doesn't have to +depend on ncurses-native. + +Upstream-status: Inappropriate [disable feature] + +Signed-off-by: Mike Crowe <[email protected]> + +--- cmake-2.8.12.2/bootstrap~ 2014-01-16 17:15:09.000000000 +0000 ++++ cmake-2.8.12.2/bootstrap 2014-04-01 21:27:23.841996822 +0100 +@@ -1578,6 +1578,7 @@ export MAKE + + # Run bootstrap CMake to configure real CMake + cmake_options="-DCMAKE_BOOTSTRAP=1" ++cmake_options="${cmake_options} -DBUILD_CursesDialog=0" + if [ -n "${cmake_verbose}" ]; then + cmake_options="${cmake_options} -DCMAKE_VERBOSE_MAKEFILE=1" + fi
Signature · 1 line
1.8.5.3
PATCH 2/2 cmake: Remove dependency on ncurses
Commit 2adc9a3f1f1db284f7d91193ad77b3524e0e0d2c stopped ccmake being built and that is the only part of cmake that relies on curses so we might as well stop depending on it.
(Tested with a poisoned curses.h to prove that it is unused even if present.)
--- meta/recipes-devtools/cmake/cmake_2.8.12.2.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
meta/recipes-devtools/cmake/cmake_2.8.12.2.bb +1 -1
@@ -2,7 +2,7 @@ require cmake.inc inherit cmake -DEPENDS += "curl expat zlib libarchive ncurses" +DEPENDS += "curl expat zlib libarchive" SRC_URI += "file://dont-run-cross-binaries.patch"
Signature · 1 line
1.8.5.3
cmake-native also depends on acl-native (was Re: cmake-native: Depend on ncurses-native too)
In reply to Khem RajQuoted 5 lines · Khem Raj
Quoted 4 lines · Mike Crowe
It seems to be possible to disable building the "CursesDialog" component to remove the need for ncurses but I couldn't immediately see how to do that for a bootstrap build.
Quoted 7 lines
Quoted 2 lines
The non-native cmake recipe depends on ncurses even though it passes -DBUILD_CursesDialog=0.
you need to disable it completely in CMakefile.txt, just that define does not suffice you might try something like
http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-util/cmake/files/cmake-2.8.10-libform.patch?diff_format=f&view=markup
It appears that a similar problem occurs if cmake-native is built at the same time as acl-native:
Building C object Utilities/cmcurl/CMakeFiles/cmcurl.dir/http_chunks.c.o
[ 30%] /home/jenkins/workspace/nightly-brightsign-master/MACHINE/source/label/nightly/build-bcm7425/source-release-test-build/brightsign-oe/build-bcm7425/tmp-eglibc/work/x86_64-linux/cmake-native/2.8.12.2-r0/cmake-2.8.12.2/Utilities/cmlibarchive/libarchive/archive_read_disk_entry_from_file.c:38:21:fatal error: sys/acl.h: No such file or directory compilation terminated.
cmake detects sys/acl.h but by the time the compiler tries to include it the file has been unstaged from the sysroot.
This one is harder to patch out. Do you object to me adding acl{,-native} to DEPENDS?
Thanks.
Mike.
Re: cmake-native also depends on acl-native (was Re: cmake-native: Depend on ncurses-native too)
Quoted 21 lines · Mike Crowe
Quoted 5 lines · Khem Raj
Quoted 4 lines · Mike Crowe
It seems to be possible to disable building the "CursesDialog" component to remove the need for ncurses but I couldn't immediately see how to do that for a bootstrap build.
Quoted 7 lines
Quoted 2 lines
The non-native cmake recipe depends on ncurses even though it passes -DBUILD_CursesDialog=0.
you need to disable it completely in CMakefile.txt, just that define does not suffice you might try something like
http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-util/cmake/files/cmake-2.8.10-libform.patch?diff_format=f&view=markupIt appears that a similar problem occurs if cmake-native is built at the same time as acl-native:
Building C object
Utilities/cmcurl/CMakeFiles/cmcurl.dir/http_chunks.c.o
[ 30%] /home/jenkins/workspace/nightly-brightsign-master/MACHINE/source/label/nightly/build-bcm7425/source-release-test-build/brightsign-oe/build-bcm7425/tmp-eglibc/work/x86_64-linux/cmake-native/2.8.12.2-r0/cmake-2.8.12.2/Utilities/cmlibarchive/libarchive/archive_read_disk_entry_from_file.c:38:21:fatal error:sys/acl.h: No such file or directory compilation terminated.
Quoted 5 lines
cmake detects
sys/acl.hbut by the time the compiler tries to include it the file has been unstaged from the sysroot.This one is harder to patch out. Do you object to me adding acl{,-native} to DEPENDS?
Each dependency we add like this tends to cause slightly longer builds. Each small piece mounts up. So I do feel quite strongly we disable things we can...
Cheers,
Richard
Quoted 2 lines · Richard Purdie
What does an ncurses enabled cmake give us that is desirable?
bells and whistles - curses GUI frontend :) which I would assume we don't use as much
if someone does please speak up