user-package.sh 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. #!/usr/bin/env bash
  2. # Bash3 Boilerplate. Copyright (c) 2014, kvz.io
  3. set -o errexit
  4. set -o pipefail
  5. set -o nounset
  6. # set -o xtrace
  7. trap 'echo -e "Aborted, error $? in command: $BASH_COMMAND"; trap ERR; exit 1' ERR
  8. # Set magic variables for current file & dir
  9. __dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  10. __file="${__dir}/$(basename "${BASH_SOURCE[0]}")"
  11. __base="$(basename ${__file} .sh)"
  12. __root="$(cd "$(dirname "${__dir}")" && pwd)" # <-- change this as it depends on your app
  13. NOW=$(date '+%Y%m%d-%H%M%S')
  14. TMP=$(mktemp -d)
  15. CODENAME="user"
  16. BUILDNAME=$NOW
  17. GOPATH=$(go env GOPATH)
  18. cleanup () { rm -rf $TMP; }
  19. trap cleanup INT TERM ERR
  20. get_source() {
  21. echo ">>> Getting v2ray sources ..."
  22. go get -insecure -v -t v2ray.com/core/...
  23. }
  24. build_v2() {
  25. pushd $GOPATH/src/v2ray.com/core
  26. echo ">>> Update source code name ..."
  27. sed -i "s/^[ \t]\+codename.\+$/\tcodename = \"${CODENAME}\"/;s/^[ \t]\+build.\+$/\tbuild = \"${BUILDNAME}\"/;" core.go
  28. echo ">>> Compile v2ray ..."
  29. pushd $GOPATH/src/v2ray.com/core/main
  30. env CGO_ENABLED=0 go build -o $TMP/v2ray${EXESUFFIX} -ldflags "-s -w"
  31. if [[ $GOOS == "windows" ]];then
  32. env CGO_ENABLED=0 go build -o $TMP/wv2ray${EXESUFFIX} -ldflags "-s -w -H windowsgui"
  33. fi
  34. popd
  35. git checkout -- core.go
  36. popd
  37. echo ">>> Compile v2ctl ..."
  38. pushd $GOPATH/src/v2ray.com/core/infra/control/main
  39. env CGO_ENABLED=0 go build -o $TMP/v2ctl${EXESUFFIX} -tags confonly -ldflags "-s -w"
  40. popd
  41. }
  42. build_dat() {
  43. echo ">>> Downloading newest geoip ..."
  44. wget -qO - https://api.github.com/repos/v2ray/geoip/releases/latest \
  45. | grep browser_download_url | cut -d '"' -f 4 \
  46. | wget -i - -O $TMP/geoip.dat
  47. echo ">>> Downloading newest geosite ..."
  48. wget -qO - https://api.github.com/repos/v2ray/domain-list-community/releases/latest \
  49. | grep browser_download_url | cut -d '"' -f 4 \
  50. | wget -i - -O $TMP/geosite.dat
  51. }
  52. copyconf() {
  53. echo ">>> Copying config..."
  54. pushd $GOPATH/src/v2ray.com/core/release/config
  55. tar c --exclude "*.dat" . | tar x -C $TMP
  56. }
  57. packzip() {
  58. echo ">>> Generating zip package"
  59. pushd $TMP
  60. local PKG=${__dir}/v2ray-custom-${GOARCH}-${GOOS}-${PKGSUFFIX}${NOW}.zip
  61. zip -r $PKG .
  62. echo ">>> Generated: $(basename $PKG)"
  63. }
  64. packtgz() {
  65. echo ">>> Generating tgz package"
  66. pushd $TMP
  67. local PKG=${__dir}/v2ray-custom-${GOARCH}-${GOOS}-${PKGSUFFIX}${NOW}.tar.gz
  68. tar cvfz $PKG .
  69. echo ">>> Generated: $(basename $PKG)"
  70. }
  71. pkg=zip
  72. nosource=0
  73. nodat=0
  74. noconf=0
  75. GOOS=linux
  76. GOARCH=amd64
  77. EXESUFFIX=
  78. PKGSUFFIX=
  79. for arg in "$@"; do
  80. case $arg in
  81. arm*)
  82. GOARCH=$arg
  83. ;;
  84. mips*)
  85. GOARCH=$arg
  86. ;;
  87. 386)
  88. GOARCH=386
  89. ;;
  90. windows)
  91. GOOS=windows
  92. EXESUFFIX=.exe
  93. ;;
  94. darwin)
  95. GOOS=$arg
  96. ;;
  97. nodat)
  98. nodat=1
  99. PKGSUFFIX=${PKGSUFFIX}nodat-
  100. ;;
  101. noconf)
  102. noconf=1
  103. ;;
  104. nosource)
  105. nosource=1
  106. ;;
  107. tgz)
  108. pkg=tgz
  109. ;;
  110. esac
  111. done
  112. if [[ $nosource != 1 ]]; then
  113. get_source
  114. fi
  115. export GOOS GOARCH
  116. build_v2
  117. if [[ $nodat != 1 ]]; then
  118. build_dat
  119. fi
  120. if [[ $noconf != 1 ]]; then
  121. copyconf
  122. fi
  123. if [[ $pkg == "zip" ]]; then
  124. packzip
  125. fi
  126. if [[ $pkg == "tgz" ]]; then
  127. packtgz
  128. fi
  129. cleanup