[jira] [Commented] (MESOS-5656) Incomplete modelling of 3rdparty dependencies in cmake build
[ https://issues.apache.org/jira/browse/MESOS-5656?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16123810#comment-16123810 ] Andrew Schwartzmeyer commented on MESOS-5656: - I have this working in my current set of CMake patches. > Incomplete modelling of 3rdparty dependencies in cmake build > > > Key: MESOS-5656 > URL: https://issues.apache.org/jira/browse/MESOS-5656 > Project: Mesos > Issue Type: Bug > Components: cmake >Affects Versions: 1.0.0 >Reporter: Benjamin Bannier >Assignee: Andrew Schwartzmeyer > Labels: mesosphere > > The cmake build incompletely models dependencies on 3rdparty components. This > leads to incomplete and unusable build files generated for e.g., ninja. > When generating a build file for ninja the build fails to start > {code} > % ninja > ninja: error: > '3rdparty/zookeeper-3.4.8/src/zookeeper-3.4.8/src/c/lib/libzookeeper_mt.a', > needed by 'src/slave/mesos-agent', missing and no known rule to make it > {code} > An identical problem exists with leveldb (apparent after working around the > zookeeper dep issue) > {code} > % ninja > ninja: error: '3rdparty/leveldb-1.4/src/leveldb-1.4/libleveldb.a', needed by > 'src/slave/mesos-agent', missing and no known rule to make it > {code} > The problem here is that a number of targets depend on library files produced > implicitly via some {{ExternalProject}} library (via {{AGENT_LIBS}}), but we > fail to declare rules for these targets (I could imagine: via e.g., > {{add_library}} with {{IMPORTED}}). This appears to be no problem for build > files generate for {{make}} as it doesn't require rules for all dependency > nodes. > It appears that one should be able to use {{ExternalProject_Add}}'s > {{BUILD_BYPRODUCTS}}, e.g., > {code} > ExternalProject_Add( >${ZOOKEEPER_TARGET} >BUILD_BYPRODUCTS ${ZOOKEEPER_LIB}/lib/libzookeeper_mt.a >PREFIX${ZOOKEEPER_CMAKE_ROOT} >PATCH_COMMAND ${ZOOKEEPER_PATCH_CMD} >CONFIGURE_COMMAND ${ZOOKEEPER_CONFIG_CMD} >... > {code} > to declare rules for these files, but this was only added in cmake-3.2 while > we at least formally require only cmake-2.8, > {code} > cmake_minimum_required(VERSION 2.8) > {code} > {{git bisect}} points to the recent > {{6e199cc255cbf561fac575568b0594ac2b2c14f9}} for surfacing this. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (MESOS-5656) Incomplete modelling of 3rdparty dependencies in cmake build
[ https://issues.apache.org/jira/browse/MESOS-5656?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15621717#comment-15621717 ] Benjamin Bannier commented on MESOS-5656: - Unassigning myself as there is no clear way forward. > Incomplete modelling of 3rdparty dependencies in cmake build > > > Key: MESOS-5656 > URL: https://issues.apache.org/jira/browse/MESOS-5656 > Project: Mesos > Issue Type: Bug > Components: build, cmake >Affects Versions: 1.0.0 >Reporter: Benjamin Bannier >Assignee: Benjamin Bannier > Labels: mesosphere > > The cmake build incompletely models dependencies on 3rdparty components. This > leads to incomplete and unusable build files generated for e.g., ninja. > When generating a build file for ninja the build fails to start > {code} > % ninja > ninja: error: > '3rdparty/zookeeper-3.4.8/src/zookeeper-3.4.8/src/c/lib/libzookeeper_mt.a', > needed by 'src/slave/mesos-agent', missing and no known rule to make it > {code} > An identical problem exists with leveldb (apparent after working around the > zookeeper dep issue) > {code} > % ninja > ninja: error: '3rdparty/leveldb-1.4/src/leveldb-1.4/libleveldb.a', needed by > 'src/slave/mesos-agent', missing and no known rule to make it > {code} > The problem here is that a number of targets depend on library files produced > implicitly via some {{ExternalProject}} library (via {{AGENT_LIBS}}), but we > fail to declare rules for these targets (I could imagine: via e.g., > {{add_library}} with {{IMPORTED}}). This appears to be no problem for build > files generate for {{make}} as it doesn't require rules for all dependency > nodes. > It appears that one should be able to use {{ExternalProject_Add}}'s > {{BUILD_BYPRODUCTS}}, e.g., > {code} > ExternalProject_Add( >${ZOOKEEPER_TARGET} >BUILD_BYPRODUCTS ${ZOOKEEPER_LIB}/lib/libzookeeper_mt.a >PREFIX${ZOOKEEPER_CMAKE_ROOT} >PATCH_COMMAND ${ZOOKEEPER_PATCH_CMD} >CONFIGURE_COMMAND ${ZOOKEEPER_CONFIG_CMD} >... > {code} > to declare rules for these files, but this was only added in cmake-3.2 while > we at least formally require only cmake-2.8, > {code} > cmake_minimum_required(VERSION 2.8) > {code} > {{git bisect}} points to the recent > {{6e199cc255cbf561fac575568b0594ac2b2c14f9}} for surfacing this. -- This message was sent by Atlassian JIRA (v6.3.4#6332)