build.sh 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. #!/bin/bash
  2. NFPM_VERSION=2.35.0
  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. Fully 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: "./sftpgo.json"
  73. dst: "/etc/sftpgo/sftpgo.json"
  74. type: "config|noreplace"
  75. - dst: "/srv/sftpgo"
  76. type: dir
  77. - dst: "/var/lib/sftpgo"
  78. type: dir
  79. - dst: "/etc/sftpgo/env.d"
  80. type: dir
  81. overrides:
  82. deb:
  83. recommends:
  84. - bash-completion
  85. - mime-support
  86. scripts:
  87. postinstall: ../scripts/deb/postinstall.sh
  88. preremove: ../scripts/deb/preremove.sh
  89. postremove: ../scripts/deb/postremove.sh
  90. rpm:
  91. recommends:
  92. - bash-completion
  93. - mailcap
  94. scripts:
  95. postinstall: ../scripts/rpm/postinstall
  96. preremove: ../scripts/rpm/preremove
  97. postremove: ../scripts/rpm/postremove
  98. rpm:
  99. compression: xz
  100. deb:
  101. compression: xz
  102. EOF
  103. curl --retry 5 --retry-delay 2 --connect-timeout 10 -L -O \
  104. https://github.com/goreleaser/nfpm/releases/download/v${NFPM_VERSION}/nfpm_${NFPM_VERSION}_Linux_x86_64.tar.gz
  105. tar xvf nfpm_${NFPM_VERSION}_Linux_x86_64.tar.gz nfpm
  106. chmod 755 nfpm
  107. mkdir rpm
  108. ./nfpm -f nfpm.yaml pkg -p rpm -t rpm
  109. mkdir deb
  110. ./nfpm -f nfpm.yaml pkg -p deb -t deb