Skip to content

Commit

Permalink
remove cmake prefix paths, only use ROS_PACKAGE_PATH and ROSRUST_MSG_…
Browse files Browse the repository at this point in the history
…PATH to avoid adnanademovic#151
  • Loading branch information
lucasw committed Mar 7, 2024
1 parent 13b7978 commit 8b67011
Showing 1 changed file with 14 additions and 27 deletions.
41 changes: 14 additions & 27 deletions rosrust_msg/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,38 +2,35 @@ use std::ffi::OsStr;
use std::path::Path;
use std::{env, fs};

macro_rules! build_println {
($($tokens: tt)*) => {
println!("cargo:warning={}", format!($($tokens)*))
}
}

fn main() {
let out_dir = env::var("OUT_DIR").unwrap();

rerun_if_env_changed("OUT_DIR");
rerun_if_env_changed("CMAKE_PREFIX_PATH");
rerun_if_env_changed("ROS_PACKAGE_PATH");
rerun_if_env_changed("ROSRUST_MSG_PATH");

let cmake_paths = env::var("CMAKE_PREFIX_PATH")
.unwrap_or_default()
.split(':')
.filter_map(append_share_folder)
.collect::<Vec<String>>();
let cmake_alt_paths = env::var("CMAKE_PREFIX_PATH")
.unwrap_or_default()
.split(':')
.filter_map(append_src_folder)
.collect::<Vec<String>>();
let ros_package_paths = env::var("ROS_PACKAGE_PATH")
.unwrap_or_default()
.split(':')
.map(String::from)
.collect::<Vec<String>>();
build_println!("ros_package_paths: {:?}", ros_package_paths);

let extra_paths = env::var("ROSRUST_MSG_PATH")
.unwrap_or_default()
.split(':')
.map(String::from)
.collect::<Vec<String>>();
let paths = cmake_paths
build_println!("extra_paths: {:?}", extra_paths);

let paths = ros_package_paths
.iter()
.chain(cmake_alt_paths.iter())
.chain(ros_package_paths.iter())
.chain(extra_paths.iter())
.collect::<Vec<_>>();
for path in &paths {
Expand Down Expand Up @@ -61,8 +58,9 @@ fn main() {
// Panic on an empty message list: there is no use for this, and it avoids
// a cryptic error in the proc macro invocation later on
if package_names.is_empty() {
panic!("empty package_names: are any of CMAKE_PREFIX_PATH and ROSRUST_MSG_PATH defined? is /opt/ros/<VERSION>/env sourced?");
panic!("empty package_names: are any of ROS_PACKAGE_PATH and ROSRUST_MSG_PATH defined? is your catkin_ws or /opt/ros/<VERSION>/setup.bash sourced?");
}
build_println!("package_names: {:?}", package_names);

let file_content = format!(
r#"
Expand All @@ -71,6 +69,7 @@ pub static MESSAGES: &[(&str, &str)]=&[{}];
"#,
package_names, package_tuples
);
build_println!("package_names: {:?}", package_tuples);

fs::write(file_name, file_content).unwrap();
}
Expand Down Expand Up @@ -104,18 +103,6 @@ pub fn rerun_if_folder_content_changed(folder: &Path) {
}
}

fn append_share_folder(path: &str) -> Option<String> {
Path::new(path).join("share").to_str().map(String::from)
}

fn append_src_folder(path: &str) -> Option<String> {
Path::new(path)
.join("..")
.join("src")
.to_str()
.map(String::from)
}

fn find_all_messages_and_services(root: &Path) -> Vec<(String, String)> {
if !root.is_dir() {
return identify_message_or_service(root).into_iter().collect();
Expand Down

0 comments on commit 8b67011

Please sign in to comment.