From nobody Sun Dec 22 01:58:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 173462939546046.915487494802505; Thu, 19 Dec 2024 09:29:55 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 68ABE1877; Thu, 19 Dec 2024 12:29:54 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 06A9816F3; Thu, 19 Dec 2024 12:29:21 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 0FA961503; Thu, 19 Dec 2024 12:29:17 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 8D935168B for ; Thu, 19 Dec 2024 12:29:16 -0500 (EST) Received: from mx-prod-mc-04.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-249-jjKQbHKlPr6CQV14ZueS1w-1; Thu, 19 Dec 2024 12:29:15 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (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-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id DA33119560A5; Thu, 19 Dec 2024 17:29:13 +0000 (UTC) Received: from toolbox.redhat.com (unknown [10.42.28.54]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 0571930044C1; Thu, 19 Dec 2024 17:29:11 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1734629356; 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=zZZBuY9clDq1Z9kHYiuKMW1g96ZLlEB4Qm7uIGfr93E=; b=cobQUtW76I7N3lb0GFJDPQW4S9KytDhaqYxrszOmJmGzpkp8X0xLbUZAH9cJatVNDf9yy/ bcfRKaykrEZpoKmYnLIdCpVPg+xI29j/vghGFsFAH93Lb35EHL2c6HZsmIJ47r91Hbs2hJ ghqugGEdDryIWvgj6kTFKRzN8f7XAv8= X-MC-Unique: jjKQbHKlPr6CQV14ZueS1w-1 X-Mimecast-MFC-AGG-ID: jjKQbHKlPr6CQV14ZueS1w From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: devel@lists.libvirt.org Subject: [PATCH 1/2] po: add its rules for translating polkit file strings Date: Thu, 19 Dec 2024 17:29:06 +0000 Message-ID: <20241219172908.200563-2-berrange@redhat.com> In-Reply-To: <20241219172908.200563-1-berrange@redhat.com> References: <20241219172908.200563-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: qvZwOQBnLkDrX_UL0UofKBfT4YKi-ryjGXdJrvWZtN8_1734629354 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 3B6BQ4L2PJJOVYDK6HUDGD7V3EFHBYUK X-Message-ID-Hash: 3B6BQ4L2PJJOVYDK6HUDGD7V3EFHBYUK X-MailFrom: berrange@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: zhanchun li X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1734629397090116600 Content-Type: text/plain; charset="utf-8" xgettext / msgfmt have generic support for extracting / merging strings in XML files, however, they need to be told something about the schema to know which fields are translatable. This is done by providing 'its' rules. Usually the 'its' rules would be shipped in a -devel package of the app which owns the schema definition, but polkit does not do this. Thus libvirt (and other apps) must ship their own local 'its' rules for polkit. Signed-off-by: Daniel P. Berrang=C3=A9 --- po/its/polkit.its | 8 ++++++++ po/its/polkit.loc | 6 ++++++ po/meson.build | 1 + 3 files changed, 15 insertions(+) create mode 100644 po/its/polkit.its create mode 100644 po/its/polkit.loc diff --git a/po/its/polkit.its b/po/its/polkit.its new file mode 100644 index 0000000000..1c37e6bee7 --- /dev/null +++ b/po/its/polkit.its @@ -0,0 +1,8 @@ + + + + + diff --git a/po/its/polkit.loc b/po/its/polkit.loc new file mode 100644 index 0000000000..c7427ec672 --- /dev/null +++ b/po/its/polkit.loc @@ -0,0 +1,6 @@ + + + + + + diff --git a/po/meson.build b/po/meson.build index 592b254447..126eeabe17 100644 --- a/po/meson.build +++ b/po/meson.build @@ -14,6 +14,7 @@ i18n.gettext( '--package-version=3D@0@'.format(meson.project_version()), '--sort-output', ], + data_dirs: meson.current_source_dir() ) =20 potfiles_dep =3D [ --=20 2.46.0 From nobody Sun Dec 22 01:58:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1734629419360328.7811501252156; Thu, 19 Dec 2024 09:30:19 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 4989817DB; Thu, 19 Dec 2024 12:30:18 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 0CF72178F; Thu, 19 Dec 2024 12:29:33 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id F03C01898; Thu, 19 Dec 2024 12:29:27 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id EDCE11895 for ; Thu, 19 Dec 2024 12:29:18 -0500 (EST) Received: from mx-prod-mc-04.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-266-HzmZYjrQPpyT6aUWiBwAkQ-1; Thu, 19 Dec 2024 12:29:17 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (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-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id E8A1219560BD; Thu, 19 Dec 2024 17:29:15 +0000 (UTC) Received: from toolbox.redhat.com (unknown [10.42.28.54]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 7539430044C1; Thu, 19 Dec 2024 17:29:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1734629358; 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=DszpKvQZBmTBaeEpOV3jgWkDxd6wT4uDXsoj2Qyta58=; b=GVftSGrZ24rSclM7AcF/Jx5cbFjOiKYgYo35dTEmuo/0rFYTc6ISoL7z6odNNWpFCAcnNf y3ByEtWYB4jSa1zkHspZ8/iE1N4c4Ja3r5zXCO2G5J7NzWrq1Ry0oIS5Hg+/EjEVCSmdks kcKIlIFATmqDaSvV4uLpeMc0RKfuDoE= X-MC-Unique: HzmZYjrQPpyT6aUWiBwAkQ-1 X-Mimecast-MFC-AGG-ID: HzmZYjrQPpyT6aUWiBwAkQ From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: devel@lists.libvirt.org Subject: [PATCH 2/2] remote: apply translations to polkit files Date: Thu, 19 Dec 2024 17:29:07 +0000 Message-ID: <20241219172908.200563-3-berrange@redhat.com> In-Reply-To: <20241219172908.200563-1-berrange@redhat.com> References: <20241219172908.200563-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: G1Vvuw185Bx3hKCR43YpuRi3QQEgecSuRbSyTE_5NOI_1734629356 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: BDBE4CGYCORSKQOUEMADNCC2QBVP5HVP X-Message-ID-Hash: BDBE4CGYCORSKQOUEMADNCC2QBVP5HVP X-MailFrom: berrange@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: zhanchun li X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1734629421360116600 Content-Type: text/plain; charset="utf-8" The 'description' and 'message' fields in polkit policy files should be translated into the user's chosen language. xgettext is told to search in both and source and build dirs by meson. Unfortunately a bug in xgettext means that when it searches for built files in XML format, it'll trigger a warning message due to failure to load the generated file from the source dir: xgettext: cannot read ..snip../libvirt/src/access/org.libvirt.api.policy:= failed to load external entity "..snip../libvirt/src/access/org.libvirt.ap= i.policy" This is harmless since it then goes on to try the build dir and succeeds, but will pollute the output of 'ninja libvirt-pot' Related: https://gitlab.com/libvirt/libvirt/-/merge_requests/387 Signed-off-by: Daniel P. Berrang=C3=A9 --- meson.build | 5 +++++ po/POTFILES | 2 ++ po/meson.build | 2 -- src/access/meson.build | 18 ++++++++++++++---- .../{libvirtd.policy =3D> libvirtd.policy.in} | 0 src/remote/meson.build | 13 ++++++++----- 6 files changed, 29 insertions(+), 11 deletions(-) rename src/remote/{libvirtd.policy =3D> libvirtd.policy.in} (100%) diff --git a/meson.build b/meson.build index ca1b915737..0d0bd03a2a 100644 --- a/meson.build +++ b/meson.build @@ -15,6 +15,10 @@ if meson.version().version_compare('>=3D0.64.0') fs =3D import('fs') endif =20 +i18n =3D import('i18n') + +po_dir =3D meson.source_root() / 'po' + # figure out if we are building from git =20 git =3D run_command('test', '-e', '.git', check: false).returncode() =3D= =3D 0 @@ -114,6 +118,7 @@ localedir =3D prefix / get_option('localedir') mandir =3D prefix / get_option('mandir') sbindir =3D prefix / get_option('sbindir') sharedstatedir =3D prefix / get_option('sharedstatedir') +polkitactiondir =3D datadir / 'polkit-1' / 'actions' =20 docdir =3D get_option('docdir') if docdir =3D=3D '' diff --git a/po/POTFILES b/po/POTFILES index 3514aa3dca..ff6f3763d5 100644 --- a/po/POTFILES +++ b/po/POTFILES @@ -1,6 +1,7 @@ src/access/viraccessapicheck.c src/access/viraccessapichecklxc.c src/access/viraccessapicheckqemu.c +src/access/org.libvirt.api.policy.in src/admin/admin_client.h src/admin/admin_server_dispatch_stubs.h src/remote/remote_client_bodies.h @@ -201,6 +202,7 @@ src/qemu/qemu_validate.c src/qemu/qemu_vhost_user.c src/qemu/qemu_vhost_user_gpu.c src/qemu/qemu_virtiofs.c +src/remote/libvirtd.policy.in src/remote/remote_daemon.c src/remote/remote_daemon_config.c src/remote/remote_daemon_dispatch.c diff --git a/po/meson.build b/po/meson.build index 126eeabe17..d8ace5373e 100644 --- a/po/meson.build +++ b/po/meson.build @@ -1,5 +1,3 @@ -i18n =3D import('i18n') - i18n.gettext( meson.project_name(), args: [ diff --git a/src/access/meson.build b/src/access/meson.build index fc5ba5b342..42aa5c7225 100644 --- a/src/access/meson.build +++ b/src/access/meson.build @@ -66,14 +66,24 @@ if conf.has('WITH_POLKIT') access_sources +=3D access_polkit_sources =20 if conf.has('WITH_LIBVIRTD') - custom_target( - 'org.libvirt.api.policy', + polgen =3D custom_target( + 'org.libvirt.api.policy.in', input: access_perm_h, - output: 'org.libvirt.api.policy', + output: 'org.libvirt.api.policy.in', command: [ meson_python_prog, python3_prog, genpolkit_prog, '@INPUT@= ' ], capture: true, + build_by_default: true, + install: true, + install_dir: polkitactiondir, + ) + + i18n.merge_file( + input: polgen, + output: 'org.libvirt.api.policy', + po_dir: po_dir, + data_dirs: [po_dir], install: true, - install_dir: datadir / 'polkit-1' / 'actions', + install_dir: polkitdir / 'actions', ) endif endif diff --git a/src/remote/libvirtd.policy b/src/remote/libvirtd.policy.in similarity index 100% rename from src/remote/libvirtd.policy rename to src/remote/libvirtd.policy.in diff --git a/src/remote/meson.build b/src/remote/meson.build index 831acaaa01..9f66ee2e1c 100644 --- a/src/remote/meson.build +++ b/src/remote/meson.build @@ -294,12 +294,15 @@ if conf.has('WITH_REMOTE') endif =20 if conf.has('WITH_POLKIT') - polkitdir =3D datadir / 'polkit-1' - install_data( - 'libvirtd.policy', - install_dir: polkitdir / 'actions', - rename: [ 'org.libvirt.unix.policy' ], + i18n.merge_file( + input: 'libvirtd.policy.in', + output: 'org.libvirt.unix.policy', + po_dir: po_dir, + data_dirs: [po_dir], + install: true, + install_dir: polkitactiondir, ) + install_data( 'libvirtd.rules', install_dir: polkitdir / 'rules.d', --=20 2.46.0