install_ffead-cpp-framework.sh 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. #!/bin/bash
  2. apt update -yqq && apt install --no-install-recommends -yqq rapidjson-dev libpugixml-dev
  3. #From https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/frameworks/C%2B%2B/ulib/setup_json.sh
  4. MAX_THREADS=$(( 3 * `nproc` / 2 ))
  5. WRIT_THREADS=$(( $MAX_THREADS / 3 ))
  6. SERV_THREADS=$(( $MAX_THREADS - $WRIT_THREADS ))
  7. git checkout 92c3a9e3d5ec1de4a909fe688d649d7f31e050c0 -b 6.0
  8. #git clone https://github.com/sumeetchhetri/ffead-cpp
  9. cd ffead-cpp
  10. rm -rf .git
  11. cd ..
  12. mv ffead-cpp ffead-cpp-src
  13. mv ffead-cpp-src/lang-server-backends ${IROOT}/
  14. cd $IROOT/ffead-cpp-src/
  15. chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
  16. #rm -rf web/t1
  17. #rm -rf web/t3
  18. #rm -rf web/t2
  19. #rm -rf web/t4
  20. #rm -rf web/t5
  21. mv ${IROOT}/server.sh script/
  22. #mv ${IROOT}/t1 web/
  23. #mv ${IROOT}/t3 web/
  24. #mv ${IROOT}/t2 web/
  25. #mv ${IROOT}/t4 web/
  26. #mv ${IROOT}/t5 web/
  27. sed -i 's|THRD_PSIZ=6|THRD_PSIZ='${SERV_THREADS}'|g' resources/server.prop
  28. sed -i 's|W_THRD_PSIZ=2|W_THRD_PSIZ='${WRIT_THREADS}'|g' resources/server.prop
  29. sed -i 's|ENABLE_CRS=true|ENABLE_CRS=false|g' resources/server.prop
  30. sed -i 's|ENABLE_SEC=true|ENABLE_SEC=false|g' resources/server.prop
  31. sed -i 's|ENABLE_FLT=true|ENABLE_FLT=false|g' resources/server.prop
  32. sed -i 's|ENABLE_CNT=true|ENABLE_CNT=true|g' resources/server.prop
  33. sed -i 's|ENABLE_EXT_CNT=true|ENABLE_EXT_CNT=false|g' resources/server.prop
  34. sed -i 's|ENABLE_CNT_MPG=true|ENABLE_CNT_MPG=false|g' resources/server.prop
  35. sed -i 's|ENABLE_CNT_PTH=true|ENABLE_CNT_PTH=false|g' resources/server.prop
  36. sed -i 's|ENABLE_CNT_EXT=true|ENABLE_CNT_EXT=false|g' resources/server.prop
  37. sed -i 's|ENABLE_CNT_RST=true|ENABLE_CNT_RST=true|g' resources/server.prop
  38. sed -i 's|ENABLE_EXT=true|ENABLE_EXT=true|g' resources/server.prop
  39. sed -i 's|ENABLE_SCR=true|ENABLE_SCR=false|g' resources/server.prop
  40. sed -i 's|ENABLE_SWS=true|ENABLE_SWS=false|g' resources/server.prop
  41. sed -i 's|ENABLE_JOBS=true|ENABLE_JOBS=false|g' resources/server.prop
  42. sed -i 's|LOGGING_ENABLED=true|LOGGING_ENABLED=false|g' resources/server.prop
  43. sed -i 's|EVH_SINGLE=true|EVH_SINGLE=false|g' resources/server.prop
  44. rm -rf web/default web/oauthApp web/flexApp web/markers web/te-benchmark web/peer-server
  45. sed -i 's|localhost|tfb-database|g' web/t1/config/sdormmongo.xml
  46. sed -i 's|localhost|tfb-database|g' web/t1/config/sdormmysql.xml
  47. sed -i 's|localhost|tfb-database|g' web/t1/config/sdormpostgresql.xml
  48. sed -i 's|localhost|tfb-database|g' web/t3/config/sdorm.xml
  49. sed -i 's|localhost|tfb-database|g' web/t2/config/sdorm.xml
  50. sed -i 's|localhost|tfb-database|g' web/t4/config/sdorm.xml
  51. sed -i 's|localhost|tfb-database|g' web/t5/config/sdorm.xml
  52. sed -i 's|127.0.0.1|tfb-database|g' resources/sample-odbcinst.ini
  53. sed -i 's|127.0.0.1|tfb-database|g' resources/sample-odbc.ini
  54. sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/default)||g' CMakeLists.txt
  55. sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/flexApp)||g' CMakeLists.txt
  56. sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/oauthApp)||g' CMakeLists.txt
  57. sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/markers)||g' CMakeLists.txt
  58. sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark)||g' CMakeLists.txt
  59. sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/peer-server)||g' CMakeLists.txt
  60. sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/default/libdefault${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
  61. sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/flexApp/libflexApp${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
  62. sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/oauthApp/liboauthApp${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
  63. sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/markers/libmarkers${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
  64. sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark/libte-benchmark${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
  65. sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/peer-server/libpeer-server${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
  66. sed -i 's|web/default/src/autotools/Makefile||g' configure.ac
  67. sed -i 's|web/flexApp/src/autotools/Makefile||g' configure.ac
  68. sed -i 's|web/oauthApp/src/autotools/Makefile||g' configure.ac
  69. sed -i 's|web/markers/src/autotools/Makefile||g' configure.ac
  70. sed -i 's|web/te-benchmark/src/autotools/Makefile||g' configure.ac
  71. sed -i 's|web/peer-server/src/autotools/Makefile||g' configure.ac
  72. #./autogen.sh
  73. #./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"
  74. 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 -DDEBUG=${DEBUG} -DWITH_RAPIDJSON=on -DWITH_PUGIXML=on .
  75. cp resources/sample-odbcinst.ini ${IROOT}/odbcinst.ini
  76. cp resources/sample-odbc.ini ${IROOT}/odbc.ini
  77. #Start building for mongodb as the World model is different for SQL use case
  78. cd ${IROOT}/ffead-cpp-src/
  79. cp -f web/t1/sql-src/TeBkUmWorldmongo.h web/t1/include/TeBkUmWorld.h
  80. cp -f web/t1/sql-src/TeBkUmWorldmongo.cpp web/t1/src/TeBkUmWorld.cpp
  81. make install -j${MAX_THREADS}
  82. rm -f /usr/local/lib/libffead-*
  83. rm -f /usr/local/lib/libt1.so*
  84. rm -f /usr/local/lib/libt2.so*
  85. rm -f /usr/local/lib/libt3.so*
  86. rm -f /usr/local/lib/libt4.so*
  87. rm -f /usr/local/lib/libt5.so*
  88. rm -f /usr/local/lib/libinter.so
  89. rm -f /usr/local/lib/libdinter.so
  90. if [ ! -d "ffead-cpp-6.0-bin" ]
  91. then
  92. exit 1
  93. fi
  94. cd ffead-cpp-6.0-bin
  95. #cache related dockerfiles will add the cache.xml accordingly whenever needed
  96. chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
  97. ./server.sh &
  98. COUNTER=0
  99. while [ ! -f lib/libinter.so ]
  100. do
  101. sleep 1
  102. COUNTER=$((COUNTER+1))
  103. if [ "$COUNTER" = 120 ]
  104. then
  105. cat logs/jobs.log
  106. echo "ffead-cpp exiting exiting due to failure...."
  107. exit 1
  108. fi
  109. done
  110. COUNTER=0
  111. while [ ! -f lib/libdinter.so ]
  112. do
  113. sleep 1
  114. COUNTER=$((COUNTER+1))
  115. if [ "$COUNTER" = 120 ]
  116. then
  117. cat logs/jobs.log
  118. echo "ffead-cpp exiting exiting due to failure....ddlib"
  119. exit 1
  120. fi
  121. done
  122. echo "ffead-cpp start successful"
  123. sleep 5
  124. cd tests && rm -f test.csv && cp ${IROOT}/ffead-cpp-src/tests/test-te.csv test.csv && chmod +x *.sh && ./runTests.sh
  125. echo "ffead-cpp normal shutdown"
  126. pkill ffead-cpp
  127. cd ${IROOT}/ffead-cpp-src/
  128. cp -rf ffead-cpp-6.0-bin ${IROOT}/ffead-cpp-6.0
  129. rm -rf ffead-cpp-6.0-bin
  130. mv ${IROOT}/nginxfc ${IROOT}/nginx-ffead-mongo
  131. cd ${IROOT}/ffead-cpp-6.0
  132. chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
  133. chmod 755 *.sh
  134. rm -f *.cntrl
  135. rm -f tmp/*.sess
  136. #Done building for mongodb
  137. #Start building for sql as the World model is different for mongodb use case
  138. cd ${IROOT}/ffead-cpp-src/
  139. cp -f web/t1/sql-src/TeBkUmWorldsql.h web/t1/include/TeBkUmWorld.h
  140. cp -f web/t1/sql-src/TeBkUmWorldsql.cpp web/t1/src/TeBkUmWorld.cpp
  141. make install -j${MAX_THREADS}
  142. if [ ! -d "ffead-cpp-6.0-bin" ]
  143. then
  144. exit 1
  145. fi
  146. cd ffead-cpp-6.0-bin
  147. #cache related dockerfiles will add the cache.xml accordingly whenever needed
  148. chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
  149. ./server.sh &
  150. COUNTER=0
  151. while [ ! -f lib/libinter.so ]
  152. do
  153. sleep 1
  154. COUNTER=$((COUNTER+1))
  155. if [ "$COUNTER" = 120 ]
  156. then
  157. cat logs/jobs.log
  158. echo "ffead-cpp exiting exiting due to failure...."
  159. exit 1
  160. fi
  161. done
  162. COUNTER=0
  163. while [ ! -f lib/libdinter.so ]
  164. do
  165. sleep 1
  166. COUNTER=$((COUNTER+1))
  167. if [ "$COUNTER" = 120 ]
  168. then
  169. cat logs/jobs.log
  170. echo "ffead-cpp exiting exiting due to failure....ddlib"
  171. exit 1
  172. fi
  173. done
  174. echo "ffead-cpp start successful"
  175. sleep 5
  176. cd tests && rm -f test.csv && cp ${IROOT}/ffead-cpp-src/tests/test-te.csv test.csv && chmod +x *.sh && ./runTests.sh
  177. echo "ffead-cpp normal shutdown"
  178. pkill ffead-cpp
  179. cd ${IROOT}/ffead-cpp-src/
  180. cp -rf ffead-cpp-6.0-bin ${IROOT}/ffead-cpp-6.0-sql
  181. rm -rf ffead-cpp-6.0-bin
  182. mv ${IROOT}/nginxfc ${IROOT}/nginx-ffead-sql
  183. cd ${IROOT}/ffead-cpp-6.0-sql
  184. chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
  185. chmod 755 *.sh
  186. rm -f *.cntrl
  187. rm -f tmp/*.sess
  188. #Done building for sql