#!/bin/bash CUR_DIR=$( cd $( dirname $0 ) && pwd ) VERSION=$(grep -E '^version' ${CUR_DIR}/../Cargo.toml | awk '{print $3}' | sed 's/"//g') ## Disable OS X ACL file export COPYFILE_DISABLE=1 targets=() while getopts "t:" opt; do case $opt in t) targets+=($OPTARG) ;; ?) echo "Usage: $(basename $0) [-t ]" ;; esac done if [[ "${#targets[@]}" == "0" ]]; then targets=("x86_64-unknown-linux-musl" "x86_64-pc-windows-gnu") fi function build() { cd "$CUR_DIR/.." TARGET=$1 echo "* Building ${TARGET} package ${VERSION} ..." RELEASE_DIR="target/${TARGET}/release" cross build --target "${TARGET}" \ --features "aes-pmac-siv openssl-vendored" \ --release if [[ $? != "0" ]]; then exit $? fi PKG_DIR="${CUR_DIR}/release" mkdir -p "${PKG_DIR}" if [[ "$TARGET" == *"-linux-"* ]]; then PKG_NAME="shadowsocks-v${VERSION}-stable.${TARGET}.tar.xz" PKG_PATH="${PKG_DIR}/${PKG_NAME}" echo "* Packaging XZ in ${PKG_PATH} ..." cd ${RELEASE_DIR} tar -cJf ${PKG_PATH} \ "sslocal" \ "ssserver" \ "ssurl" \ "ssmanager" if [[ $? != "0" ]]; then exit $? fi cd "${PKG_DIR}" shasum -a 256 "${PKG_NAME}" > "${PKG_NAME}.sha256" elif [[ "$TARGET" == *"-windows-"* ]]; then PKG_NAME="shadowsocks-v${VERSION}-stable.${TARGET}.zip" PKG_PATH="${PKG_DIR}/${PKG_NAME}" echo "* Packaging ZIP in ${PKG_PATH} ..." cd ${RELEASE_DIR} zip ${PKG_PATH} \ "sslocal.exe" \ "ssserver.exe" \ "ssurl.exe" \ "ssmanager.exe" if [[ $? != "0" ]]; then exit $? fi cd "${PKG_DIR}" shasum -a 256 "${PKG_NAME}" > "${PKG_NAME}.sha256" fi echo "* Done build package ${PKG_NAME}" } for target in "${targets[@]}"; do build "$target"; done