1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- #!/bin/bash
- set -e
- export CGO_ENABLED=1
- export GO111MODULE=on
- export GOOS=linux
- export MUSL=/musl
- ## 准备必要的环境
- [[ ! -d ~/go/src ]] && mkdir -p ~/go/src
- [[ ! -d ~/go/bin ]] && mkdir -p ~/go/bin
- ## 下载源码并下载go mod
- cd ~/go/src
- curl -sSL https://github.com/ChineseSubFinder/ChineseSubFinder/archive/refs/tags/${VERSION}.tar.gz | tar xvz --strip-components 1
- npm --prefix frontend ci
- npm --prefix frontend run build
- go mod tidy
- ## 编译共用函数
- cross_make() {
- export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- if [[ -n ${CROSS_NAME} ]]; then
- export CPLUS_VERSION=$(${MUSL}/${CROSS_NAME}-cross/bin/${CROSS_NAME}-g++ --version | grep -oE '\d+\.\d+\.\d+' | head -1)
- export PATH=${MUSL}/${CROSS_NAME}-cross/bin:${MUSL}/${CROSS_NAME}-cross/${CROSS_NAME}/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- export C_INCLUDE_PATH=${MUSL}/${CROSS_NAME}-cross/${CROSS_NAME}/include
- export CPLUS_INCLUDE_PATH=${MUSL}/${CROSS_NAME}-cross/${CROSS_NAME}/include/c++/${CPLUS_VERSION}
- export LIBRARY_PATH=${MUSL}/${CROSS_NAME}-cross/${CROSS_NAME}/lib
- export CC=${CROSS_NAME}-gcc
- export CXX=${CROSS_NAME}-g++
- export AR=${CROSS_NAME}-ar
- fi
- echo "[$(date +'%H:%M:%S')] 开始编译 ${GOARCH} 平台..."
- go build \
- -ldflags="-s -w --extldflags '-static -fpic' -X main.AppVersion=${VERSION} -X main.LiteMode=true -X main.BaseKey=${BASEKEY} -X main.AESKey16=${AESKEY16} -X main.AESIv16=${AESIV16}" \
- -o ~/go/out/${GOARCH}/chinesesubfinder \
- ./cmd/chinesesubfinder
- if [[ -n ${CROSS_NAME} ]]; then
- unset -v CPLUS_VERSION PATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH LIBRARY_PATH CC CXX AR
- fi
- export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- }
- ## 开始交叉编译
- arches=( amd64 386 arm64 arm )
- crosses=( "" i686-linux-musl aarch64-linux-musl armv7l-linux-musleabihf )
- for ((i=0; i<${#arches[@]}; i++)); do
- export GOARCH=${arches[i]}
- export CROSS_NAME=${crosses[i]}
- [[ ${GOARCH} == amd64 ]] && export GOAMD64=v1
- [[ ${GOARCH} == arm ]] && export GOARM=7
- cross_make
- unset -v GOARCH CROSS_NAME GOAMD64 GOARM
- done
- ## 列出文件
- ls -lR ~/go/out
- exit 0
|