install_ffead-cpp-framework.sh 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. #!/bin/bash
  2. #From https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/frameworks/C%2B%2B/ulib/setup_json.sh
  3. MAX_THREADS=$(( 3 * `nproc` / 2 ))
  4. WRIT_THREADS=$(( $MAX_THREADS / 3 ))
  5. SERV_THREADS=$(( $MAX_THREADS - $WRIT_THREADS ))
  6. cd $IROOT
  7. wget -q https://github.com/sumeetchhetri/ffead-cpp/archive/v4.0.zip
  8. unzip v4.0.zip
  9. rm -f v4.0.zip
  10. mv ffead-cpp-4.0 ffead-cpp-src
  11. mv ffead-cpp-src/lang-server-backends ${IROOT}/
  12. cd $IROOT
  13. CURR_TYPE="lithium"
  14. if [ "$CURR_TYPE" = "lithium" ]
  15. then
  16. SRV_TYPE=SRV_LITHIUM
  17. apt install --no-install-recommends -y libboost-all-dev
  18. fi
  19. CURR_TYPE="cinatra"
  20. if [ "$CURR_TYPE" = "cinatra" ]
  21. then
  22. apt install --no-install-recommends -y libboost-all-dev
  23. SRV_TYPE=SRV_CINATRA
  24. CINATRA_INC="-DCINATRA_INCLUDES=${IROOT}/cinatra/include"
  25. git clone https://github.com/sumeetchhetri/cinatra.git
  26. cd cinatra
  27. git checkout sum_master
  28. fi
  29. CURR_TYPE="drogon"
  30. if [ "$CURR_TYPE" = "drogon" ]
  31. then
  32. apt install --no-install-recommends -y libjsoncpp-dev uuid-dev
  33. apt remove -y libsqlite3-dev
  34. SRV_TYPE=SRV_DROGON
  35. git clone --recurse-submodules https://github.com/sumeetchhetri/drogon
  36. cd drogon
  37. mkdir build
  38. cd build
  39. cmake -DCMAKE_BUILD_TYPE=Release ..
  40. make && make install
  41. cd $IROOT
  42. rm -rf drogon
  43. fi
  44. rm -rf /var/lib/apt/lists/*
  45. cd $IROOT/ffead-cpp-src/
  46. chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
  47. rm -rf web/te-benchmark-um
  48. cp -f ${TROOT}/server.sh script/
  49. mv ${TROOT}/te-benchmark-um web/
  50. sed -i 's|THRD_PSIZ=6|THRD_PSIZ='${SERV_THREADS}'|g' resources/server.prop
  51. sed -i 's|W_THRD_PSIZ=2|W_THRD_PSIZ='${WRIT_THREADS}'|g' resources/server.prop
  52. sed -i 's|ENABLE_CRS=true|ENABLE_CRS=false|g' resources/server.prop
  53. sed -i 's|ENABLE_SEC=true|ENABLE_SEC=false|g' resources/server.prop
  54. sed -i 's|ENABLE_FLT=true|ENABLE_FLT=false|g' resources/server.prop
  55. sed -i 's|ENABLE_CNT=true|ENABLE_CNT=true|g' resources/server.prop
  56. sed -i 's|ENABLE_EXT_CNT=true|ENABLE_EXT_CNT=false|g' resources/server.prop
  57. sed -i 's|ENABLE_CNT_MPG=true|ENABLE_CNT_MPG=false|g' resources/server.prop
  58. sed -i 's|ENABLE_CNT_PTH=true|ENABLE_CNT_PTH=false|g' resources/server.prop
  59. sed -i 's|ENABLE_CNT_EXT=true|ENABLE_CNT_EXT=false|g' resources/server.prop
  60. sed -i 's|ENABLE_CNT_RST=true|ENABLE_CNT_RST=true|g' resources/server.prop
  61. sed -i 's|ENABLE_EXT=true|ENABLE_EXT=true|g' resources/server.prop
  62. sed -i 's|ENABLE_SCR=true|ENABLE_SCR=false|g' resources/server.prop
  63. sed -i 's|ENABLE_SWS=true|ENABLE_SWS=false|g' resources/server.prop
  64. sed -i 's|ENABLE_JOBS=true|ENABLE_JOBS=false|g' resources/server.prop
  65. sed -i 's|LOGGING_ENABLED=true|LOGGING_ENABLED=false|g' resources/server.prop
  66. rm -rf web/default web/oauthApp web/flexApp web/markers web/te-benchmark web/peer-server
  67. sed -i 's|localhost|tfb-database|g' web/te-benchmark-um/config/sdorm.xml
  68. sed -i 's|localhost|tfb-database|g' web/te-benchmark-um/config/sdormmongo.xml
  69. sed -i 's|localhost|tfb-database|g' web/te-benchmark-um/config/sdormmysql.xml
  70. sed -i 's|localhost|tfb-database|g' web/te-benchmark-um/config/sdormpostgresql.xml
  71. sed -i 's|127.0.0.1|tfb-database|g' resources/sample-odbcinst.ini
  72. sed -i 's|127.0.0.1|tfb-database|g' resources/sample-odbc.ini
  73. sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/default)||g' CMakeLists.txt
  74. sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/flexApp)||g' CMakeLists.txt
  75. sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/oauthApp)||g' CMakeLists.txt
  76. sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/markers)||g' CMakeLists.txt
  77. sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark)||g' CMakeLists.txt
  78. sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/peer-server)||g' CMakeLists.txt
  79. sed -i 's|install(FILES ${PROJECT_SOURCE_DIR}/web/default/libdefault${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
  80. sed -i 's|install(FILES ${PROJECT_SOURCE_DIR}/web/flexApp/libflexApp${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
  81. sed -i 's|install(FILES ${PROJECT_SOURCE_DIR}/web/oauthApp/liboauthApp${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
  82. sed -i 's|install(FILES ${PROJECT_SOURCE_DIR}/web/markers/libmarkers${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
  83. sed -i 's|install(FILES ${PROJECT_SOURCE_DIR}/web/te-benchmark/libte_benchmark${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
  84. sed -i 's|install(FILES ${PROJECT_SOURCE_DIR}/web/peer-server/libpeer_server${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
  85. sed -i 's|web/default/src/autotools/Makefile||g' configure.ac
  86. sed -i 's|web/flexApp/src/autotools/Makefile||g' configure.ac
  87. sed -i 's|web/oauthApp/src/autotools/Makefile||g' configure.ac
  88. sed -i 's|web/markers/src/autotools/Makefile||g' configure.ac
  89. sed -i 's|web/te-benchmark/src/autotools/Makefile||g' configure.ac
  90. sed -i 's|web/peer-server/src/autotools/Makefile||g' configure.ac
  91. #./autogen.sh
  92. #./configure --enable-debug=no --enable-apachemod=yes --enable-nginxmod=yes --enable-mod_sdormmongo=yes --enable-mod_sdormsql=yes --enable-mod_rediscache=yes --enable-mod_memcached=yes CPPFLAGS="$CPPFLAGS -I${IROOT}/include/libmongoc-1.0 -I${IROOT}/include/libbson-1.0 -I${IROOT}/include/" LDFLAGS="$LDFLAGS -L${IROOT} -L${IROOT}/lib"
  93. cmake -DSRV_ALL=on -DCINATRA_INCLUDES=${IROOT}/cinatra/include -DMOD_APACHE=on -DMOD_NGINX=on -DMOD_MEMCACHED=on -DMOD_REDIS=on -DMOD_SDORM_MONGO=on .
  94. cp resources/sample-odbcinst.ini ${IROOT}/odbcinst.ini
  95. cp resources/sample-odbc.ini ${IROOT}/odbc.ini
  96. #Start building for mongodb as the World model is different for SQL use case
  97. cd ${IROOT}/ffead-cpp-src/
  98. cp -f web/te-benchmark-um/sql-src/TeBkUmWorldmongo.h web/te-benchmark-um/include/TeBkUmWorld.h
  99. cp -f web/te-benchmark-um/sql-src/TeBkUmWorldmongo.cpp web/te-benchmark-um/src/TeBkUmWorld.cpp
  100. make install -j${MAX_THREADS}
  101. rm -f /usr/local/lib/libffead-*
  102. rm -f /usr/local/lib/libte_benc*
  103. rm -f /usr/local/lib/libinter.so
  104. rm -f /usr/local/lib/libdinter.so
  105. cd ffead-cpp-4.0-bin
  106. chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
  107. ./server.sh &
  108. while [ ! -f lib/libinter.so ]
  109. do
  110. sleep 1
  111. done
  112. while [ ! -f lib/libdinter.so ]
  113. do
  114. sleep 1
  115. done
  116. pkill ffead-cpp
  117. cd ${IROOT}/ffead-cpp-src/
  118. cp -rf ffead-cpp-4.0-bin ${IROOT}/ffead-cpp-4.0
  119. rm -rf ffead-cpp-4.0-bin
  120. cd ${IROOT}/ffead-cpp-4.0
  121. cp -f ${TROOT}/run_ffead.sh ./
  122. chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
  123. chmod 755 *.sh
  124. rm -f *.cntrl
  125. rm -f tmp/*.sess
  126. #cache related dockerfiles will add the cache.xml accordingly whenever needed
  127. rm -f web/te-benchmark-um/config/cache.xml
  128. #Done building for mongodb
  129. #Start building for sql as the World model is different for mongodb use case
  130. cd ${IROOT}/ffead-cpp-src/
  131. cp -f web/te-benchmark-um/sql-src/TeBkUmWorldsql.h web/te-benchmark-um/include/TeBkUmWorld.h
  132. cp -f web/te-benchmark-um/sql-src/TeBkUmWorldsql.cpp web/te-benchmark-um/src/TeBkUmWorld.cpp
  133. make install -j${MAX_THREADS}
  134. cd ffead-cpp-4.0-bin
  135. chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
  136. ./server.sh &
  137. while [ ! -f lib/libinter.so ]
  138. do
  139. sleep 1
  140. done
  141. while [ ! -f lib/libdinter.so ]
  142. do
  143. sleep 1
  144. done
  145. pkill ffead-cpp
  146. cd ${IROOT}/ffead-cpp-src/
  147. cp -rf ffead-cpp-4.0-bin ${IROOT}/ffead-cpp-4.0-sql
  148. rm -rf ffead-cpp-4.0-bin
  149. cd ${IROOT}/ffead-cpp-4.0-sql
  150. cp -f ${TROOT}/run_ffead.sh ./
  151. chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
  152. chmod 755 *.sh
  153. rm -f *.cntrl
  154. rm -f tmp/*.sess
  155. #cache related dockerfiles will add the cache.xml accordingly whenever needed
  156. rm -f web/te-benchmark-um/config/cache.xml
  157. #Done building for sql