1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-12-22 18:17:52 -05:00
v2fly/release/user-package.sh

162 lines
3.3 KiB
Bash
Raw Normal View History

2019-07-13 07:30:18 -04:00
#!/usr/bin/env bash
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
NOW=$(date '+%Y%m%d-%H%M%S')
TMP=$(mktemp -d)
2019-12-17 02:34:13 -05:00
SRCDIR=$(pwd)
2019-07-13 07:30:18 -04:00
CODENAME="user"
BUILDNAME=$NOW
2019-07-13 07:30:18 -04:00
cleanup() { rm -rf "$TMP"; }
2019-07-13 07:30:18 -04:00
trap cleanup INT TERM ERR
get_source() {
2020-10-07 03:02:29 -04:00
echo ">>> Clone v2fly/v2ray-core repo..."
git clone https://github.com/v2fly/v2ray-core.git
2020-10-07 03:02:29 -04:00
cd v2ray-core
go mod download
2019-07-13 07:30:18 -04:00
}
build_v2() {
if [[ $nosource != 1 ]]; then
2020-10-07 03:02:29 -04:00
cd ${SRCDIR}/v2ray-core
local VERSIONTAG=$(git describe --abbrev=0 --tags)
else
echo ">>> Use current directory as WORKDIR"
local VERSIONTAG=$(git describe --abbrev=0 --tags)
fi
2021-02-16 15:31:50 -05:00
LDFLAGS="-s -w -buildid= -X github.com/v2fly/v2ray-core/v4.codename=${CODENAME} -X github.com/v2fly/v2ray-core/v4.build=${BUILDNAME} -X github.com/v2fly/v2ray-core/v4.version=${VERSIONTAG}"
2019-07-13 07:30:18 -04:00
echo ">>> Compile v2ray ..."
env CGO_ENABLED=0 go build -o "$TMP"/v2ray"${EXESUFFIX}" -ldflags "$LDFLAGS" ./main
if [[ $GOOS == "windows" ]]; then
env CGO_ENABLED=0 go build -o "$TMP"/wv2ray"${EXESUFFIX}" -ldflags "-H windowsgui $LDFLAGS" ./main
fi
2019-07-13 07:30:18 -04:00
echo ">>> Compile v2ctl ..."
env CGO_ENABLED=0 go build -o "$TMP"/v2ctl"${EXESUFFIX}" -tags confonly -ldflags "$LDFLAGS" ./infra/control/main
2019-07-13 07:30:18 -04:00
}
build_dat() {
echo ">>> Download latest geoip..."
2020-09-25 14:39:08 -04:00
curl -s -L -o "$TMP"/geoip.dat "https://github.com/v2fly/geoip/raw/release/geoip.dat"
2019-07-13 07:30:18 -04:00
echo ">>> Download latest geosite..."
2020-09-25 14:39:08 -04:00
curl -s -L -o "$TMP"/geosite.dat "https://github.com/v2fly/domain-list-community/raw/release/dlc.dat"
2019-07-13 07:30:18 -04:00
}
copyconf() {
echo ">>> Copying config..."
2020-10-07 03:02:29 -04:00
cd ./release/config
2020-10-07 21:53:25 -04:00
if [[ $GOOS == "linux" ]]; then
tar c --exclude "*.dat" . | tar x -C "$TMP"
else
tar c --exclude "*.dat" --exclude "systemd/**" . | tar x -C "$TMP"
fi
2019-07-13 07:30:18 -04:00
}
packzip() {
echo ">>> Generating zip package"
2020-10-07 03:02:29 -04:00
cd "$TMP"
local PKG=${SRCDIR}/v2ray-custom-${GOARCH}-${GOOS}-${PKGSUFFIX}${NOW}.zip
zip -r "$PKG" .
echo ">>> Generated: $(basename "$PKG") at $(dirname "$PKG")"
}
packtgz() {
echo ">>> Generating tgz package"
2020-10-07 03:02:29 -04:00
cd "$TMP"
local PKG=${SRCDIR}/v2ray-custom-${GOARCH}-${GOOS}-${PKGSUFFIX}${NOW}.tar.gz
tar cvfz "$PKG" .
echo ">>> Generated: $(basename "$PKG") at $(dirname "$PKG")"
2019-07-13 07:30:18 -04:00
}
2019-10-30 23:20:06 -04:00
packtgzAbPath() {
local ABPATH="$1"
echo ">>> Generating tgz package at $ABPATH"
2020-10-07 03:02:29 -04:00
cd "$TMP"
tar cvfz "$ABPATH" .
2019-10-30 23:20:06 -04:00
echo ">>> Generated: $ABPATH"
}
pkg=zip
2019-07-13 07:30:18 -04:00
nosource=0
nodat=0
noconf=0
GOOS=linux
GOARCH=amd64
EXESUFFIX=
PKGSUFFIX=
for arg in "$@"; do
case $arg in
2020-10-07 21:53:25 -04:00
386 | arm* | mips* | ppc64* | riscv64 | s390x)
2019-07-13 07:30:18 -04:00
GOARCH=$arg
;;
windows)
2020-10-07 21:53:25 -04:00
GOOS=$arg
2019-07-13 07:30:18 -04:00
EXESUFFIX=.exe
;;
2020-10-07 21:53:25 -04:00
darwin | dragonfly | freebsd | openbsd)
2019-07-13 07:30:18 -04:00
GOOS=$arg
;;
nodat)
nodat=1
PKGSUFFIX=${PKGSUFFIX}nodat-
;;
noconf)
noconf=1
;;
nosource)
nosource=1
;;
tgz)
pkg=tgz
;;
2019-10-30 23:20:06 -04:00
abpathtgz=*)
pkg=${arg##abpathtgz=}
;;
2019-10-30 23:44:57 -04:00
codename=*)
CODENAME=${arg##codename=}
;;
buildname=*)
BUILDNAME=${arg##buildname=}
;;
esac
2019-07-13 07:30:18 -04:00
done
if [[ $nosource != 1 ]]; then
get_source
2019-07-13 07:30:18 -04:00
fi
export GOOS GOARCH
2019-10-30 23:44:57 -04:00
echo "Build ARGS: GOOS=${GOOS} GOARCH=${GOARCH} CODENAME=${CODENAME} BUILDNAME=${BUILDNAME}"
echo "PKG ARGS: pkg=${pkg}"
2019-07-13 07:30:18 -04:00
build_v2
if [[ $nodat != 1 ]]; then
build_dat
2019-07-13 07:30:18 -04:00
fi
if [[ $noconf != 1 ]]; then
copyconf
2019-07-13 07:30:18 -04:00
fi
if [[ $pkg == "zip" ]]; then
packzip
2019-10-30 23:20:06 -04:00
elif [[ $pkg == "tgz" ]]; then
packtgz
2019-10-30 23:20:06 -04:00
else
packtgzAbPath "$pkg"
fi
2019-07-13 07:30:18 -04:00
cleanup