Making Build docker actually works for mingw64 and musl target

This commit is contained in:
zonyitoo
2019-12-13 00:47:14 +08:00
parent c2650d8b0f
commit 4b2a315510
3 changed files with 54 additions and 42 deletions
+16 -16
View File
@@ -4,34 +4,34 @@ ARG HTTPS_PROXY
FROM rustembedded/cross:x86_64-pc-windows-gnu
ARG SODIUM_VERS="1.0.18"
ARG OPENSSL_VERS="1.0.2t"
ARG OPENSSL_VERS="1.1.1d"
RUN apt-get update && \
apt-get install --no-install-recommends -y libclang-dev curl ca-certificates m4 make perl llvm
apt-get install --no-install-recommends -y libclang-dev curl libcurl4-openssl-dev ca-certificates m4 make perl llvm libnghttp2-dev libidn2-dev librtmp-dev libpsl-dev libgssapi-krb5-2 libkrb5-dev libk5crypto3 libldap2-dev
# Build a static copy of openssl
RUN curl -LO https://www.openssl.org/source/openssl-${OPENSSL_VERS}.tar.gz && \
tar xzf openssl-${OPENSSL_VERS}.tar.gz && cd openssl-${OPENSSL_VERS} && \
AR=x86_64-w64-mingw32-ar CC=x86_64-w64-mingw32-gcc ./Configure --prefix=/usr/local/musl mingw64 -fPIC no-shared && \
make -j${nprocs} && make install && \
./Configure --prefix=/usr/x86_64-w64-mingw32 -Wa,-mbig-obj --cross-compile-prefix=x86_64-w64-mingw32- mingw64 no-shared no-dso no-ssl3 no-unit-test no-comp no-zlib no-zlib-dynamic && \
make -j${nprocs} depend && make -j${nprocs} build_libs && make install_dev && \
cd .. && rm -rf openssl-${OPENSSL_VERS}.tar.gz openssl-${OPENSSL_VERS}
ENV OPENSSL_DIR=/usr/local/musl \
OPENSSL_INCLUDE_DIR=/usr/local/musl/include \
OPENSSL_LIB_DIR=/usr/local/musl/lib \
OPENSSL_STATIC=1 \
TARGET=musl
# Build a static copy of libsodium.
# https://github.com/jedisct1/libsodium/blob/master/dist-build/msys2-win64.sh
RUN curl -LO https://download.libsodium.org/libsodium/releases/libsodium-$SODIUM_VERS.tar.gz && \
tar xzf libsodium-$SODIUM_VERS.tar.gz && cd libsodium-$SODIUM_VERS && \
AR=x86_64-w64-mingw32-ar CC=x86_64-w64-mingw32-gcc ./configure --prefix=/usr/local/musl --enable-shared=no --host=x86_64-pc-windows-gnu && \
AR="x86_64-w64-mingw32-ar" CC="x86_64-w64-mingw32-gcc" CFLAGS="-Ofast -fomit-frame-pointer -m64 -mtune=westmere" ./configure --prefix=/usr/x86_64-w64-mingw32 --enable-shared=no --host=x86_64-w64-mingw32 && \
V=1 make -j${nprocs} && make install && \
cd .. && rm -rf libsodium-$SODIUM_VERS.tar.gz libsodium-$SODIUM_VERS
ENV SODIUM_BUILD_INCLUDE_DIR=/usr/local/x86_64-w64-mingw32/include \
SODIUM_STATIC=1
ENV PKG_CONFIG_ALLOW_CROSS=true \
ENV OPENSSL_DIR=/usr/x86_64-w64-mingw32 \
OPENSSL_INCLUDE_DIR=/usr/x86_64-w64-mingw32/include \
OPENSSL_LIB_DIR=/usr/x86_64-w64-mingw32/lib \
OPENSSL_STATIC=1 \
OPENSSL_LIBS=ssl:crypto \
SODIUM_BUILD_INCLUDE_DIR=/usr/x86_64-w64-mingw32/include \
SODIUM_STATIC=1 \
PKG_CONFIG_ALLOW_CROSS=true \
PKG_CONFIG_ALL_STATIC=true \
PKG_CONFIG_PATH=/usr/local/musl/lib/pkgconfig
PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig \
RUSTFLAGS="-Ctarget-feature=+aes,+ssse3"
+12 -14
View File
@@ -7,21 +7,15 @@ ARG SODIUM_VERS="1.0.18"
ARG OPENSSL_VERS="1.1.1d"
RUN apt-get update && \
apt-get install --no-install-recommends -y libclang-dev curl ca-certificates m4 make perl llvm
apt-get install --no-install-recommends -y libclang-dev curl libcurl4-openssl-dev ca-certificates m4 make perl llvm libnghttp2-dev libidn2-dev librtmp-dev libpsl-dev libgssapi-krb5-2 libkrb5-dev libk5crypto3 libldap2-dev
# Build a static copy of openssl
RUN curl -LO https://www.openssl.org/source/openssl-${OPENSSL_VERS}.tar.gz && \
tar xzf openssl-${OPENSSL_VERS}.tar.gz && cd openssl-${OPENSSL_VERS} && \
AR=x86_64-linux-musl-ar CC=x86_64-linux-musl-gcc ./Configure --prefix=/usr/local/musl linux-x86_64 -fPIC no-shared && \
make -j${nprocs} && make install && \
./Configure --prefix=/usr/local/musl linux-x86_64 -DOPENSSL_NO_SECURE_MEMORY --cross-compile-prefix=x86_64-linux-musl- no-shared no-dso no-ssl3 no-unit-test no-comp no-zlib no-zlib-dynamic && \
make -j${nprocs} depend && make -j${nprocs} build_libs && make install_dev && \
cd .. && rm -rf openssl-${OPENSSL_VERS}.tar.gz openssl-${OPENSSL_VERS}
ENV OPENSSL_DIR=/usr/local/musl \
OPENSSL_INCLUDE_DIR=/usr/local/musl/include \
OPENSSL_LIB_DIR=/usr/local/musl/lib \
OPENSSL_STATIC=1 \
TARGET=musl
# Build a static copy of libsodium.
RUN curl -LO https://download.libsodium.org/libsodium/releases/libsodium-$SODIUM_VERS.tar.gz && \
tar xzf libsodium-$SODIUM_VERS.tar.gz && cd libsodium-$SODIUM_VERS && \
@@ -29,9 +23,13 @@ RUN curl -LO https://download.libsodium.org/libsodium/releases/libsodium-$SODIUM
V=1 make -j${nprocs} && make install && \
cd .. && rm -rf libsodium-$SODIUM_VERS.tar.gz libsodium-$SODIUM_VERS
ENV SODIUM_BUILD_INCLUDE_DIR=/usr/local/x86_64-linux-musl/include \
SODIUM_STATIC=1
ENV PKG_CONFIG_ALLOW_CROSS=true \
ENV OPENSSL_DIR=/usr/local/musl \
OPENSSL_INCLUDE_DIR=/usr/local/musl/include \
OPENSSL_LIB_DIR=/usr/local/musl/lib \
OPENSSL_STATIC=1 \
SODIUM_BUILD_INCLUDE_DIR=/usr/local/x86_64-linux-musl/include \
SODIUM_STATIC=1 \
PKG_CONFIG_ALLOW_CROSS=true \
PKG_CONFIG_ALL_STATIC=true \
PKG_CONFIG_PATH=/usr/local/musl/lib/pkgconfig
PKG_CONFIG_PATH=/usr/local/musl/lib/pkgconfig \
RUSTFLAGS="-Ctarget-feature=+aes,+ssse3"
+26 -12
View File
@@ -3,12 +3,12 @@
CUR_DIR=$( cd $( dirname $0 ) && pwd )
VERSION=$(grep -E '^version' ${CUR_DIR}/../Cargo.toml | awk '{print $3}' | sed 's/"//g')
cd "$CUR_DIR/.."
## Disable OS X ACL file
export COPYFILE_DISABLE=1
function build() {
cd "$CUR_DIR/.."
TARGET=$1
echo "* Building ${TARGET} package ${VERSION} ..."
@@ -24,20 +24,34 @@ function build() {
exit $?
fi
echo "* Packaging XZ in ${PKG_PATH} ..."
cd ${RELEASE_DIR}
tar -cJf ${PKG_PATH} \
"sslocal" \
"ssserver" \
"ssurl" \
"sstunnel"
if [[ "$TARGET" == *"-linux-"* ]]; then
echo "* Packaging XZ in ${PKG_PATH} ..."
cd ${RELEASE_DIR}
tar -cJf ${PKG_PATH} \
"sslocal" \
"ssserver" \
"ssurl" \
"sstunnel"
if [[ $? != "0" ]]; then
exit $?
if [[ $? != "0" ]]; then
exit $?
fi
elif [[ "$TARGET" == *"-windows-"* ]]; then
echo "* Packaging ZIP in ${PKG_PATH} ..."
cd ${RELEASE_DIR}
zip ${PKG_PATH} \
"sslocal.exe" \
"ssserver.exe" \
"ssurl.exe" \
"sstunnel.exe"
if [[ $? != "0" ]]; then
exit $?
fi
fi
echo "* Done build package ${PKG_NAME}"
}
build "x86_64-unknown-linux-musl"
#build "x86_64-pc-windows-gnu"
build "x86_64-pc-windows-gnu"