Commit 93150629 authored by Charles Delort's avatar Charles Delort
Browse files

tag COOL_3_1_6 for LCG86


git-svn-id: file:///git/lcgcool.svndb/cool/tags/COOL_3_1_6@20195 4525493e-7705-40b1-a816-d608a930855b
parents 22220acf b5266449
......@@ -4,6 +4,12 @@ project(COOL)
# Sanity checks and debug printouts for new lcgcmake builds (CORALCOOL-2846)
message(STATUS "====== WELCOME TO COOL CMakeLists.txt =======")
string(TIMESTAMP date "%Y-%m-%d %H:%M:%S")
message(STATUS "Date is ${date}")
cmake_host_system_information(RESULT host QUERY HOSTNAME)
message(STATUS "Hostname is ${host}")
message(STATUS "OS is ${CMAKE_HOST_SYSTEM_NAME} ${CMAKE_HOST_SYSTEM_VERSION}")
message(STATUS "=============================================")
# Require BINARY_TAG to be set a priori (CORALCOOL-2846).
# [Do not set BINARY_TAG from host arch/os/compiler any more (CORALCOOL-2851)]
......@@ -18,6 +24,9 @@ ENDIF()
# Note that the C and C++ compiler paths are usually inferred from CC and CXX.
# Most of these are only CMake variables, not environment variables, and some
# are CORAL/COOL-specific (see https://cmake.org/Wiki/CMake_Useful_Variables)
message(STATUS "Boost_ADDITIONAL_VERSIONS is ${Boost_ADDITIONAL_VERSIONS}")
message(STATUS "Boost_COMPILER is ${Boost_COMPILER}")
message(STATUS "Boost_NO_BOOST_CMAKE is ${Boost_NO_BOOST_CMAKE}")
message(STATUS "CMAKE_BINARY_DIR is ${CMAKE_BINARY_DIR}")
message(STATUS "CMAKE_BUILD_TYPE is ${CMAKE_BUILD_TYPE}")
message(STATUS "CMAKE_C_COMPILER is ${CMAKE_C_COMPILER}")
......@@ -36,28 +45,6 @@ message(STATUS "=============================================")
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
# Workarounds for lcgcmake without HEPToolsMacros.cmake
# See CORALCOOL-2806 (1.59) and CORALCOOL-2903 (1.61)
# See also CORALCOOL-2846 for how this is likely to change eventually
set(Boost_ADDITIONAL_VERSIONS "1.59.0" "1.59" "1.61.0" "1.61")
# Workaround for CORALCOOL-2806 (CMAKE_COMPILER_IS_GNUCXX not set on Mac/clang)
IF(CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin")
set(Boost_COMPILER "-xgcc42")
# Workaround for SPI-842 (Boost tag is -clang38 for clang38 builds)
ELSEIF(BINARY_TAG MATCHES "clang38")
set(Boost_COMPILER "-clang38")
# Workaround for SPI-842 (Boost tag is -clang37 for clang37 builds)
ELSEIF(BINARY_TAG MATCHES "clang37")
set(Boost_COMPILER "-clang37")
# Workaround for SPI-842 (Boost tag is -gcc49 for clang35 builds)
###ELSEIF(BINARY_TAG MATCHES "clang")
### set(Boost_COMPILER "-gcc49")
# Workaround for SPI-842 and CORALCOOL-2797 (Boost tag is -il for icc15 builds)
ELSEIF(BINARY_TAG MATCHES "icc")
set(Boost_COMPILER "-il")
ENDIF()
# Print out a banner after any other targets are built
# Add a dependency of this target on all other targets of this project
# See http://stackoverflow.com/questions/25240105/
......
# - Locate libaio library
# Defines:
#
# LIBAIO_FOUND
# LIBAIO_LIBRARIES
# LIBAIO_LIBRARY_DIRS (not cached)
find_library(LIBAIO_LIBRARIES NAMES aio)
get_filename_component(LIBAIO_LIBRARY_DIRS ${LIBAIO_LIBRARIES} PATH)
# handle the QUIETLY and REQUIRED arguments and set LIBAIO_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Libaio DEFAULT_MSG LIBAIO_LIBRARIES)
mark_as_advanced(LIBAIO_FOUND LIBAIO_LIBRARIES)
......@@ -14,6 +14,7 @@ find_path(ORACLE_INCLUDE_DIR oci.h)
find_library(ORACLE_LIBRARY NAMES clntsh oci)
find_program(SQLPLUS_EXECUTABLE NAMES sqlplus
HINTS ${ORACLE_INCLUDE_DIR}/../bin)
find_package(Libaio)
# handle the QUIETLY and REQUIRED arguments and set ORACLE_FOUND to TRUE if
# all listed variables are TRUE
......
# Set the default LCG_XX release version
lcg_xx=81f
lcg_xx=85
lcgrel=
#-------------------------------------------------------------------------------
......@@ -24,8 +24,8 @@ topdir=`cd ${topdir}; pwd`
usage()
{
echo "Usage: . $BASH_SOURCE [-b <BINARY_TAG>] [-l <lcg_xx>|-r <path_to_lcgrel>]" > /dev/stderr
echo "Example: . $BASH_SOURCE -l LCG_85"
echo "Usage: . $BASH_SOURCE [-b <BINARY_TAG>] [-l <xx_for_lcgxx>|-r <path_to_lcgrel>]" > /dev/stderr
echo "Example: . $BASH_SOURCE -l 85"
echo "Example: . $BASH_SOURCE -r /cvmfs/sft.cern.ch/lcg/releases/LCG_85"
echo "Example: . $BASH_SOURCE -b x86_64-slc6-clang37-opt -r /afs/cern.ch/sw/lcg/app/nightlies/dev2/Mon"
echo "Example: . $BASH_SOURCE -b aarch64-ubuntu1404-gcc49-opt -r /home/${USER}/nightlies/20160207"
......@@ -40,7 +40,7 @@ fi
# Optionally choose an LCG release from command line arguments
# [Default: use the variable lcg_xx defined at the top of this script]
if [ "$1" == "-r" ]; then
if [ "$2" != "" ]; then lcgrel=$2; shift 2; else usage; return 1; fi
if [ "$2" != "" ]; then lcgrel=${2%/}; shift 2; else usage; return 1; fi
else
if [ "$1" == "-l" ]; then
if [ "$2" != "" ]; then lcg_xx=$2; shift 2; else usage; return 1; fi
......@@ -85,7 +85,7 @@ echo "INFO: set up CORAL/COOL for BINARY_TAG ${BINARY_TAG}"
# Set up CMAKE_PREFIX_PATH for the given release (CORALCOOL-2846)
# Keep both tcmalloc and gperftools for now (eventually drop tcmalloc)
# [NB CORAL is included, any local build must be prepended a posteriori]
for pkgname in ninja ccache Boost CppUnit expat frontier_client mysql oracle Python QMtest sqlite XercesC gperftools tcmalloc igprof libunwind valgrind CORAL ROOT qt; do
for pkgname in ccache Boost CppUnit expat frontier_client mysql oracle Python QMtest sqlite XercesC gperftools tcmalloc igprof libaio libunwind valgrind CORAL ROOT qt; do
pkgpath=${lcgrel}/${pkgname}
if [ -d ${pkgpath} ]; then
export CMAKE_PREFIX_PATH=`find ${pkgpath} -mindepth 2 -maxdepth 2 -name ${BINARY_TAG}`:${CMAKE_PREFIX_PATH}
......@@ -101,11 +101,15 @@ done
# This file is created by lcgjenkins/extract_LCG_summary.py for release LCG_XX
# Do not extract BINARY_TAG from the PLATFORM line any longer (CORALCOOL-2846)
# Do not build CMAKE_PREFIX_PATH from this file any longer (CORALCOOL-2846)
# Warn if CC and CXX are already set, as these will be overridden by new values
lcgsum=${lcgrel}/LCG_externals_${BINARY_TAG}.txt
if [ -f ${lcgsum} ]; then
echo "INFO: set up compiler from ${lcgsum}"
comfla=`egrep "^COMPILER:" $lcgsum | sed "s|^COMPILER:||" | awk '{split($0,a,";"); print a[1]}' | awk '{sub(/^ +/, ""); print}'`
comver=`egrep "^COMPILER:" $lcgsum | sed "s|^COMPILER:||" | awk '{split($0,a,";"); print a[2]}' | awk '{sub(/^ +/, ""); print}'`
if [ "$CC" != "" ]; then echo "WARNING! CC will be overridden" > /dev/stderr; fi
if [ "$CXX" != "" ]; then echo "WARNING! CXX will be overridden" > /dev/stderr; fi
if [ "$comfla" == "gcc" ]; then
export CC=lcg-gcc-${comver}
export CXX=lcg-g++-${comver}
......@@ -200,14 +204,38 @@ elif [[ $BINARY_TAG == *clang37* ]]; then # See CORALCOOL-2821
fi
#-------------------------------------------------------------------------------
# Set up Cmake
# Set up Boost extra configuration for CMake as in lcgcmake (SPI-842)
#-------------------------------------------------------------------------------
# Use the installation in the LCG release if it exists (CORALCOOL-2846)
# Set path to CMake 3.6.0 from /cvmfs/sft.cern.ch/lcg/contrib otherwise
# Follow the same logic as in lcgcmake/cmake/toolchain/heptools-common.cmake
# See CORALCOOL-2806 (mac), SPI-842 (clang) and CORALCOOL-2797 (icc)
if [[ $BINARY_TAG == *mac* ]]; then
Boost_COMPILER=" -DBoost_COMPILER=-xgcc42"
elif [[ $BINARY_TAG == *clang* ]]; then
Boost_COMPILER=${BINARY_TAG%-*}
Boost_COMPILER=" -DBoost_COMPILER=-${Boost_COMPILER#*-*-}"
elif [[ $BINARY_TAG == *icc* ]]; then
Boost_COMPILER=" -DBoost_COMPILER=-il"
else
Boost_COMPILER=
fi
# Always add Boost 1.59 (LCG80-84) and 1.61 (LCG85 and above)
# See CORALCOOL-2806 (1.59) and CORALCOOL-2903 (1.61)
# Add only the two-digit Boost version as in Pere's lcgcmake patch (SPI-842)
Boost_extra_configuration="-DBoost_NO_BOOST_CMAKE=ON -DBoost_ADDITIONAL_VERSIONS='1.59 1.61'$Boost_COMPILER"
#-------------------------------------------------------------------------------
# Set up CMake
#-------------------------------------------------------------------------------
# Use CMake 3.6.0 from /cvmfs/sft.cern.ch/lcg/contrib on Linux
# Use AFS if no cvmfs (e.g. on buildcoverity, SPI-863)
if [ -d ${lcgrel}/CMake ]; then
export PATH=`find ${lcgrel}/CMake -mindepth 2 -maxdepth 2 -name ${BINARY_TAG}`:${PATH}
# [Do not use the LCG stack cmake on Linux as it may use a different GLIBCXX]
if [ `uname -s` != "Linux" ]; then
if [ -d ${lcgrel}/CMake ]; then
export PATH=`find ${lcgrel}/CMake -mindepth 2 -maxdepth 2 -name ${BINARY_TAG}`/bin:${PATH}
fi
elif [ -d /cvmfs ]; then
export PATH=/cvmfs/sft.cern.ch/lcg/contrib/CMake/3.6.0/Linux-x86_64/bin:$PATH
else
......@@ -218,14 +246,16 @@ fi
# Set up ninja
#-------------------------------------------------------------------------------
# Use ninja for faster builds (make for top-level commands, ninja internally)!
# Use the installation in the LCG release if it exists (CORALCOOL-2846)
# [Moved back here from Makefile (SPI-854, CORALCOOL-2912, CORALCOOL-2846)]
# Use ninja 1.4.0 from /cvmfs/sft.cern.ch/lcg/contrib/ninja on Linux
# Use AFS if no cvmfs (e.g. on buildcoverity, SPI-863)
# The hardcoded ninja path is valid on Linux but not on Darwin (CORALCOOL-2911)
if [ -d ${lcgrel}/ninja ]; then
export PATH=`find ${lcgrel}/ninja -mindepth 2 -maxdepth 2 -name ${BINARY_TAG}`:${PATH}
elif [ `uname -s` == "Linux" ]; then
# [Do not use the LCG stack ninja on Linux as it may use a different GLIBCXX]
if [ `uname -s` != "Linux" ]; then
if [ -d ${lcgrel}/ninja ]; then
export PATH=`find ${lcgrel}/ninja -mindepth 2 -maxdepth 2 -name ${BINARY_TAG}`/bin:${PATH}
export CMAKE_PREFIX_PATH=`find ${lcgrel}/ninja -mindepth 2 -maxdepth 2 -name ${BINARY_TAG}`:${CMAKE_PREFIX_PATH}
fi
else
if [ -d /cvmfs/sft.cern.ch/lcg/contrib/ninja/1.4.0/x86_64-slc6 ]; then
export PATH=/cvmfs/sft.cern.ch/lcg/contrib/ninja/1.4.0/x86_64-slc6:$PATH
else
......@@ -239,7 +269,7 @@ fi
# Use the installation in the LCG release if it exists (CORALCOOL-2846)
if [ -d ${lcgrel}/ccache ]; then
export PATH=`find ${lcgrel}/CMake -mindepth 2 -maxdepth 2 -name ${BINARY_TAG}`:${PATH}
export PATH=`find ${lcgrel}/ccache -mindepth 2 -maxdepth 2 -name ${BINARY_TAG}`/bin:${PATH}
fi
# Configure the ccache directory (CORALCOOL-2844 and CORALCOOL-2846)
......@@ -278,6 +308,10 @@ CMAKEFLAGS="-DCMAKE_CXX_FLAGS=$CMAKE_CXX_FLAGS $CMAKEFLAGS"
# See https://github.com/ninja-build/ninja/issues/900
###CMAKEFLAGS="-DCMAKE_VERBOSE_MAKEFILE=ON $CMAKEFLAGS"
# Set Boost_ADDITIONAL_VERSIONS, Boost_COMPILER, Boost_NO_BOOST_CMAKE
# [These are CMake standard variables]
CMAKEFLAGS="$Boost_extra_configuration $CMAKEFLAGS"
# Enable ccache by default
# [This is a CORAL/COOL variable, not a CMake standard variable]
CMAKEFLAGS="-DCMAKE_USE_CCACHE=ON $CMAKEFLAGS"
......@@ -306,3 +340,18 @@ if [ -f $topdir/overrideSetupCMake.sh ]; then
else
echo "INFO: no overrides found"
fi
#-------------------------------------------------------------------------------
# Dump all variables set by the setupLCG.sh script
#-------------------------------------------------------------------------------
###echo BINARY_TAG=$BINARY_TAG
###echo CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH
###echo CMAKEFLAGS=$CMAKEFLAGS
###echo PATH=$PATH
###echo CC=$CC
###echo CXX=$CXX
###echo LCG_release_area=$LCG_release_area
###echo LCG_hostos=$LCG_hostos
###echo CCACHE_DIR=$CCACHE_DIR
###echo CCACHE_CONFIGPATH=$CCACHE_CONFIGPATH
......@@ -58,7 +58,8 @@ IF(NOT BINARY_TAG MATCHES "aarch64")
###coral_build_and_release_env(SET TNS_ADMIN /afs/cern.ch/sw/lcg/app/releases/CORAL/internal/oracle/admin/adminNoKerberos) # See CORALCOOL-1244
coral_build_and_release_env(DEFAULT TNS_ADMIN /afs/cern.ch/sw/lcg/app/releases/CORAL/internal/oracle/admin/adminNoKerberos) # See CORALCOOL-2890
else()
coral_build_and_release_env(SET TNS_ADMIN /afs/cern.ch/sw/lcg/app/releases/CORAL/internal/oracle/admin)
###coral_build_and_release_env(SET TNS_ADMIN /afs/cern.ch/sw/lcg/app/releases/CORAL/internal/oracle/admin)
coral_build_and_release_env(DEFAULT TNS_ADMIN /afs/cern.ch/sw/lcg/app/releases/CORAL/internal/oracle/admin) # See CORALCOOL-2956
endif()
ENDIF()
......
......@@ -724,6 +724,10 @@ class DatabaseTest(StandardTest):
# Drop old user lcgnight, keep only sftnight (see CORALCOOL-2191)
if sys.platform.startswith("win") :
raise RuntimeError("Windows is no longer supported!")
elif "CORAL_AUTH_PATH" in os.environ and "CORAL_DBLOOKUP_PATH" in os.environ :
# Do not overload CORAL_AUTH_PATH/CORAL_DBLOOKUP_PATH
# for user sftnight if they are already set (CORALCOOL-2956)
pass
elif sys.platform.startswith("darwin") and "USER" in env and \
env["USER"] == "sftnight" :
# Use credentials from $HOME/private on Mac (CORALCOOL-1083)
......
1. Building from PyCool/dict executes two commands:
export PYTHONPATH="M:\external\Boost\1.32.0_python242\win32_vc71\lib\python2.4\site-packages;M:\app\releases\SEAL\SEAL_1_7_9\win32_vc71_dbg\lib;M:\app\releases\SEAL\SEAL_1_7_9\win32_vc71_dbg\python;M:\external\root\5.08.00\win32_vc71\root\bin;M:\app\releases\COOL\internal\avalassi\COOL_HEAD\win32_vc71_dbg_wine\bin;M:\app\releases\COOL\internal\avalassi\COOL_HEAD\win32_vc71_dbg_wine\lib;M:\app\releases\COOL\internal\avalassi\COOL_HEAD\win32_vc71_dbg_wine\python;M:\app\releases\COOL\internal\avalassi\COOL_HEAD\win32_vc71_dbg_wine\bin;M:\app\releases\COOL\internal\avalassi\COOL_HEAD\win32_vc71_dbg_wine\lib;M:\app\releases\COOL\internal\avalassi\COOL_HEAD\win32_vc71_dbg_wine\python";
wine /afs/cern.ch/sw/lcg/external/Python/2.4.2/win32_vc71/python.exe M:\\app\\releases\\SEAL\\SEAL_1_7_9\\win32_vc71_dbg\\bin\\lcgdict.py M:\\app\\releases\\COOL\\internal\\avalassi\\COOL_HEAD\\src\\PyCool\\dict\\PyCool_headers.h -s M:\\app\\releases\\COOL\\internal\\avalassi\\COOL_HEAD\\src\\PyCool\\dict\\PyCool_selection.xml -o M:\\app\\releases\\COOL\\internal\\avalassi\\COOL_HEAD\\tmp\\win32_vc71_dbg_wine\\src\\PyCool\\dict\\PyCool_headers_dict.cpp --split --reflex --gccxmlpath=M:\\external\\gccxml\\0.6.0_patch3\\win32_vc71\\bin
-I/afs/cern.ch/sw/lcg/app/releases/COOL/internal/avalassi/COOL_HEAD/src/PyCool -I/afs/cern.ch/sw/lcg/app/releases/COOL/internal/avalassi/COOL_HEAD/src/CoolApplication -I/afs/cern.ch/sw/lcg/app/releases/COOL/internal/avalassi/COOL_HEAD/src/CoolKernel -I/afs/cern.ch/sw/lcg/app/releases/SEAL/SEAL_1_7_9/src/Foundation/SealBase -I/win32_vc71_dbg_wine/include -I/afs/cern.ch/sw/lcg/app/releases/SEAL/SEAL_1_7_9/src/Foundation/SealPlatform -I/afs/cern.ch/sw/lcg/app/releases/CORAL/CORAL_1_2_1/src/CoralBase -I/afs/cern.ch/sw/lcg/app/releases/SEAL/SEAL_1_7_9/src/Framework/SealKernel -I/afs/cern.ch/sw/lcg/app/releases/SEAL/SEAL_1_7_9/src/Foundation/PluginManager -I/afs/cern.ch/sw/lcg/app/releases/POOL/POOL_2_2_7/src/AttributeList -I/afs/cern.ch/sw/lcg/app/releases/POOL/POOL_2_2_7/src/POOLCore -I/afs/cern.ch/sw/lcg/app/releases/SEAL/SEAL_1_7_9/src/Dictionary/Reflection -I/afs/cern.ch/sw/lcg/app/releases/SEAL/SEAL_1_7_9/src/Framework/SealServices -I/afs/cern.ch/sw/lcg/app/releases/SEAL/SEAL_1_7_9/src/Dictionary/Reflex -I/afs/cern.ch/sw/lcg/external/uuid/1.38/win32_vc71/include -I/afs/cern.ch/sw/lcg/external/Boost/1.32.0_python242/win32_vc71/include/boost-1_32 -I/afs/cern.ch/sw/lcg/external/Python/2.4.2/win32_vc71/include -I/afs/cern.ch/sw/lcg/external/pcre/4.4/win32_vc71/include -I/afs/cern.ch/sw/lcg/app/releases/SEAL/SEAL_1_7_9/src -I/afs/cern.ch/sw/lcg/app/releases/SEAL/SEAL_1_7_9/win32_vc71_dbg/include -I/afs/cern.ch/sw/lcg/app/releases/POOL/POOL_2_2_7/src -I/afs/cern.ch/sw/lcg/app/releases/CORAL/CORAL_1_2_1/src -I/opt/avalassi/wine/win32/dosdevices/c:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/include -I/opt/avalassi/wine/win32/dosdevices/c:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/PlatformSDK/Include -D_GNU_SOURCE -DGNU_SOURCE -DWIN32 -D_MBCS -D_WINDOWS -DSEAL_KERNEL_BUILD_ARCHIVE -D_DEBUG -DLCGDICT_STRING
where in the second case I separated the command from the long include path.
2. Build by hand a simplified test case
Just execute two commands (export and wine)...
but first you must be in bash and create a directory tmp.
bash
export PYTHONPATH="M:\external\Boost\1.32.0_python242\win32_vc71\lib\python2.4\site-packages;M:\app\releases\SEAL\SEAL_1_7_9\win32_vc71_dbg\lib;M:\app\releases\SEAL\SEAL_1_7_9\win32_vc71_dbg\python;M:\external\root\5.08.00\win32_vc71\root\bin;M:\app\releases\COOL\internal\avalassi\COOL_HEAD\win32_vc71_dbg_wine\bin;M:\app\releases\COOL\internal\avalassi\COOL_HEAD\win32_vc71_dbg_wine\lib;M:\app\releases\COOL\internal\avalassi\COOL_HEAD\win32_vc71_dbg_wine\python;M:\app\releases\COOL\internal\avalassi\COOL_HEAD\win32_vc71_dbg_wine\bin;M:\app\releases\COOL\internal\avalassi\COOL_HEAD\win32_vc71_dbg_wine\lib;M:\app\releases\COOL\internal\avalassi\COOL_HEAD\win32_vc71_dbg_wine\python";
\rm -rf tmp
mkdir -p tmp
wine /afs/cern.ch/sw/lcg/external/Python/2.4.2/win32_vc71/python.exe M:\\app\\releases\\SEAL\\SEAL_1_7_9\\win32_vc71_dbg\\bin\\lcgdict.py wineTest.h -s wineTest.xml -o tmp/wineTest_dict.cpp --split --reflex --gccxmlpath=M:\\external\\gccxml\\0.6.0_patch3\\win32_vc71\\bin
This hangs on "Parsing file wineTest.h with GCC_XML".
From another window,
ps -xfa | more
reveals the two processes that are stuck:
18451 pts/4 S 0:00 \_ /opt/avalassi/wine/wine-20050930-install/bin/wine-preloader /opt/avalassi/wine/wine-20050930-install/bin/wine-pthread c:\windows\system32\wcmd.exe /c M:\external\gccxml\0.6.0_patch3\win32_vc71\bin\gccxml wineTest.h -fxml=tmp\wineTest.xml -D__REFLEX__
18452 pts/4 S 0:12 \_ /opt/avalassi/wine/wine-20050930-install/bin/wine-preloader /opt/avalassi/wine/wine-20050930-install/bin/wine-pthread M:\external\gccxml\0.6.0_patch3\win32_vc71\bin\gccxml wineTest.h -fxml=tmp\wineTest.xml -D__REFLEX__
These are the two typical processes that must be killed to complete the build.
3. Execute gccxml from wine directly
bash
export PYTHONPATH="M:\external\Boost\1.32.0_python242\win32_vc71\lib\python2.4\site-packages;M:\app\releases\SEAL\SEAL_1_7_9\win32_vc71_dbg\lib;M:\app\releases\SEAL\SEAL_1_7_9\win32_vc71_dbg\python;M:\external\root\5.08.00\win32_vc71\root\bin;M:\app\releases\COOL\internal\avalassi\COOL_HEAD\win32_vc71_dbg_wine\bin;M:\app\releases\COOL\internal\avalassi\COOL_HEAD\win32_vc71_dbg_wine\lib;M:\app\releases\COOL\internal\avalassi\COOL_HEAD\win32_vc71_dbg_wine\python;M:\app\releases\COOL\internal\avalassi\COOL_HEAD\win32_vc71_dbg_wine\bin;M:\app\releases\COOL\internal\avalassi\COOL_HEAD\win32_vc71_dbg_wine\lib;M:\app\releases\COOL\internal\avalassi\COOL_HEAD\win32_vc71_dbg_wine\python";
\rm -rf tmp
mkdir -p tmp
wine /afs/cern.ch/sw/lcg/external/gccxml/0.6.0_patch3/win32_vc71/bin/gccxml wineTest.h -fxml=tmp/wineTest.xml -D__REFLEX__
This hangs, indeed. It is the simplest example that hangs.
Note that wineTest.xml here is the output of gccxml, not the input
to Reflex (and in fact it is in a different temporary directory!)
4. Recipe to kill the processes from another window
a. Wait for "Parsing file" on the build window
b. On the second window, type
ps -xfa | grep gccxml | grep -v grep
Wait until there are only two processes
(i.e. until gccxml_cc1plus has finished)
c. On the second window, kill the two processes using
kill `ps -xfa | grep gccxml | grep -v grep | awk '{print $1}'`
PS Another possibility could be to replace gccxml by gccxml_cc1plus
with the correct settings, but these are too long to be all displayed.
You can get a hint at them by typing
wine /afs/cern.ch/sw/lcg/external/gccxml/0.6.0_patch3/win32_vc71/bin/gccxml --print
Also, it is difficult to pass to wine some options with a lot of ().
class boost::shared_ptr<const pool::AttributeListSpecification>
class boost::shared_ptr<cool::IDatabase>
class boost::shared_ptr<cool::IFolder>
class boost::shared_ptr<cool::IFolderSet>
class boost::shared_ptr<cool::IObject>
class boost::shared_ptr<cool::IObjectIterator>
class boost::shared_ptr<pool::AttributeBaseValue>
class boost::shared_ptr<pool::AttributeListSpecification>
class cool::Application
class cool::DatabaseDoesNotExist
class cool::DatabaseNotOpen
class cool::DatabaseSvcFactory
class cool::Exception
class cool::FolderIsSingleVersion
class cool::FolderNotFound
class cool::FolderSetNotFound
class cool::IDatabase
class cool::IDatabaseSvc
class cool::IFolder
class cool::IFolderSet
class cool::IHvsNode
class cool::IObject
class cool::IObjectIterator
class cool::NodeExists
class cool::ObjectNotFound
class cool::ReservedHeadTag
class cool::TagExists
class cool::TagNotFound
class cool::ValidityIntervalBackwards
class cool::ValidityKeyException
class cool::ValidityKeyHelper
class cool::ValidityKeyOutOfBoundaries
class __gnu_cxx::__normal_iterator<pool::Attribute*,std::vector<pool::Attribute> >
class pool::AttrHelper<double>
class pool::AttrHelper<float>
class pool::AttrHelper<int>
class pool::AttrHelper<std::basic_string<char> >
class pool::Attribute
class pool::attribute_bad_type
class pool::AttributeBaseValue
class pool::attribute_duplicate
class pool::AttributeImplFactory
class pool::attribute_internal_error
class pool::AttributeList
class pool::AttributeListSpecification
class pool::attribute_not_found
class pool::AttributeSpecification
class pool::BaseAttributeFactory
class seal::Time
class std::auto_ptr<seal::Application>
class std::type_info
class std::vector<pool::Attribute>
class std::vector<pool::Attribute*>
class boost::shared_ptr<const pool::AttributeListSpecification>
class boost::shared_ptr<cool::IDatabase>
class boost::shared_ptr<cool::IFolder>
class boost::shared_ptr<cool::IFolderSet>
class boost::shared_ptr<cool::IObject>
class boost::shared_ptr<cool::IObjectIterator>
class boost::shared_ptr<pool::AttributeBaseValue>
class boost::shared_ptr<pool::AttributeListSpecification>
class cool::Application
class cool::DatabaseDoesNotExist
class cool::DatabaseNotOpen
class cool::DatabaseSvcFactory
class cool::Exception
class cool::FolderIsSingleVersion
class cool::FolderNotFound
class cool::FolderSetNotFound
class cool::IDatabase
class cool::IDatabaseSvc
class cool::IFolder
class cool::IFolderSet
class cool::IHvsNode
class cool::IObject
class cool::IObjectIterator
class cool::NodeExists
class cool::ObjectNotFound
class cool::ReservedHeadTag
class cool::TagExists
class cool::TagNotFound
class cool::ValidityIntervalBackwards
class cool::ValidityKeyException
class cool::ValidityKeyHelper
class cool::ValidityKeyOutOfBoundaries
class __gnu_cxx::__normal_iterator<pool::Attribute*,std::vector<pool::Attribute> >
class pool::AttrHelper<double>
class pool::AttrHelper<float>
class pool::AttrHelper<int>
class pool::AttrHelper<std::basic_string<char> >
class pool::Attribute
class pool::attribute_bad_type
class pool::AttributeBaseValue
class pool::attribute_duplicate
class pool::AttributeImplFactory
class pool::attribute_internal_error
class pool::AttributeList
class pool::AttributeListSpecification
class pool::attribute_not_found
class pool::AttributeSpecification
class pool::BaseAttributeFactory
class seal::Time
class std::auto_ptr<seal::Application>
class std::iterator<std::random_access_iterator_tag,pool::Attribute,int,pool::Attribute*,pool::Attribute&>
class std::type_info
class std::_Vector_alloc_base<pool::AttributeSpecification,std::allocator<pool::AttributeSpecification>,true>
class std::_Vector_alloc_base<pool::Attribute,std::allocator<pool::Attribute>,true>
class std::_Vector_alloc_base<pool::Attribute*,std::allocator<pool::Attribute*>,true>
class std::_Vector_base<pool::AttributeSpecification,std::allocator<pool::AttributeSpecification> >
class std::_Vector_base<pool::Attribute,std::allocator<pool::Attribute> >
class std::_Vector_base<pool::Attribute*,std::allocator<pool::Attribute*> >
class std::vector<pool::Attribute>
class std::vector<pool::Attribute*>
class std::vector<pool::AttributeSpecification>
#include <string>
class dummy_class {
public:
std::string s;
};
<lcgdict>
<selection>
<class name="std::string" />
</selection>
</lcgdict>
The four log files contain the results of the tests executed by building
a stripped down version of test_RelationalFolder.cpp, i.e. essentially
test_RelationalFolder.cpp.gmtime (only test_gmtime_timegm enabled, with
verbose output, empty setup, and tests enabled for isdst=0, -1 and +1).
- out.Windows.p1.adjustTimeZone
From test_RelationalFolder.cpp.gmtime (both +1 and -1 tests enabled).
It fails on isdst=+1 in January.
Executed with PC clock set to "automatically adjust summer time".
- out.Windows.m1.adjustTimeZone
From test_RelationalFolder.cpp.gmtime modified so that the isdst=+1
test is disabled. It fails on isdst=-1 in April.
Executed with PC clock set to "automatically adjust summer time".
- out.Windows.noTest.adjustTimeZone
From test_RelationalFolder.cpp.gmtime modified so that the isdst=+1
and isdst=-1 tests are both disabled. It succeeds but prints out all.
Executed with PC clock set to "automatically adjust summer time".
- out.Windows.doNotAdjustTimeZone
From test_RelationalFolder.cpp.gmtime (both +1 and -1 tests enabled),
i.e. the same setup as for out.Windows.p1.adjustTimeZone. It succeeds.
Executed with PC clock set to "DO NOT automatically adjust summer time".
-------------------------------------------------------------------------------
For reference, the executable is rebuilt using the following two commands:
cl.exe /nologo /c /I\\afs\all\cern.ch\sw\lcg\app\releases\COOL\COOL_1_2_0\src\RelationalCool /I\\afs\all\cern.ch\sw\lcg\app\releases\COOL\COOL_1_2_0\src\CoolKernel /I\\afs\all\cern.ch\sw\lcg\app\releases\SEAL\SEAL_1_6_3\src\Foundation\SealBase /IL:\cygwin\win32_vc71_dbg\include /I\\afs\all\cern.ch\sw\lcg\app\releases\SEAL\SEAL_1_6_3\src\Foundation\SealPlatform /I\\afs\all\cern.ch\sw\lcg\app\releases\POOL\POOL_2_1_0\src\AttributeList /I\\afs\all\cern.ch\sw\lcg\app\releases\POOL\POOL_2_1_0\src\POOLCore /I\\afs\all\cern.ch\sw\lcg\app\releases\SEAL\SEAL_1_6_3\src\Framework\SealKernel /I\\afs\all\cern.ch\sw\lcg\app\releases\SEAL\SEAL_1_6_3\src\Foundation\PluginManager /I\\afs\all\cern.ch\sw\lcg\app\releases\POOL\POOL_2_1_0\src\RelationalAccess /I\\afs\all\cern.ch\sw\lcg\app\releases\SEAL\SEAL_1_6_3\src\Foundation\SealUtil /I\\afs\all\cern.ch\sw\lcg\app\releases\COOL\COOL_1_2_0\src\CoolApplication /I\\afs\all\cern.ch\sw\lcg\app\releases\SEAL\SEAL_1_6_3\src\Dictionary\Reflection /I\\afs\all\cern.ch\sw\lcg\app\releases\SEAL\SEAL_1_6_3\src\Framework\SealServices /I\\afs\all\cern.ch\sw\lcg\app\releases\COOL\COOL_1_2_0\src\RelationalCool\tests\Common /I\\afs\all\cern.ch\sw\lcg\external\uuid\1.32\win32_vc71\include /I\\afs\all\cern.ch\sw\lcg\external\Boost\1.31.0\win32_vc71\include\boost-1_31 /I\\afs\all\cern.ch\sw\lcg\external\CppUnit\1.8.0\win32_vc71\include /I\\afs\all\cern.ch\sw\lcg\external\pcre\4.4\win32_vc71\include /I\\afs\all\cern.ch\sw\lcg\app\releases\SEAL\SEAL_1_6_3\src /I\\afs\all\cern.ch\sw\lcg\app\releases\SEAL\SEAL_1_6_3\win32_vc71_dbg\include /I\\afs\all\cern.ch\sw\lcg\app\releases\POOL\POOL_2_1_0\src /Ic:\Program\ Files\Microsoft\ Visual\ Studio\ .NET\ 2003\VC7\include /Ic:\Program\ Files\Microsoft\ Visual\ Studio\ .NET\ 2003\VC7\PlatformSDK\Include /D_GNU_SOURCE /DGNU_SOURCE /DWIN32 /D_MBCS /D_WINDOWS /DSEAL_KERNEL_BUILD_ARCHIVE /D_DEBUG /W3 /WL /GR /GX /GF /GS /MD /Zm500 /Od /Z7 /Fo\\afs\all\cern.ch\sw\lcg\app\releases\COOL\COOL_1_2_0\tmp\win32_vc71_dbg\src\RelationalCool\tests\RelationalFolder\test_RelationalFolder.obj \\afs\all\cern.ch\sw\lcg\app\releases\COOL\COOL_1_2_0\src\RelationalCool\tests\RelationalFolder\test_RelationalFolder.cpp
link.exe /NOLOGO /OUT:\\afs\all\cern.ch\sw\lcg\app\releases\COOL\COOL_1_2_0\win32_vc71_dbg\tests\bin\unitTest_RelationalCool_RelationalFolder.exe /EXETYPE:DYNAMIC /DEBUG /INCREMENTAL:NO /LIBPATH:\\afs\all\cern.ch\sw\lcg\app\releases\COOL\COOL_1_2_0\win32_vc71_dbg\lib /LIBPATH:\\afs\all\cern.ch\sw\lcg\external\uuid\1.32\win32_vc71\lib /LIBPATH:\\afs\all\cern.ch\sw\lcg\external\Boost\1.31.0\win32_vc71\lib /LIBPATH:\\afs\all\cern.ch\sw\lcg\external\CppUnit\1.8.0\win32_vc71\lib /LIBPATH:\\afs\all\cern.ch\sw\lcg\external\pcre\4.4\win32_vc71\lib /LIBPATH:\\afs\all\cern.ch\sw\lcg\app\releases\SEAL\SEAL_1_6_3\win32_vc71_dbg\lib /LIBPATH:\\afs\all\cern.ch\sw\lcg\app\releases\POOL\POOL_2_1_0\win32_vc71_dbg\lib /LIBPATH:c:\Program\ Files\Microsoft\ Visual\ Studio\ .NET\ 2003\VC7\lib /LIBPATH:c:\Program\ Files\Microsoft\ Visual\ Studio\ .NET\ 2003\VC7\PlatformSDK\Lib lcg_SealBase.lib lcg_AttributeList.lib lcg_POOLCore.lib lcg_PluginManager.lib lcg_SealKernel.lib lcg_RelationalAccess.lib lcg_SealUtil.lib lcg_RelationalCool.lib lcg_CoolApplication.lib lcg_Reflection.lib lcg_SealServices.lib uuid.lib cppunit_dll.lib libpcre.lib /nodefaultlib kernel32.lib user32.lib msvcprt.lib msvcrt.lib oldnames.lib \\afs\all\cern.ch\sw\lcg\app\releases\COOL\COOL_1_2_0\tmp\win32_vc71_dbg\src\RelationalCool\tests\RelationalFolder\test_RelationalFolder.obj
Test test_gmtime_timegm
Before setting isdst: aTm = 1970-1-3 12:1:2
Before calling timegm: aTm = 1970-1-3 12:1:2 (DST=-1)
After calling timegm: aTm = 1970-1-3 12:1:2 (DST=0)
Before calling timegm: aTm = 1970-1-3 12:1:2 (DST=0)
After calling timegm: aTm = 1970-1-3 12:1:2 (DST=0)
Before calling timegm: aTm = 1970-1-3 12:1:2 (DST=1)
After calling timegm: aTm = 1970-1-3 12:1:2 (DST=0)
aTm = 1970-1-3 12:1:2 (DST=-1,0,+1)
aTimetM1 = 216062
aTmM1 = 1970-1-3 12:1:2 (DST=0)
aTimet0 = 216062
aTm0 = 1970-1-3 12:1:2 (DST=0)
aTimetP1 = 216062
aTmP1 = 1970-1-3 12:1:2 (DST=0)
Test test_gmtime_timegm
Before setting isdst: aTm = 1970-2-3 12:1:2
Before calling timegm: aTm = 1970-2-3 12:1:2 (DST=-1)
After calling timegm: aTm = 1970-2-3 12:1:2 (DST=0)
Before calling timegm: aTm = 1970-2-3 12:1:2 (DST=0)
After calling timegm: aTm = 1970-2-3 12:1:2 (DST=0)
Before calling timegm: aTm = 1970-2-3 12:1:2 (DST=1)
After calling timegm: aTm = 1970-2-3 12:1:2 (DST=0)
aTm = 1970-2-3 12:1:2 (DST=-1,0,+1)
aTimetM1 = 2894462
aTmM1 = 1970-2-3 12:1:2 (DST=0)
aTimet0 = 2894462
aTm0 = 1970-2-3 12:1:2 (DST=0)
aTimetP1 = 2894462
aTmP1 = 1970-2-3 12:1:2 (DST=0)
Test test_gmtime_timegm
Before setting isdst: aTm = 1970-3-3 12:1:2
Before calling timegm: aTm = 1970-3-3 12:1:2 (DST=-1)
After calling timegm: aTm = 1970-3-3 12:1:2 (DST=0)
Before calling timegm: aTm = 1970-3-3 12:1:2 (DST=0)
After calling timegm: aTm = 1970-3-3 12:1:2 (DST=0)
Before calling timegm: aTm = 1970-3-3 12:1:2 (DST=1)
After calling timegm: aTm = 1970-3-3 12:1:2 (DST=0)
aTm = 1970-3-3 12:1:2 (DST=-1,0,+1)
aTimetM1 = 5313662
aTmM1 = 1970-3-3 12:1:2 (DST=0)
aTimet0 = 5313662
aTm0 = 1970-3-3 12:1:2 (DST=0)
aTimetP1 = 5313662
aTmP1 = 1970-3-3 12:1:2 (DST=0)
Test test_gmtime_timegm
Before setting isdst: aTm = 1970-4-3 12:1:2
Before calling timegm: aTm = 1970-4-3 12:1:2 (DST=-1)
After calling timegm: aTm = 1970-4-3 12:1:2 (DST=0)
Before calling timegm: aTm = 1970-4-3 12:1:2 (DST=0)
After calling timegm: aTm = 1970-4-3 12:1:2 (DST=0)
Before calling timegm: aTm = 1970-4-3 12:1:2 (DST=1)
After calling timegm: aTm = 1970-4-3 12:1:2 (DST=0)
aTm = 1970-4-3 12:1:2 (DST=-1,0,+1)
aTimetM1 = 7992062
aTmM1 = 1970-4-3 12:1:2 (DST=0)
aTimet0 = 7992062
aTm0 = 1970-4-3 12:1:2 (DST=0)
aTimetP1 = 7992062
aTmP1 = 1970-4-3 12:1:2 (DST=0)
Test test_gmtime_timegm
Before setting isdst: aTm = 1970-5-3 12:1:2
Before calling timegm: aTm = 1970-5-3 12:1:2 (DST=-1)
After calling timegm: aTm = 1970-5-3 12:1:2 (DST=0)
Before calling timegm: aTm = 1970-5-3 12:1:2 (DST=0)
After calling timegm: aTm = 1970-5-3 12:1:2 (DST=0)
Before calling timegm: aTm = 1970-5-3 12:1:2 (DST=1)
After calling timegm: aTm = 1970-5-3 12:1:2 (DST=0)
aTm = 1970-5-3 12:1:2 (DST=-1,0,+1)
aTimetM1 = 10584062
aTmM1 = 1970-5-3 12:1:2 (DST=0)
aTimet0 = 10584062
aTm0 = 1970-5-3 12:1:2 (DST=0)
aTimetP1 = 10584062
aTmP1 = 1970-5-3 12:1:2 (DST=0)
Test test_gmtime_timegm
Before setting isdst: aTm = 1970-6-3 12:1:2
Before calling timegm: aTm = 1970-6-3 12:1:2 (DST=-1)
After calling timegm: aTm = 1970-6-3 12:1:2 (DST=0)
Before calling timegm: aTm = 1970-6-3 12:1:2 (DST=0)
After calling timegm: aTm = 1970-6-3 12:1:2 (DST=0)
Before calling timegm: aTm = 1970-6-3 12:1:2 (DST=1)
After calling timegm: aTm = 1970-6-3 12:1:2 (DST=0)
aTm = 1970-6-3 12:1:2 (DST=-1,0,+1)
aTimetM1 = 13262462
aTmM1 = 1970-6-3 12:1:2 (DST=0)
aTimet0 = 13262462
aTm0 = 1970-6-3 12:1:2 (DST=0)
aTimetP1 = 13262462
aTmP1 = 1970-6-3 12:1:2 (DST=0)
Test test_gmtime_timegm
Before setting isdst: aTm = 1970-7-3 12:1:2
Before calling timegm: aTm = 1970-7-3 12:1:2 (DST=-1)
After calling timegm: aTm = 1970-7-3 12:1:2 (DST=0)
Before calling timegm: aTm = 1970-7-3 12:1:2 (DST=0)
After calling timegm: aTm = 1970-7-3 12:1:2 (DST=0)
Before calling timegm: aTm = 1970-7-3 12:1:2 (DST=1)
After calling timegm: aTm = 1970-7-3 12:1:2 (DST=0)
aTm = 1970-7-3 12:1:2 (DST=-1,0,+1)
aTimetM1 = 15854462
aTmM1 = 1970-7-3 12:1:2 (DST=0)
aTimet0 = 15854462
aTm0 = 1970-7-3 12:1:2 (DST=0)
aTimetP1 = 15854462
aTmP1 = 1970-7-3 12:1:2 (DST=0)
Test test_gmtime_timegm
Before setting isdst: aTm = 1970-8-3 12:1:2
Before calling timegm: aTm = 1970-8-3 12:1:2 (DST=-1)
After calling timegm: aTm = 1970-8-3 12:1:2 (DST=0)
Before calling timegm: aTm = 1970-8-3 12:1:2 (DST=0)
After calling timegm: aTm = 1970-8-3 12:1:2 (DST=0)
Before calling timegm: aTm = 1970-8-3 12:1:2 (DST=1)
After calling timegm: aTm = 1970-8-3 12:1:2 (DST=0)
aTm = 1970-8-3 12:1:2 (DST=-1,0,+1)
aTimetM1 = 18532862
aTmM1 = 1970-8-3 12:1:2 (DST=0)
aTimet0 = 18532862
aTm0 = 1970-8-3 12:1:2 (DST=0)
aTimetP1 = 18532862
aTmP1 = 1970-8-3 12:1:2 (DST=0)
Test test_gmtime_timegm
Before setting isdst: aTm = 1970-9-3 12:1:2
Before calling timegm: aTm = 1970-9-3 12:1:2 (DST=-1)
After calling timegm: aTm = 1970-9-3 12:1:2 (DST=0)
Before calling timegm: aTm = 1970-9-3 12:1:2 (DST=0)
After calling timegm: aTm = 1970-9-3 12:1:2 (DST=0)
Before calling timegm: aTm = 1970-9-3 12:1:2 (DST=1)