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 +++++++++++++++++++++++++++------------ tests/integration/testscript | 4 +++- 2 files changed, 30 insertions(+), 13 deletions(-) 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) { diff --git a/tests/integration/testscript b/tests/integration/testscript index 1e78dfe..a8932ec 100644 --- a/tests/integration/testscript +++ b/tests/integration/testscript @@ -476,5 +476,7 @@ a = $0 &?dist-installed/*** &?redist-installed/*** \ &?../usr/*** &?upload/*** &?upload.tar \ &?../sys-install/*** \ - &task.manifest <| 2>| + &task.manifest <| 2>|; + + sudo rm -rf ../sys-install/ } -- cgit v1.1