| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- #!/usr/bin/env bash
- # Bash3 Boilerplate. Copyright (c) 2014, kvz.io
- set -o errexit
- set -o pipefail
- set -o nounset
- # set -o xtrace
- trap 'echo -e "Aborted, error $? in command: $BASH_COMMAND"; trap ERR; exit 1' ERR
- # Set magic variables for current file & dir
- __dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- __file="${__dir}/$(basename "${BASH_SOURCE[0]}")"
- __base="$(basename ${__file} .sh)"
- __root="$(cd "$(dirname "${__dir}")" && pwd)" # <-- change this as it depends on your app
- NOW=$(date '+%Y%m%d-%H%M%S')
- TMP=$(mktemp -d)
- CODENAME="user"
- BUILDNAME=$NOW
- GOPATH=$(go env GOPATH)
- cleanup () { rm -rf $TMP; }
- trap cleanup INT TERM ERR
- get_source() {
- echo ">>> Getting v2ray sources ..."
- go get -insecure -v -t v2ray.com/core/...
- }
- build_v2() {
- pushd $GOPATH/src/v2ray.com/core
- echo ">>> Update source code name ..."
- sed -i "s/^[ \t]\+codename.\+$/\tcodename = \"${CODENAME}\"/;s/^[ \t]\+build.\+$/\tbuild = \"${BUILDNAME}\"/;" core.go
- echo ">>> Compile v2ray ..."
- pushd $GOPATH/src/v2ray.com/core/main
- env CGO_ENABLED=0 go build -o $TMP/v2ray${EXESUFFIX} -ldflags "-s -w"
- if [[ $GOOS == "windows" ]];then
- env CGO_ENABLED=0 go build -o $TMP/wv2ray${EXESUFFIX} -ldflags "-s -w -H windowsgui"
- fi
- popd
- git checkout -- core.go
- popd
- echo ">>> Compile v2ctl ..."
- pushd $GOPATH/src/v2ray.com/core/infra/control/main
- env CGO_ENABLED=0 go build -o $TMP/v2ctl${EXESUFFIX} -tags confonly -ldflags "-s -w"
- popd
- }
- build_dat() {
- echo ">>> Downloading newest geoip ..."
- wget -qO - https://api.github.com/repos/v2ray/geoip/releases/latest \
- | grep browser_download_url | cut -d '"' -f 4 \
- | wget -i - -O $TMP/geoip.dat
- echo ">>> Downloading newest geosite ..."
- wget -qO - https://api.github.com/repos/v2ray/domain-list-community/releases/latest \
- | grep browser_download_url | cut -d '"' -f 4 \
- | wget -i - -O $TMP/geosite.dat
- }
- copyconf() {
- echo ">>> Copying config..."
- pushd $GOPATH/src/v2ray.com/core/release/config
- tar c --exclude "*.dat" . | tar x -C $TMP
- }
- packzip() {
- echo ">>> Generating zip package"
- pushd $TMP
- local PKG=${__dir}/v2ray-custom-${GOARCH}-${GOOS}-${PKGSUFFIX}${NOW}.zip
- zip -r $PKG .
- echo ">>> Generated: $(basename $PKG)"
- }
- packtgz() {
- echo ">>> Generating tgz package"
- pushd $TMP
- local PKG=${__dir}/v2ray-custom-${GOARCH}-${GOOS}-${PKGSUFFIX}${NOW}.tar.gz
- tar cvfz $PKG .
- echo ">>> Generated: $(basename $PKG)"
- }
- pkg=zip
- nosource=0
- nodat=0
- noconf=0
- GOOS=linux
- GOARCH=amd64
- EXESUFFIX=
- PKGSUFFIX=
- for arg in "$@"; do
- case $arg in
- arm*)
- GOARCH=$arg
- ;;
- mips*)
- GOARCH=$arg
- ;;
- 386)
- GOARCH=386
- ;;
- windows)
- GOOS=windows
- EXESUFFIX=.exe
- ;;
- darwin)
- GOOS=$arg
- ;;
- nodat)
- nodat=1
- PKGSUFFIX=${PKGSUFFIX}nodat-
- ;;
- noconf)
- noconf=1
- ;;
- nosource)
- nosource=1
- ;;
- tgz)
- pkg=tgz
- ;;
- esac
- done
- if [[ $nosource != 1 ]]; then
- get_source
- fi
- export GOOS GOARCH
- build_v2
- if [[ $nodat != 1 ]]; then
- build_dat
- fi
- if [[ $noconf != 1 ]]; then
- copyconf
- fi
- if [[ $pkg == "zip" ]]; then
- packzip
- fi
- if [[ $pkg == "tgz" ]]; then
- packtgz
- fi
- cleanup
|