[Cmake-commits] [cmake-commits] david.cole committed CMakeLists.txt 1.1 1.2 TryCheckout.cmake NONE 1.1

cmake-commits at cmake.org cmake-commits at cmake.org
Thu Dec 4 15:30:39 EST 2008


Update of /cvsroot/CMake/CMake/Tests/ExternalProject
In directory public:/mounts/ram/cvs-serv28193/Tests/ExternalProject

Modified Files:
	CMakeLists.txt 
Added Files:
	TryCheckout.cmake 
Log Message:
ENH: Use a TryCheckout technique to decide whether or not to attempt building the projects that depend on a cvs or svn download method.


Index: CMakeLists.txt
===================================================================
RCS file: /cvsroot/CMake/CMake/Tests/ExternalProject/CMakeLists.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -C 2 -d -r1.1 -r1.2
*** CMakeLists.txt	4 Dec 2008 18:27:48 -0000	1.1
--- CMakeLists.txt	4 Dec 2008 20:30:37 -0000	1.2
***************
*** 10,13 ****
--- 10,37 ----
  
  
+ # Use a "TryCheckout" technique on small subtrees of certain projects
+ # to see if cvs checkout and svn checkout may be used on this machine
+ # without problems. If so, we can test the projects that use those
+ # download techniques. If not, we skip them on this machine...
+ #
+ include("${CMAKE_CURRENT_SOURCE_DIR}/TryCheckout.cmake")
+ 
+ try_cvs_checkout(
+   ":pserver:anonymous:cmake at www.cmake.org:/cvsroot/CMake"
+   "CMake/Tests/Tutorial/Step1"
+   "${CMAKE_CURRENT_BINARY_DIR}/TryCheckout/TutorialStep1"
+   can_use_cvs
+   )
+ 
+ try_svn_checkout(
+   "http://gdcm.svn.sourceforge.net/svnroot/gdcm/trunk/Utilities/gdcmmd5"
+   "${CMAKE_CURRENT_BINARY_DIR}/TryCheckout/gdcmmd5"
+   can_use_svn
+   )
+ 
+ message(STATUS "can_use_cvs='${can_use_cvs}'")
+ message(STATUS "can_use_svn='${can_use_svn}'")
+ 
+ 
  # Local DIR:
  #
***************
*** 65,69 ****
  # Download CVS:
  #
! if(CVS_EXECUTABLE)
    # CVS by date stamp:
    #
--- 89,93 ----
  # Download CVS:
  #
! if(can_use_cvs)
    # CVS by date stamp:
    #
***************
*** 101,105 ****
  # Download SVN:
  #
! if(Subversion_SVN_EXECUTABLE)
    # SVN by date stamp:
    #
--- 125,129 ----
  # Download SVN:
  #
! if(can_use_svn)
    # SVN by date stamp:
    #
***************
*** 163,167 ****
    "${build_dir}/TutorialStep1-LocalNoDirTGZ/Tutorial" 9)
  
! if(CVS_EXECUTABLE)
    add_test(KWStyle-20081201-BuildTreeTest
      "${build_dir}/KWStyle-20081201/KWStyle" -xml "${kwstyleXmlFile}" "${header}")
--- 187,191 ----
    "${build_dir}/TutorialStep1-LocalNoDirTGZ/Tutorial" 9)
  
! if(can_use_cvs)
    add_test(KWStyle-20081201-BuildTreeTest
      "${build_dir}/KWStyle-20081201/KWStyle" -xml "${kwstyleXmlFile}" "${header}")
***************
*** 174,178 ****
  endif()
  
! if(Subversion_SVN_EXECUTABLE)
    add_test(gdcm-md5-20081204-BuildTreeTest
      "${build_dir}/gdcm-md5-20081204/md5main" --version)
--- 198,202 ----
  endif()
  
! if(can_use_svn)
    add_test(gdcm-md5-20081204-BuildTreeTest
      "${build_dir}/gdcm-md5-20081204/md5main" --version)
***************
*** 191,200 ****
    "${install_dir}/bin/Tutorial" 49)
  
! if(CVS_EXECUTABLE)
    add_test(KWStyle-InstallTreeTest
      "${install_dir}/bin/KWStyle" -xml "${kwstyleXmlFile}" "${header}")
  endif()
  
! if(Subversion_SVN_EXECUTABLE)
    add_test(gdcm-md5-InstallTreeTest
      "${install_dir}/bin/md5main" --version)
--- 215,224 ----
    "${install_dir}/bin/Tutorial" 49)
  
! if(can_use_cvs)
    add_test(KWStyle-InstallTreeTest
      "${install_dir}/bin/KWStyle" -xml "${kwstyleXmlFile}" "${header}")
  endif()
  
! if(can_use_svn)
    add_test(gdcm-md5-InstallTreeTest
      "${install_dir}/bin/md5main" --version)

--- NEW FILE: TryCheckout.cmake ---
find_package(CVS)
find_package(Subversion)


function(try_cvs_checkout repository module dir result_var)
  # Assume cvs checkouts will not work:
  set(${result_var} 0 PARENT_SCOPE)

  if(CVS_EXECUTABLE)
    message(STATUS "try_cvs_checkout")

    # Ensure directory exists so we can call cvs in it:
    file(MAKE_DIRECTORY "${dir}")

    # Try to do the cvs checkout command:
    execute_process(COMMAND ${CVS_EXECUTABLE} -d ${repository} co ${module}
      WORKING_DIRECTORY ${dir}
      TIMEOUT 30
      RESULT_VARIABLE rv)

    # If it worked, cvs checkouts will work:
    if(rv EQUAL 0)
      set(${result_var} 1 PARENT_SCOPE)
    endif()

    message(STATUS "try_cvs_checkout -- done")
  endif()
endfunction(try_cvs_checkout)


function(try_svn_checkout repository dir result_var)
  # Assume svn checkouts will not work:
  set(${result_var} 0 PARENT_SCOPE)

  if(Subversion_SVN_EXECUTABLE)
    message(STATUS "try_svn_checkout")

    # Ensure directory exists so we can call svn in it:
    file(MAKE_DIRECTORY "${dir}")

    # Try to do the svn checkout command:
    execute_process(COMMAND ${Subversion_SVN_EXECUTABLE} co ${repository} ${dir}
      WORKING_DIRECTORY ${dir}
      TIMEOUT 30
      RESULT_VARIABLE rv)

    # If it worked, svn checkouts will work:
    if(rv EQUAL 0)
      set(${result_var} 1 PARENT_SCOPE)
    endif()

    message(STATUS "try_svn_checkout -- done")
  endif()
endfunction(try_svn_checkout)



More information about the Cmake-commits mailing list