On 07/10/2017 20:13, David Faure wrote:
On samedi 26 août 2017 18:00:23 CEST Dave Plater wrote:
Hi, Rosegarden fails to build, at least on first attempt, with
cmake-3.9.0 which has just hit openSUSE:Factory:
/usr/bin/cmake -H/data/packages/BUILD/rosegarden-17.04
-B/data/packages/BUILD/rosegarden-17.04/build --check-build-system
CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start
/data/packages/BUILD/rosegarden-17.04/build/CMakeFiles
/data/packages/BUILD/rosegarden-17.04/build/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/data/packages/BUILD/rosegarden-17.04/build'
make -f src/CMakeFiles/rosegardenprivate_autogen.dir/build.make
src/CMakeFiles/rosegardenprivate_autogen.dir/depend
make[2]: Entering directory '/data/packages/BUILD/rosegarden-17.04/build'
cd /data/packages/BUILD/rosegarden-17.04/build && /usr/bin/cmake -E
cmake_depends "Unix Makefiles" /data/packages/BUILD/rosegarden-17.04
/data/packages/BUILD/rosegarden-17.04/src
/data/packages/BUILD/rosegarden-17.04/build
/data/packages/BUILD/rosegarden-17.04/build/src
/data/packages/BUILD/rosegarden-17.04/build/src/CMakeFiles/rosegardenprivate
_autogen.dir/DependInfo.cmake Scanning dependencies of target
rosegardenprivate_autogen
make[2]: Leaving directory '/data/packages/BUILD/rosegarden-17.04/build'
make -f src/CMakeFiles/rosegardenprivate_autogen.dir/build.make
src/CMakeFiles/rosegardenprivate_autogen.dir/build
make[2]: Entering directory '/data/packages/BUILD/rosegarden-17.04/build'
make[2]: *** No rule to make target 'src/svnversion.h', needed by
'src/CMakeFiles/rosegardenprivate_autogen'.  Stop.
make[2]: Leaving directory '/data/packages/BUILD/rosegarden-17.04/build'
CMakeFiles/Makefile2:1135: recipe for target
'src/CMakeFiles/rosegardenprivate_autogen.dir/all' failed
make[1]: *** [src/CMakeFiles/rosegardenprivate_autogen.dir/all] Error 2
make[1]: Leaving directory '/data/packages/BUILD/rosegarden-17.04/build'
Makefile:143: recipe for target 'all' failed
make: *** [all] Error 2

If you use make -j2 or greater then src/svnversion.h is built but it
still fails on first attempt and then the next make succeeds.
I've dug around but I can't see what's missing. The only extra files
after a make -j2 are src/svnversion.h and src/svnversion.h.txt.
I've worked around this with "make -j4 || make -j4"
Thanks for any help.
Dave Plater

I'm using cmake version 3.10.0-rc1
and make -j8, and I don't hit this issue (even on a clean build).
Maybe the cmake regression was fixed in later versions?

Likely it was fixed, I did file a cmake bug but it doesn't actually say if it was fixed or not. Cmake bug:
https://gitlab.kitware.com/cmake/cmake/issues/17222
And this patch:
cat svnheader.patch
Description: fix svnversion.h dependency to permit parallel building
With CMake 3.9.1 and parallel building enabled, the incorrect specification of the output filename when creating svnversion.h can lead to a race condition
 such that the package fails to build.
Author: Stuart Prescott <stu...@debian.org>
Bug: https://sourceforge.net/p/rosegarden/bugs/1552/
Bug-Debian: https://bugs.debian.org/871213
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -810,7 +810,7 @@
add_custom_target(svnheader ALL DEPENDS svn_header) # svn_header never gets created, it's just a unique string

 # creates svnheader.h using cmake script
-add_custom_command(OUTPUT svn_header ${CMAKE_CURRENT_BINARY_DIR}/svnheader.h +add_custom_command(OUTPUT svn_header ${CMAKE_CURRENT_BINARY_DIR}/svnversion.h
     COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}
                          -P ${CMAKE_CURRENT_SOURCE_DIR}/buildkey.cmake)
 Regards
Dave

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Rosegarden-devel mailing list
Rosegarden-devel@lists.sourceforge.net - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-devel

Reply via email to