build.sh 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. #!/bin/sh
  2. set -e
  3. THISDIR=`pwd`
  4. if [ `basename $THISDIR` != 'build' ]; then
  5. echo "Execute `basename $0` from the build directory"
  6. exit 1
  7. fi
  8. BASE_DIR=`dirname $THISDIR`
  9. SRC_DIR=$BASE_DIR/src
  10. BUILD_DIR=$BASE_DIR/build
  11. PKG_DIR=$BASE_DIR/Release
  12. STAGING_DIR=$BASE_DIR/Staging
  13. NAME='ztncui'
  14. DESCRIPTION='ZeroTier network controller user interface'
  15. VERSION=`grep version ../src/package.json | cut -f4 -d'"'`
  16. VENDOR='Key Networks'
  17. MAINTAINER='https://key-networks.com/contact'
  18. URL='https://key-networks.com'
  19. LICENSE='GPLv3'
  20. BINDINGGYP='node_modules/argon2/binding.gyp'
  21. NODE_VER='v16'
  22. if [ ! -f /usr/lib/gcc/x86_64-redhat-linux/4.8.2/libstdc++.a ]; then
  23. echo "You must install libstdc++-static"
  24. exit 1
  25. fi
  26. DEPS="rpmbuild rpmsign npm node"
  27. for DEP in ${DEPS}; do
  28. if ! which ${DEP}; then
  29. echo "Missing dependency ${DEP}"
  30. exit 1
  31. fi
  32. done
  33. rm -fr $STAGING_DIR && mkdir $STAGING_DIR
  34. rm -fr $PKG_DIR && mkdir $PKG_DIR
  35. pushd .
  36. cd ../src
  37. pushd .
  38. NVER=`node --version`
  39. if [[ ${NVER%%.*} != ${NODE_VER} ]]; then
  40. echo "Missing dependency node ${NODE_VER}"
  41. exit 1
  42. fi
  43. [[ -d ../src/node_modules ]] && rm -fr ../src/node_modules
  44. npm install
  45. patch --forward --dry-run --silent $BINDINGGYP $BUILD_DIR/binding.gyp.patch
  46. if [ $? -eq 0 ]; then
  47. echo "Applying patch to $BINDINGGYP..."
  48. patch --forward $BINDINGGYP $BUILD_DIR/binding.gyp.patch
  49. fi
  50. if [ $? -ne 0 ]; then
  51. echo "Failed to patch $BINDINGGYP"
  52. exit 1
  53. fi
  54. cd node_modules/argon2/
  55. node-gyp rebuild
  56. if [ $? -ne 0 ]; then
  57. echo "Failed to rebuild argon2"
  58. exit 1
  59. fi
  60. popd
  61. pkg -c ./package.json -t node16-linux-x64 bin/www -o $BUILD_DIR/ztncui
  62. popd
  63. install -m 755 -d $STAGING_DIR/opt
  64. install -m 750 -d $STAGING_DIR/opt/key-networks
  65. install -m 750 -d $STAGING_DIR/opt/key-networks/ztncui
  66. install -m 750 -d $STAGING_DIR/opt/key-networks/ztncui/etc
  67. install -m 750 -d $STAGING_DIR/opt/key-networks/ztncui/etc/tls
  68. install -m 750 -d $STAGING_DIR/opt/key-networks/ztncui/node_modules/argon2/build/Release
  69. install -m 755 -d $STAGING_DIR/lib/systemd/system
  70. install -m 600 $SRC_DIR/etc/default.passwd $STAGING_DIR/opt/key-networks/ztncui/etc/default.passwd
  71. install -m 755 $SRC_DIR/node_modules/argon2/build/Release/argon2.node $STAGING_DIR/opt/key-networks/ztncui/node_modules/argon2/build/Release/
  72. install -m 755 $BUILD_DIR/ztncui $STAGING_DIR/opt/key-networks/ztncui/
  73. install -m 644 $BUILD_DIR/ztncui.service $STAGING_DIR/lib/systemd/system
  74. rm -f $BUILD_DIR/ztncui
  75. GENERAL_FPM_FLAGS="
  76. --name $NAME
  77. --version $VERSION
  78. --url $URL
  79. --license $LICENSE
  80. --chdir $STAGING_DIR
  81. --package $PKG_DIR
  82. --directories /opt/key-networks
  83. --depends zerotier-one
  84. --depends openssl
  85. --before-install before-install.sh
  86. --after-install after-install.sh
  87. --before-remove before-remove.sh
  88. --after-remove after-remove.sh
  89. --before-upgrade before-upgrade.sh
  90. --after-upgrade after-upgrade.sh
  91. "
  92. fpm -s dir -t rpm \
  93. $GENERAL_FPM_FLAGS \
  94. --vendor "$VENDOR" \
  95. --maintainer "$MAINTAINER" \
  96. --description "$DESCRIPTION" \
  97. --rpm-user ztncui \
  98. --rpm-group ztncui \
  99. .
  100. fpm -s dir -t deb \
  101. $GENERAL_FPM_FLAGS \
  102. --vendor "$VENDOR" \
  103. --maintainer "$MAINTAINER" \
  104. --description "$DESCRIPTION" \
  105. --deb-user ztncui \
  106. --deb-group ztncui \
  107. .
  108. rpm --addsign ../Release/ztncui*rpm
  109. rpm --checksig ../Release/ztncui*rpm
  110. createrepo $PKG_DIR
  111. gpg -u 'Key Networks' --detach-sign --armor $PKG_DIR/repodata/repomd.xml