From 803059b346f8bccc9b4c4579119a5966b67da993 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Tue, 29 Aug 2023 14:24:26 +0300 Subject: Run `sudo mkdir -p` at bbot.sys.install.tar.extract step in worker --- bbot/worker/worker.cxx | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) (limited to 'bbot') diff --git a/bbot/worker/worker.cxx b/bbot/worker/worker.cxx index b759760..8c22796 100644 --- a/bbot/worker/worker.cxx +++ b/bbot/worker/worker.cxx @@ -96,20 +96,35 @@ catch (const system_error& e) } static void -mk_p (tracer& t, string* log, const dir_path& d) -try +#ifndef _WIN32 +mk_p (tracer& t, string* log, const dir_path& d, bool sudo = false) { - if (verb >= 3) - t << "mkdir -p " << d; - - if (log != nullptr) - *log += "mkdir -p " + d.representation () + '\n'; + if (sudo) + { + if (log != nullptr) + *log += "sudo mkdir -p " + d.representation () + '\n'; - try_mkdir_p (d); -} -catch (const system_error& e) + run_io (t, 0, 1, 2, "sudo", "mkdir", "-p", d); + } + else +#else +mk_p (tracer& t, string* log, const dir_path& d, bool = false) { - fail << "unable to create directory " << d << ": " << e << endf; +#endif + try + { + if (verb >= 3) + t << "mkdir -p " << d; + + if (log != nullptr) + *log += "mkdir -p " + d.representation () + '\n'; + + try_mkdir_p (d); + } + catch (const system_error& e) + { + fail << "unable to create directory " << d << ": " << e << endf; + } } static void @@ -4405,7 +4420,7 @@ build (size_t argc, const char* argv[]) config_install_root (step_id::bbot_sys_install)); if (ir) - mk_p (trace, &r.log, *ir); + mk_p (trace, &r.log, *ir, true /* sudo */); if (!module_pkg) { -- cgit v1.1