You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

214 lines
5.6 KiB

  1. #!/bin/bash
  2. set -eux # -x for verbose logging to juju debug-log
  3. ##
  4. ## Options (changeable thanks to ``/etc/charm/openerp.conf``)
  5. ##
  6. OPENERP_PASSWORD=${OPENERP_PASSWORD:-openerp_password}
  7. ## 0k git remote path
  8. GIT_0K_BASE=${GIT_0K_BASE:-"git.0k.io:/var/git"}
  9. ## 0k git remote options
  10. GIT_0K_CLONE_OPTIONS=${GIT_0K_CLONE_OPTIONS:-""}
  11. ## 0k git-sub setup options
  12. GIT_0K_SUB_CLONE_OPTIONS=${GIT_0K_SUB_CLONE_OPTIONS:-""}
  13. ## 0k git default checkout reference (for 0k-oe root package)
  14. GIT_0K_CHECKOUT_REF=${GIT_0K_CHECKOUT_REF:-"8.0/0k/dev/master"}
  15. release=$(lsb_release -c -s)
  16. ##
  17. ## Code
  18. ##
  19. apt-get install sudo libxml2-dev libxslt-dev libpq-dev libyaml-dev \
  20. zlib1g-dev libfreetype6-dev \
  21. libsasl2-dev \
  22. libjpeg-dev libmysqlclient-dev -y --force-yes
  23. set +eux
  24. source /srv/virtualenv/default/bin/activate
  25. set -eux
  26. ## install deps for PIL compilations
  27. ## from http://www.sandersnewmedia.com/why/2012/04/16/installing-pil-virtualenv-ubuntu-1204
  28. if ! [ -e "/usr/lib/libjpeg.so" ]; then
  29. if [ "$release" == "trusty" ]; then
  30. ## for some reason /etc/apt/sources.list can be WITHOUT deb-src lines
  31. apt-cache policy python-imaging | tail -n 1 | \
  32. while read code url distrib arch type; do
  33. echo deb-src $url $(echo "$distrib" | tr "/" " ");
  34. done >> /etc/apt/sources.list &&
  35. apt-get update
  36. fi
  37. if ! [ -d "/usr/include/freetype2/freetype" ]; then
  38. (cd /usr/include/freetype2 &&
  39. ln -sf . freetype)
  40. fi
  41. apt-get build-dep python-imaging -y --force-yes &&
  42. ln -s /usr/lib/`uname -i`-linux-gnu/libfreetype.so /usr/lib/ &&
  43. ln -s /usr/lib/`uname -i`-linux-gnu/libjpeg.so /usr/lib/ &&
  44. ln -s /usr/lib/`uname -i`-linux-gnu/libz.so /usr/lib/
  45. fi
  46. ## Installing PIL with our archive is safer.
  47. #pip install pil
  48. (
  49. cd /tmp &&
  50. scp "$GIT_0K_BASE"/archives/PIL-1.1.7.tar.gz . &&
  51. tar xvzf PIL-1.1.7.tar.gz &&
  52. cd PIL-1.1.7 &&
  53. python setup.py install
  54. )
  55. pip install lxml genshi==0.6 pyparsing==1.5.7 psycopg2 pyyaml reportlab mako \
  56. pywebdav==0.9.4 feedparser caldav pytz pydot \
  57. python-dateutil==1.5 cherrypy formencode==1.2.2 \
  58. babel simplejson==2.0.9 python-openid mysql-python vatnumber \
  59. mock unittest2 fudge docutils jinja2 gdata sact.epoch \
  60. shyaml psutil
  61. ## Install pychart... from our repo as :
  62. ## download link in PyPi is dead,
  63. ## and gna.org was down recently
  64. (
  65. scp "$GIT_0K_BASE/archives/PyChart-1.39.tar.gz" /tmp &&
  66. cd /tmp && tar xvzf PyChart*.tar.gz &&
  67. cd PyChart* &&
  68. python setup.py install
  69. )
  70. ## Install OOOP... from our git repo as:
  71. ## we have some bug correction and custom features
  72. if ! [ -d "/opt/apps/ooop" ]; then
  73. (
  74. cd /opt/apps &&
  75. git clone $GIT_0K_CLONE_OPTIONS "$GIT_0K_BASE/0k/ooop.git" &&
  76. cd /opt/apps/ooop &&
  77. git checkout 0k/prod/master &&
  78. ## beurk
  79. ln -sf /opt/apps/ooop/ooop.py /srv/virtualenv/default/lib/python2.7/ooop.py
  80. )
  81. fi
  82. ## Install aerolib... from our git repo as:
  83. if ! [ -d "/opt/apps/aeroolib" ]; then
  84. (
  85. cd /opt/apps &&
  86. git clone $GIT_0K_CLONE_OPTIONS "$GIT_0K_BASE/0k/aeroolib.git" &&
  87. cd /opt/apps/aeroolib &&
  88. git checkout master &&
  89. ## beurk
  90. ln -sf /opt/apps/aeroolib/aeroolib/aeroolib /srv/virtualenv/default/lib/python2.7/aeroolib
  91. )
  92. fi
  93. ##
  94. ## Install 0k-oe
  95. ##
  96. (
  97. cd /opt/apps &&
  98. git sub clone $GIT_0K_CLONE_OPTIONS $GIT_0K_SUB_CLONE_OPTIONS -b "$GIT_0K_CHECKOUT_REF" \
  99. "$GIT_0K_BASE"/0k/0k-oe
  100. )
  101. adduser --system --home=/var/lib/openerp --group openerp
  102. ## XXXvlab: warning password in charm !!
  103. cp -i etc/openerp-server.conf /etc/
  104. sed -ri "s/%%PASSWORD%%/$OPENERP_PASSWORD/g" /etc/openerp-server.conf
  105. cp -i etc/init.d/openerp-server /etc/init.d/
  106. chown openerp /etc/openerp-server.conf
  107. chmod 600 /etc/openerp-server.conf
  108. chown openerp /etc/init.d/openerp-server
  109. update-rc.d openerp-server defaults
  110. mkdir /var/log/openerp
  111. touch /var/log/openerp/openerp-server.log
  112. chown openerp /var/log/openerp -R
  113. cp -i etc/default/openerp-server /etc/default/openerp-server
  114. ## Install add-ons
  115. ## make a better way for installing add-ons
  116. #addons_path=/opt/apps/openobject-addons/0k
  117. #if ! [ -d "$addons_path" ]; then
  118. # mkdir -p $addons_path
  119. # for addons in $(/var/git/list-addons 0k/dev/master | grep ^0k); do
  120. # git clone -s /var/git/$addons /opt/apps/openobject-addons/${addons%.git}
  121. # (cd /opt/apps/openobject-addons/${addons%.git}
  122. # git checkout 6.1/0k/prod/master ||
  123. # git checkout 0k/prod/master ||
  124. # git checkout 0k/dev/master ||
  125. # git checkout 6.1/simplee/prod/master ||
  126. # git checkout simplee/prod/master ||
  127. # git checkout simplee/dev/master ||
  128. # git checkout master
  129. # )
  130. # done
  131. #else
  132. # echo 'WARNING: skipping modules installation as directory was already existent !'
  133. #fi
  134. ## Install werkzeug from github last version
  135. ## because last PyPi version is 8.4 and we need the 9.0+
  136. (
  137. cd /tmp &&
  138. git clone https://github.com/mitsuhiko/werkzeug.git &&
  139. cd werkzeug &&
  140. python setup.py install
  141. )
  142. ##
  143. ## Linking with external filestore !
  144. ##
  145. (
  146. cd /opt/apps/0k-oe/openobject-server/openerp &&
  147. mkdir -p /var/openerp-filestore &&
  148. ln -sf /var/openerp-filestore filestore &&
  149. cd /var/openerp-filestore &&
  150. chown openerp .
  151. )
  152. ##
  153. ## Install 0k-manage for the handy oe command
  154. ##
  155. (
  156. if ! [ -d "/opt/apps/0k-manage" ]; then
  157. cd /opt/apps &&
  158. git clone $GIT_0K_CLONE_OPTIONS "$GIT_0K_BASE/0k/0k-manage.git" &&
  159. cd /opt/apps/0k-manage &&
  160. git checkout 0k/prod/master
  161. fi
  162. ## beurk
  163. ln -sf "/opt/apps/0k-manage/src/bin/oe" "/usr/local/bin/oe"
  164. )