Add_subdirectory(ZDC)
Add_subdirectory(ALIROOT)
add_subdirectory(test)
+add_test ("Aliroot_executable" aliroot -q)
+#copy testing files
+execute_process(COMMAND "cmake" "-E" "copy_directory" "${ALICE_ROOT}/test" "${ALICE_INSTALL}/test")
-add_test ("Aliroot_executable" aliroot -q)
\ No newline at end of file
+message("Note : In order for the warnings test to execute successfully you need to log your make build output to make.log in the ALICE_INSTALL Directory using this command \n make -k > make.log 2>&1")
\ No newline at end of file
+add_test("Warnings" cmake -P Warnings.cmake)
+add_test("Violations" cmake -P Violation.cmake)
+add_subdirectory(gun)
+add_subdirectory(ppbench)
\ No newline at end of file
--- /dev/null
+cmake_minimum_required(VERSION 2.8)
+
+if(COMMAND CMAKE_POLICY)
+ if(POLICY CMP0009)
+ cmake_policy(SET CMP0009 NEW)
+ endif(POLICY CMP0009)
+endif(COMMAND CMAKE_POLICY)
+
+#Run Checkaliroot to get latest violations
+execute_process(COMMAND make -k check-all
+ WORKING_DIRECTORY $ENV{ALICE_INSTALL}
+ OUTPUT_FILE CheckAliroot.log )
+
+find_program(svn_command svn)
+
+#Function to count no of lines in a file equivalent to wc -l
+function (wcl _nLinesVar fileName)
+ file(READ ${fileName} fileData)
+ if(fileData)
+ if(WIN32)
+ string(REGEX MATCHALL "\r\n" nLines ${fileData})
+ else()
+ string(REGEX MATCHALL "[\r\n]" nLines ${fileData})
+ endif(WIN32)
+ list(LENGTH nLines nLines)
+ set(${_nLinesVar} ${nLines} PARENT_SCOPE)
+ else()
+ set(${_nLinesVar} -1 PARENT_SCOPE)
+ endif()
+endfunction()
+
+file(GLOB_RECURSE violExc "$ENV{ALICE_ROOT}/*THerwig6.viol"
+ "$ENV{ALICE_ROOT}/*AliRawReaderDateV3.viol"
+ "$ENV{ALICE_ROOT}/*dateStream.viol"
+ "$ENV{ALICE_ROOT}/TTherminator/*.viol"
+ "$ENV{ALICE_ROOT}/*esdAna.viol"
+ "$ENV{ALICE_ROOT}/*TIsajet*.viol"
+ "$ENV{ALICE_ROOT}/*RecAna.viol"
+ "$ENV{ALICE_ROOT}/*LHAPDFWrap.viol"
+ "$ENV{ALICE_ROOT}/RAW/check/event.viol"
+ "$ENV{ALICE_ROOT}/THerwig/check/HCommon.viol"
+ "$ENV{ALICE_ROOT}/*HBTprocCOMMON.viol"
+ "$ENV{ALICE_ROOT}/*EPOScommon.viol"
+ "$ENV{ALICE_ROOT}/*DPMcommon.viol"
+ "$ENV{ALICE_ROOT}/*Hcommon.viol"
+ "$ENV{ALICE_ROOT}/*TPHICcommon.viol"
+ "$ENV{ALICE_ROOT}/JETAN/check/fastjet/*.viol"
+ "$ENV{ALICE_ROOT}/HLT/check/JET/fastjet/*.viol"
+ "$ENV{ALICE_ROOT}/PYTHIA8/*.viol"
+ "$ENV{ALICE_ROOT}/TEvtGen/*.viol"
+ "$ENV{ALICE_ROOT}/LHAPDF/*.viol"
+ "$ENV{ALICE_ROOT}/*HydCommon.viol"
+ "$ENV{ALICE_ROOT}/*AliHLTDataBuffer.viol")
+file(GLOB_RECURSE violFiles "$ENV{ALICE_ROOT}/*.viol")
+list(REMOVE_ITEM violFiles ${violExc})
+
+#Total list of files
+list(LENGTH violFiles totf)
+#Total no of lines
+set(totl 0)
+#Count the number Violations per file and sort
+foreach( violFile ${violFiles} )
+ file(READ ${violFile} fileData)
+ math(EXPR violLen "0")
+ if(fileData)
+ string(REGEX MATCHALL "violated:" violList ${fileData})
+ list(LENGTH violList violLen)
+ endif(fileData)
+ math(EXPR totl "${totl} + ${violLen}")
+ math(EXPR violLen "999999 - ${violLen}")
+ list(APPEND violCount "${violLen}:${violFile}")
+endforeach( violFile )
+list(SORT violCount)
+list(LENGTH violCount max)
+if(max GREATER 10)
+ set(max 10)
+endif(max GREATER 10)
+message("==============================Overall Violations==============================\n")
+message("COUNT : VIOLATION FILE NAME\n------------------------------------------------------------------------------")
+#Print out top 10 violations
+foreach(i RANGE ${max})
+ list(GET violCount ${i} line)
+ string(LENGTH ${line} lineLen)
+ math(EXPR lineLen "${lineLen}-7")
+ string(SUBSTRING ${line} 0 6 count)
+ string(SUBSTRING ${line} 7 ${lineLen} lineLen)
+
+ string(REPLACE "check/" "" args ${lineLen})
+ string(REPLACE "viol" "*" args ${args})
+ file(GLOB args "${args}")
+ foreach(arg ${args})
+ list(APPEND argList "${arg}")
+ endforeach(arg)
+
+ string(REPLACE "$ENV{ALICE_ROOT}/" "" module ${lineLen})
+ math(EXPR count "999999 - ${count}")
+ string(LENGTH ${count} digit)
+ if(${digit} EQUAL 1)
+ set(space " ")
+ elseif(${digit} EQUAL 2)
+ set(space " ")
+ elseif(${digit} EQUAL 3)
+ set(space " ")
+ endif(${digit} EQUAL 1)
+ message("${space}${count} : ${module}")
+
+endforeach(i)
+
+set(tot 0)
+set (anlys "${anlys}\n\n==============================Detailed Analysis==============================\n")
+#Blaming people
+set (anlys "${anlys}+--| AliRoot\n")
+foreach( blameFile ${argList} )
+ string(REPLACE "$ENV{ALICE_ROOT}/" "" mainFile ${blameFile})
+ set(anlys "${anlys} |\n")
+ execute_process(COMMAND "${svn_command}" "blame" "${blameFile}"
+ WORKING_DIRECTORY "$ENV{ALICE_ROOT}"
+ OUTPUT_FILE tmpViols
+ OUTPUT_VARIABLE tmpVio)
+ wcl(fileLen "$ENV{ALICE_ROOT}/tmpViols")
+ set(anlys "${anlys} |--| ${mainFile} |-- ${fileLen} lines\n")
+ set(nameList "")
+ file(STRINGS "$ENV{ALICE_ROOT}/tmpViols" violData)
+ # file(READ "tmpViols" violData)
+ # string(REGEX REPLACE "\n" ";" "violData" "${violData}")
+ foreach(violLine ${violData})
+ string(REGEX MATCH "[0-9]+[ ]+[a-zA-Z0-9]+" "name" "${violLine}")
+ string(REGEX REPLACE "^[0-9]+[ ]+" "" "name" "${name}")
+ list(APPEND nameList ${name})
+ list(APPEND fullViolList ${name})
+ endforeach(violLine)
+ list(LENGTH violData tot)
+ set (userList ${nameList})
+ set(finale "")
+ if(userList)
+ list(REMOVE_DUPLICATES userList)
+ endif(userList)
+ foreach(name ${userList})
+ string(REGEX MATCHALL "${name}" "nameCount" "${nameList}")
+ list(LENGTH nameCount nameCount)
+ math(EXPR num "(${nameCount}*100)/${tot}")
+ math(EXPR dec "((10000*${nameCount}/${tot}-100*${num}+5))")
+ if( ${dec} GREATER 99 )
+ set(dec 0)
+ math(EXPR num "${num}+1")
+ endif(${dec} GREATER 99)
+ math(EXPR dec "${dec}/10")
+ math(EXPR pcnt "99999 - ${num}${dec}")
+ string(LENGTH ${num} digit)
+ if(digit EQUAL 1)
+ set(space " ")
+ elseif(digit EQUAL 2)
+ set(space " ")
+ endif(digit EQUAL 1)
+ list(APPEND finale "${pcnt}-${space}${num}.${dec}% | ${name} |-- ${nameCount} lines")
+ endforeach(name)
+ list(SORT finale)
+ foreach(record ${finale})
+ string(LENGTH ${record} recLen)
+ math(EXPR recLen "${recLen}-6")
+ string(SUBSTRING ${record} 6 ${recLen} record)
+ set(anlys "${anlys} +--|${record}\n")
+ endforeach(record)
+endforeach( blameFile)
+
+list(LENGTH fullViolList tot)
+set(nameList ${fullViolList})
+set(finale "")
+#Sorting Names
+if(nameList)
+ list(REMOVE_DUPLICATES nameList)
+endif(nameList)
+foreach(name ${nameList})
+ string(REGEX MATCHALL "${name}" "nameCount" "${fullViolList}")
+ list(LENGTH nameCount nameCount)
+ math(EXPR num "(${nameCount}*100)/${tot}")
+ math(EXPR dec "((10000*${nameCount}/${tot}-100*${num}+5))")
+ if( ${dec} GREATER 99 )
+ set(dec 0)
+ math(EXPR num "${num}+1")
+ endif(${dec} GREATER 99)
+ math(EXPR dec "${dec}/10")
+ math(EXPR pcnt "99999 - ${num}${dec}")
+ string(LENGTH ${num} digit)
+ if(digit EQUAL 1)
+ set(space " ")
+ elseif(digit EQUAL 2)
+ set(space " ")
+ endif(digit EQUAL 1)
+ list(APPEND finale "${pcnt}-${space}${num}.${dec}% | ${name}")
+endforeach(name)
+
+#Print Code Percentages
+list(SORT finale)
+message("\n\n==============================Overall Percentages==============================\n")
+foreach(record ${finale})
+ string(LENGTH ${record} recLen)
+ math(EXPR recLen "${recLen}-6")
+ string(SUBSTRING ${record} 6 ${recLen} record)
+ message("${record}")
+endforeach(record)
+
+#Print Detailed Analysis
+message("${anlys}")
--- /dev/null
+cmake_minimum_required(VERSION 2.8)
+
+if(COMMAND CMAKE_POLICY)
+ if(POLICY CMP0009)
+ cmake_policy(SET CMP0009 NEW)
+ endif(POLICY CMP0009)
+endif(COMMAND CMAKE_POLICY)
+set(rs "$ENV{ROOTSYS}")
+set(ar "$ENV{ALICE_ROOT}")
+#warnings exceptions
+set(exceptions "always evaluates both arguments" "std::" "TGeoMatrix::operator\\*" "struct AliRawDataHeader" "/usr/local/dim" " from " "JETAN/fastjet/fastjet/" "G__" "base class .struct AliHLTCaloChannelDataStruct. has a non-virtual destructor")
+
+#Function to count no of lines in a file equivalent to wc -l
+function (wcl _nLinesVar fileName)
+ file(READ ${fileName} fileData)
+ if(fileData)
+ if(WIN32)
+ string(REGEX MATCHALL "\r\n" nLines ${fileData})
+ else()
+ string(REGEX MATCHALL "[\r\n]" nLines ${fileData})
+ endif(WIN32)
+ list(LENGTH nLines nLines)
+ set(${_nLinesVar} ${nLines} PARENT_SCOPE)
+ else()
+ set(${_nLinesVar} -1 PARENT_SCOPE)
+ endif()
+endfunction()
+
+find_program(svn_command svn)
+
+if(ar AND rs)
+ #Read build log from (default - make.log)
+ set(buildLog "$ENV{ALICE_INSTALL}/make.log")
+ file(READ ${buildLog} lineList)
+ string(REGEX REPLACE "\n" ";" "lineList" "${lineList}")
+ foreach (line ${lineList})
+ set(warning "")
+ string(REGEX MATCH ".+warning:.+" "warning" "${line}")
+ if(warning)
+ # message("${warning}")
+ list(APPEND warnList "${line}")
+ string(REGEX MATCH "(.+):[0-9]+" "file" "${line}")
+ string(REGEX REPLACE ":[0-9]+" "" "file" "${file}")
+ list(APPEND fileList "${file}")
+ endif(warning)
+ endforeach(line)
+ list(REMOVE_DUPLICATES fileList)
+ set(rootOut "+--| ROOT\n")
+ set(aliOut "+--| ALIROOT\n")
+ list(SORT fileList)
+ foreach(file ${fileList})
+ set(root "")
+ set(aliroot "")
+ string(REGEX MATCH "${rs}" "root" "${file}")
+ string(REGEX MATCH "${ar}" "aliroot" "${aliroot}")
+ if(root)
+ string(REGEX REPLACE "${root}[/]*" "" "file" "${file}")
+ set(rootOut "${rootOut} |\n")
+ set(rootOut "${rootOut} +--| ${file}\n")
+ else()
+ set(aliroot ${ar})
+ string(REGEX REPLACE "${aliroot}[/]*" "" "file" "${file}")
+ set(aliOut "${aliOut} |\n")
+ set(aliOut "${aliOut} +--| ${file}\n")
+ endif(root)
+ list(REMOVE_DUPLICATES warnList)
+ foreach(line ${warnList})
+ set(match "")
+ string(REGEX MATCH "${file}[:]*" "match" "${line}")
+ if(match)
+ string(REGEX REPLACE "${match}" "" "line" "${line}")
+ if(aliroot)
+ string(REGEX REPLACE "${aliroot}" "" "line" "${line}")
+ set(aliOut "${aliOut} +--| ${line}\n")
+ elseif(root)
+ string(REGEX REPLACE "${root}" "" "line" "${line}")
+ set(rootOut "${rootOut} +--| ${line}\n")
+ endif(aliroot)
+ endif(match)
+ endforeach(line)
+ endforeach(file)
+
+set(tot 0)
+set (anlys "${anlys}\n\n==============================Detailed Analysis==============================\n")
+#Blaming people
+set (anlys "${anlys}+--| AliRoot\n")
+foreach( blameFile ${fileList} )
+ string(REPLACE "$ENV{ALICE_ROOT}/" "" mainFile ${blameFile})
+ set(anlys "${anlys} |\n")
+ execute_process(COMMAND "${svn_command}" "blame" "${blameFile}"
+ WORKING_DIRECTORY "$ENV{ALICE_ROOT}"
+ OUTPUT_FILE tmpViols
+ OUTPUT_VARIABLE tmpVio)
+ wcl(fileLen "$ENV{ALICE_ROOT}/tmpViols")
+ set(anlys "${anlys} |--| ${mainFile} |-- ${fileLen} lines\n")
+ set(nameList "")
+ file(STRINGS "$ENV{ALICE_ROOT}/tmpViols" violData)
+ # file(READ "tmpViols" violData)
+ # string(REGEX REPLACE "\n" ";" "violData" "${violData}")
+ foreach(violLine ${violData})
+ string(REGEX MATCH "[0-9]+[ ]+[a-zA-Z0-9]+" "name" "${violLine}")
+ string(REGEX REPLACE "^[0-9]+[ ]+" "" "name" "${name}")
+ list(APPEND nameList ${name})
+ list(APPEND fullViolList ${name})
+ endforeach(violLine)
+ list(LENGTH violData tot)
+ set (userList ${nameList})
+ set(finale "")
+ if(userList)
+ list(REMOVE_DUPLICATES userList)
+ endif(userList)
+ foreach(name ${userList})
+ string(REGEX MATCHALL "${name}" "nameCount" "${nameList}")
+ list(LENGTH nameCount nameCount)
+ math(EXPR num "(${nameCount}*100)/${tot}")
+ math(EXPR dec "((10000*${nameCount}/${tot}-100*${num}+5))")
+ if( ${dec} GREATER 99 )
+ set(dec 0)
+ math(EXPR num "${num}+1")
+ endif(${dec} GREATER 99)
+ math(EXPR dec "${dec}/10")
+ math(EXPR pcnt "99999 - ${num}${dec}")
+ string(LENGTH ${num} digit)
+ if(digit EQUAL 1)
+ set(space " ")
+ elseif(digit EQUAL 2)
+ set(space " ")
+ endif(digit EQUAL 1)
+ list(APPEND finale "${pcnt}-${space}${num}.${dec}% | ${name} |-- ${nameCount} lines")
+ endforeach(name)
+ list(SORT finale)
+ foreach(record ${finale})
+ string(LENGTH ${record} recLen)
+ math(EXPR recLen "${recLen}-6")
+ string(SUBSTRING ${record} 6 ${recLen} record)
+ set(anlys "${anlys} +--|${record}\n")
+ endforeach(record)
+endforeach( blameFile)
+
+
+
+message("${anlys}")
+ message("==============================ROOT FILE WARNINGS==============================\n")
+ message("${rootOut}")
+ message("\n\n==============================ALIROOT FILE WARNINGS==============================\n")
+ message("${aliOut}")
+ else()
+ message(WARNING "Environment Variable ALICE_ROOT and ROOTSYS must be set")
+ endif(ar AND rs)
\ No newline at end of file
--- /dev/null
+#****Macros****
+find_program(UNAME NAMES uname)
+macro(getuname name flag)
+ exec_program("${UNAME}" ARGS "${flag}" OUTPUT_VARIABLE "${name}")
+endmacro(getuname)
+
+#****Configuration Variables****
+#Set Project Name
+set(CTEST_PROJECT_NAME "AliRoot")
+set(ALICE_ROOT $ENV{ALICE_ROOT})
+set(ALICE_INSTALL $ENV{ALICE_INSTALL})
+
+if(NOT ALICE_INSTALL)
+message(FATAL_ERROR "Please set environment variable ALICE_INSTALL to the AliRoot installation directory")
+endif(NOT ALICE_INSTALL)
+if(NOT ALICE_ROOT)
+message(FATAL_ERROR "Please set environment variable ALICE_ROOT to the AliRoot source directory")
+endif(NOT ALICE_ROOT)
+
+#Set hostname of current machine
+find_program(HOSTNAME_CMD NAMES hostname)
+exec_program(${HOSTNAME_CMD} ARGS OUTPUT_VARIABLE HOSTNAME)
+set(CTEST_SITE "${HOSTNAME}")
+
+#Set build name
+getuname(osname -s)
+getuname(osrel -r)
+getuname(cpu -m)
+set(CTEST_BUILD_NAME "${osname}-${cpu}-prod")
+
+#Detect SVN and Make
+find_program(CTEST_SVN_COMMAND NAMES svn)
+find_program(MAKE NAMES make)
+find_program(CTEST_MEMORYCHECK_COMMAND NAMES valgrind)
+set(CTEST_MEMORYCHECK_COMMAND_OPTIONS "--leak-check=full --error-limit=yes --leak-resolution=low")
+
+#AliRoot Repository and build settings
+set(ALICE_REPO "https://alisoft.cern.ch/AliRoot/trunk")
+set(MODEL "Continuous")
+
+
+#Set Nightly build start time
+set(CTEST_NIGHTLY_START_TIME "00:00:00 EST")
+set(CTEST_TEST_TIMEOUT 0)
+#Default drop site
+set(CTEST_DROP_METHOD "http")
+set(CTEST_DROP_SITE "alirootbuildcmake.cern.ch")
+set(CTEST_DROP_LOCATION "/~johny/submit.php?project=AliRoot")
+set(CTEST_DROP_SITE_CDASH TRUE)
+
+set(OLDREV 0)
+set(NEWREV 0)
+set(CYCLE 0)
+set(CLEARCYCLE 5)
+set(TESTCYCLE 2)
+#Get Revision
+execute_process(COMMAND svn info ${ALICE_ROOT} OUTPUT_VARIABLE _svn_out )
+string(REGEX REPLACE "^.*Revision: ([^\n]*).*$" "\\1" ALIROOT_SVN_REVISION ${_svn_out})
+set(OLDREV ${ALIROOT_SVN_REVISION})
+set(NEWREV ${ALIROOT_SVN_REVISION})
+message("Starting build of revision ${OLDREV}")
+#Setup Directories
+set(CTEST_BINARY_DIRECTORY "${ALICE_INSTALL}")
+set(CTEST_SOURCE_DIRECTORY "${ALICE_ROOT}")
+set(CTEST_DASHBOARD_ROOT "$ENV{HOME}/Dashboards")
+# set(CTEST_CHECKOUT_COMMAND "${CTEST_SVN_COMMAND} co ${ALICE_REPO} $ENV{ALICE_ROOT}")
+set(CTEST_UPDATE_COMMAND "${CTEST_SVN_COMMAND}")
+set(CTEST_CMAKE_COMMAND "\"${CMAKE_EXECUTABLE_NAME}\" -D Continuous")
+
+#CMake Generator
+set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
+
+message("Continuous Build Starting")
+
+#****Testing Process****
+while (${CTEST_ELAPSED_TIME} LESS 36000)
+
+ set (START_TIME ${CTEST_ELAPSED_TIME})
+ ctest_start (Continuous)
+
+ #Build only if new revision of source is available
+ while(${OLDREV} EQUAL ${NEWREV} AND ${CYCLE} GREATER 0)
+ message("Updating source")
+ message("Current revision : ${OLDREV}")
+ ctest_update(BUILD "${CTEST_SOURCE_DIRECTORY}")
+ execute_process(COMMAND svn info ${ALICE_ROOT} OUTPUT_VARIABLE _svn_out)
+ string(REGEX REPLACE "^.*Revision: ([^\n]*).*$" "\\1" ALIROOT_SVN_REVISION ${_svn_out})
+ set(NEWREV ${ALIROOT_SVN_REVISION})
+ message("New revision : ${NEWREV}")
+ if(${OLDREV} EQUAL ${NEWREV})
+ message("Source not updated, no need to build source")
+ ctest_sleep(300)
+ endif(${OLDREV} EQUAL ${NEWREV})
+ endwhile()
+ # ctest_submit (PARTS Update)
+ set(OLDREV ${NEWREV})
+ math(EXPR CYCLE "${CYCLE} + 1")
+ message("Build #${CYCLE} ")
+ message("Revision : ${OLDREV}")
+ set (START_TIME ${CTEST_ELAPSED_TIME})
+ math(EXPR CLEAR "${CYCLE}%${CLEARCYCLE}")
+
+ #Clear build directory every CLEARCYCLE build
+ if(${CLEAR} EQUAL 0)
+ message("Clearing build directory")
+ ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY})
+ endif(${CLEAR} EQUAL 0)
+ message(STATUS "Building source")
+ ctest_build(BUILD "${CTEST_BINARY_DIRECTORY}")
+
+ #Test every other build
+ math(EXPR TEST "${CYCLE}%${TESTCYCLE}")
+ if(${TEST} EQUAL 0)
+ message(STATUS "Running tests")
+ ctest_test (BUILD "${CTEST_BINARY_DIRECTORY}")
+ endif(${TEST} EQUAL 0)
+ ctest_submit ()
+ message("Build ${CYCLE} completed")
+ ctest_sleep(300)
+endwhile()
+
+
+
+
--- /dev/null
+add_test("Gun_test" runtest.sh)
\ No newline at end of file
--- /dev/null
+add_test("PPBench_test" runtest.sh)
\ No newline at end of file