You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by pn...@apache.org on 2017/12/11 19:39:52 UTC
celix git commit: CELIX-401: Creating docker dirs is now also based
on a primairy exe target (as with celix container/deploy)
Repository: celix
Updated Branches:
refs/heads/develop edefb3f4d -> 49e25fad3
CELIX-401: Creating docker dirs is now also based on a primairy exe target (as with celix container/deploy)
Project: http://git-wip-us.apache.org/repos/asf/celix/repo
Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/49e25fad
Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/49e25fad
Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/49e25fad
Branch: refs/heads/develop
Commit: 49e25fad35f9c129e251c5bef2fd8bb0e3411101
Parents: edefb3f
Author: Pepijn Noltes <pe...@gmail.com>
Authored: Mon Dec 11 20:39:41 2017 +0100
Committer: Pepijn Noltes <pe...@gmail.com>
Committed: Mon Dec 11 20:39:41 2017 +0100
----------------------------------------------------------------------
cmake/cmake_celix/BundlePackaging.cmake | 4 +-
cmake/cmake_celix/DeployPackaging.cmake | 35 ++---
cmake/cmake_celix/DockerPackaging.cmake | 196 ++++++++++++---------------
examples/dm_example/CMakeLists.txt | 42 +++---
4 files changed, 126 insertions(+), 151 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/celix/blob/49e25fad/cmake/cmake_celix/BundlePackaging.cmake
----------------------------------------------------------------------
diff --git a/cmake/cmake_celix/BundlePackaging.cmake b/cmake/cmake_celix/BundlePackaging.cmake
index 7eb42fa..992e88e 100644
--- a/cmake/cmake_celix/BundlePackaging.cmake
+++ b/cmake/cmake_celix/BundlePackaging.cmake
@@ -123,7 +123,8 @@ function(add_bundle)
if (NOT BUNDLE_SYMBOLIC_NAME)
set(BUNDLE_SYMBOLIC_NAME ${BUNDLE_TARGET_NAME})
endif()
- set(BUNDLE_FILE "${CMAKE_CURRENT_BINARY_DIR}/${BUNDLE_TARGET_NAME}.zip")
+ set(BUNDLE_FILE_NAME "${BUNDLE_TARGET_NAME}.zip")
+ set(BUNDLE_FILE "${CMAKE_CURRENT_BINARY_DIR}/${BUNDLE_FILE_NAME}")
set(BUNDLE_CONTENT_DIR "${CMAKE_CURRENT_BINARY_DIR}/${BUNDLE_TARGET_NAME}_content")
set(BUNDLE_GEN_DIR "${CMAKE_CURRENT_BINARY_DIR}/${BUNDLE_TARGET_NAME}_gen")
@@ -206,6 +207,7 @@ function(add_bundle)
#bundle specific
set_target_properties(${BUNDLE_TARGET_NAME} PROPERTIES "BUNDLE_CONTENT_DIR" ${BUNDLE_CONTENT_DIR}) #location where the content to be jar/zipped.
set_target_properties(${BUNDLE_TARGET_NAME} PROPERTIES "BUNDLE_FILE" ${BUNDLE_FILE}) #target bundle file (.zip)
+ set_target_properties(${BUNDLE_TARGET_NAME} PROPERTIES "BUNDLE_FILE_NAME" ${BUNDLE_FILE_NAME}) #target bundle file (.zip)
#name and version
set_target_properties(${BUNDLE_TARGET_NAME} PROPERTIES "BUNDLE_NAME" ${BUNDLE_NAME}) #The bundle name default target name
http://git-wip-us.apache.org/repos/asf/celix/blob/49e25fad/cmake/cmake_celix/DeployPackaging.cmake
----------------------------------------------------------------------
diff --git a/cmake/cmake_celix/DeployPackaging.cmake b/cmake/cmake_celix/DeployPackaging.cmake
index 781dacb..91200d8 100644
--- a/cmake/cmake_celix/DeployPackaging.cmake
+++ b/cmake/cmake_celix/DeployPackaging.cmake
@@ -68,7 +68,7 @@ function(add_celix_container)
set(CONTAINER_ECLIPSE_LAUNCHER "${CONTAINER_LOC}/${CONTAINER_NAME}.launch")
if (CONTAINER_LAUNCHER_SRC)
- get_filename_component(SRC_FILENAME ${LAUNCHER_SRC} NAME)
+ get_filename_component(SRC_FILENAME ${CONTAINER_LAUNCHER_SRC} NAME)
set(LAUNCHER_SRC "${PROJECT_BINARY_DIR}/celix/gen/${CONTAINER_TARGET}-${SRC_FILENAME}")
set(LAUNCHER_ORG "${CONTAINER_LAUNCHER_SRC}")
elseif (CONTAINER_CXX)
@@ -88,15 +88,11 @@ function(add_celix_container)
endif()
add_custom_target(${CONTAINER_TARGET}
COMMAND ${CMAKE_COMMAND} -E create_symlink ${LAUNCHER} ${CONTAINER_LOC}/${CONTAINER_TARGET}
- DEPENDS "$<TARGET_PROPERTY:${CONTAINER_TARGET},CONTAINER_TARGET_DEPS>"
- COMMENT "Deploying ${CONTAINER_PRINT_NAME} Celix container" VERBATIM
)
else ()
add_custom_command(OUTPUT ${LAUNCHER_SRC}
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/celix/gen
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LAUNCHER_ORG} ${LAUNCHER_SRC}
- DEPENDS "$<TARGET_PROPERTY:${CONTAINER_TARGET},CONTAINER_TARGET_DEPS>"
- COMMENT "Deploying ${CONTAINER_PRINT_NAME} Celix container" VERBATIM
)
include_directories(${CELIX_INCLUDE_DIRS})
@@ -133,6 +129,12 @@ $<JOIN:$<TARGET_PROPERTY:${CONTAINER_TARGET},CONTAINER_PROPERTIES>,
get_filename_component(CELIX_BIN_DIR ${CELIX_LAUNCHER} DIRECTORY)
endif()
+ if (CONTAINER_COPY)
+ add_custom_target(${CONTAINER_TARGET}-deps
+ DEPENDS $<TARGET_PROPERTY:${CONTAINER_TARGET},CONTAINER_DEPS>
+ )
+ add_dependencies(${CONTAINER_TARGET} ${CONTAINER_TARGET}-deps)
+ endif ()
#generate release.sh and optional run.sh
if(APPLE)
@@ -165,9 +167,9 @@ $<JOIN:$<TARGET_PROPERTY:${CONTAINER_TARGET},CONTAINER_PROPERTIES>,
##### Container Target Properties #####
#internal use
- set_target_properties(${CONTAINER_TARGET} PROPERTIES "CONTAINER_TARGET_DEPS" "") #target deps for the container.
set_target_properties(${CONTAINER_TARGET} PROPERTIES "CONTAINER_BUNDLES" "") #bundles to deploy fro the container.
set_target_properties(${CONTAINER_TARGET} PROPERTIES "CONTAINER_COPY_BUNDLES" ${CONTAINER_COPY}) #copy bundles in bundle dir or link using abs paths. NOTE this cannot be changed after a add_deploy command
+ set_target_properties(${CONTAINER_TARGET} PROPERTIES "CONTAINER_DEPS" "") #target deps for copy of bundles
#deploy specific
set_target_properties(${CONTAINER_TARGET} PROPERTIES "CONTAINER_NAME" "${CONTAINER_NAME}")
@@ -206,7 +208,7 @@ function(celix_container_bundles_dir)
endif()
get_target_property(CONTAINER_LOC ${CONTAINER_TARGET} "CONTAINER_LOC")
- get_target_property(DEPS ${CONTAINER_TARGET} "CONTAINER_TARGET_DEPS")
+ get_target_property(DEPS ${CONTAINER_TARGET} "CONTAINER_DEPS")
foreach(BUNDLE IN ITEMS ${BD_BUNDLES})
if (IS_ABSOLUTE ${BUNDLE} AND EXISTS ${BUNDLE})
@@ -214,24 +216,22 @@ function(celix_container_bundles_dir)
set(OUT "${CONTAINER_LOC}/${BD_DIR_NAME}/${BUNDLE_FILENAME}")
add_custom_command(OUTPUT ${OUT}
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${BUNDLE} ${OUT}
- COMMENT "Copying bundle '${BUNDLE}' to '${CONTAINER_LOC}/${BD_DIR_NAME}'"
+ COMMENT "Copying bundle '${BUNDLE}' to '${CONTAINER_LOC}/${BD_DIR_NAME}'"
DEPENDS ${BUNDLE}
)
else()
- set(OUT "${CONTAINER_LOC}/${BD_DIR_NAME}/${BUNDLE}.zip")
+ #assuming target
+ get_target_property(BFN ${BUNDLE} BUNDLE_FILE_NAME) #would prefer to used target generator, but this is not supporte in a OUTPUT argument
+ set(OUT "${CONTAINER_LOC}/${BD_DIR_NAME}/${BFN}")
add_custom_command(OUTPUT ${OUT}
COMMAND ${CMAKE_COMMAND} -E copy_if_different "$<TARGET_PROPERTY:${BUNDLE},BUNDLE_FILE>" ${OUT}
- COMMENT "Copying bundle '${BUNDLE}' to '${CONTAINER_LOC}/${BD_DIR_NAME}'"
- DEPENDS ${BUNDLE}
+ COMMENT "Copying bundle '${BFN}' to '${CONTAINER_LOC}/${BD_DIR_NAME}'"
+ DEPENDS ${BUNDLE} ${BUNDLE}_bundle
)
- add_dependencies(${CONTAINER_TARGET} ${BUNDLE}_bundle) #ensure the the deploy depends on the _bundle target, custom_command depends on add_library
-
endif()
list(APPEND DEPS "${OUT}")
-
endforeach()
-
- set_target_properties(${CONTAINER_TARGET} PROPERTIES "CONTAINER_TARGET_DEPS" "${DEPS}")
+ set_target_properties(${CONTAINER_TARGET} PROPERTIES "CONTAINER_DEPS" "${DEPS}")
endfunction()
function(deploy_bundles)
@@ -252,7 +252,8 @@ function(celix_container_bundles)
get_filename_component(BUNDLE_FILENAME ${BUNDLE} NAME)
list(APPEND BUNDLES "bundles/${BUNDLE_FILENAME}")
else() #assuming target
- list(APPEND BUNDLES "bundles/${BUNDLE}.zip")
+ get_target_property(BFN ${BUNDLE} BUNDLE_FILE_NAME)
+ list(APPEND BUNDLES "bundles/${BFN}")
endif()
else()
if(IS_ABSOLUTE ${BUNDLE} AND EXISTS ${BUNDLE})
http://git-wip-us.apache.org/repos/asf/celix/blob/49e25fad/cmake/cmake_celix/DockerPackaging.cmake
----------------------------------------------------------------------
diff --git a/cmake/cmake_celix/DockerPackaging.cmake b/cmake/cmake_celix/DockerPackaging.cmake
index 7cce6dd..c792242 100644
--- a/cmake/cmake_celix/DockerPackaging.cmake
+++ b/cmake/cmake_celix/DockerPackaging.cmake
@@ -15,59 +15,27 @@
# specific language governing permissions and limitations
# under the License.
-### Setup Docker Option
-option(ENABLE_DOCKER "Enable the add_celix_docker function to create docker files")
+##### setup docker target
+add_custom_target(celix-build-docker-dirs ALL
+ DEPENDS $<TARGET_PROPERTY:celix-build-docker-dirs,DOCKER_DEPS>
+)
+set_target_properties(celix-build-docker-dirs PROPERTIES "DOCKER_DEPS" "") #initial empty deps list
-if (ENABLE_DOCKER)
- ##### setup docker target
- add_custom_target(docker ALL
- DEPENDS $<TARGET_PROPERTY:docker,DOCKER_DEPS>
- )
- add_custom_target(build-docker-images)
- set(DOCKER_USE_SUDO ON CACHE BOOL "Wether the use of sudo is needed to run docker")
- set(DOCKER_CMD "docker" CACHE STRING "Docker command to use.")
-
- set_target_properties(docker PROPERTIES "DOCKER_DEPS" "") #initial empty deps list
-
- get_directory_property(CLEANFILES ADDITIONAL_MAKE_CLEAN_FILES)
- list(APPEND CLEANFILES "${CMAKE_BINARY_DIR}/docker")
- set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CLEANFILES}")
- #####
+add_custom_target(celix-build-docker-images)
+set(DOCKER_USE_SUDO ON CACHE BOOL "Wether the use of sudo is needed to run docker")
+set(DOCKER_CMD "docker" CACHE STRING "Docker command to use.")
-
- ##### Docker Dependencies Library
- # This (dummy) dependencies library is used to link against required libraries for the docker images.
- # The create fs script will ensure that the minimal required directory / files is created and this
- # library will ensure that stdc++, m, jansson and libffi and ld-linux libaries are installed
- #
- # NOTE that this target can be used to extend the libraries added to the docker image
- file(GENERATE
- OUTPUT "${CMAKE_BINARY_DIR}/.celix_docker_depslib/docker_dummy.cc"
- CONTENT "//intentionally emtpy source file")
- add_library(celix_docker_depslib SHARED
- ${CMAKE_BINARY_DIR}/.celix_docker_depslib/docker_dummy.cc
- )
- get_directory_property(CLEANFILES ADDITIONAL_MAKE_CLEAN_FILES)
- list(APPEND CLEANFILES "${CMAKE_BINARY_DIR}/.celix_docker_depslib")
- set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CLEANFILES}")
- set_target_properties(celix_docker_depslib PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/.celix_docker_depslib")
- find_package(FFI REQUIRED)
- find_package(Jansson REQUIRED)
- target_link_libraries(celix_docker_depslib ${JANSSON_LIBRARIES} ${FFI_LIBRARIES})
- target_link_libraries(celix_docker_depslib m)
-endif ()
+get_directory_property(CLEANFILES ADDITIONAL_MAKE_CLEAN_FILES)
+list(APPEND CLEANFILES "${CMAKE_BINARY_DIR}/docker")
+set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CLEANFILES}")
+#####
function(add_celix_docker)
list(GET ARGN 0 DOCKER_TARGET)
list(REMOVE_AT ARGN 0)
- if (NOT ENABLE_DOCKER)
- message(WARNING "Docker not enable, skipping target '${DOCKER_TARGET}'")
- return()
- endif()
-
- set(OPTIONS )
- set(ONE_VAL_ARGS GROUP NAME FROM BUNDLES_DIR WORKDIR IMAGE_NAME ENTRYPOINT DEPSLIB)
+ set(OPTIONS CXX)
+ set(ONE_VAL_ARGS GROUP NAME FROM BUNDLES_DIR WORKDIR IMAGE_NAME)
set(MULTI_VAL_ARGS BUNDLES PROPERTIES INSTRUCTIONS)
cmake_parse_arguments(DOCKER "${OPTIONS}" "${ONE_VAL_ARGS}" "${MULTI_VAL_ARGS}" ${ARGN})
@@ -87,11 +55,6 @@ function(add_celix_docker)
if (NOT DOCKER_WORKDIR)
set(DOCKER_WORKDIR "/root")
endif()
- if (NOT DOCKER_ENTRYPOINT)
- set(DOCKER_ENTRYPOINT "ENTRYPOINT [\"/bin/celix\"]")
- else ()
- set(DOCKER_ENTRYPOINT "ENTRYPOINT [\"${DOCKER_ENTRYPOINT}\"]")
- endif ()
if (NOT DOCKER_GROUP)
set(DOCKER_LOC "${CMAKE_BINARY_DIR}/docker/${DOCKER_NAME}")
else()
@@ -100,46 +63,69 @@ function(add_celix_docker)
if (NOT DOCKER_BUNDLES_DIR)
set(DOCKER_BUNDLES_DIR "/bundles")
endif()
- if (NOT DOCKER_DEPSLIB)
- set(DOCKER_DEPSLIB "celix_docker_depslib")
- endif ()
#ensure the docker dir will be deleted during clean
get_directory_property(CLEANFILES ADDITIONAL_MAKE_CLEAN_FILES)
list(APPEND CLEANFILES "$<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_LOC>")
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CLEANFILES}")
- ###### Setup docker custom target timestamp
- set(TIMESTAMP_FILE "${CMAKE_CURRENT_BINARY_DIR}/${DOCKER_TARGET}-docker-timestamp")
-
- add_custom_target(${DOCKER_TARGET}
- DEPENDS ${TIMESTAMP_FILE}
- )
-
- #Setting CELIX_LIB_DIRS, CELIX_BIN_DIR and CELIX_LAUNCHER
- if (EXISTS ${CELIX_FRAMEWORK_LIBRARY})
- #CELIX_FRAMEWORK_LIBRARY set by FindCelix.cmake -> Celix Based Project
- #CELIX_LAUNCHER is set by FindCelix.cmake
+ if (DOCKER_LAUNCHER_SRC)
+ get_filename_component(SRC_FILENAME ${DOCKER_LAUNCHER_SRC} NAME)
+ set(LAUNCHER_SRC "${PROJECT_BINARY_DIR}/celix/gen/${DOCKER_TARGET}-${SRC_FILENAME}")
+ set(LAUNCHER_ORG "${DOCKER_LAUNCHER_SRC}")
+ elseif (DOCKER_CXX)
+ set(LAUNCHER_SRC "${PROJECT_BINARY_DIR}/celix/gen/${DOCKER_TARGET}-main.cc")
+ set(LAUNCHER_ORG "${CELIX_CMAKE_DIRECTORY}/cmake_celix/main.c.in")
else()
- set(CELIX_LAUNCHER "$<TARGET_FILE:celix>")
+ set(LAUNCHER_SRC "${PROJECT_BINARY_DIR}/celix/gen/${DOCKER_TARGET}-main.c")
+ set(LAUNCHER_ORG "${CELIX_CMAKE_DIRECTORY}/cmake_celix/main.c.in")
endif()
+ if (DOCKER_LAUNCHER)
+ add_custom_target(${DOCKER_TARGET})
+ if (IS_ABSOLUTE "${DOCKER_LAUNCHER}")
+ set(LAUNCHER "${DOCKER_LAUNCHER}")
+ get_filename_component(EXE_FILENAME ${DOCKER_LAUNCHER} NAME)
+ set(DOCKER_ENTRYPOINT "ENTRYPOINT [\"/bin/${EXE_FILENAME}\"]")
+ else()
+ #assuming target
+ set(LAUNCHER "$<TARGET_FILE:${DOCKER_LAUNCHER}>")
+ set(DOCKER_ENTRYPOINT "ENTRYPOINT [\"/bin/$<TARGET_FILE_NAME:${DOCKER_TARGET}>\"]")
+ endif()
+ else ()
+ add_custom_command(OUTPUT ${LAUNCHER_SRC}
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/celix/gen
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LAUNCHER_ORG} ${LAUNCHER_SRC}
+ )
+
+ add_executable(${DOCKER_TARGET} ${LAUNCHER_SRC})
+ # set_target_properties(${DOCKER_TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${DOCKER_LOC})
+ target_include_directories(${DOCKER_TARGET} PRIVATE ${CELIX_INCLUDE_DIRS})
+ target_link_libraries(${DOCKER_TARGET} PRIVATE ${CELIX_FRAMEWORK_LIBRARY} ${CELIX_UTILS_LIBRARY})
+ set(LAUNCHER "$<TARGET_FILE:${DOCKER_TARGET}>")
+ set(DOCKER_ENTRYPOINT "ENTRYPOINT [\"/bin/$<TARGET_FILE_NAME:${DOCKER_TARGET}>\"]")
+ endif ()
+
+
+ ###### Setup docker custom target timestamp
+ add_custom_target(${DOCKER_TARGET}-deps
+ DEPENDS ${FS_TIMESTAMP_FILE} $<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_DEPS>
+ )
+ add_dependencies(${DOCKER_TARGET} ${DOCKER_TARGET}-deps)
+
#setup dependencies based on timestamp
if (DOCKER_CREATE_FS)
- add_custom_command(OUTPUT "${TIMESTAMP_FILE}"
- COMMAND ${CMAKE_COMMAND} -E touch ${TIMESTAMP_FILE}
- COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_LOC>
- COMMAND cd $<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_LOC> && /bin/bash ${CELIX_CMAKE_DIRECTORY}/cmake_celix/create_target_filesystem.sh -e ${CELIX_LAUNCHER} -l $<TARGET_FILE:${DOCKER_DEPSLIB}> > /dev/null
- DEPENDS "$<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_DEPS>" ${DOCKERFILE} ${DOCKER_DEPSLIB}
- WORKING_DIRECTORY "${DOCKER_LOC}"
+ add_custom_command(TARGET ${DOCKER_TARGET} POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_LOC>
+ COMMAND cd $<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_LOC> && /bin/bash ${CELIX_CMAKE_DIRECTORY}/cmake_celix/create_target_filesystem.sh -e ${LAUNCHER} > /dev/null
+ WORKING_DIRECTORY "${DOCKER_LOC}"
COMMENT "Creating docker dir for ${DOCKER_TARGET}" VERBATIM
)
else ()
- add_custom_command(OUTPUT "${TIMESTAMP_FILE}"
- COMMAND ${CMAKE_COMMAND} -E touch ${TIMESTAMP_FILE}
- COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_LOC>
- DEPENDS "$<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_DEPS>" ${DOCKERFILE}
- WORKING_DIRECTORY "${DOCKER_LOC}"
+ add_custom_command(TARGET ${DOCKER_TARGET} POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_LOC>/bin
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LAUNCHER} $<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_LOC>/bin/
+ WORKING_DIRECTORY "${DOCKER_LOC}"
COMMENT "Creating docker dir for ${DOCKER_TARGET}" VERBATIM
)
endif ()
@@ -157,36 +143,40 @@ function(add_celix_docker)
set_target_properties(${DOCKER_TARGET} PROPERTIES "DOCKER_PROPERTIES" "")
set_target_properties(${DOCKER_TARGET} PROPERTIES "DOCKER_DEPS" "")
+ set(DOCKERFILE_STAGE1 ${CMAKE_BINARY_DIR}/celix/gen/${DOCKER_TARGET}-Dockerfile.in)
set(DOCKERFILE "$<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_LOC>/Dockerfile")
file(GENERATE
- OUTPUT "${DOCKERFILE}"
+ OUTPUT "${DOCKERFILE_STAGE1}"
CONTENT "# Dockerfile for celix based image
FROM $<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_FROM>
ENV IMAGE_NAME $<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_IMAGE_NAME>
-ADD . /
+COPY . /
WORKDIR $<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_WORKDIR>
$<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_ENTRYPOINT>
$<JOIN:$<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_INSTRUCTIONS>,
>
")
+ file(GENERATE
+ OUTPUT ${DOCKERFILE}
+ INPUT ${DOCKERFILE_STAGE1}
+ )
#generate config.properties
- set(DOCKER_PROPS "${DOCKER_LOC}/${DOCKER_WORKDIR}/config.properties")
- set(STAGE1_PROPERTIES "${CMAKE_CURRENT_BINARY_DIR}/${DOCKER_TARGET}-docker-config-stage1.properties")
+ set(DOCKER_PROPERTIES_FILE "${DOCKER_LOC}/${DOCKER_WORKDIR}/config.properties")
+ set(STAGE1_PROPERTIES_FILE "${CMAKE_BINARY_DIR}/celix/gen/${DOCKER_TARGET}-docker-config-stage1.properties")
file(GENERATE
- OUTPUT "${STAGE1_PROPERTIES}"
+ OUTPUT "${STAGE1_PROPERTIES_FILE}"
CONTENT "cosgi.auto.start.1=$<JOIN:$<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_BUNDLES>, >
$<JOIN:$<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_PROPERTIES>,
>
"
)
file(GENERATE
- OUTPUT "${DOCKER_PROPS}"
- INPUT "${STAGE1_PROPERTIES}"
+ OUTPUT "${DOCKER_PROPERTIES_FILE}"
+ INPUT "${STAGE1_PROPERTIES_FILE}"
)
-
if (DOCKER_BUNDLES)
celix_docker_bundles(${DOCKER_TARGET} ${DOCKER_BUNDLES})
endif()
@@ -197,29 +187,20 @@ $<JOIN:$<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_PROPERTIES>,
celix_docker_instructions(${DOCKER_TARGET} ${DOCKER_INSTRUCTIONS})
endif ()
- get_target_property(DEPS docker "DOCKER_DEPS")
+ get_target_property(DEPS celix-build-docker-dirs "DOCKER_DEPS")
list(APPEND DEPS ${DOCKER_TARGET})
- set_target_properties(docker PROPERTIES "DOCKER_DEPS" "${DEPS}")
+ set_target_properties(celix-build-docker-dirs PROPERTIES "DOCKER_DEPS" "${DEPS}")
- #Note assuming sudo is needed for the docker command
- set(SUDO_CMD "")
- if (DOCKER_USE_SUDO)
- set(SUDO_CMD "sudo")
- endif ()
- add_custom_target(build-${DOCKER_TARGET}-docker-image
- COMMAND cd $<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_LOC> && ${SUDO_CMD} ${DOCKER_CMD} build -t "$<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_IMAGE_NAME>" .
+ add_custom_target(celix-build-${DOCKER_TARGET}-docker-image
+ COMMAND cd $<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_LOC> && ${DOCKER_CMD} build -t "$<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_IMAGE_NAME>" .
DEPENDS ${DOCKERFILE} ${DOCKER_TARGET}
COMMENT "Creating docker image for target '${DOCKER_TARGET}'" VERBATIM
)
- add_dependencies(build-docker-images build-${DOCKER_TARGET}-docker-image)
+ add_dependencies(celix-build-docker-images celix-build-${DOCKER_TARGET}-docker-image)
endfunction()
function(celix_docker_bundles)
- if (NOT ENABLE_DOCKER)
- return()
- endif()
-
#0 is docker TARGET
#1..n is bundles
list(GET ARGN 0 DOCKER_TARGET)
@@ -240,15 +221,16 @@ function(celix_docker_bundles)
COMMENT "Copying bundle '${BUNDLE}' to '${OUT}'"
DEPENDS ${BUNDLE}
)
+ add_dependencies(${DOCKER_TARGET} ${OUT})
else() #assuming target
- list(APPEND BUNDLES "${BUNDLES_DIR}/${BUNDLE}.zip")
- set(OUT ${LOC}/${BUNDLES_DIR}/${BUNDLE}.zip)
+ get_target_property(BFN ${BUNDLE} BUNDLE_FILE_NAME)
+ list(APPEND BUNDLES "${BUNDLES_DIR}/${BFN}")
+ set(OUT ${LOC}/${BUNDLES_DIR}/${BFN})
add_custom_command(OUTPUT ${OUT}
COMMAND ${CMAKE_COMMAND} -E copy_if_different "$<TARGET_PROPERTY:${BUNDLE},BUNDLE_FILE>" "${OUT}"
COMMENT "Copying bundle '${BUNDLE}' to '${OUT}'"
- DEPENDS ${BUNDLE}
+ DEPENDS ${BUNDLE} ${BUNDLE}_bundle
)
- add_dependencies(${DOCKER_TARGET} ${BUNDLE}_bundle) #ensure the the deploy depends on the _bundle target, custom_command depends on add_library
endif()
list(APPEND DEPS "${OUT}")
endforeach()
@@ -258,10 +240,6 @@ function(celix_docker_bundles)
endfunction()
function(celix_docker_properties)
- if (NOT ENABLE_DOCKER)
- return()
- endif()
-
#0 is docker TARGET
#1..n is properties
list(GET ARGN 0 DOCKER_TARGET)
@@ -277,10 +255,6 @@ function(celix_docker_properties)
endfunction()
function(celix_docker_instructions)
- if (NOT ENABLE_DOCKER)
- return()
- endif()
-
#0 is docker TARGET
#1..n is instructions
list(GET ARGN 0 DOCKER_TARGET)
http://git-wip-us.apache.org/repos/asf/celix/blob/49e25fad/examples/dm_example/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/examples/dm_example/CMakeLists.txt b/examples/dm_example/CMakeLists.txt
index 8e07825..f10ef26 100644
--- a/examples/dm_example/CMakeLists.txt
+++ b/examples/dm_example/CMakeLists.txt
@@ -41,28 +41,26 @@ if (BUILD_DEPENDENCY_MANAGER)
LOGHELPER_ENABLE_STDOUT_FALLBACK=true
)
- if (ENABLE_DOCKER)
- add_celix_docker(dm_exmpl_base
- NAME dmbase
- IMAGE_NAME dmbase
- GROUP examples
- INSTRUCTIONS
- "LABEL exmpl=value"
- )
- add_celix_docker(dm_exmpl
- FROM dmbase
+ add_celix_docker(dm_exmpl_base
+ NAME dmbase
+ IMAGE_NAME dmbase
GROUP examples
- BUNDLES
- shell
- shell_tui
- dm_shell
- phase1
- phase2a
- phase2b
- phase3
- PROPERTIES
- LOGHELPER_ENABLE_STDOUT_FALLBACK=true
- )
- endif ()
+ INSTRUCTIONS
+ "LABEL exmpl=value"
+ )
+ add_celix_docker(dm_exmpl
+ FROM dmbase
+ GROUP examples
+ BUNDLES
+ shell
+ shell_tui
+ dm_shell
+ phase1
+ phase2a
+ phase2b
+ phase3
+ PROPERTIES
+ LOGHELPER_ENABLE_STDOUT_FALLBACK=true
+ )
endif ()