hdfs_sys/
lib.rs

1//! Bindings to `HDFS` Native C API.
2//!
3//! Work with these bindings directly is boring and error proven, please use [hdrs](https://github.com/Xuanwo/hdrs) instead if ever possible.
4//!
5//! ## Supported Versions
6//!
7//! To target a version of `libhdfs`, enable a Cargo features such as one of the following:
8//!
9//! - `hdfs_2_2` (**default**): requires hdfs 2.2 or later releases.
10//! - `hdfs_2_3`: requires hdfs 2.3 or later releases.
11//! - `hdfs_2_4`: requires hdfs 2.4 or later releases.
12//! - `hdfs_2_5`: requires hdfs 2.5 or later releases.
13//! - `hdfs_2_6`: requires hdfs 2.6 or later releases.
14//! - `hdfs_2_7`: requires hdfs 2.7 or later releases.
15//! - `hdfs_2_8`: requires hdfs 2.8 or later releases.
16//! - `hdfs_2_9`: requires hdfs 2.9 or later releases.
17//! - `hdfs_2_10`: requires hdfs 2.10 or later releases.
18//! - `hdfs_3_0`: requires hdfs 3.0 or later releases.
19//! - `hdfs_3_1`: requires hdfs 3.1 or later releases.
20//! - `hdfs_3_2`: requires hdfs 3.2 or later releases.
21//! - `hdfs_3_3`: requires hdfs 3.3 or later releases.
22//!
23//! If you do not enable one of these features, the API provided by `hdfs_2_2` will be available by default.
24//!
25//! Enable one feature will also enable all features before it. For example, enable `hdfs_2_4` will also enable `hdfs_2_3` and `hdfs_2_2`.
26//!
27//! ## Dependencies
28//!
29//! This crate will link to `libhdfs` and `libjvm` dynamically.
30//!
31//! To make this crate works correctly, please make sure the following env set correctly:
32//!
33//! - `JAVA_HOME`: `hdfs-sys` will search `${JAVA_HOME}/lib/server` to link `libjvm`.
34//! - `HADOOP_HOME`: `hdfs-sys` will search `{HADOOP_HOME}/lib/native` to link `libhdfs`.
35//!
36//! NOTE: `hdfs-sys` will ignore linking if `DOCS_RS` is set to build docs.
37//!
38//! ## Runtime
39//!
40//! `libhdfs` uses JNI to call functions provided by jars that provided by hadoop releases. Please make sure `CLASSPATH` is set correctly:
41//!
42//! ```shell
43//! export JAVA_HOME=/path/to/java
44//! export HADOOP_HOME=/path/to/hadoop
45//! export LD_LIBRARY_PATH=${HADOOP_HOME}/lib/native:${JAVA_HOME}/lib/server
46//! export CLASSPATH=${HADOOP_HOME}/share/hadoop/common/*:${HADOOP_HOME}/share/hadoop/common/lib/*:${HADOOP_HOME}/share/hadoop/hdfs/*:${HADOOP_HOME}/share/hadoop/hdfs/lib/*:${HADOOP_HOME}/etc/hadoop/*
47//! ```
48
49#![allow(non_snake_case)]
50#![allow(non_camel_case_types)]
51#![allow(non_upper_case_globals)]
52
53#[cfg(feature = "hdfs_2_2")]
54mod hdfs_2_2;
55#[cfg(feature = "hdfs_2_2")]
56pub use hdfs_2_2::*;
57#[cfg(feature = "hdfs_2_3")]
58mod hdfs_2_3;
59#[cfg(feature = "hdfs_2_3")]
60pub use hdfs_2_3::*;
61#[cfg(feature = "hdfs_2_4")]
62mod hdfs_2_4;
63#[cfg(feature = "hdfs_2_4")]
64pub use hdfs_2_4::*;
65#[cfg(feature = "hdfs_2_5")]
66mod hdfs_2_5;
67#[cfg(feature = "hdfs_2_5")]
68pub use hdfs_2_5::*;
69#[cfg(feature = "hdfs_2_6")]
70mod hdfs_2_6;
71#[cfg(feature = "hdfs_2_6")]
72pub use hdfs_2_6::*;
73#[cfg(feature = "hdfs_2_7")]
74mod hdfs_2_7;
75#[cfg(feature = "hdfs_2_7")]
76pub use hdfs_2_7::*;
77#[cfg(feature = "hdfs_2_8")]
78mod hdfs_2_8;
79#[cfg(feature = "hdfs_2_8")]
80pub use hdfs_2_8::*;
81#[cfg(feature = "hdfs_2_9")]
82mod hdfs_2_9;
83#[cfg(feature = "hdfs_2_9")]
84pub use hdfs_2_9::*;
85#[cfg(feature = "hdfs_2_10")]
86mod hdfs_2_10;
87#[cfg(feature = "hdfs_2_10")]
88pub use hdfs_2_10::*;
89#[cfg(feature = "hdfs_3_0")]
90mod hdfs_3_0;
91#[cfg(feature = "hdfs_3_0")]
92pub use hdfs_3_0::*;
93#[cfg(feature = "hdfs_3_1")]
94mod hdfs_3_1;
95#[cfg(feature = "hdfs_3_1")]
96pub use hdfs_3_1::*;
97#[cfg(feature = "hdfs_3_2")]
98mod hdfs_3_2;
99#[cfg(feature = "hdfs_3_2")]
100pub use hdfs_3_2::*;
101#[cfg(feature = "hdfs_3_3")]
102mod hdfs_3_3;
103#[cfg(feature = "hdfs_3_3")]
104pub use hdfs_3_3::*;
105
106#[cfg(test)]
107mod tests;