Build with cross instead

This commit is contained in:
zonyitoo
2019-12-08 10:59:36 +08:00
parent 206c8c7f09
commit da12a4c56e
7 changed files with 166 additions and 203 deletions

64
Cargo.lock generated
View File

@@ -80,7 +80,7 @@ name = "backtrace-sys"
version = "0.1.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -191,7 +191,7 @@ name = "bzip2-sys"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -205,7 +205,7 @@ dependencies = [
[[package]]
name = "cc"
version = "1.0.47"
version = "1.0.48"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
@@ -256,7 +256,7 @@ dependencies = [
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
"unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
"vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -315,12 +315,12 @@ name = "curl-sys"
version = "0.4.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
"libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)",
"openssl-sys 0.9.53 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)",
"vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
"vcpkg 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -571,7 +571,7 @@ dependencies = [
"indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -725,13 +725,13 @@ name = "libloading"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "libsodium-ffi"
version = "0.2.0"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bindgen 0.52.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -740,7 +740,7 @@ dependencies = [
"pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)",
"tar 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)",
"unwrap 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
"vcpkg 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
"zip 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -749,10 +749,10 @@ name = "libz-sys"
version = "1.0.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)",
"vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
"vcpkg 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -970,10 +970,10 @@ version = "0.9.53"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)",
"vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
"vcpkg 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1176,7 +1176,7 @@ name = "ring"
version = "0.16.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
"spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1284,7 +1284,7 @@ dependencies = [
"hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
"json5 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
"libsodium-ffi 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"libsodium-ffi 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"lru_time_cache 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"md-5 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1297,7 +1297,7 @@ dependencies = [
"serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
"sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
"trust-dns-resolver 0.18.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)",
"typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)",
"url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1416,7 +1416,7 @@ name = "textwrap"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1439,7 +1439,7 @@ dependencies = [
[[package]]
name = "tokio"
version = "0.2.2"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1476,7 +1476,7 @@ dependencies = [
"bytes 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
"futures-core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
"webpki 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1490,7 +1490,7 @@ dependencies = [
"futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"pin-project-lite 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1506,7 +1506,7 @@ dependencies = [
"http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-rustls 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
"trust-dns-proto 0.18.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)",
"trust-dns-rustls 0.18.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1530,7 +1530,7 @@ dependencies = [
"rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
"url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1549,7 +1549,7 @@ dependencies = [
"resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
"trust-dns-https 0.18.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)",
"trust-dns-proto 0.18.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)",
"trust-dns-rustls 0.18.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1564,7 +1564,7 @@ dependencies = [
"futures 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-rustls 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
"trust-dns-proto 0.18.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)",
"webpki 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1615,7 +1615,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "unicode-width"
version = "0.1.6"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
@@ -1645,7 +1645,7 @@ dependencies = [
[[package]]
name = "vcpkg"
version = "0.2.7"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
@@ -1900,7 +1900,7 @@ dependencies = [
"checksum bzip2 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "42b7c3cbf0fa9c1b82308d57191728ca0256cb821220f4e2fd410a72ade26e3b"
"checksum bzip2-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6584aa36f5ad4c9247f5323b0a42f37802b37a836f0ad87084d7a33961abe25f"
"checksum c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb"
"checksum cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)" = "aa87058dce70a3ff5621797f1506cb837edd02ac4c0ae642b4542dce802908b8"
"checksum cc 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)" = "f52a465a666ca3d838ebbf08b241383421412fe7ebb463527bba275526d89f76"
"checksum cexpr 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "fce5b5fb86b0c57c20c834c1b412fd09c77c8a59b9473f86272709e78874cd1d"
"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
"checksum checked_int_cast 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "17cc5e6b5ab06331c33589842070416baa137e8b0eb912b008cfd4a78ada7919"
@@ -1961,7 +1961,7 @@ dependencies = [
"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f"
"checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558"
"checksum libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753"
"checksum libsodium-ffi 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "afcda749bf3b53c0e7cfa728fb87508cdc9cb3e86598f16aa87f8434d506f504"
"checksum libsodium-ffi 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53549257b095ee7cf702e14c280e26fbc0271926070c46153a2a826faf7f95f3"
"checksum libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe"
"checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83"
"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
@@ -2042,7 +2042,7 @@ dependencies = [
"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b"
"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f"
"checksum tokio 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2e765bf9f550bd9b8a970633ca3b56b8120c4b6c5dcbe26a93744cb02fee4b17"
"checksum tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bcced6bb623d4bff3739c176c415f13c418f426395c169c9c3cd9a492c715b16"
"checksum tokio-macros 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d5795a71419535c6dcecc9b6ca95bdd3c2d6142f7e8343d7beb9923f129aa87e"
"checksum tokio-rustls 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "420448fb2a5fb489169ee30d1667d7182d7edc516a66a09f04cd2a6abf62134a"
"checksum tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "571da51182ec208780505a32528fc5512a8fe1443ab960b3f2f3ef093cd16930"
@@ -2056,12 +2056,12 @@ dependencies = [
"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
"checksum unicode-normalization 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b561e267b2326bb4cebfc0ef9e68355c7abe6c6f522aeac2f5bf95d56c59bdcf"
"checksum unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0"
"checksum unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7007dbd421b92cc6e28410fe7362e2e0a2503394908f417b68ec8d1c364c4e20"
"checksum unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479"
"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
"checksum untrusted 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60369ef7a31de49bcb3f6ca728d4ba7300d9a1658f94c727d4cab8c8d9f4aece"
"checksum unwrap 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e33648dd74328e622c7be51f3b40a303c63f93e6fa5f08778b6203a4c25c20f"
"checksum url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "75b414f6c464c879d7f9babf951f23bc3743fb7313c081b2e6ca719067ea9d61"
"checksum vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "33dd455d0f96e90a75803cfeb7f948768c08d70a6de9a8d2362461935698bf95"
"checksum vcpkg 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3fc439f2794e98976c88a2a2dafce96b930fe8010b0a256b3c2199a773933168"
"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a"
"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd"
"checksum wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d"

15
Cross.toml Normal file
View File

@@ -0,0 +1,15 @@
[build.env]
passthrough = [
"SODIUM_BUILD_STATIC",
"HTTP_PROXY",
"HTTPS_PROXY",
]
[target.x86_64-unknown-linux-musl]
image = "shadowsocks-rust:x86_64-unknown-linux-musl"
[target.x86_64-unknown-linux-gnu]
image = "shadowsocks-rust:x86_64-unknown-linux-gnu"
[target.x86_64-pc-windows-gnu]
image = "shadowsocks-rust:x86_64-pc-windows-gnu"

View File

@@ -1,15 +0,0 @@
ARG TOOLCHAIN=stable
FROM ekidd/rust-musl-builder:$TOOLCHAIN
ENV SODIUM_VERS="1.0.18"
# Build a static copy of libsodium.
RUN cd /home/rust/libs && \
curl -LO https://download.libsodium.org/libsodium/releases/libsodium-$SODIUM_VERS.tar.gz && \
tar xzf libsodium-$SODIUM_VERS.tar.gz && cd libsodium-$SODIUM_VERS && \
CC=musl-gcc ./configure --prefix=/usr/local/musl --enable-shared=no --host=x86_64-unknown-linux-musl && \
V=1 make && sudo make install && \
cd .. && rm -rf libsodium-$SODIUM_VERS.tar.gz libsodium-$SODIUM_VERS
#ENV SODIUM_STATIC=yes
ENV SODIUM_LIB_DIR=/usr/local/musl/lib

View File

@@ -0,0 +1,37 @@
ARG HTTP_PROXY
ARG HTTPS_PROXY
FROM rustembedded/cross:x86_64-pc-windows-gnu
ARG SODIUM_VERS="1.0.18"
ARG OPENSSL_VERS="1.0.2t"
RUN apt-get update && \
apt-get install --no-install-recommends -y libclang-dev curl ca-certificates m4 make perl llvm
# 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 && \
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 && \
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 && \
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 \
PKG_CONFIG_ALL_STATIC=true \
PKG_CONFIG_PATH=/usr/local/musl/lib/pkgconfig

View File

@@ -0,0 +1,37 @@
ARG HTTP_PROXY
ARG HTTPS_PROXY
FROM rustembedded/cross:x86_64-unknown-linux-musl
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
# 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 && \
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 && \
AR=x86_64-linux-musl-ar CC=x86_64-linux-musl-gcc ./configure --prefix=/usr/local/musl --enable-shared=no --host=x86_64-unknown-linux-musl && \
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 \
PKG_CONFIG_ALL_STATIC=true \
PKG_CONFIG_PATH=/usr/local/musl/lib/pkgconfig

View File

@@ -1,19 +1,21 @@
Compile static-linked binaries with [`rust-musl-builder`](https://github.com/emk/rust-musl-builder):
## Build Standalone Binaries
```sh
# build image use Dockerfile in build dir.
docker build -t shadowsocks-rust:latest .
# run command in project root.
alias rust-musl-builder='docker run --rm -it -v "$(pwd)":/home/rust/src shadowsocks-rust:latest'
rust-musl-builder cargo build --release
```
At the moment, it doesn't attempt to cache libraries between builds, so this is best reserved for making final release builds.
## Helpful Scripts
* `build-release` on *nix environment
### Build Docker Image
```bash
./build-release
docker build -t shadowsocks-rust:x86_64-unknown-linux-musl -f Dockerfile.x86_64-unknown-linux-musl .
```
### Build Binaries
- Install [`cross`](https://github.com/rust-embedded/cross)
```bash
cargo install cross
```
- Build with cross
```bash
cross build --target x86_64-unknown-linux-musl
```

View File

@@ -2,155 +2,42 @@
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:ghbn" opt; do
case $opt in
v)
VERSION=$OPTARG
;;
g)
ENABLE_GZ=true
;;
b)
BUILD_DOCKER_IMG=true
;;
n)
BUILD_NIGHTLY=true
;;
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
if $BUILD_NIGHTLY; then
RELEASE_NAME="nightly";
else
RELEASE_NAME="stable";
fi
echo "* Building ${RELEASE_NAME} package ${VERSION} ..."
if $BUILD_NIGHTLY; then
IMAGE='shadowsocks-rust:nightly'
else
IMAGE='shadowsocks-rust:stable'
fi
if [[ "$http_proxy" != "" ]]; then
ENV_HTTP_PROXY=$http_proxy
elif [[ "$HTTP_PROXY" != "" ]]; then
ENV_HTTP_PROXY=$HTTP_PROXY
fi
if [[ "$https_proxy" != "" ]]; then
ENV_HTTPS_PROXY=$https_proxy
elif [[ "$HTTPS_PROXY" != "" ]]; then
ENV_HTTPS_PROXY=$HTTPS_PROXY
fi
if $BUILD_DOCKER_IMG; then
echo "* Rebuild docker image ${IMAGE} ...";
if $BUILD_NIGHTLY; then
docker build \
-t "${IMAGE}" \
"$CUR_DIR" \
--build-arg TOOLCHAIN=nightly \
--build-arg HTTP_PROXY="$ENV_HTTP_PROXY" \
--build-arg HTTPS_PROXY="$ENV_HTTPS_PROXY";
else
docker build \
-t "${IMAGE}" \
"$CUR_DIR" \
--build-arg TOOLCHAIN=stable \
--build-arg HTTP_PROXY="$ENV_HTTP_PROXY" \
--build-arg HTTPS_PROXY="$ENV_HTTPS_PROXY";
fi
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" )
RUSTFLAGS="-Ctarget-feature=+aes,+ssse3"
TARGET_NAME="x86_64-unknown-linux-musl"
if $BUILD_NIGHTLY; then
## -- BUILD nightly version
docker run \
-e CARGO_TARGET_DIR="${CARGO_TARGET_DIR}" \
-e CARGO_INSTALL_ROOT="${CARGO_INSTALL_ROOT}" \
-e RUSTFLAGS="$RUSTFLAGS" \
-e HTTP_PROXY="$ENV_HTTP_PROXY" \
-e HTTPS_PROXY="$ENV_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 \
&& cargo install -f --features miscreant --path . \
&& 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 RUSTFLAGS="$RUSTFLAGS" \
-e HTTP_PROXY="$ENV_HTTP_PROXY" \
-e HTTPS_PROXY="$ENV_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 \
&& cargo install -f --features miscreant --path . \
&& sudo chown -R $LOCAL_USER $CARGO_INSTALL_ROOT";
fi
if [[ $? -ne "0" ]]; then
exit 1;
fi
TARGET_DIR="$CUR_DIR/install/bin"
cd "$TARGET_DIR"
echo "* Finished building, target in ${TARGET_DIR}"
cd "$CUR_DIR/.."
## Disable OS X ACL file
export COPYFILE_DISABLE=1
if $ENABLE_GZ; then
PKG_NAME="shadowsocks-v${VERSION}-${RELEASE_NAME}.${TARGET_NAME}.tar.gz"
PKG_PATH="${CUR_DIR}/${PKG_NAME}"
echo "* Packaging GZip in ${PKG_PATH} ..."
function build() {
TARGET=$1
echo "* Building ${TARGET} package ${VERSION} ..."
tar -czf ${PKG_PATH} \
RELEASE_DIR="target/${TARGET}/release"
PKG_NAME="shadowsocks-v${VERSION}-stable.${TARGET}.tar.xz"
PKG_PATH="${CUR_DIR}/${PKG_NAME}"
cross build --target "${TARGET}" \
--features "miscreant" \
--release
if [[ $? != "0" ]]; then
exit $?
fi
echo "* Packaging XZ in ${PKG_PATH} ..."
cd ${RELEASE_DIR}
tar -cJf ${PKG_PATH} \
"sslocal" \
"ssserver" \
"ssurl";
"ssurl" \
"sstunnel"
if [[ $? != "0" ]]; then
exit $?
fi
echo "* Done build package ${PKG_NAME}"
fi
}
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" \
"ssdns"
echo "* Done build package ${PKG_NAME}"
build "x86_64-unknown-linux-musl"
#build "x86_64-pc-windows-gnu"