build.sh 3.1 KB

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