From nobody Mon Feb 9 22:37:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=suse.de Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1632752183862869.6136737972283; Mon, 27 Sep 2021 07:16:23 -0700 (PDT) Received: from localhost ([::1]:46920 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mUrQc-0008W8-U3 for importer@patchew.org; Mon, 27 Sep 2021 10:16:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33628) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mUrMm-0003UR-TY for qemu-devel@nongnu.org; Mon, 27 Sep 2021 10:12:24 -0400 Received: from smtp-out1.suse.de ([195.135.220.28]:44634) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mUrMg-0005nc-Ds for qemu-devel@nongnu.org; Mon, 27 Sep 2021 10:12:24 -0400 Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 318C6221ED; Mon, 27 Sep 2021 14:12:17 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id A78DB13A91; Mon, 27 Sep 2021 14:12:15 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id MMS5Gj/RUWH+LwAAMHmgww (envelope-from ); Mon, 27 Sep 2021 14:12:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1632751937; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BLT3mkHcGKsKQnI/z1NQlD0W7SfmvXPeUCUV5W6U3Qg=; b=oAz7VXdTzsBM/t2tQpKBEsMr5J1QWPHpaAmAcdYrqpsAPEG1GnpU9i3kFeXDFwV9oiPNW/ i8CduhNZb11JGY+5FcIEaXAmTtbMLZeWTmHHXJ+CPbq1fq3UH5m12cXg4FJgMNWEBwJhGj sTKiCf1AAlZzo1bCQoWtIUxtj5YnF7o= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1632751937; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BLT3mkHcGKsKQnI/z1NQlD0W7SfmvXPeUCUV5W6U3Qg=; b=jfHDNn1q2dMGH4yhucNeDHqFTYZtyU4L86kQgXrj8GWYDZULlNyMO6SqriBGfHiXNT+cP9 FPL8jRSDWVYmZtCg== From: "Jose R. Ziviani" To: qemu-devel@nongnu.org Subject: [PATCH v2 2/2] modules: generates per-target modinfo Date: Mon, 27 Sep 2021 11:12:01 -0300 Message-Id: <20210927141201.21833-4-jziviani@suse.de> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210927141201.21833-1-jziviani@suse.de> References: <20210927141201.21833-1-jziviani@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=195.135.220.28; envelope-from=jziviani@suse.de; helo=smtp-out1.suse.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: pbonzini@redhat.com, kraxel@redhat.com, "Jose R. Ziviani" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (found 2 invalid signatures) X-ZM-MESSAGEID: 1632752184845100001 Content-Type: text/plain; charset="utf-8" This patch changes the way modinfo is generated and built. Today we have only modinfo.c being genereated and linked to all targets, now it generates (and link) one modinfo per target. It also makes use of the module_need to add modules that makes sense for the selected target. Signed-off-by: Jose R. Ziviani --- meson.build | 25 +++++++++++++++-------- scripts/modinfo-generate.py | 40 +++++++++++++++++++++---------------- 2 files changed, 40 insertions(+), 25 deletions(-) diff --git a/meson.build b/meson.build index 2711cbb789..9d25ebb2f9 100644 --- a/meson.build +++ b/meson.build @@ -2395,14 +2395,23 @@ foreach d, list : target_modules endforeach =20 if enable_modules - modinfo_src =3D custom_target('modinfo.c', - output: 'modinfo.c', - input: modinfo_files, - command: [modinfo_generate, '@INPUT@'], - capture: true) - modinfo_lib =3D static_library('modinfo', modinfo_src) - modinfo_dep =3D declare_dependency(link_whole: modinfo_lib) - softmmu_ss.add(modinfo_dep) + foreach target : target_dirs + if target.endswith('-softmmu') + config_target =3D config_target_mak[target] + config_devices_mak =3D target + '-config-devices.mak' + modinfo_src =3D custom_target('modinfo-' + target + '.c', + output: 'modinfo-' + target + '.c', + input: modinfo_files, + command: [modinfo_generate, '--devices',= config_devices_mak, '@INPUT@'], + capture: true) + + modinfo_lib =3D static_library('modinfo-' + target + '.c', modinfo_s= rc) + modinfo_dep =3D declare_dependency(link_with: modinfo_lib) + + arch =3D config_target['TARGET_NAME'] =3D=3D 'sparc64' ? 'sparc64' := config_target['TARGET_BASE_ARCH'] + hw_arch[arch].add(modinfo_dep) + endif + endforeach endif =20 nm =3D find_program('nm') diff --git a/scripts/modinfo-generate.py b/scripts/modinfo-generate.py index 9d3e037b15..25fb241b2d 100755 --- a/scripts/modinfo-generate.py +++ b/scripts/modinfo-generate.py @@ -32,7 +32,7 @@ def parse_line(line): continue return (kind, data) =20 -def generate(name, lines): +def generate(name, lines, core_modules): arch =3D "" objs =3D [] deps =3D [] @@ -49,7 +49,11 @@ def generate(name, lines): elif kind =3D=3D 'arch': arch =3D data; elif kind =3D=3D 'need': - pass # ignore + # don't add a module which dependency is not enabled + # in kconfig + if data.strip() not in core_modules: + print(" /* module {} is missing. */\n".format(data)) + return [] else: print("unknown:", kind) exit(1) @@ -60,7 +64,7 @@ def generate(name, lines): print_array("objs", objs) print_array("deps", deps) print_array("opts", opts) - print("},{"); + print("},{") return deps =20 def print_pre(): @@ -74,26 +78,28 @@ def print_post(): print("}};") =20 def main(args): + if len(args) < 3 or args[0] !=3D '--devices': + print('Expected: modinfo-generate.py --devices ' + 'config-device.mak [modinfo files]', file=3Dsys.stderr) + exit(1) + + # get all devices enabled in kconfig, from *-config-device.mak + enabled_core_modules =3D set() + with open(args[1]) as file: + for line in file.readlines(): + config =3D line.split('=3D') + if config[1].rstrip() =3D=3D 'y': + enabled_core_modules.add(config[0][7:]) # remove CONFIG_ + deps =3D {} print_pre() - for modinfo in args: + for modinfo in args[2:]: with open(modinfo) as f: lines =3D f.readlines() print(" /* %s */" % modinfo) - (basename, ext) =3D os.path.splitext(modinfo) - deps[basename] =3D generate(basename, lines) + (basename, _) =3D os.path.splitext(modinfo) + deps[basename] =3D generate(basename, lines, enabled_core_modules) print_post() =20 - flattened_deps =3D {flat.strip('" ') for dep in deps.values() for flat= in dep} - error =3D False - for dep in flattened_deps: - if dep not in deps.keys(): - print("Dependency {} cannot be satisfied".format(dep), - file=3Dsys.stderr) - error =3D True - - if error: - exit(1) - if __name__ =3D=3D "__main__": main(sys.argv[1:]) --=20 2.33.0