snapcraft.yaml 9.7 KB

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