mirror of
https://github.com/shadowsocks/shadowsocks-rust.git
synced 2026-02-09 01:59:16 +08:00
Updated build script
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,6 +1,8 @@
|
|||||||
/target
|
/target
|
||||||
/build/*.tar.gz
|
/build/*.tar.gz
|
||||||
/build/*.tar.xz
|
/build/*.tar.xz
|
||||||
|
/build/target
|
||||||
|
/build/install
|
||||||
/dev
|
/dev
|
||||||
/*.log
|
/*.log
|
||||||
/debian/*.log
|
/debian/*.log
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ RUN cd /home/rust/libs && \
|
|||||||
make && sudo make install && \
|
make && sudo make install && \
|
||||||
cd .. && rm -rf libsodium-$SODIUM_VERS.tar.gz libsodium-$SODIUM_VERS
|
cd .. && rm -rf libsodium-$SODIUM_VERS.tar.gz libsodium-$SODIUM_VERS
|
||||||
|
|
||||||
#RUN rustup install nightly
|
RUN rustup install nightly
|
||||||
#RUN rustup default nightly
|
RUN rustup default nightly
|
||||||
#RUN rustup target add x86_64-unknown-linux-musl
|
RUN rustup target add x86_64-unknown-linux-musl
|
||||||
|
|
||||||
ENV SODIUM_STATIC=yes
|
ENV SODIUM_STATIC=yes
|
||||||
ENV SODIUM_LIB_DIR=/usr/local/musl/lib
|
ENV SODIUM_LIB_DIR=/usr/local/musl/lib
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
#!/bin/sh
|
#!/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
|
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
|
case $opt in
|
||||||
v)
|
v)
|
||||||
VERSION=$OPTARG
|
VERSION=$OPTARG
|
||||||
@@ -11,50 +14,111 @@ while getopts "v:gh" opt; do
|
|||||||
g)
|
g)
|
||||||
ENABLE_GZ=true
|
ENABLE_GZ=true
|
||||||
;;
|
;;
|
||||||
|
b)
|
||||||
|
BUILD_DOCKER_IMG=true
|
||||||
|
;;
|
||||||
|
n)
|
||||||
|
BUILD_NIGHTLY=true
|
||||||
|
;;
|
||||||
h|\?)
|
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
|
exit 0
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
IMAGE='shadowsocks-rust:latest'
|
if $BUILD_NIGHTLY; then
|
||||||
CUR_DIR=$( cd $( dirname $0 ) && pwd )
|
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"
|
SRC_PATH="/home/rust/src"
|
||||||
CARGO_TARGET_DIR="${SRC_PATH}/build/target"
|
CARGO_TARGET_DIR="${SRC_PATH}/build/target"
|
||||||
|
CARGO_INSTALL_ROOT="${SRC_PATH}/build/install"
|
||||||
LOCAL_USER=$( id -u "$USER" ):$( id -g "$USER" )
|
LOCAL_USER=$( id -u "$USER" ):$( id -g "$USER" )
|
||||||
|
|
||||||
TARGET_NAME="x86_64-unknown-linux-musl"
|
TARGET_NAME="x86_64-unknown-linux-musl"
|
||||||
|
|
||||||
docker run \
|
if $BUILD_NIGHTLY; then
|
||||||
-e CARGO_TARGET_DIR="${CARGO_TARGET_DIR}" \
|
## -- BUILD nightly version
|
||||||
-v "${CUR_DIR}"/..:"$SRC_PATH" \
|
docker run \
|
||||||
-v "${CUR_DIR}/target/musl-builder/cargo-cache":/home/rust/.cargo/registry \
|
-e CARGO_TARGET_DIR="${CARGO_TARGET_DIR}" \
|
||||||
"${IMAGE}" \
|
-e CARGO_INSTALL_ROOT="${CARGO_INSTALL_ROOT}" \
|
||||||
/bin/bash -c \
|
-e HTTP_PROXY="$HTTP_PROXY" \
|
||||||
"sudo mkdir -p $CARGO_TARGET_DIR \
|
-e HTTPS_PROXY="$HTTPS_PROXY" \
|
||||||
&& sudo chown -R rust:rust $CARGO_TARGET_DIR \
|
-v "${CUR_DIR}"/..:"$SRC_PATH" \
|
||||||
&& cargo build --release --target $TARGET_NAME \
|
-v "${CUR_DIR}/target/musl-builder/cargo-cache":/home/rust/.cargo/registry \
|
||||||
&& sudo chown -R $LOCAL_USER $CARGO_TARGET_DIR"
|
"${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"
|
cd "$TARGET_DIR"
|
||||||
|
|
||||||
|
echo "* Finished building, target in ${TARGET_DIR}"
|
||||||
|
|
||||||
## Disable OS X ACL file
|
## Disable OS X ACL file
|
||||||
export COPYFILE_DISABLE=1
|
export COPYFILE_DISABLE=1
|
||||||
|
|
||||||
if $ENABLE_GZ; then
|
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" \
|
"sslocal" \
|
||||||
"ssserver" \
|
"ssserver" \
|
||||||
"ssurl"
|
"ssurl";
|
||||||
|
|
||||||
|
echo "* Done build package ${PKG_NAME}"
|
||||||
fi
|
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" \
|
"sslocal" \
|
||||||
"ssserver" \
|
"ssserver" \
|
||||||
"ssurl"
|
"ssurl"
|
||||||
|
|
||||||
|
echo "* Done build package ${PKG_NAME}"
|
||||||
Reference in New Issue
Block a user