mirror of https://github.com/synctv-org/synctv.git
Fix: env ver name
This commit is contained in:
parent
00da69a5fc
commit
44054958c9
|
@ -2,19 +2,19 @@ function parseDepArgs() {
|
|||
for i in "$@"; do
|
||||
case ${i,,} in
|
||||
--version=*)
|
||||
version="${i#*=}"
|
||||
VERSION="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
--skip-init-web)
|
||||
skip_init_web="true"
|
||||
SKIP_INIT_WEB="true"
|
||||
shift
|
||||
;;
|
||||
--web-version=*)
|
||||
web_version="${i#*=}"
|
||||
WEB_VERSION="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
--web-repo=*)
|
||||
web_repo="${i#*=}"
|
||||
WEB_REPO="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
|
@ -27,14 +27,14 @@ function parseDepArgs() {
|
|||
function printDepHelp() {
|
||||
echo -e "${COLOR_YELLOW}--version=${COLOR_RESET} set build version (default: dev)"
|
||||
echo -e "${COLOR_YELLOW}--web-version=${COLOR_RESET} set web dependency version (default: VERSION)"
|
||||
echo -e "${COLOR_YELLOW}--web-repo=${COLOR_RESET} set web repository (default: $(repoOwner)/synctv-web)"
|
||||
echo -e "${COLOR_YELLOW}--web-repo=${COLOR_RESET} set web repository (default: <owner>/synctv-web)"
|
||||
echo -e "${COLOR_YELLOW}--skip-init-web${COLOR_RESET}"
|
||||
}
|
||||
|
||||
function printDepEnvHelp() {
|
||||
echo -e "${COLOR_LIGHT_GREEN}VERSION${COLOR_RESET} (default: dev)"
|
||||
echo -e "${COLOR_LIGHT_GREEN}WEB_VERSION${COLOR_RESET} set web dependency version (default: VERSION)"
|
||||
echo -e "${COLOR_LIGHT_GREEN}WEB_REPO${COLOR_RESET} set web repository (default: $(repoOwner)/synctv-web)"
|
||||
echo -e "${COLOR_LIGHT_GREEN}WEB_REPO${COLOR_RESET} set web repository (default: <owner>/synctv-web)"
|
||||
echo -e "${COLOR_LIGHT_GREEN}SKIP_INIT_WEB${COLOR_RESET}"
|
||||
}
|
||||
|
||||
|
@ -45,33 +45,32 @@ function initDepPlatforms() {
|
|||
fi
|
||||
}
|
||||
|
||||
function repoOwner() {
|
||||
git config user.name 2>/dev/null || echo "synctv-org"
|
||||
}
|
||||
|
||||
function initDep() {
|
||||
setDefault "version" "dev"
|
||||
version="$(echo "$version" | sed 's/ //g' | sed 's/"//g' | sed 's/\n//g')"
|
||||
if [[ "${version}" != "dev" ]] && [[ ! "${version}" =~ ^v?[0-9]+\.[0-9]+\.[0-9]+(-beta.*|-rc.*|-alpha.*)?$ ]]; then
|
||||
echo "version format error: ${version}"
|
||||
setDefault "VERSION" "dev"
|
||||
VERSION="$(echo "$VERSION" | sed 's/ //g' | sed 's/"//g' | sed 's/\n//g')"
|
||||
if [[ "${VERSION}" != "dev" ]] && [[ ! "${VERSION}" =~ ^v?[0-9]+\.[0-9]+\.[0-9]+(-beta.*|-rc.*|-alpha.*)?$ ]]; then
|
||||
echo "version format error: ${VERSION}"
|
||||
return 1
|
||||
fi
|
||||
setDefault "web_version" "${version}"
|
||||
setDefault "web_repo" "$(repoOwner)/synctv-web"
|
||||
setDefault "skip_init_web" ""
|
||||
setDefault "WEB_VERSION" "${VERSION}"
|
||||
# 使用 git 命令获取仓库所有者,如果失败则使用默认值 "synctv-org"
|
||||
local repo_owner
|
||||
repo_owner=$(git config user.name 2>/dev/null || echo "synctv-org")
|
||||
setDefault "WEB_REPO" "${repo_owner}/synctv-web"
|
||||
setDefault "SKIP_INIT_WEB" ""
|
||||
|
||||
echo -e "${COLOR_BLUE}version:${COLOR_RESET} ${COLOR_CYAN}${version}${COLOR_RESET}"
|
||||
echo -e "${COLOR_BLUE}version:${COLOR_RESET} ${COLOR_CYAN}${VERSION}${COLOR_RESET}"
|
||||
|
||||
addLDFLAGS "-X 'github.com/synctv-org/synctv/internal/version.Version=${version}'"
|
||||
setDefault "web_version" "${version}"
|
||||
addLDFLAGS "-X 'github.com/synctv-org/synctv/internal/version.WebVersion=${web_version}'"
|
||||
addLDFLAGS "-X 'github.com/synctv-org/synctv/internal/version.Version=${VERSION}'"
|
||||
setDefault "WEB_VERSION" "${VERSION}"
|
||||
addLDFLAGS "-X 'github.com/synctv-org/synctv/internal/version.WebVersion=${WEB_VERSION}'"
|
||||
|
||||
local git_commit
|
||||
git_commit="$(git log --pretty=format:"%h" -1)" || git_commit="unknown"
|
||||
addLDFLAGS "-X 'github.com/synctv-org/synctv/internal/version.GitCommit=${git_commit}'"
|
||||
|
||||
if [[ -z "${skip_init_web}" ]] && [[ -n "${web_version}" ]]; then
|
||||
downloadAndUnzip "https://github.com/${web_repo}/releases/download/${web_version}/dist.tar.gz" "${source_dir}/public/dist"
|
||||
if [[ -z "${SKIP_INIT_WEB}" ]] && [[ -n "${WEB_VERSION}" ]]; then
|
||||
downloadAndUnzip "https://github.com/${WEB_REPO}/releases/download/${WEB_VERSION}/dist.tar.gz" "${source_dir}/public/dist"
|
||||
fi
|
||||
|
||||
addTags "jsoniter"
|
||||
|
|
107
script/build.sh
107
script/build.sh
|
@ -1,7 +1,6 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# 使用更丰富的颜色定义
|
||||
readonly COLOR_RED='\033[0;31m'
|
||||
readonly COLOR_GREEN='\033[0;32m'
|
||||
readonly COLOR_YELLOW='\033[0;33m'
|
||||
|
@ -65,6 +64,7 @@ function printEnvHelp() {
|
|||
|
||||
function printHelp() {
|
||||
echo -e "${COLOR_BLUE}-h, --help${COLOR_RESET} get help"
|
||||
echo -e "${COLOR_BLUE}-eh, --env-help${COLOR_RESET} get environment help"
|
||||
echo -e "${COLOR_BLUE}--disable-cgo${COLOR_RESET} disable cgo"
|
||||
echo -e "${COLOR_BLUE}--source-dir=${COLOR_RESET} set source dir (default: ${DEFAULT_SOURCE_DIR})"
|
||||
echo -e "${COLOR_BLUE}--more-go-cmd-args=${COLOR_RESET} more go cmd args"
|
||||
|
@ -80,18 +80,14 @@ function printHelp() {
|
|||
echo -e "${COLOR_BLUE}--host-cc=${COLOR_RESET} host cc (default: ${DEFAULT_CC})"
|
||||
echo -e "${COLOR_BLUE}--host-cxx=${COLOR_RESET} host cxx (default: ${DEFAULT_CXX})"
|
||||
|
||||
echo -e "${COLOR_DARK_GRAY}$(getSeparator)${COLOR_RESET}"
|
||||
printBuildConfigHelp
|
||||
|
||||
if declare -f printDepHelp >/dev/null; then
|
||||
echo -e "${COLOR_PURPLE}$(getSeparator)${COLOR_RESET}"
|
||||
echo -e "Dep Help:"
|
||||
printDepHelp
|
||||
fi
|
||||
|
||||
echo -e "${COLOR_LIGHT_GRAY}$(getSeparator)${COLOR_RESET}"
|
||||
echo -e "Env Help:"
|
||||
printEnvHelp
|
||||
echo -e "${COLOR_DARK_GRAY}$(getSeparator)${COLOR_RESET}"
|
||||
printBuildConfigHelp
|
||||
}
|
||||
|
||||
function setDefault() {
|
||||
|
@ -116,34 +112,34 @@ function addBuildArgs() {
|
|||
}
|
||||
|
||||
function fixArgs() {
|
||||
setDefault "source_dir" "${DEFAULT_SOURCE_DIR}"
|
||||
source_dir="$(cd "${source_dir}" && pwd)"
|
||||
setDefault "bin_name" "$(basename "${source_dir}")"
|
||||
setDefault "result_dir" "${DEFAULT_RESULT_DIR}"
|
||||
mkdir -p "${result_dir}"
|
||||
result_dir="$(cd "${result_dir}" && pwd)"
|
||||
setDefault "SOURCE_DIR" "${DEFAULT_SOURCE_DIR}"
|
||||
source_dir="$(cd "${SOURCE_DIR}" && pwd)"
|
||||
setDefault "BIN_NAME" "$(basename "${SOURCE_DIR}")"
|
||||
setDefault "RESULT_DIR" "${DEFAULT_RESULT_DIR}"
|
||||
mkdir -p "${RESULT_DIR}"
|
||||
result_dir="$(cd "${RESULT_DIR}" && pwd)"
|
||||
echo -e "${COLOR_BLUE}build source dir: ${COLOR_GREEN}${source_dir}${COLOR_RESET}"
|
||||
echo -e "${COLOR_BLUE}build result dir: ${COLOR_GREEN}${result_dir}${COLOR_RESET}"
|
||||
|
||||
setDefault "cgo_cross_compiler_dir" "$DEFAULT_CGO_CROSS_COMPILER_DIR"
|
||||
mkdir -p "${cgo_cross_compiler_dir}"
|
||||
cgo_cross_compiler_dir="$(cd "${cgo_cross_compiler_dir}" && pwd)"
|
||||
setDefault "CGO_CROSS_COMPILER_DIR" "$DEFAULT_CGO_CROSS_COMPILER_DIR"
|
||||
mkdir -p "${CGO_CROSS_COMPILER_DIR}"
|
||||
cgo_cross_compiler_dir="$(cd "${CGO_CROSS_COMPILER_DIR}" && pwd)"
|
||||
|
||||
setDefault "platforms" "${GOHOSTPLATFORM}"
|
||||
setDefault "disable_micro" ""
|
||||
setDefault "host_cc" "${DEFAULT_CC}"
|
||||
setDefault "host_cxx" "${DEFAULT_CXX}"
|
||||
setDefault "force_cc" ""
|
||||
setDefault "force_cxx" ""
|
||||
setDefault "gh_proxy" ""
|
||||
setDefault "tags" ""
|
||||
setDefault "ldflags" "${DEFAULT_LDFLAGS}"
|
||||
setDefault "build_args" ""
|
||||
setDefault "cgo_deps_version" "${DEFAULT_CGO_DEPS_VERSION}"
|
||||
setDefault "PLATFORMS" "${GOHOSTPLATFORM}"
|
||||
setDefault "DISABLE_MICRO" ""
|
||||
setDefault "HOST_CC" "${DEFAULT_CC}"
|
||||
setDefault "HOST_CXX" "${DEFAULT_CXX}"
|
||||
setDefault "FORCE_CC" ""
|
||||
setDefault "FORCE_CXX" ""
|
||||
setDefault "GH_PROXY" ""
|
||||
setDefault "TAGS" ""
|
||||
setDefault "LDFLAGS" "${DEFAULT_LDFLAGS}"
|
||||
setDefault "BUILD_ARGS" ""
|
||||
setDefault "CGO_DEPS_VERSION" "${DEFAULT_CGO_DEPS_VERSION}"
|
||||
}
|
||||
|
||||
function isCGOEnabled() {
|
||||
[[ "${cgo_enabled}" == "1" ]]
|
||||
[[ "${CGO_ENABLED}" == "1" ]]
|
||||
}
|
||||
|
||||
function downloadAndUnzip() {
|
||||
|
@ -261,7 +257,7 @@ function removeDuplicatePlatforms() {
|
|||
}
|
||||
|
||||
function initPlatforms() {
|
||||
setDefault "cgo_enabled" "${DEFAULT_CGO_ENABLED}"
|
||||
setDefault "CGO_ENABLED" "${DEFAULT_CGO_ENABLED}"
|
||||
|
||||
unset -v CURRENT_ALLOWED_PLATFORM
|
||||
|
||||
|
@ -342,11 +338,11 @@ function initCGODeps() {
|
|||
local goarch="$2"
|
||||
local micro="$3"
|
||||
|
||||
if [[ -n "${force_cc}" ]] && [[ -n "${force_cxx}" ]]; then
|
||||
cgo_deps["CC"]="${force_cc}"
|
||||
cgo_deps["CXX"]="${force_cxx}"
|
||||
if [[ -n "${FORCE_CC}" ]] && [[ -n "${FORCE_CXX}" ]]; then
|
||||
cgo_deps["CC"]="${FORCE_CC}"
|
||||
cgo_deps["CXX"]="${FORCE_CXX}"
|
||||
return
|
||||
elif [[ -n "${force_cc}" ]] || [[ -n "${force_cxx}" ]]; then
|
||||
elif [[ -n "${FORCE_CC}" ]] || [[ -n "${FORCE_CXX}" ]]; then
|
||||
echo -e "${COLOR_RED}FORCE_CC and FORCE_CXX must be set at the same time${COLOR_RESET}"
|
||||
return 1
|
||||
fi
|
||||
|
@ -400,8 +396,8 @@ function initCGODeps() {
|
|||
}
|
||||
|
||||
function initHostCGODeps() {
|
||||
cgo_deps["CC"]="${host_cc}"
|
||||
cgo_deps["CXX"]="${host_cxx}"
|
||||
cgo_deps["CC"]="${HOST_CC}"
|
||||
cgo_deps["CXX"]="${HOST_CXX}"
|
||||
}
|
||||
|
||||
function initDefaultCGODeps() {
|
||||
|
@ -411,7 +407,6 @@ function initDefaultCGODeps() {
|
|||
local unamespacer="${GOHOSTOS}-${GOHOSTARCH}"
|
||||
[[ "${GOHOSTARCH}" == "arm" ]] && unamespacer="${GOHOSTOS}-arm32v7"
|
||||
|
||||
# 根据不同的目标平台和架构初始化 CGO 依赖项
|
||||
case "${goos}" in
|
||||
"linux")
|
||||
case "${micro}" in
|
||||
|
@ -523,7 +518,7 @@ function initLinuxCGO() {
|
|||
eval "${cc_var}=\"${cgo_cross_compiler_dir}/${cross_compiler_name}/bin/${arch_prefix}-linux-musl${abi}${micro}-gcc\""
|
||||
eval "${cxx_var}=\"${cgo_cross_compiler_dir}/${cross_compiler_name}/bin/${arch_prefix}-linux-musl${abi}${micro}-g++\""
|
||||
else
|
||||
downloadAndUnzip "${GH_PROXY}https://github.com/zijiren233/musl-cross-make/releases/download/${cgo_deps_version}/${cross_compiler_name}-${unamespacer}.tgz" \
|
||||
downloadAndUnzip "${GH_PROXY}https://github.com/zijiren233/musl-cross-make/releases/download/${CGO_DEPS_VERSION}/${cross_compiler_name}-${unamespacer}.tgz" \
|
||||
"${cgo_cross_compiler_dir}/${cross_compiler_name}"
|
||||
eval "${cc_var}=\"${cgo_cross_compiler_dir}/${cross_compiler_name}/bin/${arch_prefix}-linux-musl${abi}${micro}-gcc\""
|
||||
eval "${cxx_var}=\"${cgo_cross_compiler_dir}/${cross_compiler_name}/bin/${arch_prefix}-linux-musl${abi}${micro}-g++\""
|
||||
|
@ -553,7 +548,7 @@ function initWindowsCGO() {
|
|||
eval "${cc_var}=\"${cgo_cross_compiler_dir}/${cross_compiler_name}/bin/${arch_prefix}-w64-mingw32-gcc\""
|
||||
eval "${cxx_var}=\"${cgo_cross_compiler_dir}/${cross_compiler_name}/bin/${arch_prefix}-w64-mingw32-g++\""
|
||||
else
|
||||
downloadAndUnzip "${GH_PROXY}https://github.com/zijiren233/musl-cross-make/releases/download/${cgo_deps_version}/${cross_compiler_name}-${unamespacer}.tgz" \
|
||||
downloadAndUnzip "${GH_PROXY}https://github.com/zijiren233/musl-cross-make/releases/download/${CGO_DEPS_VERSION}/${cross_compiler_name}-${unamespacer}.tgz" \
|
||||
"${cgo_cross_compiler_dir}/${cross_compiler_name}"
|
||||
eval "${cc_var}=\"${cgo_cross_compiler_dir}/${cross_compiler_name}/bin/${arch_prefix}-w64-mingw32-gcc\""
|
||||
eval "${cxx_var}=\"${cgo_cross_compiler_dir}/${cross_compiler_name}/bin/${arch_prefix}-w64-mingw32-g++\""
|
||||
|
@ -592,7 +587,6 @@ function getSeparator() {
|
|||
echo $separator
|
||||
}
|
||||
|
||||
# 构建目标平台
|
||||
function buildTarget() {
|
||||
local platform="$1"
|
||||
local target_name="$2"
|
||||
|
@ -605,7 +599,7 @@ function buildTarget() {
|
|||
supportPIE "${platform}" && build_mode="-buildmode=pie"
|
||||
|
||||
local build_env=(
|
||||
"CGO_ENABLED=${cgo_enabled}"
|
||||
"CGO_ENABLED=${CGO_ENABLED}"
|
||||
"GOOS=${goos}"
|
||||
"GOARCH=${goarch}"
|
||||
)
|
||||
|
@ -614,7 +608,7 @@ function buildTarget() {
|
|||
|
||||
buildTargetWithMicro "" "${build_env[@]}"
|
||||
|
||||
if [ -n "${disable_micro}" ]; then
|
||||
if [ -n "${DISABLE_MICRO}" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
|
@ -664,7 +658,6 @@ function buildTarget() {
|
|||
esac
|
||||
}
|
||||
|
||||
# 构建特定微架构的目标平台
|
||||
function buildTargetWithMicro() {
|
||||
local micro="$1"
|
||||
local build_env=("${@:2}")
|
||||
|
@ -719,7 +712,7 @@ function buildTargetWithMicro() {
|
|||
|
||||
echo -e "${COLOR_PURPLE}building ${goos}/${goarch}${micro:+/${micro}}${COLOR_RESET}"
|
||||
echo "${build_env[@]}"
|
||||
env "${build_env[@]}" go build -tags "${tags}" -ldflags "${ldflags}" -trimpath ${build_args} ${build_mode} -o "${target_file}" "${source_dir}"
|
||||
env "${build_env[@]}" go build -tags "${TAGS}" -ldflags "${LDFLAGS}" -trimpath ${BUILD_ARGS} ${build_mode} -o "${target_file}" "${source_dir}"
|
||||
echo -e "${COLOR_LIGHT_GREEN}build ${goos}/${goarch}${micro:+ ${micro}} success${COLOR_RESET}"
|
||||
}
|
||||
|
||||
|
@ -754,7 +747,7 @@ function autoBuild() {
|
|||
fi
|
||||
|
||||
for platform in ${platforms//,/ }; do
|
||||
buildTarget "${platform}" "${bin_name}"
|
||||
buildTarget "${platform}" "${BIN_NAME}"
|
||||
done
|
||||
}
|
||||
|
||||
|
@ -781,12 +774,16 @@ for i in "$@"; do
|
|||
printHelp
|
||||
exit 0
|
||||
;;
|
||||
-eh | --env-help)
|
||||
printEnvHelp
|
||||
exit 0
|
||||
;;
|
||||
--disable-cgo)
|
||||
cgo_enabled="0"
|
||||
CGO_ENABLED="0"
|
||||
shift
|
||||
;;
|
||||
--source-dir=*)
|
||||
source_dir="${i#*=}"
|
||||
SOURCE_DIR="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
--more-go-cmd-args=*)
|
||||
|
@ -794,7 +791,7 @@ for i in "$@"; do
|
|||
shift
|
||||
;;
|
||||
--disable-micro)
|
||||
disable_micro="true"
|
||||
DISABLE_MICRO="true"
|
||||
shift
|
||||
;;
|
||||
--ldflags=*)
|
||||
|
@ -802,11 +799,11 @@ for i in "$@"; do
|
|||
shift
|
||||
;;
|
||||
--platforms=*)
|
||||
platforms="${i#*=}"
|
||||
PLATFORMS="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
--result-dir=*)
|
||||
result_dir="${i#*=}"
|
||||
RESULT_DIR="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
--tags=*)
|
||||
|
@ -819,23 +816,23 @@ for i in "$@"; do
|
|||
exit 0
|
||||
;;
|
||||
--github-proxy-mirror=*)
|
||||
gh_proxy="${i#*=}"
|
||||
GH_PROXY="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
--force-gcc=*)
|
||||
force_cc="${i#*=}"
|
||||
FORCE_CC="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
--force-g++=*)
|
||||
force_cxx="${i#*=}"
|
||||
FORCE_CXX="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
--host-cc=*)
|
||||
host_cc="${i#*=}"
|
||||
HOST_CC="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
--host-cxx=*)
|
||||
host_cxx="${i#*=}"
|
||||
HOST_CXX="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
|
@ -851,4 +848,4 @@ done
|
|||
|
||||
fixArgs
|
||||
initPlatforms
|
||||
autoBuild "${platforms}"
|
||||
autoBuild "${PLATFORMS}"
|
||||
|
|
Loading…
Reference in New Issue