This is an automated email from the ASF dual-hosted git repository.
alamb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-datafusion.git
The following commit(s) were added to refs/heads/master by this push:
new 49b9c675a Fix docs.rs (#3580)
49b9c675a is described below
commit 49b9c675abd2be96a8426038c128bb46acc76240
Author: Brent Gardner <[email protected]>
AuthorDate: Fri Sep 23 05:35:48 2022 -0700
Fix docs.rs (#3580)
* I think this will fix docs.rs but no idea how to test
* Generate to correct location
* Clippy
* Alphabetize
* Feature -> cfg
* New clippy is more demanding
---
datafusion/proto/Cargo.toml | 3 +++
datafusion/proto/build.rs | 30 +++++++++++++++++-------------
datafusion/proto/src/generated/mod.rs | 13 ++++++++-----
datafusion/proto/src/lib.rs | 3 ---
4 files changed, 28 insertions(+), 21 deletions(-)
diff --git a/datafusion/proto/Cargo.toml b/datafusion/proto/Cargo.toml
index 8720ee70b..adab4b356 100644
--- a/datafusion/proto/Cargo.toml
+++ b/datafusion/proto/Cargo.toml
@@ -28,6 +28,9 @@ keywords = ["arrow", "query", "sql"]
edition = "2021"
rust-version = "1.62"
+[package.metadata.docs.rs]
+rustc-args = ["--cfg", "docsrs"]
+
[lib]
name = "datafusion_proto"
path = "src/lib.rs"
diff --git a/datafusion/proto/build.rs b/datafusion/proto/build.rs
index 38ae9a962..3efd71350 100644
--- a/datafusion/proto/build.rs
+++ b/datafusion/proto/build.rs
@@ -28,12 +28,11 @@ fn main() -> Result<(), String> {
Ok(())
}
-#[cfg(feature = "json")]
fn build() -> Result<(), String> {
use std::io::Write;
let out = std::path::PathBuf::from(
- std::env::var("OUT_DIR").expect("Cannot find OUT_DIR environment
vairable"),
+ std::env::var("OUT_DIR").expect("Cannot find OUT_DIR environment
variable"),
);
let descriptor_path = out.join("proto_descriptor.bin");
@@ -44,9 +43,11 @@ fn build() -> Result<(), String> {
.compile_protos(&["proto/datafusion.proto"], &["proto"])
.map_err(|e| format!("protobuf compilation failed: {}", e))?;
+ #[cfg(feature = "json")]
let descriptor_set = std::fs::read(&descriptor_path)
.expect(&*format!("Cannot read {:?}", &descriptor_path));
+ #[cfg(feature = "json")]
pbjson_build::Builder::new()
.register_descriptors(&descriptor_set)
.expect(&*format!(
@@ -58,22 +59,25 @@ fn build() -> Result<(), String> {
// .serde.rs is not a valid package name, so append to datafusion.rs so we
can treat it normally
let proto = std::fs::read_to_string(out.join("datafusion.rs")).unwrap();
+
+ #[cfg(feature = "json")]
let json =
std::fs::read_to_string(out.join("datafusion.serde.rs")).unwrap();
+
+ #[cfg(feature = "docsrs")]
+ let path = out.join("datafusion.rs");
+ #[cfg(not(feature = "docsrs"))]
+ let path = "src/generated/datafusion.rs";
+
let mut file = std::fs::OpenOptions::new()
.write(true)
+ .truncate(true)
.create(true)
- .open("src/generated/datafusion_json.rs")
+ .open(path)
.unwrap();
- file.write(proto.as_str().as_ref()).unwrap();
- file.write(json.as_str().as_ref()).unwrap();
+ file.write_all(proto.as_str().as_ref()).unwrap();
- Ok(())
-}
+ #[cfg(feature = "json")]
+ file.write_all(json.as_str().as_ref()).unwrap();
-#[cfg(not(feature = "json"))]
-fn build() -> Result<(), String> {
- prost_build::Config::new()
- .out_dir("src/generated")
- .compile_protos(&["proto/datafusion.proto"], &["proto"])
- .map_err(|e| format!("protobuf compilation failed: {}", e))
+ Ok(())
}
diff --git a/datafusion/proto/src/generated/mod.rs
b/datafusion/proto/src/generated/mod.rs
index f3154b265..bf58e9687 100644
--- a/datafusion/proto/src/generated/mod.rs
+++ b/datafusion/proto/src/generated/mod.rs
@@ -15,13 +15,16 @@
// specific language governing permissions and limitations
// under the License.
-// include the generated protobuf source as a submodule
#[allow(clippy::all)]
#[rustfmt::skip]
-#[cfg(not(feature = "json"))]
+#[cfg(not(docsrs))]
pub mod datafusion;
+#[cfg(docsrs)]
#[allow(clippy::all)]
-#[rustfmt::skip]
-#[cfg(feature = "json")]
-pub mod datafusion_json;
+pub mod datafusion {
+ include!(concat!(env!("OUT_DIR"), "/datafusion.rs"));
+
+ #[cfg(feature = "json")]
+ include!(concat!(env!("OUT_DIR"), "/datafusion.serde.rs"));
+}
diff --git a/datafusion/proto/src/lib.rs b/datafusion/proto/src/lib.rs
index 4dc496932..feefbe27d 100644
--- a/datafusion/proto/src/lib.rs
+++ b/datafusion/proto/src/lib.rs
@@ -25,10 +25,7 @@ pub mod generated;
pub mod logical_plan;
pub mod to_proto;
-#[cfg(not(feature = "json"))]
pub use generated::datafusion as protobuf;
-#[cfg(feature = "json")]
-pub use generated::datafusion_json as protobuf;
#[cfg(doctest)]
doc_comment::doctest!("../README.md", readme_example_test);