old-rebuild-wekan.sh 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. #!/bin/bash
  2. echo "Note: If you use other locale than en_US.UTF-8 , you need to additionally install en_US.UTF-8"
  3. echo " with 'sudo dpkg-reconfigure locales' , so that MongoDB works correctly."
  4. echo " You can still use any other locale as your main locale."
  5. #Below script installs newest node 8.x for Debian/Ubuntu/Mint.
  6. #NODE_VERSION=12.21.0
  7. #X64NODE="https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz"
  8. function pause(){
  9. read -p "$*"
  10. }
  11. function cprec(){
  12. if [[ -d "$1" ]]; then
  13. if [[ ! -d "$2" ]]; then
  14. sudo mkdir -p "$2"
  15. fi
  16. for i in $(ls -A "$1"); do
  17. cprec "$1/$i" "$2/$i"
  18. done
  19. else
  20. sudo cp "$1" "$2"
  21. fi
  22. }
  23. # sudo npm doesn't work right, so this is a workaround
  24. function npm_call(){
  25. TMPDIR="/tmp/tmp_npm_prefix"
  26. if [[ -d "$TMPDIR" ]]; then
  27. rm -rf $TMPDIR
  28. fi
  29. mkdir $TMPDIR
  30. NPM_PREFIX="$(npm config get prefix)"
  31. npm config set prefix $TMPDIR
  32. npm "$@"
  33. npm config set prefix "$NPM_PREFIX"
  34. echo "Moving files to $NPM_PREFIX"
  35. for i in $(ls -A $TMPDIR); do
  36. cprec "$TMPDIR/$i" "$NPM_PREFIX/$i"
  37. done
  38. rm -rf $TMPDIR
  39. }
  40. #function wekan_repo_check(){
  41. ## UNCOMMENTING, IT'S NOT REQUIRED THAT /HOME/USERNAME IS /HOME/WEKAN
  42. # git_remotes="$(git remote show 2>/dev/null)"
  43. # res=""
  44. # for i in $git_remotes; do
  45. # res="$(git remote get-url $i | sed 's/.*wekan\/wekan.*/wekan\/wekan/')"
  46. # if [[ "$res" == "wekan/wekan" ]]; then
  47. # break
  48. # fi
  49. # done
  50. #
  51. # if [[ "$res" != "wekan/wekan" ]]; then
  52. # echo "$PWD is not a wekan repository"
  53. # exit;
  54. # fi
  55. #}
  56. echo
  57. PS3='Please enter your choice: '
  58. options=("Install Wekan dependencies" "Build Wekan" "Run Meteor for dev on http://localhost:4000" "Run Meteor for dev on http://CURRENT-IP-ADDRESS:4000" "Run Meteor for dev on http://CUSTOM-IP-ADDRESS:PORT" "Quit")
  59. select opt in "${options[@]}"
  60. do
  61. case $opt in
  62. "Install Wekan dependencies")
  63. if [[ "$OSTYPE" == "linux-gnu" ]]; then
  64. echo "Linux";
  65. # Debian, Ubuntu, Mint
  66. sudo apt-get install -y build-essential gcc g++ make git curl wget
  67. # npm nodejs
  68. #sudo npm -g install npm
  69. curl -0 -L https://npmjs.org/install.sh | sudo sh
  70. sudo chown -R $(id -u):$(id -g) $HOME/.npm
  71. sudo npm -g install n
  72. sudo n 12.21.0
  73. #curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
  74. #sudo apt-get install -y nodejs
  75. elif [[ "$OSTYPE" == "darwin"* ]]; then
  76. echo "macOS";
  77. pause '1) Install XCode 2) Install Node 8.x from https://nodejs.org/en/ 3) Press [Enter] key to continue.'
  78. elif [[ "$OSTYPE" == "cygwin" ]]; then
  79. # POSIX compatibility layer and Linux environment emulation for Windows
  80. echo "TODO: Add Cygwin";
  81. exit;
  82. elif [[ "$OSTYPE" == "msys" ]]; then
  83. # Lightweight shell and GNU utilities compiled for Windows (part of MinGW)
  84. echo "TODO: Add msys on Windows";
  85. exit;
  86. elif [[ "$OSTYPE" == "win32" ]]; then
  87. # I'm not sure this can happen.
  88. echo "TODO: Add Windows";
  89. exit;
  90. elif [[ "$OSTYPE" == "freebsd"* ]]; then
  91. echo "TODO: Add FreeBSD";
  92. exit;
  93. else
  94. echo "Unknown"
  95. echo ${OSTYPE}
  96. exit;
  97. fi
  98. ## Latest npm with Meteor 1.8.x
  99. npm_call -g install npm
  100. npm_call -g install node-gyp
  101. # Latest fibers for Meteor 1.8.x
  102. sudo mkdir -p /usr/local/lib/node_modules/fibers/.node-gyp
  103. npm_call -g install fibers
  104. # Install Meteor, if it's not yet installed
  105. curl https://install.meteor.com | bash
  106. sudo chown -R $(id -u):$(id -g) $HOME/.npm $HOME/.meteor
  107. break
  108. ;;
  109. "Build Wekan")
  110. echo "Building Wekan."
  111. #wekan_repo_check
  112. # REPOS BELOW ARE INCLUDED TO WEKAN REPO
  113. #rm -rf packages/kadira-flow-router packages/meteor-useraccounts-core packages/meteor-accounts-cas packages/wekan-ldap packages/wekan-ldap packages/wekan-scrfollbar packages/meteor-accounts-oidc packages/markdown
  114. #mkdir packages
  115. #cd packages
  116. #git clone --depth 1 -b master https://github.com/wekan/flow-router.git kadira-flow-router
  117. #git clone --depth 1 -b master https://github.com/meteor-useraccounts/core.git meteor-useraccounts-core
  118. #git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-cas.git
  119. #git clone --depth 1 -b master https://github.com/wekan/wekan-ldap.git
  120. #git clone --depth 1 -b master https://github.com/wekan/wekan-scrollbar.git
  121. #git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-oidc.git
  122. #git clone --depth 1 -b master --recurse-submodules https://github.com/wekan/markdown.git
  123. #mv meteor-accounts-oidc/packages/switch_accounts-oidc wekan_accounts-oidc
  124. #mv meteor-accounts-oidc/packages/switch_oidc wekan_oidc
  125. #rm -rf meteor-accounts-oidc
  126. #if [[ "$OSTYPE" == "darwin"* ]]; then
  127. # echo "sed at macOS";
  128. # sed -i '' 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js
  129. #else
  130. # echo "sed at ${OSTYPE}"
  131. # sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js
  132. #fi
  133. #cd ..
  134. sudo chown -R $(id -u):$(id -g) $HOME/.npm $HOME/.meteor
  135. rm -rf node_modules .meteor/local
  136. npm install
  137. rm -rf .build
  138. meteor build .build --directory
  139. cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js
  140. # Remove legacy webbroser bundle, so that Wekan works also at Android Firefox, iOS Safari, etc.
  141. rm -rf .build/bundle/programs/web.browser.legacy
  142. #Removed binary version of bcrypt because of security vulnerability that is not fixed yet.
  143. #https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac
  144. #https://github.com/wekan/wekan/commit/7eeabf14be3c63fae2226e561ef8a0c1390c8d3c
  145. #cd ~/repos/wekan/.build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt
  146. #rm -rf node_modules/bcrypt
  147. #meteor npm install bcrypt
  148. cd .build/bundle/programs/server
  149. rm -rf node_modules
  150. npm install
  151. #meteor npm install bcrypt
  152. cd ../../../..
  153. echo Done.
  154. break
  155. ;;
  156. "Run Meteor for dev on http://localhost:4000")
  157. WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://localhost:4000 meteor run --exclude-archs web.browser.legacy,web.cordova --port 4000
  158. break
  159. ;;
  160. "Run Meteor for dev on http://CURRENT-IP-ADDRESS:4000")
  161. IPADDRESS=$(ip a | grep 'noprefixroute' | grep 'inet ' | cut -d: -f2 | awk '{ print $2}' | cut -d '/' -f 1)
  162. echo "Your IP address is $IPADDRESS"
  163. WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://$IPADDRESS:4000 meteor run --exclude-archs web.browser.legacy,web.cordova --port 4000
  164. break
  165. ;;
  166. "Run Meteor for dev on http://CUSTOM-IP-ADDRESS:PORT")
  167. ip address
  168. echo "From above list, what is your IP address?"
  169. read IPADDRESS
  170. echo "On what port you would like to run Wekan?"
  171. read PORT
  172. echo "ROOT_URL=http://$IPADDRESS:$PORT"
  173. WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://$IPADDRESS:$PORT meteor run --exclude-archs web.browser.legacy,web.cordova --port $PORT
  174. break
  175. ;;
  176. "Quit")
  177. break
  178. ;;
  179. *) echo invalid option;;
  180. esac
  181. done