Skip to content

Commit 6a0d96a

Browse files
authored
Refactor version logging in generated bindings (#159)
* * Refactored the logging of clang and R version in bindings * Minor simplifications applied * Brwchk * Another minor edit * Added `libR-sys`-version * Update bindings [skip ci] --------- Co-authored-by: CGMossa <[email protected]>
1 parent 90c8d1e commit 6a0d96a

15 files changed

+71
-53
lines changed

bindings/bindings-linux-aarch64-R4.1.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
/* automatically generated by rust-bindgen 0.64.0 */
2+
3+
/* libR-sys version: 0.4.0 */
14
/* bindgen clang version: Ubuntu clang version 14.0.0-1ubuntu1 */
25
/* clang-rs version: Ubuntu clang version 14.0.0-1ubuntu1 */
36
/* r version: 4.1.3 */
4-
/* automatically generated by rust-bindgen 0.64.0 */
57

68
pub const M_E: f64 = 2.718281828459045;
79
pub const M_LOG2E: f64 = 1.4426950408889634;

bindings/bindings-linux-aarch64-R4.2.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
/* automatically generated by rust-bindgen 0.64.0 */
2+
3+
/* libR-sys version: 0.4.0 */
14
/* bindgen clang version: Ubuntu clang version 14.0.0-1ubuntu1 */
25
/* clang-rs version: Ubuntu clang version 14.0.0-1ubuntu1 */
36
/* r version: 4.2.3 */
4-
/* automatically generated by rust-bindgen 0.64.0 */
57

68
#[repr(C)]
79
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]

bindings/bindings-linux-aarch64-R4.4-devel.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
/* automatically generated by rust-bindgen 0.64.0 */
2+
3+
/* libR-sys version: 0.4.0 */
14
/* bindgen clang version: Ubuntu clang version 14.0.0-1ubuntu1 */
25
/* clang-rs version: Ubuntu clang version 14.0.0-1ubuntu1 */
36
/* r version: 4.4.0-devel */
4-
/* automatically generated by rust-bindgen 0.64.0 */
57

68
#[repr(C)]
79
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]

bindings/bindings-linux-x86_64-R4.1.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
/* automatically generated by rust-bindgen 0.64.0 */
2+
3+
/* libR-sys version: 0.4.0 */
14
/* bindgen clang version: Ubuntu clang version 14.0.0-1ubuntu1 */
25
/* clang-rs version: Ubuntu clang version 14.0.0-1ubuntu1 */
36
/* r version: 4.1.3 */
4-
/* automatically generated by rust-bindgen 0.64.0 */
57

68
pub const M_E: f64 = 2.718281828459045;
79
pub const M_LOG2E: f64 = 1.4426950408889634;

bindings/bindings-linux-x86_64-R4.2.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
/* automatically generated by rust-bindgen 0.64.0 */
2+
3+
/* libR-sys version: 0.4.0 */
14
/* bindgen clang version: Ubuntu clang version 14.0.0-1ubuntu1 */
25
/* clang-rs version: Ubuntu clang version 14.0.0-1ubuntu1 */
36
/* r version: 4.2.3 */
4-
/* automatically generated by rust-bindgen 0.64.0 */
57

68
#[repr(C)]
79
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]

bindings/bindings-linux-x86_64-R4.4-devel.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
/* automatically generated by rust-bindgen 0.64.0 */
2+
3+
/* libR-sys version: 0.4.0 */
14
/* bindgen clang version: Ubuntu clang version 14.0.0-1ubuntu1 */
25
/* clang-rs version: Ubuntu clang version 14.0.0-1ubuntu1 */
36
/* r version: 4.4.0-devel */
4-
/* automatically generated by rust-bindgen 0.64.0 */
57

68
#[repr(C)]
79
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]

bindings/bindings-macos-aarch64-R4.2.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
/* automatically generated by rust-bindgen 0.64.0 */
2+
3+
/* libR-sys version: 0.4.0 */
14
/* bindgen clang version: Homebrew clang version 16.0.1 */
25
/* clang-rs version: Homebrew clang version 16.0.1 */
36
/* r version: 4.2.3 */
4-
/* automatically generated by rust-bindgen 0.64.0 */
57

68
#[repr(C)]
79
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]

bindings/bindings-macos-x86_64-R4.1.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
/* automatically generated by rust-bindgen 0.64.0 */
2+
3+
/* libR-sys version: 0.4.0 */
14
/* bindgen clang version: Homebrew clang version 16.0.1 */
25
/* clang-rs version: Homebrew clang version 16.0.1 */
36
/* r version: 4.1.3 */
4-
/* automatically generated by rust-bindgen 0.64.0 */
57

68
pub const INT_MIN: i32 = -2147483648;
79
pub const M_E: f64 = 2.718281828459045;

bindings/bindings-macos-x86_64-R4.2.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
/* automatically generated by rust-bindgen 0.64.0 */
2+
3+
/* libR-sys version: 0.4.0 */
14
/* bindgen clang version: Homebrew clang version 16.0.1 */
25
/* clang-rs version: Homebrew clang version 16.0.1 */
36
/* r version: 4.2.3 */
4-
/* automatically generated by rust-bindgen 0.64.0 */
57

68
#[repr(C)]
79
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]

bindings/bindings-macos-x86_64-R4.4-devel.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
/* automatically generated by rust-bindgen 0.64.0 */
2+
3+
/* libR-sys version: 0.4.0 */
14
/* bindgen clang version: Homebrew clang version 16.0.1 */
25
/* clang-rs version: Homebrew clang version 16.0.1 */
36
/* r version: 4.4.0-devel */
4-
/* automatically generated by rust-bindgen 0.64.0 */
57

68
#[repr(C)]
79
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]

bindings/bindings-windows-x86-R4.1.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
/* automatically generated by rust-bindgen 0.64.0 */
2+
3+
/* libR-sys version: 0.4.0 */
14
/* bindgen clang version: clang version 15.0.7 */
25
/* clang-rs version: clang version 15.0.7 */
36
/* r version: 4.1.3 */
4-
/* automatically generated by rust-bindgen 0.64.0 */
57

68
pub const INT_MIN: i32 = -2147483648;
79
pub const M_E: f64 = 2.718281828459045;

bindings/bindings-windows-x86_64-R4.1.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
/* automatically generated by rust-bindgen 0.64.0 */
2+
3+
/* libR-sys version: 0.4.0 */
14
/* bindgen clang version: clang version 15.0.7 */
25
/* clang-rs version: clang version 15.0.7 */
36
/* r version: 4.1.3 */
4-
/* automatically generated by rust-bindgen 0.64.0 */
57

68
pub const INT_MIN: i32 = -2147483648;
79
pub const M_E: f64 = 2.718281828459045;

bindings/bindings-windows-x86_64-R4.2.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
/* bindgen clang version: clang version 15.0.7 */
2-
/* clang-rs version: clang version 15.0.7 */
3-
/* r version: 4.2.3 */
4-
/* automatically generated by rust-bindgen 0.64.0 */
5-
1+
/* automatically generated by rust-bindgen 0.64.0 */
2+
3+
/* libR-sys version: 0.4.0 */
4+
/* bindgen clang version: clang version 15.0.7 */
5+
/* clang-rs version: clang version 15.0.7 */
6+
/* r version: 4.2.3 */
7+
68
pub const INT_MIN: i32 = -2147483648;
79
pub const M_E: f64 = 2.718281828459045;
810
pub const M_LOG2E: f64 = 1.4426950408889634;

bindings/bindings-windows-x86_64-R4.4-devel.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
/* bindgen clang version: clang version 15.0.7 */
2-
/* clang-rs version: clang version 15.0.7 */
3-
/* r version: 4.4.0-devel */
4-
/* automatically generated by rust-bindgen 0.64.0 */
5-
1+
/* automatically generated by rust-bindgen 0.64.0 */
2+
3+
/* libR-sys version: 0.4.0 */
4+
/* bindgen clang version: clang version 15.0.7 */
5+
/* clang-rs version: clang version 15.0.7 */
6+
/* r version: 4.4.0-devel */
7+
68
pub const INT_MIN: i32 = -2147483648;
79
pub const M_E: f64 = 2.718281828459045;
810
pub const M_LOG2E: f64 = 1.4426950408889634;

build.rs

Lines changed: 21 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ const ENVVAR_R_HOME: &str = "R_HOME";
3030
const ENVVAR_R_VERSION: &str = "LIBRSYS_R_VERSION";
3131

3232
// A path to a dir containing pre-computed bindings (default: "bindings").
33+
#[cfg(not(feature = "use-bindgen"))]
3334
const ENVVAR_BINDINGS_PATH: &str = "LIBRSYS_BINDINGS_PATH";
3435

3536
// A path to libclang toolchain. If this is set, the path is added to the
@@ -41,7 +42,8 @@ const ENVVAR_LIBCLANG_INCLUDE_PATH: &str = "LIBRSYS_LIBCLANG_INCLUDE_PATH";
4142
// dir. If this is set, generated bindings are also put there.
4243
#[cfg(feature = "use-bindgen")]
4344
const ENVVAR_BINDINGS_OUTPUT_PATH: &str = "LIBRSYS_BINDINGS_OUTPUT_PATH";
44-
#[allow(dead_code)]
45+
46+
#[derive(Debug)]
4547
struct InstallationPaths {
4648
r_home: PathBuf,
4749
include: PathBuf,
@@ -73,9 +75,10 @@ impl RVersionInfo {
7375
/// e.g. `bindings-windows-x86_64-R4.4-devel.rs`
7476
fn get_r_bindings_filename(&self, target_os: &str, target_arch: &str) -> PathBuf {
7577
let devel_suffix = if self.devel { "-devel" } else { "" };
78+
let major = &self.major;
79+
let minor = &self.minor;
7680
PathBuf::from(format!(
77-
"bindings-{}-{}-R{}.{}{}.rs",
78-
target_os, target_arch, self.major, self.minor, devel_suffix
81+
"bindings-{target_os}-{target_arch}-R{major}.{minor}{devel_suffix}.rs"
7982
))
8083
}
8184
}
@@ -467,8 +470,7 @@ fn generate_bindings(r_paths: &InstallationPaths, version_info: &RVersionInfo) {
467470
let target_arch = env::var("CARGO_CFG_TARGET_ARCH").unwrap();
468471

469472
println!(
470-
"Generating bindings for target: {}, os: {}, architecture: {}",
471-
target, target_os, target_arch
473+
"Generating bindings for target: {target}, os: {target_os}, architecture: {target_arch}"
472474
);
473475

474476
// Point to the correct headers
@@ -512,6 +514,16 @@ fn generate_bindings(r_paths: &InstallationPaths, version_info: &RVersionInfo) {
512514

513515
// Finish the builder and generate the bindings.
514516
let bindings = bindgen_builder
517+
.raw_line(format!(
518+
"/* libR-sys version: {} */",
519+
env!("CARGO_PKG_VERSION")
520+
))
521+
.raw_line(format!(
522+
"/* bindgen clang version: {} */",
523+
bindgen::clang_version().full
524+
))
525+
.raw_line(format!("/* clang-rs version: {} */", clang::get_version()))
526+
.raw_line(format!("/* r version: {} */", version_info.full))
515527
.generate_comments(true)
516528
.parse_callbacks(Box::new(TrimCommentsCallbacks))
517529
.clang_arg("-fparse-all-comments")
@@ -542,39 +554,17 @@ fn generate_bindings(r_paths: &InstallationPaths, version_info: &RVersionInfo) {
542554
let bindings_file_full = version_info.get_r_bindings_filename(&target_os, &target_arch);
543555
let out_file = out_path.join(bindings_file_full);
544556

545-
save_bindings_to_file(bindings, version_info, out_file);
557+
bindings
558+
.write_to_file(&out_file)
559+
.expect(&format!("Couldn't write bindings: {}", out_file.display()));
546560
} else {
547561
println!(
548562
"Warning: Couldn't write the bindings since `LIBRSYS_BINDINGS_OUTPUT_PATH` is not set."
549563
);
550564
}
551565
}
552566

553-
#[cfg(feature = "use-bindgen")]
554-
fn save_bindings_to_file(
555-
bindings: bindgen::Bindings,
556-
version_info: &RVersionInfo,
557-
out_file: PathBuf,
558-
) {
559-
let clang_version_bindgen = bindgen::clang_version();
560-
let clang_rs_version = clang::get_version();
561-
let header = [
562-
format!(
563-
"/* bindgen clang version: {} */",
564-
clang_version_bindgen.full
565-
),
566-
format!("/* clang-rs version: {} */", clang_rs_version),
567-
format!("/* r version: {} */", version_info.full),
568-
];
569-
let header = header.join("\n");
570-
571-
let bindings = bindings.to_string();
572-
let bindings = format!("{header}\n{bindings}");
573-
std::fs::write(&out_file, bindings)
574-
.expect(&format!("Couldn't write bindings: {}", out_file.display()));
575-
}
576-
577-
#[allow(dead_code)]
567+
#[cfg(not(feature = "use-bindgen"))]
578568
/// Retrieve bindings from cache, if available. Errors out otherwise.
579569
fn retrieve_prebuild_bindings(version_info: &RVersionInfo) {
580570
let target_os = std::env::var("CARGO_CFG_TARGET_OS").unwrap();

0 commit comments

Comments
 (0)