diff --git a/Docker/CMakeLists.txt b/Docker/CMakeLists.txt index 82d3a2e3d991f6f069fb65799f643299caa52c4e..7d03378f78fb0212e7c4e4147b4b61c0c7909207 100644 --- a/Docker/CMakeLists.txt +++ b/Docker/CMakeLists.txt @@ -1,9 +1,17 @@ # $Id$ -lofar_package(Docker 1.0) +lofar_package(Docker 1.0 DEPENDS Common) -include(LofarFindPackage) -lofar_find_package(Subversion REQUIRED) +include(LofarPackageVersion) + +# Build version info +set(docker_LIB_SRCS + Package__Version.cc +) + +lofar_add_library(docker ${docker_LIB_SRCS}) + +lofar_add_bin_program(versiondocker versiondocker.cc) # # For given directories, we generate the Dockerfile @@ -19,14 +27,9 @@ set(DOCKER_TEMPLATE_DIRS lofar-pipeline lofar-outputproc) -# Create our template engine, using build-specific info -configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/template.in - ${CMAKE_CURRENT_BINARY_DIR}/template @ONLY) - # Note: "template" only works as long as the sources are still around, # since it uses svn to query information from them. -lofar_add_bin_scripts(${CMAKE_CURRENT_BINARY_DIR}/template) +lofar_add_bin_scripts(template) lofar_add_sbin_scripts(docker-build-all.sh) # Convert Dockerfile.tmpl -> Dockerfile in ${DOCKER_TEMPLATE_DIRS} @@ -39,8 +42,8 @@ foreach(_dir ${DOCKER_TEMPLATE_DIRS}) # when "all" is build. add_custom_command( OUTPUT ${_dst} - COMMAND ${CMAKE_CURRENT_BINARY_DIR}/template < ${_src} > ${_dst} - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/template ${_src} + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/template < ${_src} > ${_dst} + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/template ${_src} ${CMAKE_CURRENT_BINARY_DIR}/versiondocker ) add_custom_target(${_dir}_Dockerfile_target ALL DEPENDS ${_dst}) diff --git a/Docker/template.in b/Docker/template similarity index 65% rename from Docker/template.in rename to Docker/template index 642f24eea66d5059e8ae2b6bb36bf138ca76c203..723dbf696c9eaab0321a49e57fefdcbe5fa30fec 100755 --- a/Docker/template.in +++ b/Docker/template @@ -1,5 +1,4 @@ -#!/bin/bash - +#!/bin/bash # # Template engine for LOFAR # @@ -20,29 +19,17 @@ # ----- LOFAR_BRANCH_NAME = UNKNOWN ----- # Make sure we obtain info about the project source! -SVN_INFO=`@Subversion_SVN_EXECUTABLE@ info @PROJECT_SOURCE_DIR@` - -# Extract repository root, e.g. https://svn.astron.nl/LOFAR -REPO=`echo "$SVN_INFO" | perl -ne 'print "$1" if /Repository Root: +(.+)/;'` - -# Extract branch URL, e.g. https://svn.astron.nl/LOFAR/branches/LOFAR-Task1234 -URL=`echo "$SVN_INFO" | perl -ne 'print "$1" if /URL: +(.+)/;'` +#PATH=$PATH:. +VERSION_INFO=`versiondocker` # Extract branch name w.r.t. repository root, e.g. branches/LOFAR-Task1234 -BRANCH=`echo "$URL" | perl -ne 'print "$1" if m|^\Q'"$REPO"'\E/?(.+)|;'` - -# Define $LOFAR_BRANCH_NAME if all the above succeeded -if [ -n "$REPO" -a -n "$BRANCH" ]; then - export LOFAR_BRANCH_NAME=${BRANCH} -else - export LOFAR_BRANCH_NAME=UNKNOWN -fi +export LOFAR_BRANCH_NAME=`echo "$VERSION_INFO" | perl -ne 'print "$1" if /branch += +(.+)/;'` # ----- LOFAR_BRANCH_URL = https://svn.astron.nl/LOFAR/branches/LOFAR-Task1234 ----- # ----- LOFAR_BRANCH_URL = https://svn.astron.nl/LOFAR/trunk ----- # ----- LOFAR_BRANCH_URL = https://svn.astron.nl/LOFAR/tags/LOFAR-Release-2_15_1 ----- -export LOFAR_BRANCH_URL="$URL" +export LOFAR_BRANCH_URL="https://svn.astron.nl/LOFAR/${LOFAR_BRANCH_NAME}" # ----- LOFAR_TAG = 1234 ----- # ----- LOFAR_TAG = trunk ----- @@ -50,14 +37,14 @@ export LOFAR_BRANCH_URL="$URL" case "${LOFAR_BRANCH_NAME}" in trunk) export LOFAR_TAG=trunk ;; - tags/*) export LOFAR_TAG=${BRANCH##tags/LOFAR-Release-} ;; - branches/*) export LOFAR_TAG=${BRANCH##branches/LOFAR*Task} ;; + tags/*) export LOFAR_TAG=${LOFAR_BRANCH_NAME##tags/LOFAR-Release-} ;; + branches/*) export LOFAR_TAG=${LOFAR_BRANCH_NAME##branches/LOFAR*Task} ;; *) export LOFAR_TAG=latest ;; esac # ----- LOFAR_REVISION = 12345 ----- -export LOFAR_REVISION=`echo "$SVN_INFO" | perl -ne 'print "$1" if /Revision: +(.+)/;'` +export LOFAR_REVISION=`echo "$VERSION_INFO" | perl -ne 'print "$1" if /overall revision += +([0-9]+)/;'` # ----- NOW = 2016-01-01 10:11:12 -----