snapcraft.yaml 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. name: wekan
  2. version: 0
  3. version-script: git describe --dirty --tags | cut -c 2-
  4. summary: The open-source kanban
  5. description: |
  6. Wekan is an open-source and collaborative kanban board application.
  7. Whether you’re maintaining a personal todo list, planning your holidays with some friends, or working in a team on your next revolutionary idea, Kanban boards are an unbeatable tool to keep your things organized. They give you a visual overview of the current state of your project, and make you productive by allowing you to focus on the few items that matter the most.
  8. Depending on target environment, some configuration settings might need to be adjusted.
  9. For full list of configuration options call:
  10. $ wekan.help
  11. confinement: strict
  12. grade: stable
  13. architectures:
  14. - amd64
  15. plugs:
  16. mongodb-plug:
  17. interface: content
  18. target: $SNAP_DATA/shared
  19. hooks:
  20. configure:
  21. plugs:
  22. - network
  23. - network-bind
  24. slots:
  25. mongodb-slot:
  26. interface: content
  27. write:
  28. - $SNAP_DATA/share
  29. apps:
  30. wekan:
  31. command: wekan-control
  32. daemon: simple
  33. plugs: [network, network-bind]
  34. mongodb:
  35. command: mongodb-control
  36. daemon: simple
  37. plugs: [network, network-bind]
  38. caddy:
  39. command: caddy-control
  40. daemon: simple
  41. plugs: [network, network-bind]
  42. help:
  43. command: wekan-help
  44. database-backup:
  45. command: mongodb-backup
  46. plugs: [network, network-bind]
  47. database-list-backups:
  48. command: ls -al $SNAP_COMMON/db-backups/
  49. database-restore:
  50. command: mongodb-restore
  51. plugs: [network, network-bind]
  52. parts:
  53. mongodb:
  54. source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-3.2.22.tgz
  55. plugin: dump
  56. stage-packages: [libssl1.0.0]
  57. filesets:
  58. mongo:
  59. - usr
  60. - bin
  61. - lib
  62. stage:
  63. - $mongo
  64. prime:
  65. - $mongo
  66. wekan:
  67. source: .
  68. plugin: nodejs
  69. node-engine: 8.15.1
  70. node-packages:
  71. - node-gyp
  72. - node-pre-gyp
  73. - fibers@2.0.0
  74. build-packages:
  75. - ca-certificates
  76. - apt-utils
  77. - python
  78. - python3
  79. - g++
  80. - capnproto
  81. - curl
  82. - execstack
  83. - nodejs
  84. - npm
  85. stage-packages:
  86. - libfontconfig1
  87. override-build: |
  88. echo "Cleaning environment first"
  89. rm -rf ~/.meteor ~/.npm /usr/local/lib/node_modules
  90. # Create the OpenAPI specification
  91. rm -rf .build
  92. mkdir -p .build/python
  93. cd .build/python
  94. git clone --depth 1 -b master git://github.com/Kronuz/esprima-python
  95. cd esprima-python
  96. python3 setup.py install
  97. cd ../../..
  98. mkdir -p ./public/api
  99. python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml
  100. # we temporary need api2html and mkdirp
  101. npm install -g api2html@0.3.0
  102. npm install -g mkdirp
  103. api2html -c ./public/logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml
  104. npm uninstall -g mkdirp
  105. npm uninstall -g api2html
  106. # Node Fibers 100% CPU usage issue:
  107. # https://github.com/wekan/wekan-mongodb/issues/2#issuecomment-381453161
  108. # https://github.com/meteor/meteor/issues/9796#issuecomment-381676326
  109. # https://github.com/sandstorm-io/sandstorm/blob/0f1fec013fe7208ed0fd97eb88b31b77e3c61f42/shell/server/00-startup.js#L99-L129
  110. # Also see beginning of wekan/server/authentication.js
  111. # import Fiber from "fibers";
  112. # Fiber.poolSize = 1e9;
  113. # OLD: Download node version 8.12.0 prerelease build => Official node 8.12.0 has been released
  114. # Description at https://releases.wekan.team/node.txt
  115. ##echo "375bd8db50b9c692c0bbba6e96d4114cd29bee3770f901c1ff2249d1038f1348 node" >> node-SHASUMS256.txt.asc
  116. ##curl https://releases.wekan.team/node -o node
  117. # Verify Fibers patched node authenticity
  118. ##echo "Fibers 100% CPU issue patched node authenticity:"
  119. ##grep node node-SHASUMS256.txt.asc | shasum -a 256 -c -
  120. ##rm -f node-SHASUMS256.txt.asc
  121. ##chmod +x node
  122. ##mv node `which node`
  123. # DOES NOT WORK: paxctl fix.
  124. # Removed from build-packages: - paxctl
  125. #echo "Applying paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303"
  126. #paxctl -mC `which node`
  127. #echo "Installing npm"
  128. #curl -L https://www.npmjs.com/install.sh | sh
  129. echo "Installing meteor"
  130. curl https://install.meteor.com/ -o install_meteor.sh
  131. #sed -i "s|RELEASE=.*|RELEASE=\"1.8.1-beta.0\"|g" install_meteor.sh
  132. chmod +x install_meteor.sh
  133. sh install_meteor.sh
  134. rm install_meteor.sh
  135. if [ ! -d "packages" ]; then
  136. mkdir packages
  137. fi
  138. if [ ! -d "packages/kadira-flow-router" ]; then
  139. cd packages
  140. git clone --depth 1 -b master https://github.com/wekan/flow-router.git kadira-flow-router
  141. cd ..
  142. fi
  143. if [ ! -d "packages/meteor-useraccounts-core" ]; then
  144. cd packages
  145. git clone --depth 1 -b master https://github.com/meteor-useraccounts/core.git meteor-useraccounts-core
  146. sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' meteor-useraccounts-core/package.js
  147. cd ..
  148. fi
  149. if [ ! -d "packages/meteor-accounts-cas" ]; then
  150. cd packages
  151. git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-cas.git meteor-accounts-cas
  152. cd ..
  153. fi
  154. if [ ! -d "packages/wekan-ldap" ]; then
  155. cd packages
  156. git clone --depth 1 -b master https://github.com/wekan/wekan-ldap.git
  157. cd ..
  158. fi
  159. if [ ! -d "packages/wekan-scrollbar" ]; then
  160. cd packages
  161. git clone --depth 1 -b master https://github.com/wekan/wekan-scrollbar.git
  162. cd ..
  163. fi
  164. if [ ! -d "packages/wekan_accounts-oidc" ]; then
  165. cd packages
  166. git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-oidc.git
  167. mv meteor-accounts-oidc/packages/switch_accounts-oidc wekan_accounts-oidc
  168. mv meteor-accounts-oidc/packages/switch_oidc wekan_oidc
  169. rm -rf meteor-accounts-oidc
  170. cd ..
  171. fi
  172. rm -rf package-lock.json .build
  173. meteor add standard-minifier-js --allow-superuser
  174. meteor npm install --allow-superuser
  175. meteor build .build --directory --allow-superuser
  176. cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js
  177. #Removed binary version of bcrypt because of security vulnerability that is not fixed yet.
  178. #https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac
  179. #https://github.com/wekan/wekan/commit/7eeabf14be3c63fae2226e561ef8a0c1390c8d3c
  180. #cd .build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt
  181. #rm -rf node_modules/bcrypt
  182. #meteor npm install --save bcrypt
  183. # Change from npm-bcrypt directory back to .build/bundle/programs/server directory.
  184. #cd ../../../../
  185. # Change to directory .build/bundle/programs/server
  186. cd .build/bundle/programs/server
  187. npm install
  188. #meteor npm install --save bcrypt
  189. # Change back to Wekan source directory
  190. cd ../../../..
  191. cp -r .build/bundle/* $SNAPCRAFT_PART_INSTALL/
  192. cp .build/bundle/.node_version.txt $SNAPCRAFT_PART_INSTALL/
  193. rm $SNAPCRAFT_PART_INSTALL/lib/node_modules/wekan
  194. rm $SNAPCRAFT_PART_INSTALL/programs/server/npm/node_modules/meteor/rajit_bootstrap3-datepicker/lib/bootstrap-datepicker/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs
  195. organize:
  196. README: README.wekan
  197. prime:
  198. - -lib/node_modules/node-pre-gyp/node_modules/tar/lib/.unpack.js.swp
  199. helpers:
  200. source: snap-src
  201. plugin: dump
  202. caddy:
  203. plugin: dump
  204. source: https://caddyserver.com/download/linux/amd64?plugins=http.filter,http.ipfilter,http.realip&license=personal&telemetry=off
  205. source-type: tar
  206. organize:
  207. caddy: bin/caddy
  208. CHANGES.txt: CADDY_CHANGES.txt
  209. EULA.txt: CADDY_EULA.txt
  210. LICENSES.txt: CADDY_LICENSES.txt
  211. README.txt: CADDY_README.txt
  212. stage:
  213. - -init