22
33CUR_DIR=$( cd $( dirname $0 ) && pwd )
44VERSION=$( grep -E ' ^version' ${CUR_DIR} /../Cargo.toml | awk ' {print $3}' | sed ' s/"//g' )
5- ENABLE_GZ=false
6- BUILD_DOCKER_IMG=false
7- BUILD_NIGHTLY=false
85
9- while getopts " v:ghbn" opt; do
10- case $opt in
11- v)
12- VERSION=$OPTARG
13- ;;
14- g)
15- ENABLE_GZ=true
16- ;;
17- b)
18- BUILD_DOCKER_IMG=true
19- ;;
20- n)
21- BUILD_NIGHTLY=true
22- ;;
23- h|\? )
24- echo " $0 [-v VERSION] [-g] [-h] [-b] [-n]"
25- echo " -v VERSION Specify VERSION in output package name"
26- echo " -g Enable GZip"
27- echo " -b Re-build docker image"
28- echo " -n Build with nightly rust"
29- echo " -h Show this image"
30- exit 0
31- ;;
32- esac
33- done
6+ cd " $CUR_DIR /.."
347
35- if $BUILD_NIGHTLY ; then
36- RELEASE_NAME=" nightly" ;
37- else
38- RELEASE_NAME=" stable" ;
39- fi
40-
41- echo " * Building ${RELEASE_NAME} package ${VERSION} ..."
8+ # # Disable OS X ACL file
9+ export COPYFILE_DISABLE=1
4210
43- if $BUILD_NIGHTLY ; then
44- IMAGE=' shadowsocks-rust:nightly'
45- else
46- IMAGE=' shadowsocks-rust:stable'
47- fi
11+ function build() {
12+ TARGET=$1
13+ echo " * Building ${TARGET} package ${VERSION} ..."
4814
49- if [[ " $http_proxy " != " " ]]; then
50- ENV_HTTP_PROXY=$http_proxy
51- elif [[ " $HTTP_PROXY " != " " ]]; then
52- ENV_HTTP_PROXY=$HTTP_PROXY
53- fi
15+ RELEASE_DIR=" target/${TARGET} /release"
16+ PKG_NAME=" shadowsocks-v${VERSION} -stable.${TARGET} .tar.xz"
17+ PKG_PATH=" ${CUR_DIR} /${PKG_NAME} "
5418
55- if [[ " $https_proxy " != " " ]]; then
56- ENV_HTTPS_PROXY=$https_proxy
57- elif [[ " $HTTPS_PROXY " != " " ]]; then
58- ENV_HTTPS_PROXY=$HTTPS_PROXY
59- fi
19+ cross build --target " ${TARGET} " \
20+ --features " miscreant" \
21+ --release
6022
61- if $BUILD_DOCKER_IMG ; then
62- echo " * Rebuild docker image ${IMAGE} ..." ;
63- if $BUILD_NIGHTLY ; then
64- docker build \
65- -t " ${IMAGE} " \
66- " $CUR_DIR " \
67- --build-arg TOOLCHAIN=nightly \
68- --build-arg HTTP_PROXY=" $ENV_HTTP_PROXY " \
69- --build-arg HTTPS_PROXY=" $ENV_HTTPS_PROXY " ;
70- else
71- docker build \
72- -t " ${IMAGE} " \
73- " $CUR_DIR " \
74- --build-arg TOOLCHAIN=stable \
75- --build-arg HTTP_PROXY=" $ENV_HTTP_PROXY " \
76- --build-arg HTTPS_PROXY=" $ENV_HTTPS_PROXY " ;
23+ if [[ $? != " 0" ]]; then
24+ exit $?
7725 fi
78- fi
79-
80- SRC_PATH=" /home/rust/src"
81- CARGO_TARGET_DIR=" ${SRC_PATH} /build/target"
82- CARGO_INSTALL_ROOT=" ${SRC_PATH} /build/install"
83- LOCAL_USER=$( id -u " $USER " ) :$( id -g " $USER " )
84- RUSTFLAGS=" -Ctarget-feature=+aes,+ssse3"
85-
86- TARGET_NAME=" x86_64-unknown-linux-musl"
87-
88- if $BUILD_NIGHTLY ; then
89- # # -- BUILD nightly version
90- docker run \
91- -e CARGO_TARGET_DIR=" ${CARGO_TARGET_DIR} " \
92- -e CARGO_INSTALL_ROOT=" ${CARGO_INSTALL_ROOT} " \
93- -e RUSTFLAGS=" $RUSTFLAGS " \
94- -e HTTP_PROXY=" $ENV_HTTP_PROXY " \
95- -e HTTPS_PROXY=" $ENV_HTTPS_PROXY " \
96- -v " ${CUR_DIR} " /..:" $SRC_PATH " \
97- -v " ${CUR_DIR} /target/musl-builder/cargo-cache" :/home/rust/.cargo/registry \
98- " ${IMAGE} " \
99- /bin/bash -c \
100- " sudo mkdir -p $CARGO_TARGET_DIR \
101- && sudo rm -rf $CARGO_INSTALL_ROOT \
102- && cargo install -f --features miscreant --path . \
103- && sudo chown -R $LOCAL_USER $CARGO_INSTALL_ROOT " ;
104- else
105- docker run \
106- -e CARGO_TARGET_DIR=" ${CARGO_TARGET_DIR} " \
107- -e CARGO_INSTALL_ROOT=" ${CARGO_INSTALL_ROOT} " \
108- -e RUSTFLAGS=" $RUSTFLAGS " \
109- -e HTTP_PROXY=" $ENV_HTTP_PROXY " \
110- -e HTTPS_PROXY=" $ENV_HTTPS_PROXY " \
111- -v " ${CUR_DIR} " /..:" $SRC_PATH " \
112- -v " ${CUR_DIR} /target/musl-builder/cargo-cache" :/home/rust/.cargo/registry \
113- " ${IMAGE} " \
114- /bin/bash -c \
115- " sudo mkdir -p $CARGO_TARGET_DIR \
116- && sudo rm -rf $CARGO_INSTALL_ROOT \
117- && cargo install -f --features miscreant --path . \
118- && sudo chown -R $LOCAL_USER $CARGO_INSTALL_ROOT " ;
119- fi
120-
121- if [[ $? -ne " 0" ]]; then
122- exit 1;
123- fi
124-
125- TARGET_DIR=" $CUR_DIR /install/bin"
126- cd " $TARGET_DIR "
127-
128- echo " * Finished building, target in ${TARGET_DIR} "
12926
130- # # Disable OS X ACL file
131- export COPYFILE_DISABLE=1
132-
133- if $ENABLE_GZ ; then
134- PKG_NAME=" shadowsocks-v${VERSION} -${RELEASE_NAME} .${TARGET_NAME} .tar.gz"
135- PKG_PATH=" ${CUR_DIR} /${PKG_NAME} "
136- echo " * Packaging GZip in ${PKG_PATH} ..."
137-
138- tar -czf ${PKG_PATH} \
27+ echo " * Packaging XZ in ${PKG_PATH} ..."
28+ cd ${RELEASE_DIR}
29+ tar -cJf ${PKG_PATH} \
13930 " sslocal" \
14031 " ssserver" \
141- " ssurl" ;
32+ " ssurl" \
33+ " sstunnel"
14234
143- echo " * Done build package ${PKG_NAME} "
144- fi
145-
146- PKG_NAME=" shadowsocks-v${VERSION} -${RELEASE_NAME} .${TARGET_NAME} .tar.xz"
147- PKG_PATH=" ${CUR_DIR} /${PKG_NAME} "
148- echo " * Packaging XZ in ${PKG_PATH} ..."
35+ if [[ $? != " 0" ]]; then
36+ exit $?
37+ fi
14938
150- tar -cJf ${PKG_PATH} \
151- " sslocal" \
152- " ssserver" \
153- " ssurl" \
154- " ssdns"
39+ echo " * Done build package ${PKG_NAME} "
40+ }
15541
156- echo " * Done build package ${PKG_NAME} "
42+ build " x86_64-unknown-linux-musl"
43+ # build "x86_64-pc-windows-gnu"
0 commit comments