From 6476985ce6abbb9048ba5aec19f6c5144bfe89b7 Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Tue, 5 Sep 2023 15:33:28 +0300 Subject: [PATCH] Add Cross.toml for aarch64-unknown-linux-gnu builds Signed-off-by: Manos Pitsidianakis --- Cargo.lock | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ Cross.toml | 21 +++++++++++++++++++++ meli/Cargo.toml | 25 ++++++++++++++---------- melib/Cargo.toml | 14 ++++++++------ 4 files changed, 93 insertions(+), 16 deletions(-) create mode 100644 Cross.toml diff --git a/Cargo.lock b/Cargo.lock index a8276c38..c55082fd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -440,6 +440,27 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "csv" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "626ae34994d3d8d668f4269922248239db4ae42d538b14c398b74a52208e8086" +dependencies = [ + "csv-core", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +dependencies = [ + "memchr", +] + [[package]] name = "curl" version = "0.4.44" @@ -1145,6 +1166,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afc22eff61b133b115c6e8c74e818c628d6d5e7a502afea6f64dee076dd94326" dependencies = [ + "cc", "pkg-config", "vcpkg", ] @@ -1574,6 +1596,15 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "openssl-src" +version = "111.27.0+1.1.1v" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e8f197c82d7511c5b014030c9b1efeda40d7d5f99d23b4ceed3524a5e63f02" +dependencies = [ + "cc", +] + [[package]] name = "openssl-sys" version = "0.9.92" @@ -1582,6 +1613,7 @@ checksum = "db7e971c2c2bba161b2d2fdf37080177eff520b3bc044787c7f1f5f9e78d869b" dependencies = [ "cc", "libc", + "openssl-src", "pkg-config", "vcpkg", ] @@ -1815,11 +1847,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "549b9d036d571d42e6e85d1c1425e2ac83491075078ca9a15be021c56b1641f2" dependencies = [ "bitflags 2.4.0", + "chrono", + "csv", "fallible-iterator", "fallible-streaming-iterator", "hashlink", "libsqlite3-sys", + "serde_json", "smallvec", + "time", + "url", + "uuid", ] [[package]] @@ -2228,8 +2266,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17f6bb557fd245c28e6411aa56b6403c689ad95061f50e4be16c274e70a17e48" dependencies = [ "deranged", + "itoa", "serde", "time-core", + "time-macros", ] [[package]] @@ -2238,6 +2278,15 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" +[[package]] +name = "time-macros" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a942f44339478ef67935ab2bbaec2fb0322496cf3cbe84b261e06ac3814c572" +dependencies = [ + "time-core", +] + [[package]] name = "tinyvec" version = "1.6.0" diff --git a/Cross.toml b/Cross.toml new file mode 100644 index 00000000..417ec8bb --- /dev/null +++ b/Cross.toml @@ -0,0 +1,21 @@ +[target.aarch64-unknown-linux-gnu] +# Build with -static features. +pre-build = [ + "export DEBIAN_FRONTEND=noninteractive ", + "dpkg --add-architecture $CROSS_DEB_ARCH", + "apt-get update -y", + """ + apt-get install --assume-yes \ + pkg-config \ + libdbus-1-dev \ + libdbus-1-dev:$CROSS_DEB_ARCH \ + librust-libdbus-sys-dev \ + librust-libdbus-sys-dev:$CROSS_DEB_ARCH \ + librust-openssl-sys-dev \ + librust-openssl-sys-dev:$CROSS_DEB_ARCH \ + libsqlite3-dev:$CROSS_DEB_ARCH \ + libssl-dev \ + libssl-dev:$CROSS_DEB_ARCH \ + sqlite3:$CROSS_DEB_ARCH + """, +] diff --git a/meli/Cargo.toml b/meli/Cargo.toml index 50061820..a4d411a4 100644 --- a/meli/Cargo.toml +++ b/meli/Cargo.toml @@ -33,8 +33,8 @@ bitflags = { version = "2.4", features = ["serde"] } crossbeam = { version = "^0.8" } flate2 = { version = "1", optional = true } futures = "0.3.5" -indexmap = { version = "^1.6", features = ["serde-1", ] } -libc = { version = "0.2.125", default-features = false, features = ["extra_traits",] } +indexmap = { version = "^1.6", features = ["serde-1"] } +libc = { version = "0.2.125", default-features = false, features = ["extra_traits"] } linkify = { version = "^0.8", default-features = false } melib = { path = "../melib", version = "0.8.0" } nix = { version = "^0.24", default-features = false } @@ -47,15 +47,15 @@ serde_derive = "1.0.71" serde_json = "1.0" signal-hook = { version = "^0.3", default-features = false } signal-hook-registry = { version = "1.2.0", default-features = false } -smallvec = { version = "^1.5.0", features = ["serde", ] } +smallvec = { version = "^1.5.0", features = ["serde"] } structopt = { version = "0.3.14", default-features = false } svg_crate = { version = "^0.13", optional = true, package = "svg" } termion = { version = "1.5.1", default-features = false } -toml = { version = "0.5.6", default-features = false, features = ["preserve_order", ] } +toml = { version = "0.5.6", default-features = false, features = ["preserve_order"] } xdg = "2.1.0" [target.'cfg(target_os="linux")'.dependencies] -notify-rust = { version = "^4", default-features = false, features = ["dbus", ], optional = true } +notify-rust = { version = "^4", default-features = false, features = ["dbus"], optional = true } [build-dependencies] flate2 = { version = "1", optional = true } @@ -71,18 +71,23 @@ tempfile = "3.3" [features] default = ["sqlite3", "notmuch", "regexp", "smtp", "dbus-notifications", "gpgme", "cli-docs", "jmap", "text-processing"] -notmuch = ["melib/notmuch", ] -jmap = ["melib/jmap",] +notmuch = ["melib/notmuch"] +jmap = ["melib/jmap"] sqlite3 = ["melib/sqlite3"] smtp = ["melib/smtp"] smtp-trace = ["smtp", "melib/smtp-trace"] regexp = ["pcre2"] -dbus-notifications = ["notify-rust",] +dbus-notifications = ["notify-rust"] cli-docs = ["flate2"] svgscreenshot = ["svg_crate"] text-processing = ["melib/unicode-algorithms"] gpgme = ["melib/gpgme"] +# Static / vendoring features. +tls-static = ["melib/tls-static"] +http-static = ["melib/http-static"] +sqlite3-static = ["melib/sqlite3-static"] +static = ["tls-static", "http-static", "sqlite3-static"] # Print tracing logs as meli runs in stderr -# enable for debug tracing logs: build with --features=debug-tracing -debug-tracing = ["melib/debug-tracing", ] +# enable for debug tracing logs: build with --features=debug-tracing and export MELI_DEBUG_STDERR +debug-tracing = ["melib/debug-tracing"] diff --git a/melib/Cargo.toml b/melib/Cargo.toml index b9ba6624..c21ee154 100644 --- a/melib/Cargo.toml +++ b/melib/Cargo.toml @@ -30,9 +30,9 @@ futures = "0.3.5" imap-codec = { version = "1.0.0", features = ["ext_condstore_qresync"], optional = true } -indexmap = { version = "^1.5", default-features = false, features = ["serde-1", ] } +indexmap = { version = "^1.5", default-features = false, features = ["serde-1"] } isahc = { version = "^1.7.2", optional = true, default-features = false, features = ["http2", "json", "text-decoding"] } -libc = { version = "0.2.125", features = ["extra_traits",] } +libc = { version = "0.2.125", features = ["extra_traits"] } libloading = "^0.7" log = { version = "0.4", features = ["std"] } @@ -43,11 +43,11 @@ notify = { version = "4.0.15", optional = true } polling = "2.8" regex = { version = "1" } rusqlite = { version = "^0.29", default-features = false, optional = true } -serde = { version = "1.0", features = ["rc", ] } +serde = { version = "1.0", features = ["rc"] } serde_derive = "1.0" -serde_json = { version = "1.0", features = ["raw_value",] } +serde_json = { version = "1.0", features = ["raw_value"] } serde_path_to_error = { version = "0.1" } -smallvec = { version = "^1.5.0", features = ["serde", ] } +smallvec = { version = "^1.5.0", features = ["serde"] } smol = "1.0.0" socket2 = { version = "0.4", features = [] } @@ -80,8 +80,10 @@ mbox = ["notify"] notmuch = [] smtp = ["tls", "base64"] smtp-trace = ["smtp"] -sqlite3 = ["rusqlite", ] +sqlite3 = ["rusqlite"] +sqlite3-static = ["sqlite3", "rusqlite/bundled-full"] tls = ["native-tls"] +tls-static = ["tls", "native-tls/vendored"] text-processing = [] unicode-algorithms = ["text-processing", "unicode-segmentation"] unicode-algorithms-cached = ["text-processing", "unicode-segmentation"]