From b9b5b74b7c3e8c2212d708f8d7419d10d6e43b4e Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Sun, 12 Jan 2020 16:47:29 -0500 Subject: [PATCH 01/17] Rename to aeron-driver-sys, update to 1.25.0 release --- .gitmodules | 6 +++--- .travis.yml | 2 +- Cargo.toml | 2 +- {aeron_driver-sys => aeron-driver-sys}/.gitignore | 0 {aeron_driver-sys => aeron-driver-sys}/Cargo.toml | 4 ++-- aeron-driver-sys/aeron | 1 + {aeron_driver-sys => aeron-driver-sys}/bindings.h | 0 {aeron_driver-sys => aeron-driver-sys}/build.rs | 0 {aeron_driver-sys => aeron-driver-sys}/src/lib.rs | 4 ++-- aeron-rs/Cargo.toml | 2 +- aeron_driver-sys/aeron | 1 - 11 files changed, 11 insertions(+), 11 deletions(-) rename {aeron_driver-sys => aeron-driver-sys}/.gitignore (100%) rename {aeron_driver-sys => aeron-driver-sys}/Cargo.toml (81%) create mode 160000 aeron-driver-sys/aeron rename {aeron_driver-sys => aeron-driver-sys}/bindings.h (100%) rename {aeron_driver-sys => aeron-driver-sys}/build.rs (100%) rename {aeron_driver-sys => aeron-driver-sys}/src/lib.rs (88%) delete mode 160000 aeron_driver-sys/aeron diff --git a/.gitmodules b/.gitmodules index ec150a4..ba87f5a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ -[submodule "aeron_driver-sys/aeron"] - path = aeron_driver-sys/aeron - url = https://github.com/real-logic/aeron +[submodule "aeron-driver-sys/aeron"] + path = aeron-driver-sys/aeron + url = https://github.com/real-logic/aeron.git diff --git a/.travis.yml b/.travis.yml index 9387eea..3f7ca30 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,7 +21,7 @@ script: - cargo test --release --no-run - cargo test --release - - cd aeron_driver-sys/ + - cd aeron-driver-sys/ - cargo test --features "static" - cd .. diff --git a/Cargo.toml b/Cargo.toml index 31811c5..23cbb54 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] members = [ - "aeron_driver-sys", + "aeron-driver-sys", "aeron-rs" ] diff --git a/aeron_driver-sys/.gitignore b/aeron-driver-sys/.gitignore similarity index 100% rename from aeron_driver-sys/.gitignore rename to aeron-driver-sys/.gitignore diff --git a/aeron_driver-sys/Cargo.toml b/aeron-driver-sys/Cargo.toml similarity index 81% rename from aeron_driver-sys/Cargo.toml rename to aeron-driver-sys/Cargo.toml index a3c2f78..eee96aa 100644 --- a/aeron_driver-sys/Cargo.toml +++ b/aeron-driver-sys/Cargo.toml @@ -1,6 +1,6 @@ [package] -name = "aeron_driver-sys" -version = "0.1.0+1.22.0" +name = "aeron-driver-sys" +version = "1.0.0+1.25.0" authors = ["Bradlee Speice "] edition = "2018" links = "aeron_driver" diff --git a/aeron-driver-sys/aeron b/aeron-driver-sys/aeron new file mode 160000 index 0000000..977bda6 --- /dev/null +++ b/aeron-driver-sys/aeron @@ -0,0 +1 @@ +Subproject commit 977bda6f9e9ef3c5b502c8a8c741262147d7f464 diff --git a/aeron_driver-sys/bindings.h b/aeron-driver-sys/bindings.h similarity index 100% rename from aeron_driver-sys/bindings.h rename to aeron-driver-sys/bindings.h diff --git a/aeron_driver-sys/build.rs b/aeron-driver-sys/build.rs similarity index 100% rename from aeron_driver-sys/build.rs rename to aeron-driver-sys/build.rs diff --git a/aeron_driver-sys/src/lib.rs b/aeron-driver-sys/src/lib.rs similarity index 88% rename from aeron_driver-sys/src/lib.rs rename to aeron-driver-sys/src/lib.rs index 2d82dff..7b4c8ae 100644 --- a/aeron_driver-sys/src/lib.rs +++ b/aeron-driver-sys/src/lib.rs @@ -13,7 +13,7 @@ mod tests { let minor = unsafe { crate::aeron_version_minor() }; let patch = unsafe { crate::aeron_version_patch() }; assert_eq!(major, 1); - assert_eq!(minor, 23); - assert_eq!(patch, 1); + assert_eq!(minor, 25); + assert_eq!(patch, 0); } } diff --git a/aeron-rs/Cargo.toml b/aeron-rs/Cargo.toml index 63ae711..3932017 100644 --- a/aeron-rs/Cargo.toml +++ b/aeron-rs/Cargo.toml @@ -12,7 +12,7 @@ travis-ci = { repository = "bspeice/aeron-rs", branch = "master" } maintenance = { status = "actively-developed" } [dependencies] -aeron_driver-sys = { path = "../aeron_driver-sys" } +aeron-driver-sys = { path = "../aeron-driver-sys" } memmap = "0.7" [dev-dependencies] diff --git a/aeron_driver-sys/aeron b/aeron_driver-sys/aeron deleted file mode 160000 index 02c5015..0000000 --- a/aeron_driver-sys/aeron +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 02c5015f2c72c232b9cd840ca4726dca7bfe0d0e From 64fccd6a7ea05a003d4e2ce5cd36107575de769f Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Sun, 12 Jan 2020 17:03:43 -0500 Subject: [PATCH 02/17] Force Windows to use the MSYS Makefiles generator --- aeron-driver-sys/build.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/aeron-driver-sys/build.rs b/aeron-driver-sys/build.rs index 451b4b2..0e58297 100644 --- a/aeron-driver-sys/build.rs +++ b/aeron-driver-sys/build.rs @@ -59,7 +59,13 @@ pub fn main() { _ => (), }; - let cmake_output = Config::new(&aeron_path) + let mut config = Config::new(&aeron_path); + let config = if cfg!(target_os = "windows") { + config.generator("MSYS Makefiles") + } else { + &mut config + }; + let cmake_output = config .build_target(link_type.target_name()) .build(); From 39cc12340c4b605cd15c9ceb7c91006dc973c65c Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Sun, 12 Jan 2020 17:08:45 -0500 Subject: [PATCH 03/17] Cargo fmt --- aeron-driver-sys/build.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/aeron-driver-sys/build.rs b/aeron-driver-sys/build.rs index 0e58297..c862f81 100644 --- a/aeron-driver-sys/build.rs +++ b/aeron-driver-sys/build.rs @@ -65,9 +65,7 @@ pub fn main() { } else { &mut config }; - let cmake_output = config - .build_target(link_type.target_name()) - .build(); + let cmake_output = config.build_target(link_type.target_name()).build(); // Trying to figure out the final path is a bit weird; // For Linux/OSX, it's just build/lib From 05f0ad5067436633897f6a589db23d9ba6a42c1f Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Sun, 12 Jan 2020 17:49:54 -0500 Subject: [PATCH 04/17] Echo path for Windows debugging --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 3f7ca30..9af7248 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,7 @@ before_script: - rustup update - rustup component add clippy - rustup component add rustfmt + - 'echo $PATH' script: - cargo test --no-run From 18ddd92948c4e34fb9881c164ff1da33996929ff Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Sun, 12 Jan 2020 17:56:12 -0500 Subject: [PATCH 05/17] Switch back to MinGW makefiles --- aeron-driver-sys/build.rs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/aeron-driver-sys/build.rs b/aeron-driver-sys/build.rs index c862f81..451b4b2 100644 --- a/aeron-driver-sys/build.rs +++ b/aeron-driver-sys/build.rs @@ -59,13 +59,9 @@ pub fn main() { _ => (), }; - let mut config = Config::new(&aeron_path); - let config = if cfg!(target_os = "windows") { - config.generator("MSYS Makefiles") - } else { - &mut config - }; - let cmake_output = config.build_target(link_type.target_name()).build(); + let cmake_output = Config::new(&aeron_path) + .build_target(link_type.target_name()) + .build(); // Trying to figure out the final path is a bit weird; // For Linux/OSX, it's just build/lib From 53e7a3b370543eb614be024bdcde599913e4fd95 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Sun, 12 Jan 2020 18:15:28 -0500 Subject: [PATCH 06/17] Move the clippy/fmt checks to start; we want to fail fast --- .travis.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9af7248..8f18b38 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,9 @@ before_script: - 'echo $PATH' script: + - cargo clippy --all + - cargo fmt --all -- --check + - cargo test --no-run - cargo test - cargo test --release --no-run @@ -25,10 +28,6 @@ script: - cd aeron-driver-sys/ - cargo test --features "static" - - cd .. - - cargo clippy --all - - cargo fmt --all -- --check - branches: only: - master From 56fc28dc47378d7b92abb4eeb2594cdba506f005 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Sun, 12 Jan 2020 18:15:54 -0500 Subject: [PATCH 07/17] Attempt to find `sh.exe` on Windows path --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 8f18b38..a3bc34d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,6 +15,7 @@ before_script: - rustup component add clippy - rustup component add rustfmt - 'echo $PATH' + - 'which sh.exe' script: - cargo clippy --all From 437e3f9d05976b23594634d93752a6f62b00f3d6 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Sun, 12 Jan 2020 18:37:15 -0500 Subject: [PATCH 08/17] Attempt to remove `sh.exe` from PATH --- .travis.yml | 5 +++-- aeron-driver-sys/build.rs | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index a3bc34d..c710407 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,8 +14,9 @@ before_script: - rustup update - rustup component add clippy - rustup component add rustfmt - - 'echo $PATH' - - 'which sh.exe' + # CMake doesn't like `sh.exe` being available on Windows, + # and since we don't use it elsewhere, just remove from PATH + - export PATH="${PATH/:\/bin/}" script: - cargo clippy --all diff --git a/aeron-driver-sys/build.rs b/aeron-driver-sys/build.rs index 451b4b2..326dcbd 100644 --- a/aeron-driver-sys/build.rs +++ b/aeron-driver-sys/build.rs @@ -99,6 +99,9 @@ pub fn main() { .whitelist_type("aeron_.*") .whitelist_var("AERON_.*") .constified_enum_module("aeron_.*_enum") + // Some padding structures use arrays > 120 elements, + // so we can't derive Debug implementations + .derive_debug(false) .generate() .expect("Unable to generate aeron_driver bindings"); From 80c1aed824672bbf9f3a3b69fa6bc7c171fd7477 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Sun, 12 Jan 2020 18:44:32 -0500 Subject: [PATCH 09/17] Try just removing sh.exe outright Hilarious things happen in Travis when /bin goes away --- .travis.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index c710407..623b5bd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,9 +14,8 @@ before_script: - rustup update - rustup component add clippy - rustup component add rustfmt - # CMake doesn't like `sh.exe` being available on Windows, - # and since we don't use it elsewhere, just remove from PATH - - export PATH="${PATH/:\/bin/}" + # CMake doesn't like `sh.exe` being on the PATH, + - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then rm "C:/Program Files/Git/usr/bin/sh.exe"; fi script: - cargo clippy --all From e27a9a317c694bbb1f470e4cc62e268fd1bae686 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Sun, 12 Jan 2020 19:00:55 -0500 Subject: [PATCH 10/17] Driver error message now consistent on Windows --- aeron-rs/src/driver.rs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/aeron-rs/src/driver.rs b/aeron-rs/src/driver.rs index a616f0d..2a54e3a 100644 --- a/aeron-rs/src/driver.rs +++ b/aeron-rs/src/driver.rs @@ -190,12 +190,7 @@ mod tests { // cause an issue because the new media driver must wait for a heartbeat timeout. let driver_res = DriverContext::default().set_aeron_dir(&dir).build(); - // TODO: Why is the error message behavior different on Windows? - let expected_message = if cfg!(target_os = "windows") { - String::new() - } else { - format!("could not recreate aeron dir {}: ", dir.display()) - }; + let expected_message = format!("could not recreate aeron dir {}: ", dir.display()); assert!(driver_res.is_err()); assert_eq!( From 23f2a52c6e13090b64837f59cea52b8fb9ddc5b6 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Sun, 12 Jan 2020 19:05:43 -0500 Subject: [PATCH 11/17] Show full rustup info Don't think Aeron will compile with Gnu ABI on Windows --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 623b5bd..6e43d12 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,7 @@ cache: - cargo before_script: + - rustup show - rustup set profile minimal - rustup update - rustup component add clippy From 8b8acd5f4b1759410a9a82612b05becbd071b4a9 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Sun, 12 Jan 2020 19:33:04 -0500 Subject: [PATCH 12/17] Set Rust runtime to MSVC on Windows --- .travis.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6e43d12..62dfca2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,8 +15,11 @@ before_script: - rustup update - rustup component add clippy - rustup component add rustfmt - # CMake doesn't like `sh.exe` being on the PATH, + # CMake doesn't like the `sh.exe` provided by Git being in PATH - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then rm "C:/Program Files/Git/usr/bin/sh.exe"; fi + # MinGW doesn't implement the `poll` functions we need, so default to MSVC + # TODO: Attempt compilation with MSYS on Travis + - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then rustup default stable-x86_64-pc-windows-msvc; fi script: - cargo clippy --all From b23d08a0840877af1d4a9197f625d7a89a5b8cd6 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Sun, 12 Jan 2020 19:36:42 -0500 Subject: [PATCH 13/17] Don't install clippy/rustfmt until after we mess with the Windows target --- .travis.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 62dfca2..ef0a55a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,15 +11,13 @@ cache: before_script: - rustup show - - rustup set profile minimal - - rustup update - - rustup component add clippy - - rustup component add rustfmt # CMake doesn't like the `sh.exe` provided by Git being in PATH - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then rm "C:/Program Files/Git/usr/bin/sh.exe"; fi # MinGW doesn't implement the `poll` functions we need, so default to MSVC # TODO: Attempt compilation with MSYS on Travis - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then rustup default stable-x86_64-pc-windows-msvc; fi + - rustup component add clippy + - rustup component add rustfmt script: - cargo clippy --all From 27f9a03617b9259c9ae21f19decad6ed4adb3256 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Sun, 12 Jan 2020 20:10:56 -0500 Subject: [PATCH 14/17] Attempt to use the job matrix instead of re-installing in Windows --- .travis.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index ef0a55a..0984a79 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,13 @@ language: rust -rust: - - stable -os: - - linux - - osx - - windows + +jobs: + include: + - rust: stable + os: linux + - rust: stable + os: osx + - rust: stable-msvc + os: windows cache: - cargo @@ -13,9 +16,6 @@ before_script: - rustup show # CMake doesn't like the `sh.exe` provided by Git being in PATH - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then rm "C:/Program Files/Git/usr/bin/sh.exe"; fi - # MinGW doesn't implement the `poll` functions we need, so default to MSVC - # TODO: Attempt compilation with MSYS on Travis - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then rustup default stable-x86_64-pc-windows-msvc; fi - rustup component add clippy - rustup component add rustfmt From 07d336a90c830ca0e0209379b847f33c48821012 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Sun, 12 Jan 2020 20:26:08 -0500 Subject: [PATCH 15/17] Pin minimum support at Rust 1.33 No promises about maintaining that, just want to know if/when I do something that breaks it --- .travis.yml | 2 ++ aeron-driver-sys/build.rs | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 0984a79..042fa30 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,8 @@ jobs: include: - rust: stable os: linux + - rust: 1.33.0 + os: linux - rust: stable os: osx - rust: stable-msvc diff --git a/aeron-driver-sys/build.rs b/aeron-driver-sys/build.rs index 326dcbd..0942e0b 100644 --- a/aeron-driver-sys/build.rs +++ b/aeron-driver-sys/build.rs @@ -93,7 +93,7 @@ pub fn main() { println!("cargo:include={}", header_path.display()); let bindings = bindgen::Builder::default() - .clang_arg(&format!("-I{}", header_path.display())) + .clang_arg(format!("-I{}", header_path.display())) .header("bindings.h") .whitelist_function("aeron_.*") .whitelist_type("aeron_.*") From b86a876fdfc8ec2ac279cfe4ca7e6906887a48e1 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Sun, 12 Jan 2020 20:58:31 -0500 Subject: [PATCH 16/17] Main API needs 1.34 --- .travis.yml | 2 +- aeron-rs/src/cnc_descriptor.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 042fa30..4cfc268 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ jobs: include: - rust: stable os: linux - - rust: 1.33.0 + - rust: 1.34.0 os: linux - rust: stable os: osx diff --git a/aeron-rs/src/cnc_descriptor.rs b/aeron-rs/src/cnc_descriptor.rs index 400bdf0..102e021 100644 --- a/aeron-rs/src/cnc_descriptor.rs +++ b/aeron-rs/src/cnc_descriptor.rs @@ -103,7 +103,7 @@ mod tests { .expect("Unable to memory map CnC file") }; - let metadata: &MetaDataDefinition = unsafe { &*(mmap.as_ptr().cast()) }; + let metadata: &MetaDataDefinition = unsafe { &*(mmap.as_ptr() as *const MetaDataDefinition) }; assert_eq!(metadata.cnc_version, CNC_VERSION); } } From b9dbfdd29f577d12a9b9d99f248436b4581897f0 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Sun, 12 Jan 2020 21:19:26 -0500 Subject: [PATCH 17/17] Cargo fmt --- aeron-rs/src/cnc_descriptor.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/aeron-rs/src/cnc_descriptor.rs b/aeron-rs/src/cnc_descriptor.rs index 102e021..cbec0ea 100644 --- a/aeron-rs/src/cnc_descriptor.rs +++ b/aeron-rs/src/cnc_descriptor.rs @@ -103,7 +103,8 @@ mod tests { .expect("Unable to memory map CnC file") }; - let metadata: &MetaDataDefinition = unsafe { &*(mmap.as_ptr() as *const MetaDataDefinition) }; + let metadata: &MetaDataDefinition = + unsafe { &*(mmap.as_ptr() as *const MetaDataDefinition) }; assert_eq!(metadata.cnc_version, CNC_VERSION); } }