Fix: docker build

pull/70/head
zijiren233 3 years ago
parent 5f8358d75d
commit 87babaf9df

@ -10,8 +10,8 @@ WORKDIR /synctv
COPY ./ ./ COPY ./ ./
RUN apk add --no-cache bash curl git go && \ RUN apk add --no-cache bash curl git go musl-dev && \
bash script/build.sh -v ${VERSION} bash script/build.sh -Mv ${VERSION}
From alpine:latest From alpine:latest

@ -24,6 +24,8 @@ function DepHelp() {
function Help() { function Help() {
echo "-h get help" echo "-h get help"
echo "-C disable cgo" echo "-C disable cgo"
echo "-c force set gcc"
echo "-x force set g++"
echo "-v set build version (default: dev)" echo "-v set build version (default: dev)"
echo "-S set source dir (default: ../)" echo "-S set source dir (default: ../)"
echo "-m set build mode (default: pie)" echo "-m set build mode (default: pie)"
@ -34,7 +36,7 @@ function Help() {
echo "-d set build result dir (default: build)" echo "-d set build result dir (default: build)"
echo "-T set tags (default: jsoniter)" echo "-T set tags (default: jsoniter)"
echo "-t show all targets" echo "-t show all targets"
echo "-m use github proxy mirror" echo "-g use github proxy mirror"
echo "----" echo "----"
echo "Dep Help:" echo "Dep Help:"
DepHelp DepHelp
@ -78,7 +80,7 @@ function Init() {
} }
function ParseArgs() { function ParseArgs() {
while getopts "hCsS:v:w:m:l:p:Pd:T:tmM" arg; do while getopts "hCsS:v:w:m:l:p:Pd:T:tgMc:x:" arg; do
case $arg in case $arg in
h) h)
Help Help
@ -90,6 +92,12 @@ function ParseArgs() {
C) C)
CGO_ENABLED="0" CGO_ENABLED="0"
;; ;;
c)
FORCE_CC="$OPTARG"
;;
x)
FORCE_CXX="$OPTARG"
;;
S) S)
SOURCH_DIR="$OPTARG" SOURCH_DIR="$OPTARG"
;; ;;
@ -114,7 +122,7 @@ function ParseArgs() {
t) t)
SHOW_TARGETS=1 SHOW_TARGETS=1
;; ;;
m) g)
GH_PROXY="https://mirror.ghproxy.com/" GH_PROXY="https://mirror.ghproxy.com/"
;; ;;
M) M)
@ -341,11 +349,33 @@ function CheckAllPlatform() {
} }
function InitCGODeps() { function InitCGODeps() {
if [ "$FORCE_CC" ] && [ ! "$FORCE_CXX" ]; then
echo "FORCE_CC and FORCE_CXX must be set at the same time"
exit 1
elif [ ! "$FORCE_CC" ] && [ "$FORCE_CXX" ]; then
echo "FORCE_CC and FORCE_CXX must be set at the same time"
exit 1
elif [ "$FORCE_CC" ] && [ "$FORCE_CXX" ]; then
CC="$FORCE_CC"
CXX="$FORCE_CXX"
return
fi
CC=""
CXX=""
if [ "$CGO_ENABLED" != "1" ]; then if [ "$CGO_ENABLED" != "1" ]; then
CC=""
CXX=""
return return
fi fi
GOOS="$1"
GOARCH="$2"
MICRO="$3"
if [ "$GOOS" == "$GOHOSTOS" ] && [ "$GOARCH" == "$GOHOSTARCH" ]; then
InitHostCGODeps "$@"
return
fi
case "$GOHOSTOS" in case "$GOHOSTOS" in
"linux") "linux")
case "$GOHOSTARCH" in case "$GOHOSTARCH" in
@ -359,7 +389,8 @@ function InitCGODeps() {
esac esac
;; ;;
*) *)
InitHostCGODeps $@ echo "cgo not support for $GOOS"
exit 1
;; ;;
esac esac
} }
@ -369,35 +400,16 @@ function InitHostCGODeps() {
GOARCH="$2" GOARCH="$2"
MICRO="$3" MICRO="$3"
if [ "$GOOS" == "$GOHOSTOS" ] && [ "$GOARCH" == "$GOHOSTARCH" ]; then if [ -z $(command -v gcc) ]; then
CC="gcc" echo "gcc not found in PATH"
CXX="g++"
else
echo "cgo not support for $GOOS"
exit 1
fi
CC=$(command -v "$CC")
if [ $? -ne 0 ]; then
echo "CC: $CC not found"
exit 1
fi
CXX=$(command -v "$CXX")
if [ $? -ne 0 ]; then
echo "CXX: $CXX not found"
exit 1
fi
CC="$(cd "$(dirname "$CC")" && pwd)/$(basename "$CC")"
if [ $? -ne 0 ]; then
echo "CC: $CC not found"
exit 1 exit 1
fi fi
CXX="$(cd "$(dirname "$CXX")" && pwd)/$(basename "$CXX")" if [ -z $(command -v g++) ]; then
if [ $? -ne 0 ]; then echo "g++ not found in PATH"
echo "CXX: $CXX not found"
exit 1 exit 1
fi fi
CC="gcc"
CXX="g++"
} }
function InitLinuxAmd64CGODeps() { function InitLinuxAmd64CGODeps() {
@ -887,16 +899,8 @@ function InitLinuxAmd64CGODeps() {
exit 1 exit 1
fi fi
CC="$(cd "$(dirname "$CC")" && pwd)/$(basename "$CC") -static --static" CC="$CC -static --static"
if [ $? -ne 0 ]; then CXX="$CXX -static --static"
echo "CC: $CC not found"
exit 1
fi
CXX="$(cd "$(dirname "$CXX")" && pwd)/$(basename "$CXX") -static --static"
if [ $? -ne 0 ]; then
echo "CXX: $CXX not found"
exit 1
fi
} }
function Build() { function Build() {

Loading…
Cancel
Save