snapcraft.yaml 9.7 KB

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