From 94ddd0d4f967120afcfcf20877d6de5484a4c2e7 Mon Sep 17 00:00:00 2001 From: Andreas Stallinger Date: Wed, 30 Nov 2016 12:01:46 +0100 Subject: [PATCH] build: linux libs * libEGL * stdc++ * ... --- .gitlab-ci.yml | 13 ++++++++++ CMakeLists.txt | 27 ++++++++------------ cmake/CLANGConfig.cmake | 28 ++++++++++++++++---- cmake/LinuxPackage.cmake | 48 +++++++++++++++++++++++++---------- cmake/pre_install_linux.cmake | 2 +- script/buildonly.sh | 1 + script/setup.sh | 11 +++++--- setup/Linux/Coati.sh | 2 +- setup/license.txt | 13 ++++++++++ 9 files changed, 103 insertions(+), 42 deletions(-) create mode 100644 .gitlab-ci.yml create mode 100644 setup/license.txt diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..8eebb38a --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,13 @@ +image: st4ll1/coati_linux_64 + +Linux64: + stage: deploy + only: + - master + script: + - ./script/setup.sh + - ./script/buildonly.sh package + artifacts: + paths: + - distr + expire_in: 3 days diff --git a/CMakeLists.txt b/CMakeLists.txt index 14512ac1..ed32f73c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -53,9 +53,10 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-warning-option -fcolor-diagnostics") endif() -if (UNIX AND "${CMAKE_BUILD_TYPE}" STREQUAL "Release") - add_definitions(-fno-omit-frame-pointer -DQT_COMPILING_QSTRING_COMPAT_CPP ) -endif () +# For debugging the release build on linux +#if (UNIX AND "${CMAKE_BUILD_TYPE}" STREQUAL "Release") + #add_definitions(-fno-omit-frame-pointer) +#endif () # Clang ------------------------------------------------------------------------ @@ -66,7 +67,7 @@ if (UNIX AND APPLE) find_package(LLVM REQUIRED PATHS "$ENV{CLANG_DIR}/build_debug/share/llvm/cmake" NO_DEFAULT_PATH) endif() elseif(UNIX) - find_package(LLVM REQUIRED PATHS "${EXTERNAL_BUILD}/llvm/share/llvm/cmake" NO_DEFAULT_PATH) + find_package(LLVM REQUIRED PATHS "$ENV{LLVM_DIR}/lib/cmake" ) else() find_package(LLVM REQUIRED PATHS "$ENV{CLANG_DIR}/build/share/llvm/cmake") endif() @@ -78,14 +79,14 @@ add_definitions(${CLANG_DEFINITIONS}) # Boost ------------------------------------------------------------------------ if(UNIX AND NOT APPLE) - set(BOOST_ROOT ${EXTERNAL_BUILD}/boost) + set(BOOST_ROOT $ENV{BOOST_DIR}) else() set(BOOST_ROOT $ENV{BOOST_159_DIR}) + set(Boost_NO_SYSTEM_PATHS ON) endif() set(Boost_USE_MULTITHREAD ON) set(Boost_USE_STATIC_LIBS ON) set(Boost_USE_STATIC_RUNTIME OFF) -set(Boost_NO_SYSTEM_PATHS ON) set(BOOST_LIBRARYDIR $ENV{BOOST_159_DIR}) find_package(Boost 1.59 COMPONENTS system program_options filesystem date_time REQUIRED) @@ -181,7 +182,7 @@ set_property( ) target_include_directories(${LIB_PROJECT_NAME} SYSTEM - PUBLIC ${Boost_INCLUDE_DIRS} + PUBLIC ${Boost_INCLUDE_DIR} "${CMAKE_SOURCE_DIR}/src/external" ) @@ -260,11 +261,7 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) # Find the QtWidgets library -if(UNIX AND NOT APPLE) - #set(CMAKE_PREFIX_PATH ${EXTERNAL_BUILD}/qt) -else() - set(CMAKE_PREFIX_PATH "$ENV{QT_DIR}/") -endif() +set(CMAKE_PREFIX_PATH "$ENV{QT_DIR}/") if(UNIX AND APPLE) set(Qt5Widgets_DIR "$ENV{QT_DIR}/cmake/Qt5Widgets/") @@ -494,11 +491,7 @@ endif () add_subdirectory(src/test) -if(UNIX AND NOT APPLE) - set(CXXTEST_INCLUDE_DIR ${EXTERNAL_SRC}/cxxtest) -else() - set(CXXTEST_INCLUDE_DIR $ENV{CXX_TEST_DIR}) -endif() +set(CXXTEST_INCLUDE_DIR $ENV{CXX_TEST_DIR}) set(CXXTEST_PYTHON_TESTGEN_EXECUTABLE ${CXXTEST_INCLUDE_DIR}/bin/cxxtestgen) set(TESTGEN_FILE ${CMAKE_CURRENT_BINARY_DIR}/test_main.cpp) diff --git a/cmake/CLANGConfig.cmake b/cmake/CLANGConfig.cmake index 9f31d4a8..cce5f380 100644 --- a/cmake/CLANGConfig.cmake +++ b/cmake/CLANGConfig.cmake @@ -7,15 +7,28 @@ if (UNIX AND APPLE) set(CLANG_BUILD_PATH "$ENV{CLANG_DIR}/build_debug") endif() elseif(UNIX) - set(CLANG_BUILD_PATH "${EXTERNAL_BUILD}/llvm") + set(CLANG_BUILD_PATH "$ENV{LLVM_DIR}") else() set(CLANG_BUILD_PATH "$ENV{CLANG_DIR}/build") endif() +if (UNIX AND NOT APPLE) + find_program( + LLVMCONFIG + llvm-config + PATHS "${CLANG_BUILD_PATH}/bin" + ) + execute_process( + COMMAND ${LLVMCONFIG} --cxxflags + OUTPUT_VARIABLE CLANG_DEFINITIONS + OUTPUT_STRIP_TRAILING_WHITESPACE + ) +else() execute_process( COMMAND ${CLANG_BUILD_PATH}/bin/llvm-config --cxxflags OUTPUT_VARIABLE CLANG_DEFINITIONS ) +endif() # Remove unwanted flags string(REPLACE "-fno-exceptions" "" CLANG_DEFINITIONS "${CLANG_DEFINITIONS}") @@ -26,10 +39,15 @@ if(CMAKE_COMPILER_IS_GNUCXX) endif() if(UNIX AND NOT APPLE) - set(CLANG_INCLUDE_DIRS - "${EXTERNAL_SRC}/clang/include" - "${CLANG_BUILD_PATH}/tools/clang/include" - ) + execute_process( + COMMAND ${LLVMCONFIG} --includedir + OUTPUT_VARIABLE CLANG_INCLUDE_DIRS + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + #set(CLANG_INCLUDE_DIRS + #"${EXTERNAL_SRC}/clang/include" + #"${CLANG_BUILD_PATH}/tools/clang/include" + #) else() set(CLANG_INCLUDE_DIRS "$ENV{CLANG_DIR}/llvm/tools/clang/include" diff --git a/cmake/LinuxPackage.cmake b/cmake/LinuxPackage.cmake index 3cd38fbc..1292b846 100644 --- a/cmake/LinuxPackage.cmake +++ b/cmake/LinuxPackage.cmake @@ -1,6 +1,6 @@ function(InstallQtModule module qtversion componentName) - get_filename_component(realpath ${EXTERNAL_BUILD}/qt/lib/libQt5${module}.so.${qtversion} REALPATH) + get_filename_component(realpath $ENV{QT_DIR}/lib/libQt5${module}.so.${qtversion} REALPATH) INSTALL(FILES ${realpath} DESTINATION Coati/lib @@ -9,6 +9,30 @@ function(InstallQtModule module qtversion componentName) ) endfunction(InstallQtModule) +function(GetAndInstallLibrary libraryName componentName) + execute_process( + COMMAND ${CMAKE_CXX_COMPILER} -print-file-name=${libraryName} + OUTPUT_VARIABLE LIB + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + message(STATUS "lib: ${LIB}") + + get_filename_component(realPath ${LIB} REALPATH) + string(REGEX MATCH "([^\/]*)$" fileName ${realPath}) + + string(REGEX MATCH ".*\.so\.[^.]*" SHORTER ${fileName}) + if (NOT EXISTS ${realPath}) + message(WARNING "${libraryName} not found") + else() + INSTALL(FILES + ${realPath} + DESTINATION Coati/lib + COMPONENT ${componentName} + RENAME ${SHORTER} + ) + endif() +endfunction(GetAndInstallLibrary) + function(InstallQt qtversion componentName) InstallQtModule(Gui ${qtversion} ${componentName}) InstallQtModule(Core ${qtversion} ${componentName}) @@ -48,16 +72,17 @@ function(AddSharedToComponent componentName) InstallQt(5 ${componentName}) - get_filename_component(realpath ${LIBSTDCPP} REALPATH) - INSTALL(FILES - #C++ - ${realpath} - DESTINATION Coati/lib - COMPONENT ${componentName} - ) + GetAndInstallLibrary(libicui18n.so ${componentName}) + GetAndInstallLibrary(libicudata.so ${componentName}) + GetAndInstallLibrary(libicuuc.so ${componentName}) + GetAndInstallLibrary(libudev.so ${componentName}) + GetAndInstallLibrary(libpng.so ${componentName}) + GetAndInstallLibrary(libEGL.so ${componentName}) + GetAndInstallLibrary(libselinux.so ${componentName}) + #GetAndInstallLibrary(libstdc++.so ${componentName}) INSTALL(FILES - ${EXTERNAL_BUILD}/qt/plugins/platforms/libqxcb.so + $ENV{QT_DIR}/plugins/platforms/libqxcb.so DESTINATION Coati/platforms COMPONENT ${componentName} ) @@ -79,11 +104,6 @@ function(AddSharedToComponent componentName) ) endfunction(AddSharedToComponent) -execute_process( - COMMAND clang -print-file-name=libstdc++.so.6 - OUTPUT_VARIABLE LIBSTDCPP - OUTPUT_STRIP_TRAILING_WHITESPACE -) # Add shared files to full and trial version AddSharedToComponent(FULL) diff --git a/cmake/pre_install_linux.cmake b/cmake/pre_install_linux.cmake index 382c9b5b..1c7c13e1 100644 --- a/cmake/pre_install_linux.cmake +++ b/cmake/pre_install_linux.cmake @@ -15,7 +15,7 @@ endfunction() set(upxPath ${CMAKE_CURRENT_LIST_DIR}/../bin/app/Release) execute_process( - COMMAND ${upxPath}/Coati -z $ENV{HOME}/dev/license.txt + COMMAND ${upxPath}/Coati -z ${CMAKE_CURRENT_LIST_DIR}/../setup/license.txt ) execute_process( diff --git a/script/buildonly.sh b/script/buildonly.sh index 0464311a..b3dadbc1 100755 --- a/script/buildonly.sh +++ b/script/buildonly.sh @@ -1,5 +1,6 @@ #!/bin/bash +set -e # Determine path to script MY_PATH=`dirname "$0"` diff --git a/script/setup.sh b/script/setup.sh index 10790e0f..afb2769f 100755 --- a/script/setup.sh +++ b/script/setup.sh @@ -1,5 +1,7 @@ #!/bin/bash +set -e + ABORT="\033[31mAbort:\033[00m" SUCCESS="\033[32mSuccess:\033[00m" INFO="\033[33mInfo:\033[00m" @@ -27,15 +29,16 @@ ROOT_DIR=$ROOT_DIR/.. # Enter masterproject directory cd $ROOT_DIR - # git settings echo -e $INFO "install git settings" git config commit.template setup/git/git_commit_template.txt git config color.ui true +if [ -d ".git/hooks" ] +then cp setup/git/git_pre_commit_hook.sh .git/hooks/pre-commit cp setup/git/git_pre_push_hook.sh .git/hooks/pre-push - +fi # Copy necessary jars for java indexer echo -e $INFO "copy jars for java indexer" @@ -84,9 +87,9 @@ if [ $PLATFORM == "Windows" ]; then elif [ $PLATFORM == "Linux" ]; then echo -e $INFO "create symbolic links for data" cd $ROOT_DIR/bin/app/Release - ln -s ../data + ln -s -f ../data cd $ROOT_DIR/bin/app/Debug - ln -s ../data + ln -s -f ../data cd $ROOT_DIR fi diff --git a/setup/Linux/Coati.sh b/setup/Linux/Coati.sh index a0a7d678..70bb547b 100755 --- a/setup/Linux/Coati.sh +++ b/setup/Linux/Coati.sh @@ -16,7 +16,7 @@ if [ ! -d "${HOME}/.config/coati" ]; then echo "First start of Coati from this user, copy default configfiles to ~/.config/coati" fi -cp -rn "$COATI_PATH/user/*" "${HOME}/.config/coati/" +cp -rn "$COATI_PATH/user"/* "${HOME}/.config/coati/" export LD_LIBRARY_PATH="$COATI_PATH/lib:LD_LIBRARY_PATH" export QT_XKB_CONFIG_ROOT="/usr/share/X11/xkb:$QT_XKB_CONFIG_ROOT" diff --git a/setup/license.txt b/setup/license.txt new file mode 100644 index 00000000..7e903174 --- /dev/null +++ b/setup/license.txt @@ -0,0 +1,13 @@ +-----BEGIN LICENSE----- +builder +builder license +Coati 0 +$9$AQAKIJ1UwEq5cZQujDjiHaO9R7B/KN9a6JVxppbOcZ4VSvEFRlSn +hBa0BMnyCdcL95VDSSC13m+BC/GTxweqaR2lBrF6NzVlIDeCjhBGv80 +L5SBw8yaNRx9LOZAnwGWw2IG7lclSuraqECIqVE3o2ooFC4xSg9KC6F +4Xqq2Fw8rtPCJ3HwkLZzhMhQg208cdLlyOPXL/dPa1AqZiIar4cnF/0 +sJDjxpk5C8CvpD4dq0JOs6Xs6KF8Uc7Gwp0UfnwQ0nlOl8TL63ukb8T +/70Rmzm5cnwM4iz+BdzfCVnhBgyLwCzJe+/5dF4KlVJxiW/f0GinsmU +byuZAQUqcCuVSxZXHBthmsLCN9ZWeAsR+Xvv9WRCs018nuk67BnZ5Aq +sdDRu0Q4GBEg== +-----END LICENSE-----