diff options
| author | brad kittenbrink <brad@lindenlab.com> | 2011-05-04 16:07:27 -0700 | 
|---|---|---|
| committer | brad kittenbrink <brad@lindenlab.com> | 2011-05-04 16:07:27 -0700 | 
| commit | ebda8f883b742de82db74cab993612737f5dec9e (patch) | |
| tree | 8593a9675e5b5e08235aec8b5a197d0d3af5ebb2 /indra/cmake | |
| parent | a8ba89eb41b5b0eabecf1d78cf0d5ac9f1b11117 (diff) | |
Work in progress on CHOP-609.  Added checking in indra/cmake/Prebuilt.cmake to skip unnecessary unpacking of already installed packages.
Diffstat (limited to 'indra/cmake')
| -rw-r--r-- | indra/cmake/Prebuilt.cmake | 56 | 
1 files changed, 35 insertions, 21 deletions
| diff --git a/indra/cmake/Prebuilt.cmake b/indra/cmake/Prebuilt.cmake index 1b60d176f1..dbb4dfc46c 100644 --- a/indra/cmake/Prebuilt.cmake +++ b/indra/cmake/Prebuilt.cmake @@ -1,35 +1,49 @@  # -*- cmake -*-  include(FindAutobuild) +if(INSTALL_PROPRIETARY) +  include(FindSCP) +endif(INSTALL_PROPRIETARY) +# The use_prebuilt_binary macro handles automated installation of package +# dependencies using autobuild.  The goal is that 'autobuild install' should +# only be run when we know we need to install a new package.  This should be +# the case in a clean checkout, or if autobuild.xml has been updated since the +# last run (encapsulated by the file ${CMAKE_BINARY_DIR}/temp/sentinel_installed), +# or if a previous attempt to install the package has failed (the exit status +# of previous attempts is serialized in the file +# ${CMAKE_BINARY_DIR}/temp/${_binary}_installed)  macro (use_prebuilt_binary _binary)    if (NOT DEFINED STANDALONE_${_binary})      set(STANDALONE_${_binary} ${STANDALONE})    endif (NOT DEFINED STANDALONE_${_binary})    if (NOT STANDALONE_${_binary}) -    if(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed) -      if(INSTALL_PROPRIETARY) -        include(FindSCP) -      endif(INSTALL_PROPRIETARY) -	  if(DEBUG_PREBUILT) -		message("cd ${CMAKE_SOURCE_DIR} && ${AUTOBUILD_EXECUTABLE} install -		--install-dir=${AUTOBUILD_INSTALL_DIR} -		--skip-license-check -		${_binary} ") -	  endif(DEBUG_PREBUILT) -	  execute_process(COMMAND "${AUTOBUILD_EXECUTABLE}" -		install -		--install-dir=${AUTOBUILD_INSTALL_DIR} -		--skip-license-check -		${_binary} -		WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" -		RESULT_VARIABLE ${_binary}_installed -		) +    if("${${_binary}_installed}" STREQUAL "" AND EXISTS "${CMAKE_BINARY_DIR}/temp/${_binary}_installed") +      file(READ ${CMAKE_BINARY_DIR}/temp/${_binary}_installed "${_binary}_installed") +      if(DEBUG_PREBUILT) +        message(STATUS "${_binary}_installed: \"${${_binary}_installed}\"") +      endif(DEBUG_PREBUILT) +    endif("${${_binary}_installed}" STREQUAL "" AND EXISTS "${CMAKE_BINARY_DIR}/temp/${_binary}_installed") + +    if(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed OR NOT ${${_binary}_installed} EQUAL 0) +      if(DEBUG_PREBUILT) +        message("cd ${CMAKE_SOURCE_DIR} && ${AUTOBUILD_EXECUTABLE} install +        --install-dir=${AUTOBUILD_INSTALL_DIR} +        --skip-license-check +        ${_binary} ") +      endif(DEBUG_PREBUILT) +      execute_process(COMMAND "${AUTOBUILD_EXECUTABLE}" +        install +        --install-dir=${AUTOBUILD_INSTALL_DIR} +        --skip-license-check +        ${_binary} +        WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" +        RESULT_VARIABLE ${_binary}_installed +        )        file(WRITE ${CMAKE_BINARY_DIR}/temp/${_binary}_installed "${${_binary}_installed}") -    else(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed) -      set(${_binary}_installed 0) -    endif(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed) +    endif(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed OR NOT ${${_binary}_installed} EQUAL 0) +      if(NOT ${_binary}_installed EQUAL 0)        message(FATAL_ERROR                "Failed to download or unpack prebuilt '${_binary}'." | 
