snapcraft.yaml 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. name: wekan
  2. version: 0
  3. version-script: git describe --dirty --tags | cut -c 2-
  4. summary: The open-source Trello-like 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 -ald $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.20.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.11.3
  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. - g++
  79. - capnproto
  80. - npm
  81. - curl
  82. - execstack
  83. stage-packages:
  84. - libfontconfig1
  85. override-build: |
  86. echo "Cleaning environment first"
  87. rm -rf ~/.meteor ~/.npm /usr/local/lib/node_modules
  88. # Node Fibers 100% CPU usage issue:
  89. # https://github.com/wekan/wekan-mongodb/issues/2#issuecomment-381453161
  90. # https://github.com/meteor/meteor/issues/9796#issuecomment-381676326
  91. # https://github.com/sandstorm-io/sandstorm/blob/0f1fec013fe7208ed0fd97eb88b31b77e3c61f42/shell/server/00-startup.js#L99-L129
  92. # Also see beginning of wekan/server/authentication.js
  93. # import Fiber from "fibers";
  94. # Fiber.poolSize = 1e9;
  95. # Download node version 8.11.3 that has fix included, node binary copied from Sandstorm
  96. # Description at https://releases.wekan.team/node.txt
  97. ##echo "5263dc1c571885921179b11a1c6eb9ca82a95a89b69c15b366f885e9b5a32d66 node" >> node-SHASUMS256.txt.asc
  98. ##curl https://releases.wekan.team/node -o node
  99. # Verify Fibers patched node authenticity
  100. ##echo "Fibers 100% CPU issue patched node authenticity:"
  101. ##grep node node-SHASUMS256.txt.asc | shasum -a 256 -c -
  102. ##rm -f node-SHASUMS256.txt.asc
  103. ##chmod +x node
  104. ##mv node `which node`
  105. # DOES NOT WORK: paxctl fix.
  106. # Removed from build-packages: - paxctl
  107. #echo "Applying paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303"
  108. #paxctl -mC `which node`
  109. echo "Installing meteor"
  110. curl https://install.meteor.com/ -o install_meteor.sh
  111. sed -i "s|RELEASE=.*|RELEASE=\"1.6.0.1\"|g" install_meteor.sh
  112. chmod +x install_meteor.sh
  113. sh install_meteor.sh
  114. rm install_meteor.sh
  115. if [ ! -d "packages" ]; then
  116. mkdir packages
  117. fi
  118. if [ ! -d "packages/kadira-flow-router" ]; then
  119. cd packages
  120. git clone --depth 1 -b master https://github.com/wekan/flow-router.git kadira-flow-router
  121. cd ..
  122. fi
  123. if [ ! -d "packages/meteor-useraccounts-core" ]; then
  124. cd packages
  125. git clone --depth 1 -b master https://github.com/meteor-useraccounts/core.git meteor-useraccounts-core
  126. sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' meteor-useraccounts-core/package.js
  127. cd ..
  128. fi
  129. rm -rf package-lock.json .build
  130. meteor add standard-minifier-js --allow-superuser
  131. meteor npm install --allow-superuser
  132. meteor build .build --directory --allow-superuser
  133. cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js
  134. #Removed binary version of bcrypt because of security vulnerability that is not fixed yet.
  135. #https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac
  136. #https://github.com/wekan/wekan/commit/7eeabf14be3c63fae2226e561ef8a0c1390c8d3c
  137. #cd .build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt
  138. #rm -rf node_modules/bcrypt
  139. #meteor npm install --save bcrypt
  140. # Change from npm-bcrypt directory back to .build/bundle/programs/server directory.
  141. #cd ../../../../
  142. # Change to directory .build/bundle/programs/server
  143. cd .build/bundle/programs/server
  144. npm install
  145. #meteor npm install --save bcrypt
  146. # Change back to Wekan source directory
  147. cd ../../../..
  148. cp -r .build/bundle/* $SNAPCRAFT_PART_INSTALL/
  149. cp .build/bundle/.node_version.txt $SNAPCRAFT_PART_INSTALL/
  150. rm $SNAPCRAFT_PART_INSTALL/lib/node_modules/wekan
  151. execstack --clear-execstack $SNAPCRAFT_PART_INSTALL/programs/server/npm/node_modules/meteor/rajit_bootstrap3-datepicker/lib/bootstrap-datepicker/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs
  152. organize:
  153. README: README.wekan
  154. prime:
  155. - -lib/node_modules/node-pre-gyp/node_modules/tar/lib/.unpack.js.swp
  156. helpers:
  157. source: snap-src
  158. plugin: dump
  159. caddy:
  160. plugin: dump
  161. source: https://caddyserver.com/download/linux/amd64?license=personal
  162. source-type: tar
  163. organize:
  164. caddy: bin/caddy
  165. CHANGES.txt: CADDY_CHANGES.txt
  166. EULA.txt: CADDY_EULA.txt
  167. LICENSES.txt: CADDY_LICENSES.txt
  168. README.txt: CADDY_README.txt
  169. stage:
  170. - -init