Browse Source

Add pre-built binaries for ARM32 and ARM64 (#276)

remotes/origin/add-with-shims
Gal Schlezinger 4 years ago committed by GitHub
parent
commit
b8567020be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 44
      .github/workflows/rust.yml
  2. 287
      Cargo.lock
  3. 2
      Cargo.toml
  4. 20
      src/system_info.rs

44
.github/workflows/rust.yml

@ -103,6 +103,50 @@ jobs: @@ -103,6 +103,50 @@ jobs:
name: fnm-linux
path: target/x86_64-unknown-linux-musl/release/fnm
build_static_arm_binary:
name: "Build ARM binary"
strategy:
matrix:
include:
- arch: arm64
rust_target: aarch64-unknown-linux-musl
docker_image: arm64v8/ubuntu
- arch: arm32
rust_target: armv7-unknown-linux-gnueabihf
docker_image: arm32v7/ubuntu
runs-on: ubuntu-latest
env:
RUST_TARGET: ${{ matrix.rust_target }}
steps:
- name: Set up QEMU
id: qemu
uses: docker/setup-qemu-action@v1
- uses: hecrj/setup-rust-action@v1
with:
rust-version: stable
- name: 'Download `cross` crate'
run: cargo install cross
- uses: actions/checkout@v2
- name: "Build release"
run: cross build --target $RUST_TARGET --release
- name: Compress binary using UPX
run: |
sudo apt-get install -y upx
upx target/$RUST_TARGET/release/fnm
- name: "Sanity test"
run: |
docker run --rm -v $(pwd):$(pwd) -e "RUST_LOG=fnm=debug" --workdir $(pwd) ${{matrix.docker_image}} bash -c '
$(pwd)/target/${{ env.RUST_TARGET }}/release/fnm --version
echo "fnm install 12.0.0"
$(pwd)/target/${{ env.RUST_TARGET }}/release/fnm install 12.0.0
echo "fnm exec --using=12 -- node --version"
$(pwd)/target/${{ env.RUST_TARGET }}/release/fnm exec --using=12 -- node --version
'
- uses: actions/upload-artifact@v2
with:
name: fnm-${{ matrix.arch }}
path: target/${{ env.RUST_TARGET }}/release/fnm
# benchmark_on_linux:
# name: Performance Benchmarks (Linux)
# needs: [build_static_linux_binary]

287
Cargo.lock generated

@ -30,6 +30,21 @@ dependencies = [ @@ -30,6 +30,21 @@ dependencies = [
"memchr",
]
[[package]]
name = "alloc-no-stdlib"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5192ec435945d87bc2f70992b4d818154b5feede43c09fb7592146374eac90a6"
[[package]]
name = "alloc-stdlib"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "697ed7edc0f1711de49ce108c541623a0af97c6c60b2f6e2b65229847ac843c2"
dependencies = [
"alloc-no-stdlib",
]
[[package]]
name = "ansi_term"
version = "0.11.0"
@ -51,6 +66,19 @@ version = "0.5.1" @@ -51,6 +66,19 @@ version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8"
[[package]]
name = "async-compression"
version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9021768bcce77296b64648cc7a7460e3df99979b97ed5c925c38d1cc83778d98"
dependencies = [
"brotli",
"bytes",
"futures-core",
"memchr",
"pin-project-lite",
]
[[package]]
name = "atty"
version = "0.2.14"
@ -126,6 +154,27 @@ dependencies = [ @@ -126,6 +154,27 @@ dependencies = [
"byte-tools",
]
[[package]]
name = "brotli"
version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f29919120f08613aadcd4383764e00526fc9f18b6c0895814faeed0dd78613e"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
"brotli-decompressor",
]
[[package]]
name = "brotli-decompressor"
version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1052e1c3b8d4d80eb84a8b94f0a1498797b5fb96314c001156a1c761940ef4ec"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
]
[[package]]
name = "bstr"
version = "0.2.13"
@ -264,22 +313,6 @@ version = "0.1.5" @@ -264,22 +313,6 @@ version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
[[package]]
name = "core-foundation"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171"
dependencies = [
"core-foundation-sys",
"libc",
]
[[package]]
name = "core-foundation-sys"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac"
[[package]]
name = "crc32fast"
version = "1.2.0"
@ -507,21 +540,6 @@ version = "1.0.7" @@ -507,21 +540,6 @@ version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
name = "foreign-types"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
dependencies = [
"foreign-types-shared",
]
[[package]]
name = "foreign-types-shared"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
[[package]]
name = "fuchsia-zircon"
version = "0.3.3"
@ -559,6 +577,18 @@ version = "0.3.5" @@ -559,6 +577,18 @@ version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de27142b013a8e869c14957e6d2edeef89e97c289e69d042ee3a49acd8b51789"
[[package]]
name = "futures-macro"
version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f57ed14da4603b2554682e9f2ff3c65d7567b53188db96cb71538217fc64581b"
dependencies = [
"proc-macro-hack",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "futures-sink"
version = "0.3.5"
@ -582,10 +612,13 @@ checksum = "8764574ff08b701a084482c3c7031349104b07ac897393010494beaa18ce32c6" @@ -582,10 +612,13 @@ checksum = "8764574ff08b701a084482c3c7031349104b07ac897393010494beaa18ce32c6"
dependencies = [
"futures-core",
"futures-io",
"futures-macro",
"futures-task",
"memchr",
"pin-project",
"pin-utils",
"proc-macro-hack",
"proc-macro-nested",
"slab",
]
@ -722,16 +755,19 @@ dependencies = [ @@ -722,16 +755,19 @@ dependencies = [
]
[[package]]
name = "hyper-tls"
version = "0.4.3"
name = "hyper-rustls"
version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d979acc56dcb5b8dddba3917601745e877576475aa046df3226eabdecef78eed"
checksum = "37743cc83e8ee85eacfce90f2f4102030d9ff0a95244098d781e9bee4a90abb6"
dependencies = [
"bytes",
"futures-util",
"hyper",
"native-tls",
"log",
"rustls",
"tokio",
"tokio-tls",
"tokio-rustls",
"webpki",
]
[[package]]
@ -950,24 +986,6 @@ dependencies = [ @@ -950,24 +986,6 @@ dependencies = [
"ws2_32-sys",
]
[[package]]
name = "native-tls"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b0d88c06fe90d5ee94048ba40409ef1d9315d86f6f38c2efdaad4fb50c58b2d"
dependencies = [
"lazy_static",
"libc",
"log",
"openssl",
"openssl-probe",
"openssl-sys",
"schannel",
"security-framework",
"security-framework-sys",
"tempfile",
]
[[package]]
name = "net2"
version = "0.2.35"
@ -1026,39 +1044,6 @@ version = "0.2.3" @@ -1026,39 +1044,6 @@ version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
[[package]]
name = "openssl"
version = "0.10.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d575eff3665419f9b83678ff2815858ad9d11567e082f5ac1814baba4e2bcb4"
dependencies = [
"bitflags",
"cfg-if",
"foreign-types",
"lazy_static",
"libc",
"openssl-sys",
]
[[package]]
name = "openssl-probe"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de"
[[package]]
name = "openssl-sys"
version = "0.9.58"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de"
dependencies = [
"autocfg",
"cc",
"libc",
"pkg-config",
"vcpkg",
]
[[package]]
name = "os_pipe"
version = "0.9.2"
@ -1231,6 +1216,18 @@ dependencies = [ @@ -1231,6 +1216,18 @@ dependencies = [
"version_check",
]
[[package]]
name = "proc-macro-hack"
version = "0.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99c605b9a0adc77b7211c6b1f722dcb613d68d66859a44f3d485a6da332b0598"
[[package]]
name = "proc-macro-nested"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a"
[[package]]
name = "proc-macro2"
version = "1.0.24"
@ -1349,6 +1346,7 @@ version = "0.10.8" @@ -1349,6 +1346,7 @@ version = "0.10.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e9eaa17ac5d7b838b7503d118fa16ad88f440498bf9ffe5424e621f93190d61e"
dependencies = [
"async-compression",
"base64",
"bytes",
"encoding_rs",
@ -1357,28 +1355,44 @@ dependencies = [ @@ -1357,28 +1355,44 @@ dependencies = [
"http",
"http-body",
"hyper",
"hyper-tls",
"hyper-rustls",
"ipnet",
"js-sys",
"lazy_static",
"log",
"mime",
"mime_guess",
"native-tls",
"percent-encoding",
"pin-project-lite",
"rustls",
"serde",
"serde_json",
"serde_urlencoded",
"tokio",
"tokio-tls",
"tokio-rustls",
"url",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
"webpki-roots",
"winreg 0.7.0",
]
[[package]]
name = "ring"
version = "0.16.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "952cd6b98c85bbc30efa1ba5783b8abf12fec8b3287ffa52605b9432313e34e4"
dependencies = [
"cc",
"libc",
"once_cell",
"spin",
"untrusted",
"web-sys",
"winapi 0.3.9",
]
[[package]]
name = "rust-argon2"
version = "0.8.2"
@ -1398,20 +1412,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1398,20 +1412,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783"
[[package]]
name = "ryu"
version = "1.0.5"
name = "rustls"
version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
checksum = "5d1126dcf58e93cee7d098dbda643b5f92ed724f1f6a63007c1116eed6700c81"
dependencies = [
"base64",
"log",
"ring",
"sct",
"webpki",
]
[[package]]
name = "schannel"
version = "0.1.19"
name = "ryu"
version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75"
dependencies = [
"lazy_static",
"winapi 0.3.9",
]
checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
[[package]]
name = "scopeguard"
@ -1420,26 +1437,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1420,26 +1437,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]]
name = "security-framework"
version = "0.4.4"
name = "sct"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "64808902d7d99f78eaddd2b4e2509713babc3dc3c85ad6f4c447680f3c01e535"
checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c"
dependencies = [
"bitflags",
"core-foundation",
"core-foundation-sys",
"libc",
"security-framework-sys",
]
[[package]]
name = "security-framework-sys"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17bf11d99252f512695eb468de5516e5cf75455521e69dfe343f3b74e4748405"
dependencies = [
"core-foundation-sys",
"libc",
"ring",
"untrusted",
]
[[package]]
@ -1612,6 +1616,12 @@ dependencies = [ @@ -1612,6 +1616,12 @@ dependencies = [
"winapi 0.3.9",
]
[[package]]
name = "spin"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
[[package]]
name = "strsim"
version = "0.8.0"
@ -1792,13 +1802,15 @@ dependencies = [ @@ -1792,13 +1802,15 @@ dependencies = [
]
[[package]]
name = "tokio-tls"
version = "0.3.1"
name = "tokio-rustls"
version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a70f4fcd7b3b24fb194f837560168208f669ca8cb70d0c4b862944452396343"
checksum = "e12831b255bcfa39dc0436b01e19fea231a37db570686c06ee72c423479f889a"
dependencies = [
"native-tls",
"futures-core",
"rustls",
"tokio",
"webpki",
]
[[package]]
@ -1911,6 +1923,12 @@ version = "0.1.7" @@ -1911,6 +1923,12 @@ version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f14ee04d9415b52b3aeab06258a3f07093182b88ba0f9b8d203f211a7a7d41c7"
[[package]]
name = "untrusted"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
[[package]]
name = "url"
version = "2.1.1"
@ -1922,12 +1940,6 @@ dependencies = [ @@ -1922,12 +1940,6 @@ dependencies = [
"percent-encoding",
]
[[package]]
name = "vcpkg"
version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c"
[[package]]
name = "vec_map"
version = "0.8.2"
@ -2060,6 +2072,25 @@ dependencies = [ @@ -2060,6 +2072,25 @@ dependencies = [
"wasm-bindgen",
]
[[package]]
name = "webpki"
version = "0.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab146130f5f790d45f82aeeb09e55a256573373ec64409fc19a6fb82fb1032ae"
dependencies = [
"ring",
"untrusted",
]
[[package]]
name = "webpki-roots"
version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8eff4b7516a57307f9349c64bf34caa34b940b66fed4b2fb3136cb7386e5739"
dependencies = [
"webpki",
]
[[package]]
name = "winapi"
version = "0.2.8"

2
Cargo.toml

@ -9,7 +9,7 @@ build = "build.rs" @@ -9,7 +9,7 @@ build = "build.rs"
serde = { version = "1.0.117", features = ["derive"] }
clap = "2.33.3"
structopt = "0.3.20"
reqwest = { version = "0.10.8", features = ["blocking", "json"] }
reqwest = { version = "0.10.8", features = ["blocking", "json", "rustls-tls", "brotli"], default-features = false }
serde_json = "1.0.59"
chrono = { version = "0.4.19", features = ["serde"] }
tar = "0.4.30"

20
src/system_info.rs

@ -8,22 +8,34 @@ pub fn platform_name() -> &'static str { @@ -8,22 +8,34 @@ pub fn platform_name() -> &'static str {
"linux"
}
#[cfg(all(target_pointer_width = "32", target_arch = "arm"))]
#[cfg(all(
target_pointer_width = "32",
any(target_arch = "arm", target_arch = "aarch64")
))]
pub fn platform_arch() -> &'static str {
"armv7l"
}
#[cfg(all(target_pointer_width = "32", not(target_arch = "arm")))]
#[cfg(all(
target_pointer_width = "32",
not(any(target_arch = "arm", target_arch = "aarch64"))
))]
pub fn platform_arch() -> &'static str {
"x86"
}
#[cfg(all(target_pointer_width = "64", target_arch = "arm"))]
#[cfg(all(
target_pointer_width = "64",
any(target_arch = "arm", target_arch = "aarch64")
))]
pub fn platform_arch() -> &'static str {
"arm64"
}
#[cfg(all(target_pointer_width = "64", not(target_arch = "arm")))]
#[cfg(all(
target_pointer_width = "64",
not(any(target_arch = "arm", target_arch = "aarch64"))
))]
pub fn platform_arch() -> &'static str {
"x64"
}

Loading…
Cancel
Save