From aacc1595bf1033248be2f5b823452d8d2a2defd5 Mon Sep 17 00:00:00 2001 From: Simon McVittie <smcv@collabora.com> Date: Tue, 18 Oct 2022 12:44:53 +0100 Subject: [PATCH] pv-runtime: Log more details about how we change the mutable sysroot Helps: steamrt/tasks#187, steam-runtime-tools#97 Signed-off-by: Simon McVittie <smcv@collabora.com> --- pressure-vessel/runtime.c | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/pressure-vessel/runtime.c b/pressure-vessel/runtime.c index 3ea7b12ea..70832e2bb 100644 --- a/pressure-vessel/runtime.c +++ b/pressure-vessel/runtime.c @@ -309,6 +309,8 @@ pv_runtime_make_symlink_in_container (PvRuntime *self, dest = alloc_dest = g_build_filename (PV_RUNTIME_PATH_INTERPRETER_ROOT, path, NULL); + g_debug ("Creating symlink \"${container}/%s\" -> \"%s\"", dest, target); + if (_srt_get_path_after (path, "usr") != NULL) { if (self->mutable_sysroot_fd >= 0) @@ -3762,7 +3764,13 @@ pv_runtime_take_from_provider (PvRuntime *self, if (!_srt_file_test_in_sysroot (self->provider->path_in_current_ns, self->provider->fd, source_in_provider, G_FILE_TEST_IS_DIR)) - return TRUE; + { + g_debug ("Not replacing \"${container}/%s\" with \"%s/%s\": " + "source is not a directory", + dest_in_container, + self->provider->path_in_current_ns, source_in_provider); + return TRUE; + } } if (flags & TAKE_FROM_PROVIDER_FLAGS_IF_REGULAR) @@ -3770,7 +3778,13 @@ pv_runtime_take_from_provider (PvRuntime *self, if (!_srt_file_test_in_sysroot (self->provider->path_in_current_ns, self->provider->fd, source_in_provider, G_FILE_TEST_IS_REGULAR)) - return TRUE; + { + g_debug ("Not replacing \"${container}/%s\" with \"%s/%s\": " + "source is not a regular file", + dest_in_container, + self->provider->path_in_current_ns, source_in_provider); + return TRUE; + } } if (flags & TAKE_FROM_PROVIDER_FLAGS_IF_EXISTS) @@ -3778,7 +3792,13 @@ pv_runtime_take_from_provider (PvRuntime *self, if (!_srt_file_test_in_sysroot (self->provider->path_in_current_ns, self->provider->fd, source_in_provider, G_FILE_TEST_EXISTS)) - return TRUE; + { + g_debug ("Not replacing \"${container}/%s\" with \"%s/%s\": " + "source does not exist", + dest_in_container, + self->provider->path_in_current_ns, source_in_provider); + return TRUE; + } } if (self->mutable_sysroot != NULL) @@ -3801,6 +3821,8 @@ pv_runtime_take_from_provider (PvRuntime *self, base = glnx_basename (dest_in_container); + g_debug ("Removing \"${container}/%s\"", dest_in_container); + if (!glnx_shutil_rm_rf_at (parent_dirfd, base, NULL, error)) return FALSE; @@ -3825,6 +3847,10 @@ pv_runtime_take_from_provider (PvRuntime *self, glnx_autofd int file_fd = -1; glnx_autofd int dest_fd = -1; + g_debug ("Creating \"${container}/%s\" by copying \"%s/%s\"", + dest_in_container, + self->provider->path_in_current_ns, + source_in_provider); file_fd = _srt_resolve_in_sysroot (self->provider->fd, source_in_provider, SRT_RESOLVE_FLAGS_READABLE, @@ -3880,6 +3906,9 @@ pv_runtime_take_from_provider (PvRuntime *self, g_return_val_if_fail (target != NULL, FALSE); g_return_val_if_fail (target[0] == '/', FALSE); + g_debug ("Creating symlink \"${container}/%s\" -> \"%s\"", + dest_in_container, target); + if (TEMP_FAILURE_RETRY (symlinkat (target, parent_dirfd, base)) != 0) return glnx_throw_errno_prefix (error, "Unable to create symlink \"%s/%s\" -> \"%s\"", @@ -3897,6 +3926,10 @@ pv_runtime_take_from_provider (PvRuntime *self, * a new version over the top */ g_assert (bwrap != NULL); + g_debug ("Trying to replace \"${container}/%s\" with \"%s/%s\" via " + "bind mount", + dest_in_container, self->provider->path_in_current_ns, + source_in_provider); source_fd = _srt_resolve_in_sysroot (self->provider->fd, source_in_provider, SRT_RESOLVE_FLAGS_NONE, -- GitLab