build.sh 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. #!/bin/bash
  2. NFPM_VERSION=2.43.4
  3. NFPM_ARCH=${NFPM_ARCH:-amd64}
  4. if [ -z ${SFTPGO_VERSION} ]
  5. then
  6. LATEST_TAG=$(git describe --tags $(git rev-list --tags --max-count=1))
  7. NUM_COMMITS_FROM_TAG=$(git rev-list ${LATEST_TAG}.. --count)
  8. VERSION=$(echo "${LATEST_TAG}" | awk -F. -v OFS=. '{$NF++;print}')-dev.${NUM_COMMITS_FROM_TAG}
  9. else
  10. VERSION=${SFTPGO_VERSION}
  11. fi
  12. mkdir dist
  13. echo -n ${VERSION} > dist/version
  14. cd dist
  15. BASE_DIR="../.."
  16. if [ -f "${BASE_DIR}/output/bash_completion/sftpgo" ]
  17. then
  18. cp ${BASE_DIR}/output/bash_completion/sftpgo sftpgo-completion.bash
  19. else
  20. $BASE_DIR/sftpgo gen completion bash > sftpgo-completion.bash
  21. fi
  22. if [ -d "${BASE_DIR}/output/man/man1" ]
  23. then
  24. cp -r ${BASE_DIR}/output/man/man1 .
  25. else
  26. $BASE_DIR/sftpgo gen man -d man1
  27. fi
  28. if [ ! -f ${BASE_DIR}/sftpgo ]
  29. then
  30. cp ${BASE_DIR}/output/sftpgo ${BASE_DIR}/sftpgo
  31. chmod 755 ${BASE_DIR}/sftpgo
  32. fi
  33. cp ${BASE_DIR}/sftpgo.json .
  34. sed -i "s|sftpgo.db|/var/lib/sftpgo/sftpgo.db|" sftpgo.json
  35. sed -i "s|\"users_base_dir\": \"\",|\"users_base_dir\": \"/srv/sftpgo/data\",|" sftpgo.json
  36. sed -i "s|\"backups\"|\"/srv/sftpgo/backups\"|" sftpgo.json
  37. sed -i "s|\"certs\"|\"/var/lib/sftpgo/certs\"|" sftpgo.json
  38. cat >nfpm.yaml <<EOF
  39. name: "sftpgo"
  40. arch: "${NFPM_ARCH}"
  41. platform: "linux"
  42. version: ${VERSION}
  43. release: 1
  44. section: "net"
  45. priority: "optional"
  46. maintainer: "Nicola Murino <[email protected]>"
  47. description: |
  48. Full-featured and highly configurable SFTP server
  49. SFTPGo has optional HTTP, FTP/S and WebDAV support.
  50. It can serve local filesystem, S3 (Compatible) Object Storage,
  51. Google Cloud Storage, Azure Blob Storage, SFTP.
  52. vendor: "SFTPGo"
  53. homepage: "https://github.com/drakkan/sftpgo"
  54. license: "AGPL-3.0"
  55. provides:
  56. - sftpgo
  57. contents:
  58. - src: "${BASE_DIR}/sftpgo${BIN_SUFFIX}"
  59. dst: "/usr/bin/sftpgo"
  60. - src: "./sftpgo-completion.bash"
  61. dst: "/usr/share/bash-completion/completions/sftpgo"
  62. - src: "./man1/*"
  63. dst: "/usr/share/man/man1/"
  64. - src: "${BASE_DIR}/init/sftpgo.service"
  65. dst: "/lib/systemd/system/sftpgo.service"
  66. - src: "${BASE_DIR}/templates/*"
  67. dst: "/usr/share/sftpgo/templates"
  68. - src: "${BASE_DIR}/static/*"
  69. dst: "/usr/share/sftpgo/static"
  70. - src: "${BASE_DIR}/openapi/*"
  71. dst: "/usr/share/sftpgo/openapi"
  72. - src: "${BASE_DIR}/LICENSE"
  73. dst: "/usr/share/licenses/sftpgo/LICENSE"
  74. - src: "${BASE_DIR}/NOTICE"
  75. dst: "/usr/share/licenses/sftpgo/NOTICE"
  76. - src: "./sftpgo.json"
  77. dst: "/etc/sftpgo/sftpgo.json"
  78. type: "config|noreplace"
  79. - dst: "/srv/sftpgo"
  80. type: dir
  81. - dst: "/var/lib/sftpgo"
  82. type: dir
  83. - dst: "/etc/sftpgo/env.d"
  84. type: dir
  85. overrides:
  86. deb:
  87. recommends:
  88. - bash-completion
  89. - mime-support
  90. scripts:
  91. postinstall: ../scripts/deb/postinstall.sh
  92. preremove: ../scripts/deb/preremove.sh
  93. postremove: ../scripts/deb/postremove.sh
  94. rpm:
  95. recommends:
  96. - bash-completion
  97. - mailcap
  98. scripts:
  99. postinstall: ../scripts/rpm/postinstall
  100. preremove: ../scripts/rpm/preremove
  101. postremove: ../scripts/rpm/postremove
  102. rpm:
  103. compression: xz
  104. deb:
  105. compression: xz
  106. EOF
  107. curl --retry 5 --retry-delay 2 --connect-timeout 10 -L -O \
  108. https://github.com/goreleaser/nfpm/releases/download/v${NFPM_VERSION}/nfpm_${NFPM_VERSION}_Linux_x86_64.tar.gz
  109. tar xvf nfpm_${NFPM_VERSION}_Linux_x86_64.tar.gz nfpm
  110. chmod 755 nfpm
  111. mkdir rpm
  112. ./nfpm -f nfpm.yaml pkg -p rpm -t rpm
  113. mkdir deb
  114. ./nfpm -f nfpm.yaml pkg -p deb -t deb