Re: [RFC PATCH 1/2] Set TOPDIR_PATH and generate its sha256sum at run time
Daniel Gomez <[email protected]>
| Newsgroups | dev.linux.lists.kdevops |
|---|---|
| Organization | kernel.org |
| Message-ID | <[email protected]> |
On 28/08/2025 22.28, Chuck Lever wrote: > From: Chuck Lever <[email protected]> > > Commit 42d27579a9d0 ("guestfs: enhance ssh config choice") added a > uniquifier to the name of the ssh config to avoid multiple kdevops > runs clobbering each other's ssh config entries. It uses the TOPDIR > pathname set in the current .config to benefit from the nice > convenience of generating an Ansible extra_var using "output yaml". > > However, if the same user generates all her .configs (that will be > run by other users under automation) while in the same directory > (say, if they are different branches in the same git repository), > the TOPDIR pathname and thus the sha256sum of that pathname will be > exactly the same in all of those .config files, allowing the path > names of the ephemeral ssh configs to collide. > IIUC, this aligns very well with the sandboxing effort. Definitely, TOPDIR needs to point to a sandbox directory. Thanks for this series! > The TOPDIR and its checksum need to be generated not by "make > menuconfig" but rather by "make" in order that .config files (as > saved in defconfigs/) can be truly portable. > > Signed-off-by: Chuck Lever <[email protected]> > --- > Kconfig | 15 --------------- > Makefile | 4 ++++ > scripts/gen-hosts.Makefile | 1 + > scripts/ssh.Makefile | 4 ++-- > 4 files changed, 7 insertions(+), 17 deletions(-) > > diff --git a/Kconfig b/Kconfig > index 3f2bc8cf019a..948befbce4de 100644 > --- a/Kconfig > +++ b/Kconfig > @@ -5,21 +5,6 @@ > > mainmenu "$(PROJECT) $(PROJECTRELEASE)" > > -config TOPDIR_PATH > - string > - output yaml > - default $(shell, echo $TOPDIR_PATH) > - > -config TOPDIR_PATH_HAS_SHA256SUM > - bool > - output yaml > - default y > - > -config TOPDIR_PATH_SHA256SUM > - string > - output yaml > - default $(shell, ./scripts/compute_sha256sum.sh $(TOPDIR_PATH)) > - > config HAVE_KDEVOPS_CUSTOM_DEFAULTS > bool > default n > diff --git a/Makefile b/Makefile > index 8755577e4d85..b6fdbe67fc07 100644 > --- a/Makefile > +++ b/Makefile > @@ -19,6 +19,8 @@ export KDEVOPS_NODES := > export PYTHONUNBUFFERED=1 > export TOPDIR=./ > export TOPDIR_PATH = $(shell readlink -f $(TOPDIR)) > +export TOPDIR_PATH_HAS_SHA256SUM=y > +export TOPDIR_PATH_SHA256SUM = $(shell, ./scripts/compute_sha256sum.sh $(TOPDIR_PATH)) > include scripts/refs.Makefile > > KDEVOPS_NODES_ROLE_TEMPLATE_DIR := $(KDEVOPS_PLAYBOOKS_DIR)/roles/gen_nodes/templates > @@ -82,6 +84,8 @@ INCLUDES = -I include/ > CFLAGS += $(INCLUDES) > > ANSIBLE_EXTRA_ARGS += kdevops_version='$(PROJECTRELEASE)' > +ANSIBLE_EXTRA_ARGS += topdir_path_has_sha256sum='$(TOPDIR_PATH_HAS_SHA256SUM)' > +ANSIBLE_EXTRA_ARGS += topdir_path_sha256sum='$(TOPDIR_PATH_SHA256SUM)' > > export KDEVOPS_HOSTS_TEMPLATE := hosts.j2 > > diff --git a/scripts/gen-hosts.Makefile b/scripts/gen-hosts.Makefile > index 0d1e0cd77c2e..c809b1da18e5 100644 > --- a/scripts/gen-hosts.Makefile > +++ b/scripts/gen-hosts.Makefile > @@ -3,6 +3,7 @@ > KDEVOPS_PLAYBOOKS_DIR_FULL_PATH=$(TOPDIR_PATH)/$(KDEVOPS_PLAYBOOKS_DIR) > KDEVOPS_HOSTS_TEMPLATE_DIR=$(KDEVOPS_PLAYBOOKS_DIR_FULL_PATH)/roles/gen_hosts/templates > > +GENHOSTS_EXTRA_ARGS += topdir_path='$(TOPDIR_PATH)' We need to feed these vars as they are variables generated based on the directory the user is currently running kdevops on, is that correct? > GENHOSTS_EXTRA_ARGS += kdevops_playbooks_dir='$(KDEVOPS_PLAYBOOKS_DIR)' > > # Relative path so that ansible can work with it > diff --git a/scripts/ssh.Makefile b/scripts/ssh.Makefile > index d18a03e094ee..d2a583f45da2 100644 > --- a/scripts/ssh.Makefile > +++ b/scripts/ssh.Makefile > @@ -10,8 +10,8 @@ ifeq (y,$(CONFIG_KDEVOPS_SSH_CONFIG_UPDATE)) > SSH_CONFIG_FILE:=$(subst ",,$(CONFIG_KDEVOPS_SSH_CONFIG)) > ANSIBLE_EXTRA_ARGS += sshconfig=$(shell realpath $(SSH_CONFIG_FILE)) > > -ifeq (y,$(CONFIG_TOPDIR_PATH_HAS_SHA256SUM)) > -SSH_CONFIG_SUFFIX:=$(CONFIG_TOPDIR_PATH_SHA256SUM) > +ifeq (y,$(TOPDIR_PATH_HAS_SHA256SUM)) > +SSH_CONFIG_SUFFIX:=$(TOPDIR_PATH_SHA256SUM) > else > SSH_CONFIG_SUFFIX:=$(CONFIG_KDEVOPS_HOST_PREFIX) > endif