occa
occa copied to clipboard
occa clear issue if OCCA_CACHE_DIR is not default
occa clear seams to work only if OCCA_CACHE_DIR is unset or default (${HOME}/.occa):
> export OCCA_CACHE_DIR=${HOME}/.occa1
> occa clear --all -y
Removing [/home/iterentyev/.occa1/]
terminate called after throwing an instance of 'occa::exception'
what():
---[ Error ]--------------------------------------------------------------------
File : /workspace/occa.repo/src/occa/internal/utils/sys.cpp
Line : 285
Function : rmrf
Message : For safety, not deleting [/home/iterentyev/.occa1/]. To disable this error, set 'sys/safe_rmrf' settings to false
Stack
9 occa::error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
8 occa::sys::rmrf(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
7 occa::bin::safeRmrf(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)
6 occa::bin::runClear(occa::json const&)
5 occa::cli::command::run(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)
4 occa::cli::command::run(int, char const**)
3 occa(+0x1292)
2 /usr/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3)
1 occa(+0x12fe)
================================================================================
Aborted (core dumped)
As I recall this is part of a safety mechanism to ensure that e.g. if OCCA_CACHE_DIR is set to / occa doesn't try to blindly remove everything.
There is a whitelist of sorts of allowed directory names: https://github.com/libocca/occa/blob/c42d2fd6ac8010cf31dbc325b0457fbe889a8e72/src/occa/internal/utils/sys.cpp#L302-L307
So I think e.g. export OCCA_CACHE_DIR=${HOME}/.occa_1 would work in your case.
It could probably use some documentation though.