build.sh 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. #!/bin/bash
  2. ZTO_VER=$(jq -r '.version' synology/config.json)
  3. PKG_REV=$(jq -r '.rev' synology/config.json)
  4. echo $ZTO_VER-$PKG_REV
  5. ZTO_DESC=$(jq -r '.desc' synology/config.json)
  6. echo $ZTO_DESC
  7. ZTO_EMAIL=$(jq -r '.email' synology/config.json)
  8. echo $ZTO_EMAIL
  9. read -p "Confirm details [y/n] ? " -n 1 -r; echo; if [[ ! $REPLY =~ ^[Yy]$ ]]; then echo "Exiting."; exit; fi
  10. build_environment()
  11. {
  12. git clone https://github.com/SynoCommunity/spksrc.git
  13. sudo docker build --load -t zt-spksrc -f Dockerfile.spksrc .
  14. }
  15. generate_package_sources()
  16. {
  17. # Clean up any intermediate files
  18. sudo make -C spksrc clean
  19. rm -rf spksrc/distrib/*
  20. rm -rf spksrc/packages/*
  21. rm -rf spksrc/distrib/*source.tar.gz*
  22. rm -rf spksrc/cross/*
  23. mkdir -p spksrc/cross/zerotier
  24. # Generate the SPK contents
  25. # Copy package scripts to spksrc so they're accessible to container
  26. rm -rf spksrc/dsm6-pkg
  27. cp -rf dsm6-pkg spksrc/dsm6-pkg
  28. TAB="$(printf '\t')"
  29. cd ..
  30. # Generate ZTO source tarball used by spksrc
  31. git ls-files -z | xargs -0 tar -czvf source.tar.gz
  32. mkdir -p synology/spksrc/distrib
  33. cp source.tar.gz synology/spksrc/distrib/source.tar.gz
  34. cat > synology/spksrc/cross/zerotier/digests <<- EOM
  35. source.tar.gz SHA1 $(sha1sum source.tar.gz | awk '{print $1}')
  36. source.tar.gz SHA256 $(sha256sum source.tar.gz | awk '{print $1}')
  37. source.tar.gz MD5 $(md5sum source.tar.gz | awk '{print $1}')
  38. EOM
  39. cd -
  40. STAGING_DIR='$(STAGING_DIR)'
  41. RUN='$(RUN)'
  42. cat > spksrc/cross/zerotier/Makefile <<- EOM
  43. PKG_NAME = ZeroTierOne
  44. PKG_VERS = $ZTO_VER
  45. PKG_EXT = tar.gz
  46. PKG_DIST_NAME = source.tar.gz
  47. PKG_DIR =
  48. PKG_DIST_SITE = http://localhost:8000
  49. DEPENDS =
  50. GNU_CONFIGURE = 1
  51. CONFIGURE_ARGS = HAVE_CXX=yes
  52. INSTALL_TARGET = zerotier_custom_install
  53. CONFIGURE_TARGET = zerotier_custom_configure
  54. ENV += ZT_SYNOLOGY=1
  55. include ../../mk/spksrc.cross-cc.mk
  56. .PHONY: zerotier_custom_install
  57. zerotier_custom_install:
  58. ${TAB}$RUN mkdir -p $STAGING_DIR/bin
  59. ${TAB}$RUN cp zerotier-one $STAGING_DIR/bin/zerotier-one
  60. EOM
  61. cat > spksrc/cross/zerotier/PLIST <<- EOM
  62. bin:bin/zerotier-one
  63. EOM
  64. #
  65. # Set up (spk) directory contents
  66. #
  67. rm -rf spksrc/spk/*
  68. mkdir -p spksrc/spk/zerotier
  69. STAGING_DIR='$(STAGING_DIR)'
  70. WORK_DIR='$(WORK_DIR)'
  71. PRODUCT_DIR='$(PRODUCT_DIR)'
  72. cat > spksrc/spk/zerotier/Makefile <<- EOM
  73. SPK_NAME = zerotier
  74. SPK_VERS = $ZTO_VER
  75. SPK_REV = $PKG_REV
  76. SPK_ICON = /spksrc/dsm6-pkg/PACKAGE_ICON_256.png
  77. DEPENDS = cross/zerotier
  78. MAINTAINER = ZeroTier, Inc.
  79. DESCRIPTION = $ZTO_DESC
  80. LICENSE = BUSL-1.1
  81. CHANGELOG =
  82. HOMEPAGE = https://my.zerotier.com
  83. REPORT_URL = https://github.com/zerotier/ZeroTierOne/issues
  84. DISPLAY_NAME = ZeroTier
  85. PRODUCT_DIR = $WORK_DIR
  86. STARTABLE = yes
  87. REQUIRED_DSM = 6.2.4
  88. ENV += ZT_SYNOLOGY=1
  89. SSS_SCRIPT = ../../dsm6-pkg/start-stop-status.sh
  90. PRE_STRIP_TARGET = zerotier_install
  91. include ../../mk/spksrc.spk.mk
  92. .PHONY: zerotier_install
  93. zerotier_install:
  94. ${TAB}install -m 755 -d $STAGING_DIR/bin
  95. ${TAB}install -m 755 $PRODUCT_DIR/zerotier-one $STAGING_DIR/bin/zerotier-one
  96. EOM
  97. cat > spksrc/spk/zerotier/PLIST <<- EOM
  98. bin:bin/zerotier-one
  99. EOM
  100. }
  101. build()
  102. {
  103. pushd synology
  104. build_environment
  105. generate_package_sources
  106. sudo docker run -it -v $(pwd)/spksrc:/spksrc zt-spksrc /bin/bash
  107. popd
  108. }
  109. "$@"