Received: by 2002:a05:7412:e794:b0:fa:551:50a7 with SMTP id o20csp993470rdd; Wed, 10 Jan 2024 05:48:01 -0800 (PST) X-Google-Smtp-Source: AGHT+IGjqJ+1ggRpNVxtEFak1GNSRPj09Ia65Cw6txA0zbil0H8+1uk+wyMMa6KwlfpwjRIJApZK X-Received: by 2002:ac8:4e8e:0:b0:429:bb68:316 with SMTP id 14-20020ac84e8e000000b00429bb680316mr501898qtp.90.1704894480828; Wed, 10 Jan 2024 05:48:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1704894480; cv=none; d=google.com; s=arc-20160816; b=qvVY/Db+0wfZKZK+8DwEKm5rmCtdQjiBCPexYYkLVba871QZ885f7YDeGjr8LGblYV 76v57IAgddqp8ooVl7ttjZQMV0iiKBvUbtQ1MbpiTlXS61l5MKGHdL8f2ryE1U+Sau+D xfOOoYOK9pDkKOZ8pbcHc3O5ffPpzNM0CjEWiD4dbITxudFU8kPFfTkiKG0MQYcupvQc kstVpZXLYBBOaiJN89oUqJlE6/iyw1F+ECMK4voFmhjH/7q2S7/Je5U5why6h4QsiXGm sjyF0jC7lKCZuD6GwNJdOpB/bvev1WFeoEL17hYfSiB6g7rs/kefsELEqFfoLOFMXWaZ WwHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=organization:in-reply-to:content-disposition:mime-version :list-unsubscribe:list-subscribe:list-id:precedence:references :mail-followup-to:message-id:subject:cc:to:from:date:dkim-signature; bh=1Y0eBuXL+sN01TA/cF6zCYPDOuymq0/KPLQRNWoDoxI=; fh=f3MDfshgIQeFn8t+tftuV9AOkBCG9PnQmaFs5Sw2L+Y=; b=Ri1KOo8Un/Dk3P8W4Mjjy0FkuMp2Ybet01B52l1dL9Tw+4aZ84imh+GM23iWiufMTz Hzm6mf1WM0QwyTDBlQx59fLofNs1sGhi46WyWDhjohdEvx4slWx3x0NGD2UcXTEyj4rW bLwm7hLBeq7+qqNIgzKt9ogYUcSe+wDn7WXQxfo8jqlSjmrHbCc94Ha37ALwN66/0ylT 8VtVJMjx6EHmtSfHnC6Dr9fSTnOyefCG6Bl61zZKRNFLAIEkh7H64ZSMRKp9wL2l58qm 15PNauVfn8LzYjig4le8n7GVLxexaUNypa/qlnypENaqkM/yvYIVhwSbXb5PwL1xECCf 6Djg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@avm.de header.s=mail header.b=NEpBw8bW; spf=pass (google.com: domain of linux-kernel+bounces-22269-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-22269-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=avm.de Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id v18-20020ac85792000000b00429b2938cdfsi1440341qta.19.2024.01.10.05.48.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jan 2024 05:48:00 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-22269-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@avm.de header.s=mail header.b=NEpBw8bW; spf=pass (google.com: domain of linux-kernel+bounces-22269-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-22269-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=avm.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 5373D1C22004 for ; Wed, 10 Jan 2024 13:48:00 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A945C495C6; Wed, 10 Jan 2024 13:47:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=avm.de header.i=@avm.de header.b="NEpBw8bW" Received: from mail.avm.de (mail.avm.de [212.42.244.94]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B521848CCC; Wed, 10 Jan 2024 13:47:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=avm.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=avm.de Received: from mail-auth.avm.de (dovecot-mx-01.avm.de [212.42.244.71]) by mail.avm.de (Postfix) with ESMTPS; Wed, 10 Jan 2024 14:47:42 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=avm.de; s=mail; t=1704894462; bh=yB/d2HBtnseonB7gGBWG1ceZe3XwB4h+dT4pG9J/Hkk=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=NEpBw8bWwaEvX3bs+RKmpaWjUKiFQqIPS65q2o8+nw4Zy6cd/1ifPSziEVblFJo7B id9zHit1+ZEcMwYN05xMoZHJjgQycuMz7NTD1TFLRu88G10vfJnRbVF6I1GAEgCLIy DsyiOnAO+Y8Mlm14US57ETtHI8nHlC8EG0AtsKRU= Received: from buildd.core.avm.de (buildd-sv-01.avm.de [172.16.0.225]) by mail-auth.avm.de (Postfix) with ESMTPA id 91B4B802B0; Wed, 10 Jan 2024 14:47:42 +0100 (CET) Received: by buildd.core.avm.de (Postfix, from userid 1000) id 35D9718105E; Wed, 10 Jan 2024 14:47:42 +0100 (CET) Date: Wed, 10 Jan 2024 14:47:42 +0100 From: Nicolas Schier To: Masahiro Yamada Cc: linux-kbuild@vger.kernel.org, Ben Hutchings , Nathan Chancellor , Nick Desaulniers , Nicolas Schier , linux-kernel@vger.kernel.org Subject: Re: [PATCH 4/5] kbuild: deb-pkg: build binary-arch in parallel Message-ID: Mail-Followup-To: Masahiro Yamada , linux-kbuild@vger.kernel.org, Ben Hutchings , Nathan Chancellor , Nick Desaulniers , linux-kernel@vger.kernel.org References: <20231230135200.1058873-1-masahiroy@kernel.org> <20231230135200.1058873-4-masahiroy@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20231230135200.1058873-4-masahiroy@kernel.org> Organization: AVM GmbH X-purgate-ID: 149429::1704894462-7066B92C-BAACA115/0/0 X-purgate-type: clean X-purgate-size: 4687 X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate: clean On Sat, Dec 30, 2023 at 10:51:59PM +0900, Masahiro Yamada wrote: > 'make deb-pkg' builds build-arch in parallel, but binary-arch serially. > > Given that all binary packages are independent of one another, they can > be built in parallel. > > I am uncertain whether debian/files is robust against a race condition. > Just in case, make dh_gencontrol (dpkg-gencontrol) output to separate > debian/*.files, which are then concatenated into debian/files. > > Signed-off-by: Masahiro Yamada > --- > > scripts/package/builddeb | 40 ++++++++++-------------------------- > scripts/package/debian/rules | 35 +++++++++++++++++++++++++++---- > 2 files changed, 42 insertions(+), 33 deletions(-) > > diff --git a/scripts/package/builddeb b/scripts/package/builddeb > index bf96a3c24608..d31b16afe0db 100755 > --- a/scripts/package/builddeb > +++ b/scripts/package/builddeb > @@ -24,18 +24,6 @@ if_enabled_echo() { > fi > } > > -create_package() { > - export DH_OPTIONS="-p${1}" > - > - dh_installdocs > - dh_installchangelogs > - dh_compress > - dh_fixperms > - dh_gencontrol > - dh_md5sums > - dh_builddeb -- ${KDEB_COMPRESS:+-Z$KDEB_COMPRESS} > -} > - > install_linux_image () { > pname=$1 > pdir=debian/$1 > @@ -161,21 +149,15 @@ install_libc_headers () { > mv "$pdir/usr/include/asm" "$pdir/usr/include/${DEB_HOST_MULTIARCH}" > } > > -rm -f debian/files > +package=$1 > > -packages_enabled=$(dh_listpackages) > - > -for package in ${packages_enabled} > -do > - case ${package} in > - *-dbg) > - install_linux_image_dbg "${package}";; > - linux-image-*|user-mode-linux-*) > - install_linux_image "${package}";; > - linux-libc-dev) > - install_libc_headers "${package}";; > - linux-headers-*) > - install_kernel_headers "${package}";; > - esac > - create_package "${package}" > -done > +case "${package}" in > +*-dbg) > + install_linux_image_dbg "${package}";; > +linux-image-*|user-mode-linux-*) > + install_linux_image "${package}";; > +linux-libc-dev) > + install_libc_headers "${package}";; > +linux-headers-*) > + install_kernel_headers "${package}";; > +esac > diff --git a/scripts/package/debian/rules b/scripts/package/debian/rules > index b3f80f62236c..407f46a4a655 100755 > --- a/scripts/package/debian/rules > +++ b/scripts/package/debian/rules > @@ -19,12 +19,39 @@ revision = $(lastword $(subst -, ,$(shell dpkg-parsechangelog -S Version))) > CROSS_COMPILE ?= $(filter-out $(DEB_BUILD_GNU_TYPE)-, $(DEB_HOST_GNU_TYPE)-) > make-opts = ARCH=$(ARCH) KERNELRELEASE=$(KERNELRELEASE) KBUILD_BUILD_VERSION=$(revision) $(addprefix CROSS_COMPILE=,$(CROSS_COMPILE)) > > +binary-targets := $(addprefix binary-, image image-dbg headers libc-dev) > + > +all-packages = $(shell dh_listpackages) > +image-package = $(filter linux-image-% user-%, $(filter-out %-dbg, $(all-packages))) > +image-dbg-package = $(filter %-dbg, $(all-packages)) > +libc-dev-package = $(filter linux-libc-dev, $(all-packages)) > +headers-package = $(filter linux-headers-%, $(all-packages)) > + > +mk-files = $(patsubst binary-%,debian/%.files,$1) > +package = $($(@:binary-%=%-package)) > +DH_OPTIONS = -p$(package) > + > +define binary > + $(Q)+$(MAKE) $(make-opts) run-command KBUILD_RUN_COMMAND='+$$(srctree)/scripts/package/builddeb $(package)' > + $(Q)dh_installdocs $(DH_OPTIONS) > + $(Q)dh_installchangelogs $(DH_OPTIONS) > + $(Q)dh_compress $(DH_OPTIONS) > + $(Q)dh_fixperms $(DH_OPTIONS) > + $(Q)dh_gencontrol $(DH_OPTIONS) -- -f$(call mk-files,$@) > + $(Q)dh_md5sums $(DH_OPTIONS) > + $(Q)dh_builddeb $(DH_OPTIONS) -- $(addprefix -Z,$(KDEB_COMPRESS)) > +endef > + > +.PHONY: $(binary-targets) > +$(binary-targets): build-arch > + $(Q)truncate -s0 $(call mk-files,$@) > + $(if $(package),$(binary)) > + > .PHONY: binary binary-indep binary-arch > binary: binary-arch binary-indep > binary-indep: build-indep > -binary-arch: build-arch > - $(Q)$(MAKE) $(make-opts) \ > - run-command KBUILD_RUN_COMMAND='+$$(srctree)/scripts/package/builddeb' > +binary-arch: $(binary-targets) > + $(Q)cat $(call mk-files,$^) > debian/files > > .PHONY: build build-indep build-arch > build: build-arch build-indep > @@ -35,7 +62,7 @@ build-arch: > > .PHONY: clean > clean: > - $(Q)rm -rf debian/files debian/linux-* debian/deb-env.vars* > + $(Q)rm -rf debian/files debian/linux-* debian/deb-env.vars* debian/*.files > $(Q)$(MAKE) ARCH=$(ARCH) clean > > # If DEB_HOST_ARCH is empty, it is likely that debian/rules was executed > -- > 2.40.1 > Thanks, looks good to me. Reviewed-by: Nicolas Schier