From 44054958c9cac6dfb3e68a5d7b0a87ac8b197437 Mon Sep 17 00:00:00 2001 From: zijiren233 Date: Sun, 16 Jun 2024 15:54:23 +0800 Subject: [PATCH] Fix: env ver name --- script/build.config.sh | 45 +++++++++-------- script/build.sh | 107 ++++++++++++++++++++--------------------- 2 files changed, 74 insertions(+), 78 deletions(-) diff --git a/script/build.config.sh b/script/build.config.sh index 3c40d0a..cc8a3a1 100644 --- a/script/build.config.sh +++ b/script/build.config.sh @@ -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: /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: /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" diff --git a/script/build.sh b/script/build.sh index 011c947..3c9598c 100755 --- a/script/build.sh +++ b/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}"