Updated build script

This commit is contained in:
Y. T. Chung
2018-01-20 09:31:06 +08:00
parent 4da459397a
commit 8319aeeabb
3 changed files with 89 additions and 23 deletions

2
.gitignore vendored
View File

@@ -1,6 +1,8 @@
/target
/build/*.tar.gz
/build/*.tar.xz
/build/target
/build/install
/dev
/*.log
/debian/*.log

View File

@@ -13,9 +13,9 @@ RUN cd /home/rust/libs && \
make && sudo make install && \
cd .. && rm -rf libsodium-$SODIUM_VERS.tar.gz libsodium-$SODIUM_VERS
#RUN rustup install nightly
#RUN rustup default nightly
#RUN rustup target add x86_64-unknown-linux-musl
RUN rustup install nightly
RUN rustup default nightly
RUN rustup target add x86_64-unknown-linux-musl
ENV SODIUM_STATIC=yes
ENV SODIUM_LIB_DIR=/usr/local/musl/lib

View File

@@ -1,9 +1,12 @@
#!/bin/sh
VERSION="latest"
CUR_DIR=$( cd $( dirname $0 ) && pwd )
VERSION=$(grep -E '^version' ${CUR_DIR}/../Cargo.toml | awk '{print $3}' | sed 's/"//g')
ENABLE_GZ=false
BUILD_DOCKER_IMG=false
BUILD_NIGHTLY=false
while getopts "v:gh" opt; do
while getopts "v:ghbn" opt; do
case $opt in
v)
VERSION=$OPTARG
@@ -11,50 +14,111 @@ while getopts "v:gh" opt; do
g)
ENABLE_GZ=true
;;
b)
BUILD_DOCKER_IMG=true
;;
n)
BUILD_NIGHTLY=true
;;
h|\?)
echo "$0 [-v VERSION] [-g] [-h]"
echo "$0 [-v VERSION] [-g] [-h] [-b] [-n]"
echo " -v VERSION Specify VERSION in output package name"
echo " -g Enable GZip"
echo " -b Re-build docker image"
echo " -n Build with nightly rust"
echo " -h Show this image"
exit 0
;;
esac
done
IMAGE='shadowsocks-rust:latest'
CUR_DIR=$( cd $( dirname $0 ) && pwd )
if $BUILD_NIGHTLY; then
RELEASE_NAME="nightly";
else
RELEASE_NAME="stable";
fi
docker build -t "${IMAGE}" "$CUR_DIR"
echo "* Building ${RELEASE_NAME} package ${VERSION} ..."
IMAGE='shadowsocks-rust:latest'
if $BUILD_DOCKER_IMG; then
echo "* Rebuild docker image ${IMAGE} ...";
docker build -t "${IMAGE}" "$CUR_DIR";
fi
SRC_PATH="/home/rust/src"
CARGO_TARGET_DIR="${SRC_PATH}/build/target"
CARGO_INSTALL_ROOT="${SRC_PATH}/build/install"
LOCAL_USER=$( id -u "$USER" ):$( id -g "$USER" )
TARGET_NAME="x86_64-unknown-linux-musl"
docker run \
-e CARGO_TARGET_DIR="${CARGO_TARGET_DIR}" \
-v "${CUR_DIR}"/..:"$SRC_PATH" \
-v "${CUR_DIR}/target/musl-builder/cargo-cache":/home/rust/.cargo/registry \
"${IMAGE}" \
/bin/bash -c \
"sudo mkdir -p $CARGO_TARGET_DIR \
&& sudo chown -R rust:rust $CARGO_TARGET_DIR \
&& cargo build --release --target $TARGET_NAME \
&& sudo chown -R $LOCAL_USER $CARGO_TARGET_DIR"
if $BUILD_NIGHTLY; then
## -- BUILD nightly version
docker run \
-e CARGO_TARGET_DIR="${CARGO_TARGET_DIR}" \
-e CARGO_INSTALL_ROOT="${CARGO_INSTALL_ROOT}" \
-e HTTP_PROXY="$HTTP_PROXY" \
-e HTTPS_PROXY="$HTTPS_PROXY" \
-v "${CUR_DIR}"/..:"$SRC_PATH" \
-v "${CUR_DIR}/target/musl-builder/cargo-cache":/home/rust/.cargo/registry \
"${IMAGE}" \
/bin/bash -c \
"sudo mkdir -p $CARGO_TARGET_DIR \
&& sudo rm -rf $CARGO_INSTALL_ROOT \
&& (rustup update || (rustup toolchain remove nightly && rustup toolchain install nightly)) \
&& rustup run nightly cargo install -f --features miscreant \
&& sudo chown -R $LOCAL_USER $CARGO_INSTALL_ROOT";
else
docker run \
-e CARGO_TARGET_DIR="${CARGO_TARGET_DIR}" \
-e CARGO_INSTALL_ROOT="${CARGO_INSTALL_ROOT}" \
-e HTTP_PROXY="$HTTP_PROXY" \
-e HTTPS_PROXY="$HTTPS_PROXY" \
-v "${CUR_DIR}"/..:"$SRC_PATH" \
-v "${CUR_DIR}/target/musl-builder/cargo-cache":/home/rust/.cargo/registry \
"${IMAGE}" \
/bin/bash -c \
"sudo mkdir -p $CARGO_TARGET_DIR \
&& sudo rm -rf $CARGO_INSTALL_ROOT \
&& (rustup update || (rustup toolchain remove stable && rustup toolchain install stable)) \
&& cargo install -f \
&& sudo chown -R $LOCAL_USER $CARGO_INSTALL_ROOT";
fi
if [[ $? -ne "0" ]]; then
exit 1;
fi
TARGET_DIR="$CUR_DIR/target/$TARGET_NAME/release/"
TARGET_DIR="$CUR_DIR/install/bin"
cd "$TARGET_DIR"
echo "* Finished building, target in ${TARGET_DIR}"
## Disable OS X ACL file
export COPYFILE_DISABLE=1
if $ENABLE_GZ; then
tar -czf "${CUR_DIR}/shadowsocks-${VERSION}-release.${TARGET_NAME}.tar.gz" \
PKG_NAME="shadowsocks-v${VERSION}-${RELEASE_NAME}.${TARGET_NAME}.tar.gz"
PKG_PATH="${CUR_DIR}/${PKG_NAME}"
echo "* Packaging GZip in ${PKG_PATH} ..."
tar -czf ${PKG_PATH} \
"sslocal" \
"ssserver" \
"ssurl"
"ssurl";
echo "* Done build package ${PKG_NAME}"
fi
tar -cJf "${CUR_DIR}/shadowsocks-${VERSION}-release.${TARGET_NAME}.tar.xz" \
PKG_NAME="shadowsocks-v${VERSION}-${RELEASE_NAME}.${TARGET_NAME}.tar.xz"
PKG_PATH="${CUR_DIR}/${PKG_NAME}"
echo "* Packaging XZ in ${PKG_PATH} ..."
tar -cJf ${PKG_PATH} \
"sslocal" \
"ssserver" \
"ssurl"
echo "* Done build package ${PKG_NAME}"