snapcraft.yaml 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  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://repo.mongodb.org/apt/ubuntu/dists/xenial/mongodb-org/4.0/multiverse/binary-amd64/mongodb-org-server_4.0.9_amd64.deb
  55. plugin: dump
  56. stage-packages: [libssl1.1]
  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.16.0
  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. - python3
  78. - gcc-8
  79. - capnproto
  80. - curl
  81. - execstack
  82. - nodejs
  83. - npm
  84. - python3-pip
  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. pip3 install -U setuptools wheel
  95. git clone --depth 1 -b master https://github.com/Kronuz/esprima-python
  96. cd esprima-python
  97. python3 setup.py install
  98. cd ../../..
  99. mkdir -p ./public/api
  100. python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml
  101. # we temporary need api2html and mkdirp
  102. npm install -g --unsafe-perm api2html@0.3.0
  103. npm install -g --unsafe-perm mkdirp
  104. api2html -c ./public/logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml
  105. npm uninstall -g --unsafe-perm mkdirp
  106. npm uninstall -g --unsafe-perm api2html
  107. # Node Fibers 100% CPU usage issue:
  108. # https://github.com/wekan/wekan-mongodb/issues/2#issuecomment-381453161
  109. # https://github.com/meteor/meteor/issues/9796#issuecomment-381676326
  110. # https://github.com/sandstorm-io/sandstorm/blob/0f1fec013fe7208ed0fd97eb88b31b77e3c61f42/shell/server/00-startup.js#L99-L129
  111. # Also see beginning of wekan/server/authentication.js
  112. # import Fiber from "fibers";
  113. # Fiber.poolSize = 1e9;
  114. # OLD: Download node version 8.12.0 prerelease build => Official node 8.12.0 has been released
  115. # Description at https://releases.wekan.team/node.txt
  116. ##echo "375bd8db50b9c692c0bbba6e96d4114cd29bee3770f901c1ff2249d1038f1348 node" >> node-SHASUMS256.txt.asc
  117. ##curl https://releases.wekan.team/node -o node
  118. # Verify Fibers patched node authenticity
  119. ##echo "Fibers 100% CPU issue patched node authenticity:"
  120. ##grep node node-SHASUMS256.txt.asc | shasum -a 256 -c -
  121. ##rm -f node-SHASUMS256.txt.asc
  122. ##chmod +x node
  123. ##mv node `which node`
  124. # DOES NOT WORK: paxctl fix.
  125. # Removed from build-packages: - paxctl
  126. #echo "Applying paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303"
  127. #paxctl -mC `which node`
  128. #echo "Installing npm"
  129. #curl -L https://www.npmjs.com/install.sh | sh
  130. echo "Installing meteor"
  131. curl https://install.meteor.com/ -o install_meteor.sh
  132. #sed -i "s|RELEASE=.*|RELEASE=\"1.8.1-beta.0\"|g" install_meteor.sh
  133. chmod +x install_meteor.sh
  134. sh install_meteor.sh
  135. rm install_meteor.sh
  136. # REPOS BELOW ARE INCLUDED TO WEKAN REPO
  137. #if [ ! -d "packages" ]; then
  138. # mkdir packages
  139. #fi
  140. #if [ ! -d "packages/kadira-flow-router" ]; then
  141. # cd packages
  142. # git clone --depth 1 -b master https://github.com/wekan/flow-router.git kadira-flow-router
  143. # cd ..
  144. #fi
  145. #if [ ! -d "packages/meteor-useraccounts-core" ]; then
  146. # cd packages
  147. # git clone --depth 1 -b master https://github.com/meteor-useraccounts/core.git meteor-useraccounts-core
  148. # sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' meteor-useraccounts-core/package.js
  149. # cd ..
  150. #fi
  151. #if [ ! -d "packages/meteor-accounts-cas" ]; then
  152. # cd packages
  153. # git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-cas.git meteor-accounts-cas
  154. # cd ..
  155. #fi
  156. #if [ ! -d "packages/wekan-ldap" ]; then
  157. # cd packages
  158. # git clone --depth 1 -b master https://github.com/wekan/wekan-ldap.git
  159. # cd ..
  160. #fi
  161. #if [ ! -d "packages/wekan-scrollbar" ]; then
  162. # cd packages
  163. # git clone --depth 1 -b master https://github.com/wekan/wekan-scrollbar.git
  164. # cd ..
  165. #fi
  166. #if [ ! -d "packages/wekan_accounts-oidc" ]; then
  167. # cd packages
  168. # git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-oidc.git
  169. # mv meteor-accounts-oidc/packages/switch_accounts-oidc wekan-accounts-oidc
  170. # mv meteor-accounts-oidc/packages/switch_oidc wekan-oidc
  171. # rm -rf meteor-accounts-oidc
  172. # cd ..
  173. #fi
  174. #if [ ! -d "packages/markdown" ]; then
  175. # cd packages
  176. # git clone --depth 1 -b master --recurse-submodules https://github.com/wekan/markdown.git
  177. # cd ..
  178. #fi
  179. rm -rf package-lock.json .build
  180. meteor add standard-minifier-js --allow-superuser
  181. meteor npm install --allow-superuser --unsafe-perm
  182. meteor build .build --directory --allow-superuser
  183. cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js
  184. #Removed binary version of bcrypt because of security vulnerability that is not fixed yet.
  185. #https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac
  186. #https://github.com/wekan/wekan/commit/7eeabf14be3c63fae2226e561ef8a0c1390c8d3c
  187. #cd .build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt
  188. #rm -rf node_modules/bcrypt
  189. #meteor npm install --save bcrypt
  190. # Change from npm-bcrypt directory back to .build/bundle/programs/server directory.
  191. #cd ../../../../
  192. # Change to directory .build/bundle/programs/server
  193. cd .build/bundle/programs/server
  194. npm install --unsafe-perm
  195. #meteor npm install --save bcrypt
  196. # Change back to Wekan source directory
  197. cd ../../../..
  198. cp -r .build/bundle/* $SNAPCRAFT_PART_INSTALL/
  199. cp .build/bundle/.node_version.txt $SNAPCRAFT_PART_INSTALL/
  200. rm $SNAPCRAFT_PART_INSTALL/lib/node_modules/wekan
  201. #rm $SNAPCRAFT_PART_INSTALL/programs/server/npm/node_modules/meteor/rajit_bootstrap3-datepicker/lib/bootstrap-datepicker/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs
  202. organize:
  203. README: README.wekan
  204. prime:
  205. - -lib/node_modules/node-pre-gyp/node_modules/tar/lib/.unpack.js.swp
  206. helpers:
  207. source: snap-src
  208. plugin: dump
  209. caddy:
  210. plugin: dump
  211. source: https://caddyserver.com/download/linux/amd64?plugins=http.filter,http.ipfilter,http.realip&license=personal&telemetry=off
  212. source-type: tar
  213. organize:
  214. caddy: bin/caddy
  215. CHANGES.txt: CADDY_CHANGES.txt
  216. EULA.txt: CADDY_EULA.txt
  217. LICENSES.txt: CADDY_LICENSES.txt
  218. README.txt: CADDY_README.txt
  219. stage:
  220. - -init