From nobody Mon Feb 9 01:20:08 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1767791004; cv=none; d=zohomail.com; s=zohoarc; b=DdE80Md0AkQPBS1kdTWLqqW3YATDstK/BFWC0NC6j6R0QTZbEXXwaXEeCI21zAXcw+caM4Uf3JFSJZ7NTIK84Hj5YNWfUGmVOht1aKjUd4zQwJ/VgEqnA//n0/6jU7o84sdwUnrVsdf9cTbaYonV1VpNxGKBdqGXKgULQo6ZNt4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767791004; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=31aPuuD3PU7TZIw48kRji4jd9O4iQc8f9NEiWcxMzF0=; b=gLR9Fktq68pRjzBAYb+so5w0iBjMHEJJb3V9EckzFxsF5O1mD73pre/YtxJ4X6T9zJvCX9POLMLEZ8guQ3yePbRfLY6NHQPCN+dtUu3VDYQASpHuB0xdQvU7fbBoIuEFoxKc4PSvH/7IbN4ltfuBAj/Fix92vwNhJkmHla43rkE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767791004309860.0002513851528; Wed, 7 Jan 2026 05:03:24 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdTBC-00050P-MZ; Wed, 07 Jan 2026 08:02:26 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdTAk-0004vg-8u for qemu-devel@nongnu.org; Wed, 07 Jan 2026 08:02:01 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vdTAi-0007Bs-LL for qemu-devel@nongnu.org; Wed, 07 Jan 2026 08:01:58 -0500 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-458-gw8mIWIGPKGrwjbYXUdmAQ-1; Wed, 07 Jan 2026 08:01:51 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 64D1F19560B6; Wed, 7 Jan 2026 13:01:50 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.169]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id AD80419560A2; Wed, 7 Jan 2026 13:01:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767790915; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=31aPuuD3PU7TZIw48kRji4jd9O4iQc8f9NEiWcxMzF0=; b=YnIGdC64BsiMIDaksxxv83yoga1+EIm3H+g9nhPooj4l2n9whKPvk2P+sEddsWL3LX6u8v CZkxFO7p5FpmcSATb+UYlYDvqcpovpRYLTZ3/nPXHRL1BnJmH1DSOUaAxT8hmCi/9XRJBD Ci5+xCK0BIX85hHb+mee3LkNuKDXQ84= X-MC-Unique: gw8mIWIGPKGrwjbYXUdmAQ-1 X-Mimecast-MFC-AGG-ID: gw8mIWIGPKGrwjbYXUdmAQ_1767790910 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Thomas Huth , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paolo Bonzini , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Subject: [PATCH 1/4] tests/docker: improve handling of docker probes Date: Wed, 7 Jan 2026 13:01:42 +0000 Message-ID: <20260107130145.1495219-2-berrange@redhat.com> In-Reply-To: <20260107130145.1495219-1-berrange@redhat.com> References: <20260107130145.1495219-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1767791006006158500 The docker.py script has logic to guess the container command and detects one of * docker * sudo -n docker * podman but the "docker.py probe" command then throws away the detected argv and prints a slightly different argv based soley on the detected argv[0]. The result is that 'probe' will print * docker * sudo docker * podman which means that if sudo was detected & the result of 'probe' were used direclty, it would end up prompting for password interaction every time. The 'configure' script, however, runs 'probe' and then throws away the printed argv again, reporting only 'podman' or 'docker', which is used to set the $(RUNC) variable for tests/docker/Makefile.include which is in turn used to pass --engine to docker.py. So the docker.py command will re-detect the need for 'sudo -n' and use it correctly The problem with this is that some commands in Makefile.include do not call docker.py at all, they invoke $(RUNC) directly. Since configure threw away the 'sudo' command prefix Makefile.in won't be adding either 'sudo' or 'sudo -n', it'll just run plani 'docker' which is wrong. This commit sanitizes things so that the 'docker.py probe' prints out the exact detected ARGV, and configure fully preserves this ARGV when setting $(RUNC). Since "$(RUNC)" is no longer just a bare engine name, however, we must now also set the $(CONTAINER_ENGINE) variable for Makefile.include so it can pass something sane to the --engine arg for docker.py Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Thomas Huth --- configure | 19 +++++++------------ tests/docker/Makefile.include | 5 +++-- tests/docker/docker.py | 7 +------ 3 files changed, 11 insertions(+), 20 deletions(-) diff --git a/configure b/configure index 55e0bd3425..1adbb357df 100755 --- a/configure +++ b/configure @@ -1316,17 +1316,11 @@ fi ########################################## # functions to probe cross compilers =20 -container=3D"no" -runc=3D"" +runc=3D"no" if test $use_containers =3D "yes" && (has "docker" || has "podman"); then - case $($python "$source_path"/tests/docker/docker.py --engine "$contai= ner_engine" probe) in - *docker) container=3Ddocker ;; - podman) container=3Dpodman ;; - no) container=3Dno ;; - esac - if test "$container" !=3D "no"; then - docker_py=3D"$python $source_path/tests/docker/docker.py --engine = $container" - runc=3D$container + runc=3D$($python "$source_path"/tests/docker/docker.py --engine "$cont= ainer_engine" probe) + if test "$runc" !=3D "no"; then + docker_py=3D"$python $source_path/tests/docker/docker.py --engine = $container_engine" fi fi =20 @@ -1446,7 +1440,7 @@ probe_target_compiler() { esac =20 for host in $container_hosts; do - test "$container" !=3D no || continue + test "$runc" !=3D no || continue test "$host" =3D "$cpu" || continue case $target_arch in # debian-all-test-cross architectures @@ -1775,8 +1769,9 @@ echo all: >> $config_host_mak echo "SRC_PATH=3D$source_path" >> $config_host_mak echo "TARGET_DIRS=3D$target_list" >> $config_host_mak echo "GDB=3D$gdb_bin" >> $config_host_mak -if test "$container" !=3D no; then +if test "$runc" !=3D no; then echo "RUNC=3D$runc" >> $config_host_mak + echo "CONTAINER_ENGINE=3D$container_engine" >> $config_host_mak fi echo "SUBDIRS=3D$subdirs" >> $config_host_mak if test "$rust" !=3D disabled; then diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index 38467cca61..7d4582b6a8 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -16,8 +16,9 @@ DOCKER_DEFAULT_REGISTRY :=3D registry.gitlab.com/qemu-pro= ject/qemu endif DOCKER_REGISTRY :=3D $(if $(REGISTRY),$(REGISTRY),$(DOCKER_DEFAULT_REGISTR= Y)) =20 -RUNC ?=3D $(if $(shell command -v docker), docker, podman) -DOCKER_SCRIPT=3D$(SRC_PATH)/tests/docker/docker.py --engine $(RUNC) +CONTAINER_ENGINE =3D auto +DOCKER_SCRIPT=3D$(SRC_PATH)/tests/docker/docker.py --engine $(CONTAINER_EN= GINE) +RUNC ?=3D $(shell $(DOCKER_SCRIPT) probe) =20 CUR_TIME :=3D $(shell date +%Y-%m-%d-%H.%M.%S.$$$$) DOCKER_SRC_COPY :=3D $(BUILD_DIR)/docker-src.$(CUR_TIME) diff --git a/tests/docker/docker.py b/tests/docker/docker.py index 3b8a26704d..ff68c7bf6f 100755 --- a/tests/docker/docker.py +++ b/tests/docker/docker.py @@ -618,12 +618,7 @@ class ProbeCommand(SubCommand): def run(self, args, argv): try: docker =3D Docker() - if docker._command[0] =3D=3D "docker": - print("docker") - elif docker._command[0] =3D=3D "sudo": - print("sudo docker") - elif docker._command[0] =3D=3D "podman": - print("podman") + print(" ".join(docker._command)) except Exception: print("no") =20 --=20 2.52.0