From 1822be8792865e3f6f0765693f93b8e85fcb279f Mon Sep 17 00:00:00 2001 From: "Mohamed A. Bamakhrama" Date: Mon, 23 May 2022 22:21:45 +0200 Subject: Observe $TMPDIR variable when creating tmp files POSIX defines $TMPDIR as containing the pathname of the directory where programs can create temporary files. On most systems, this variable points to "/tmp". However, on some systems it can point to a different location. Without respecting this variable, yosys fails to run on such systems. Signed-off-by: Mohamed A. Bamakhrama --- kernel/fstdata.cc | 2 +- kernel/yosys.cc | 31 ++++++++++++++++++++++++++++++- kernel/yosys.h | 5 +++-- 3 files changed, 34 insertions(+), 4 deletions(-) (limited to 'kernel') diff --git a/kernel/fstdata.cc b/kernel/fstdata.cc index fea8ee3c3..b2e574b02 100644 --- a/kernel/fstdata.cc +++ b/kernel/fstdata.cc @@ -33,7 +33,7 @@ FstData::FstData(std::string filename) : ctx(nullptr) std::string filename_trim = file_base_name(filename); if (filename_trim.size() > 4 && filename_trim.compare(filename_trim.size()-4, std::string::npos, ".vcd") == 0) { filename_trim.erase(filename_trim.size()-4); - tmp_file = stringf("/tmp/converted_%s.fst", filename_trim.c_str()); + tmp_file = stringf("%s/converted_%s.fst", get_base_tmpdir().c_str(), filename_trim.c_str()); std::string cmd = stringf("vcd2fst %s %s", filename.c_str(), tmp_file.c_str()); log("Exec: %s\n", cmd.c_str()); if (run_command(cmd) != 0) diff --git a/kernel/yosys.cc b/kernel/yosys.cc index 4e1a3ca7e..7f395761b 100644 --- a/kernel/yosys.cc +++ b/kernel/yosys.cc @@ -376,6 +376,35 @@ int run_command(const std::string &command, std::function process_line = std::function()); #endif -std::string make_temp_file(std::string template_str = "/tmp/yosys_XXXXXX"); -std::string make_temp_dir(std::string template_str = "/tmp/yosys_XXXXXX"); +std::string get_base_tmpdir(); +std::string make_temp_file(std::string template_str = get_base_tmpdir() + "/yosys_XXXXXX"); +std::string make_temp_dir(std::string template_str = get_base_tmpdir() + "/yosys_XXXXXX"); bool check_file_exists(std::string filename, bool is_exec = false); bool is_absolute_path(std::string filename); void remove_directory(std::string dirname); -- cgit v1.2.3 From 08275a1569af7d925ff28ff0288d9779057d27a9 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Fri, 27 May 2022 16:13:55 +0200 Subject: Cleanup, and fix windows --- kernel/yosys.cc | 61 +++++++++++++++++++++++---------------------------------- 1 file changed, 24 insertions(+), 37 deletions(-) (limited to 'kernel') diff --git a/kernel/yosys.cc b/kernel/yosys.cc index 7f395761b..64d2b4def 100644 --- a/kernel/yosys.cc +++ b/kernel/yosys.cc @@ -376,64 +376,54 @@ int run_command(const std::string &command, std::function