mirror of
https://github.com/TREX-CoE/trexio.git
synced 2024-11-03 12:43:55 +01:00
Added trex.json in tar.gz
This commit is contained in:
parent
d224396b4c
commit
92e71be956
54
Makefile.am
54
Makefile.am
@ -34,10 +34,9 @@
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
CLEANFILES = trexio.mod
|
||||
BUILT_SOURCES = trex.json
|
||||
if HAVE_FORTRAN
|
||||
BUILT_SOURCES = trexio.mod
|
||||
else
|
||||
BUILT_SOURCES =
|
||||
BUILT_SOURCES += trexio.mod
|
||||
endif
|
||||
EXTRA_DIST = .git_hash
|
||||
|
||||
@ -87,14 +86,63 @@ src_libtrexio_la_SOURCES = $(trexio_h) $(SOURCES)
|
||||
|
||||
# Include CMake-related files in the distribution.
|
||||
EXTRA_DIST += CMakeLists.txt \
|
||||
trex.json \
|
||||
src/CMakeLists.txt \
|
||||
tests/CMakeLists.txt \
|
||||
tests/test_macros.h \
|
||||
cmake/cmake_uninstall.cmake.in \
|
||||
cmake/FindTREXIO.cmake
|
||||
|
||||
|
||||
# =============== TESTS =============== #
|
||||
|
||||
TEST_FILES = \
|
||||
tests/delete_group.c \
|
||||
tests/delete_group_hdf5.c \
|
||||
tests/delete_group_text.c \
|
||||
tests/io_all.c \
|
||||
tests/io_determinant.c \
|
||||
tests/io_determinant_hdf5.c \
|
||||
tests/io_determinant_text.c \
|
||||
tests/io_dset_float.c \
|
||||
tests/io_dset_float_hdf5.c \
|
||||
tests/io_dset_float_text.c \
|
||||
tests/io_dset_int.c \
|
||||
tests/io_dset_int_hdf5.c \
|
||||
tests/io_dset_int_text.c \
|
||||
tests/io_dset_sparse.c \
|
||||
tests/io_dset_sparse_hdf5.c \
|
||||
tests/io_dset_sparse_text.c \
|
||||
tests/io_dset_str.c \
|
||||
tests/io_dset_str_hdf5.c \
|
||||
tests/io_dset_str_text.c \
|
||||
tests/io_jastrow.c \
|
||||
tests/io_jastrow_hdf5.c \
|
||||
tests/io_jastrow_text.c \
|
||||
tests/io_num.c \
|
||||
tests/io_num_hdf5.c \
|
||||
tests/io_num_text.c \
|
||||
tests/io_safe_dset_float.c \
|
||||
tests/io_safe_dset_float_hdf5.c \
|
||||
tests/io_safe_dset_float_text.c \
|
||||
tests/io_str.c \
|
||||
tests/io_str_hdf5.c \
|
||||
tests/io_str_text.c \
|
||||
tests/open.c \
|
||||
tests/open_hdf5.c \
|
||||
tests/open_text.c \
|
||||
tests/overwrite_all.c \
|
||||
tests/overwrite_all_hdf5.c \
|
||||
tests/overwrite_all_text.c \
|
||||
tests/pre_close.c \
|
||||
tests/template_hdf5.c \
|
||||
tests/template_text.c \
|
||||
tests/test_f.f90 \
|
||||
tests/test_macros.h \
|
||||
tests/trexio_f.f90
|
||||
|
||||
EXTRA_DIST += $(TEST_FILES)
|
||||
|
||||
TESTS_C = \
|
||||
tests/open_text \
|
||||
tests/io_num_text \
|
||||
|
@ -23,3 +23,4 @@ flate2 = "1.0"
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
hdf5 = "0.8.1"
|
||||
|
@ -17,50 +17,6 @@ use tar::Archive;
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
/// Checks that the version specified in the Cargo.toml file is consistent with the version of the TREXIO C library.
|
||||
fn check_version(bindings: &PathBuf) -> Result<(), String> {
|
||||
// Read version from Cargo.toml
|
||||
let mut rust_version = String::new();
|
||||
{
|
||||
let file = File::open("Cargo.toml").map_err(|e| e.to_string())?;
|
||||
let reader = io::BufReader::new(file);
|
||||
|
||||
for line in reader.lines() {
|
||||
let line = line.map_err(|e| e.to_string())?;
|
||||
if line.starts_with("version") {
|
||||
rust_version = line.split('=').nth(1).unwrap().trim().to_string();
|
||||
rust_version = rust_version[1..rust_version.len() - 1].to_string();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check version from TREXIO
|
||||
let mut trexio_version = String::new();
|
||||
let file = File::open(bindings).map_err(|e| e.to_string())?;
|
||||
let reader = io::BufReader::new(file);
|
||||
for line in reader.lines() {
|
||||
let line = line.map_err(|e| e.to_string())?;
|
||||
if line.contains("TREXIO_PACKAGE_VERSION") {
|
||||
trexio_version = line.split('"').nth(1).unwrap().trim().to_string();
|
||||
trexio_version = trexio_version[0..trexio_version.len() - 2].to_string();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Compare versions
|
||||
if rust_version != trexio_version {
|
||||
eprintln!("Inconsistent versions:\nTREXIO: {}\nRust: {}\n", trexio_version, rust_version);
|
||||
return Err("Inconsistent versions".to_string());
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
fn download_trexio() -> PathBuf {
|
||||
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
|
||||
let trexio_url = format!("https://github.com/TREX-CoE/trexio/releases/download/v{VERSION}/trexio-{VERSION}.tar.gz");
|
||||
@ -107,7 +63,6 @@ fn install_trexio(trexio_dir: &PathBuf) -> PathBuf {
|
||||
|
||||
assert!(make_status.success());
|
||||
install_path
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -116,18 +71,6 @@ fn make_interface(trexio_h: &PathBuf) -> io::Result<()> {
|
||||
let mut err = HashMap::new();
|
||||
let mut be = HashMap::new();
|
||||
|
||||
/*
|
||||
let mut trexio_h = PathBuf::new().join("trexio.h");
|
||||
if let Ok(library) = pkg_config::probe_library("trexio") {
|
||||
for path in &library.include_paths {
|
||||
if path.join("trexio.h").exists() {
|
||||
trexio_h = path.join("trexio.h");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
let trexio_file = File::open(trexio_h)?;
|
||||
let trexio_reader = BufReader::new(trexio_file);
|
||||
|
||||
@ -165,7 +108,7 @@ fn make_interface(trexio_h: &PathBuf) -> io::Result<()> {
|
||||
write!(&mut wrapper_file, "const back_end_t {} = {};\n", k, v)?;
|
||||
}
|
||||
|
||||
write!(&mut wrapper_file, "#undef TREXIO_AUTO;\n")?;
|
||||
write!(&mut wrapper_file, "#undef TREXIO_AUTO\n")?;
|
||||
write!(&mut wrapper_file, "const back_end_t TREXIO_AUTO = TREXIO_INVALID_BACK_END;\n")?;
|
||||
|
||||
Ok(())
|
||||
@ -698,25 +641,9 @@ pub fn write_{group_l}_{element_l}(&self, offset: usize, data: &[{typ}]) -> Resu
|
||||
|
||||
|
||||
/// Reads the JSON file, processes its contents, and generates Rust functions according to the specifications in the JSON data.
|
||||
fn make_functions(bindings: &PathBuf) -> std::io::Result<()> {
|
||||
let file = File::open(bindings)?;
|
||||
let reader = io::BufReader::new(file);
|
||||
let mut json_file = String::new();
|
||||
for line in reader.lines() {
|
||||
let line = line?;
|
||||
if line.contains("trexio_json") {
|
||||
let index_start = match line.find('{') {
|
||||
Some(x) => x,
|
||||
_ => panic!("trexio_json not found"),
|
||||
};
|
||||
json_file = line[index_start..line.len()-5]
|
||||
.replace(r#"\""#,"\"")
|
||||
.replace(r#"\n"#,"\n")
|
||||
.replace(r#"\t"#,"");
|
||||
break;
|
||||
}
|
||||
}
|
||||
let data: Value = serde_json::from_str(&json_file).unwrap();
|
||||
fn make_functions(json_path: &PathBuf) -> std::io::Result<()> {
|
||||
let file = File::open(json_path).unwrap();
|
||||
let data: Value = serde_json::from_reader(file).unwrap();
|
||||
|
||||
let mut r: Vec<String> = vec![
|
||||
String::from("
|
||||
@ -750,8 +677,11 @@ impl File {
|
||||
|
||||
|
||||
fn main() {
|
||||
let path = download_trexio();
|
||||
let install_path = install_trexio(&path);
|
||||
let source_path = download_trexio();
|
||||
println!("source path: {}", source_path.display());
|
||||
|
||||
let install_path = install_trexio(&source_path);
|
||||
println!("install path: {}", install_path.display());
|
||||
|
||||
// Tell cargo to look for shared libraries in the specified directory
|
||||
println!("cargo:rustc-link-search={}/lib", install_path.display());
|
||||
@ -759,17 +689,17 @@ fn main() {
|
||||
// Tell cargo to tell rustc to link the system trexio shared library.
|
||||
println!("cargo:rustc-link-lib=trexio");
|
||||
|
||||
// Tell cargo to invalidate the built crate whenever the wrapper changes
|
||||
println!("cargo:rerun-if-changed=wrapper.h");
|
||||
|
||||
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
|
||||
let trexio_h = install_path.join("include").join("trexio.h");
|
||||
println!("trexio.h: {}", trexio_h.display());
|
||||
|
||||
make_interface(&trexio_h).unwrap();
|
||||
// The bindgen::Builder is the main entry point
|
||||
// to bindgen, and lets you build up options for
|
||||
// the resulting bindings.
|
||||
let wrapper_h = out_path.join("wrapper.h");
|
||||
let wrapper_h = out_path.join(WRAPPER_H);
|
||||
println!("wrapper.h: {}", wrapper_h.display());
|
||||
|
||||
let bindings = bindgen::Builder::default()
|
||||
// The input header we would like to generate
|
||||
// bindings for.
|
||||
@ -784,9 +714,14 @@ fn main() {
|
||||
|
||||
// Write the bindings to the $OUT_DIR/bindings.rs file.
|
||||
let bindings_path = out_path.join("bindings.rs");
|
||||
println!("bindings.rs: {}", bindings_path.display());
|
||||
|
||||
bindings
|
||||
.write_to_file(&bindings_path)
|
||||
.expect("Couldn't write bindings!");
|
||||
// check_version(&bindings_path).unwrap();
|
||||
make_functions(&bindings_path).unwrap();
|
||||
|
||||
let json_path = source_path.join("trex.json");
|
||||
println!("json path: {}", json_path.display());
|
||||
|
||||
make_functions(&json_path).unwrap();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user