From nobody Mon Feb 9 04:14:36 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=quarantine dis=quarantine) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1673637758; cv=none; d=zohomail.com; s=zohoarc; b=DdNitUNC0mg0hCnDx9+9alpl5lSg8MJhUaKuekbUNcG5J7J4semWu0i1shUY62w/N/9fwk0kpUPrBJAJHME1JFbnJqyoAqo/a8DROGS1vx55hj7O5K30urzQZYnyWz5qq+6p3nm5VtlBekN3/rm7Acjd4N7D0ENzavXirwACCFk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1673637758; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=X0VRz2FvkiB1tXVQ10CERM6e9ujYn9soIIHCnCcDO4Y=; b=OqOy1vr6xcBJ3uIS7LESdJPkGdjkNMRXLpVlXyRwKwnEvUW9WuQtfWz1vYrdyKwUK3QOCP3xm7YpSHyAI12QxEFJxbdZNCpzEqH/1ZfNp3+oR2bUqAez3q93CvpMhJisKGQ2UVT9iMRpUmIufvQ/FR/WeF4/3UaT9vJ2GQBSXKI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=quarantine dis=quarantine) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1673637758699207.03928872833308; Fri, 13 Jan 2023 11:22:38 -0800 (PST) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-278-Xmd6OlqyM4y5SSPFfNHhzA-1; Fri, 13 Jan 2023 14:22:34 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id AAD143C0D842; Fri, 13 Jan 2023 19:22:31 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 933904078903; Fri, 13 Jan 2023 19:22:31 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 824D619459C3; Fri, 13 Jan 2023 19:22:31 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 5170D194706F for ; Fri, 13 Jan 2023 19:22:30 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 41B874078904; Fri, 13 Jan 2023 19:22:30 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast02.extmail.prod.ext.rdu2.redhat.com [10.11.55.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 38DDB4078903 for ; Fri, 13 Jan 2023 19:22:30 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 1B764802BF3 for ; Fri, 13 Jan 2023 19:22:30 +0000 (UTC) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on2081.outbound.protection.outlook.com [40.107.8.81]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-632-xq3ON7zkMmiNtuwT4nTizg-1; Fri, 13 Jan 2023 14:22:28 -0500 Received: from AM0PR04MB4899.eurprd04.prod.outlook.com (2603:10a6:208:c5::16) by AM0PR04MB6994.eurprd04.prod.outlook.com (2603:10a6:208:188::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Fri, 13 Jan 2023 19:22:26 +0000 Received: from AM0PR04MB4899.eurprd04.prod.outlook.com ([fe80::c5dc:fe50:9918:744f]) by AM0PR04MB4899.eurprd04.prod.outlook.com ([fe80::c5dc:fe50:9918:744f%3]) with mapi id 15.20.6002.012; Fri, 13 Jan 2023 19:22:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1673637757; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=X0VRz2FvkiB1tXVQ10CERM6e9ujYn9soIIHCnCcDO4Y=; b=NNtTDFOUGvUDMmSvbkXOmqL44yOBblIZ+fh5hP5rVTNGYy/XjrxALz2or/PNgTNF8V8XrE iuqedAfvfxlcDrfzXdHT5cTCgqD/Rwl0+Ifr60C8BlfTrXPf3EN5/orpZvCB6nL3dCTk2b oC/MQ5I2dcsTiA0R2Kxc8kVQOKo2e9E= X-MC-Unique: Xmd6OlqyM4y5SSPFfNHhzA-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: xq3ON7zkMmiNtuwT4nTizg-1 From: Jim Fehlig To: libvir-list@redhat.com Subject: [PATCH V9 06/14] spec: Move common files and dependencies to libvirt-daemon-common Date: Fri, 13 Jan 2023 12:21:53 -0700 Message-ID: <20230113192201.7438-7-jfehlig@suse.com> In-Reply-To: <20230113192201.7438-1-jfehlig@suse.com> References: <20230113192201.7438-1-jfehlig@suse.com> X-ClientProxiedBy: FR3P281CA0056.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:4b::6) To AM0PR04MB4899.eurprd04.prod.outlook.com (2603:10a6:208:c5::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB4899:EE_|AM0PR04MB6994:EE_ X-MS-Office365-Filtering-Correlation-Id: 15a79204-7ee9-43af-d1f2-08daf59b810f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0 X-Microsoft-Antispam-Message-Info: O5Qk3ULPBV0XKuDftbdflSMUDCFA5abmKstcaf5QF6ii//IRvH/OooFPW8PXArMsFDKNZoqRhHAprA+ZEHPbCSklQGB4QYeSg7XU5bTZpAmXrKDeS98Qpk4Q4L1Y+cUrVLyyK21L2N2qJDeJQR1+Y0YtoOeUjjrAZqmUyaSWhiiegPvY9er7zPX/34rzbvt51kZRO7QoyD6p6psIJxNr1RsnZwxVhXpENnkx1AmQidbUKaQ+/ozwDYWdN8XrdxMD3BJ3BzvT8Lb3lh6KuWCBgjotPQZj7pz5HvvD1Le6xBT4WlzDiYiN+MZoNIu4g5YLoT5z8r5WZpePRbNhVa5ydx2RRa+Tkzxg72SLT2A+OWqH6KqbYbHRaDIKu7NtZWkcADM5iVhj1pErS/ADKrxq0n7Q/4XBeoPoHIMD4z+GLbdaLJrpEyOC2CeISbThBSjS4Xwp2knoCVrrbAgmYK0BS7fuiXbjw/tjtcR5U+FXdRLbazrnlfLhWuPHdqNKDlhieq6S58WIHt/BKIzZc13ra9kzuIClsKInm2Rc8l6BE7clBvNhoZGrujkuF9VuVUT5dJOBz2oohL7muT7CmYDNA1Q7kx1Ou3jGNRq+VIfFx65SOL9gAvBREd31q4+ryUtQmZZaXMSpF0lOWPwcMacvSw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR04MB4899.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(366004)(136003)(346002)(39860400002)(376002)(396003)(451199015)(66476007)(5660300002)(8936002)(66946007)(66556008)(2906002)(41300700001)(6916009)(8676002)(6486002)(6506007)(478600001)(26005)(6666004)(186003)(6512007)(450100002)(2616005)(316002)(86362001)(1076003)(4326008)(83380400001)(38100700002)(36756003); DIR:OUT; SFP:1101 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?jKyEO2Bv+PvtDRAOha/IvHM6vaMI2p0pEOGzH+tfThZ5vRSCVXB4oInaSB3h?= =?us-ascii?Q?SZLUM5vPqA8ftrV0ERWIKgIYsI0pxz5m7iZaymmf/WwQyyWrdXF4eASOKoji?= =?us-ascii?Q?ZfzJ6QN1YpAGpXcJOyMp1LimdVZYc2gSGeikqI0zYGTB8ZXKNVA+5T7nE/P6?= =?us-ascii?Q?J4w8tWlGppNtmNSZuWTPci/NpxSfj9EOfy34aN5FI9oT7QxcB0ILe02PvqpI?= =?us-ascii?Q?IkvldXzSQlp0Cz3+M5kGq7Ev/ENhzjNjG01CBbhIto4tFd8ks+FoGFcWZk2G?= =?us-ascii?Q?sl0T+XGR1SkRrUKoxVqYua80zH84Z0B8+0kwiolHG8agliC55tpA21hqBffX?= =?us-ascii?Q?fouQBxmeEVfn/ixfnbNsRy0i9XFEmBVb2mgYXyedjGjbghsG9ysvuQOIZpHK?= =?us-ascii?Q?59GEYNh5dtJytCGl/rxAvxE2fL1evNI2E5jiWtLjtqOIDS/oXcqebmI5azN6?= =?us-ascii?Q?LhC0B+WzDKQNV8y2fANKafcOAvoIE+b4OMuh/Wpau68D+5wyF9fpscJrm5iF?= =?us-ascii?Q?s8p99buoGcU6NFoEnVGSc3+2HTpL2V8vEyrm46coUDOGGT0jAke75FXTjnWE?= =?us-ascii?Q?dkD8mBrgrY5Dh2fS2Tu7J5XsPLByIrsv9/+Y1zvBA2SyCHItYdvfOnsvYepI?= =?us-ascii?Q?TtFJSdoyUIg1C5mNsB4sqEJ0npHnaV4xPrfHebqHTbWHiKkIWmn8HDhlltZh?= =?us-ascii?Q?0SuGScGxFVeTr/UiC0OdfjWry7p6PJePxUnw6+fRJjy2Zyi5ib6csZqdzZTP?= =?us-ascii?Q?JaUftut//7scuApObRoitytYFCqeDj77LEFyIq1A294rh3+3j1MATlaejJvD?= =?us-ascii?Q?zTtAaLaR+hy6ZcVan5JPk6h5vLq86/Jbq0iJKoMla9yDzrrUmmKK+SXZ7UH0?= =?us-ascii?Q?blNuUvqxtuLtQjUftJ/nG9LKDeMfSSC2kKKt69b00sAAZtoH0bzPvtnzGo/0?= =?us-ascii?Q?mtzLkIl73fcWObwh9fK6P3BFt8M0tqC9m07+ge2xuJvkjxdY5EOAfiXkziAv?= =?us-ascii?Q?4+THHXLT24o3rxqMbr5s+j/vUIUHUlogMtxUVcRP80P43PMevr3l9axGNFFx?= =?us-ascii?Q?aAm0PmqKIJSgvjq06Dntnlb9DNeSgm2kr/CenwA62zfWJ810X1vyTuYS3+db?= =?us-ascii?Q?vMvt4uyeVkuFI2t5OqBFzaskBeDTStWDy3v3bbxh1EKQ72zYd74HzdiKMo3+?= =?us-ascii?Q?o1gHgxvHQp9N4u2oxXyfHS9zZMZs+Lc/XvD2L5olb859WjNmNocLoeP4YC+e?= =?us-ascii?Q?AT7EIP/HL1czVma0wQVk5+pZ0AwB9O/lbnf4B2qQgeS9MbgnKJ2W2XlYnt8a?= =?us-ascii?Q?K9qoXF8nIzNW7TR/bgDi/WDCA5zu/llPrkXpy/FURBm9zXoSUdleXUR70Nlp?= =?us-ascii?Q?7GUNwtXLvs1R0D+WLFf/F1LRTSYssG3EM/r6/TIGtdScWzd3Nzz4oNH16gSq?= =?us-ascii?Q?CVuHiTXBGMSwRP2XdCsoNr31x3JOQMTvsR3ILkQnDIYukPhSEhTsb/qbf7sb?= =?us-ascii?Q?6Bx6QrChsNPNfk12Cf7d+BEQvbnnYLx0x1rEzMiqF7U2Np617nbizbuxDp/C?= =?us-ascii?Q?FHpRI31VqXEZZAk7EtqHATTBnaSDUq+UDPXHiDS6?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 15a79204-7ee9-43af-d1f2-08daf59b810f X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB4899.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jan 2023 19:22:26.3973 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /qWAWh5+yX5MlU+so+UsA+WI/DwQsk2fxwmEVxb7fUrSjaK8+c5SpnpdVaoii/Rmm7kFj87BZWG5j6930Bj0+A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB6994 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 3.1 on 10.11.54.2 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andrea Bolognani Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.2 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1673637760604100001 Content-Type: text/plain; charset="utf-8" Introduce a new subpackage libvirt-daemon-common and move virt-admin, virt-host-validate, virt-ssh-helper, libvirt-guests and miscellaneous files/directories to it. Also move common dependencies to the new subpackage. These files, utilities, and dependecies are used by other core libvirt daemons Signed-off-by: Jim Fehlig Reviewed-by: Andrea Bolognani Reviewed-by: Daniel P. Berrang=C3=A9 --- libvirt.spec.in | 67 +++++++++++++++++++++++++++++++------------------ 1 file changed, 43 insertions(+), 24 deletions(-) diff --git a/libvirt.spec.in b/libvirt.spec.in index 674718182b..4c0767bbc7 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in @@ -432,10 +432,20 @@ Summary: Server side daemon and supporting files for = libvirt library =20 # The client side, i.e. shared libs are in a subpackage Requires: libvirt-libs =3D %{version}-%{release} +Requires: libvirt-daemon-common =3D %{version}-%{release} Requires: libvirt-daemon-lock =3D %{version}-%{release} Requires: libvirt-daemon-plugin-lockd =3D %{version}-%{release} Requires: libvirt-daemon-log =3D %{version}-%{release} Requires: libvirt-daemon-proxy =3D %{version}-%{release} + +%description daemon +Server side daemon required to manage the virtualization capabilities +of recent versions of Linux. Requires a hypervisor specific sub-RPM +for specific drivers. + +%package daemon-common +Summary: Files and utilities used by daemons +Requires: libvirt-libs =3D %{version}-%{release} # The libvirt-guests.sh script requires virsh from libvirt-client subpacka= ge, # but not every deployment wants to use libvirt-guests service. Using # Recommends here will install libvirt-client by default (if available), b= ut @@ -473,10 +483,8 @@ Obsoletes: libvirt-admin < 7.3.0 Provides: libvirt-admin =3D %{version}-%{release} Obsoletes: libvirt-bash-completion < 7.3.0 =20 -%description daemon -Server side daemon required to manage the virtualization capabilities -of recent versions of Linux. Requires a hypervisor specific sub-RPM -for specific drivers. +%description daemon-common +Miscellaneous files and utilities used by other libvirt daemons =20 %package daemon-lock Summary: Server side daemon for managing locks @@ -1435,30 +1443,19 @@ fi \ %define libvirt_daemon_systemd_preun_priv() %systemd_preun %1.service %1-a= dmin.socket %1.socket =20 %pre daemon -%libvirt_sysconfig_pre libvirtd libvirt-guests -# 'libvirt' group is just to allow password-less polkit access to -# libvirtd. The uid number is irrelevant, so we use dynamic allocation -# described at the above link. -getent group libvirt >/dev/null || groupadd -r libvirt -exit 0 +%libvirt_sysconfig_pre libvirtd =20 %post daemon %if ! %{with_modular_daemons} %libvirt_daemon_systemd_post_inet libvirtd %endif -%systemd_post libvirt-guests.service %libvirt_daemon_schedule_restart libvirtd =20 %preun daemon -%systemd_preun libvirt-guests.service %libvirt_daemon_systemd_preun_inet libvirtd =20 -%postun daemon -/bin/systemctl daemon-reload >/dev/null 2>&1 || : -%systemd_postun libvirt-guests.service - %posttrans daemon -%libvirt_sysconfig_posttrans libvirtd libvirt-guests +%libvirt_sysconfig_posttrans libvirtd if test %libvirt_daemon_needs_restart libvirtd then # See if user has previously modified their install to @@ -1493,6 +1490,26 @@ then fi %libvirt_daemon_finish_restart libvirtd =20 +%pre daemon-common +%libvirt_sysconfig_pre libvirt-guests +# 'libvirt' group is just to allow password-less polkit access to libvirt +# daemons. The uid number is irrelevant, so we use dynamic allocation. +getent group libvirt >/dev/null || groupadd -r libvirt +exit 0 + +%post daemon-common +%systemd_post libvirt-guests.service + +%preun daemon-common +%systemd_preun libvirt-guests.service + +%postun daemon-common +/bin/systemctl daemon-reload >/dev/null 2>&1 || : +%systemd_postun libvirt-guests.service + +%posttrans daemon-common +%libvirt_sysconfig_posttrans libvirt-guests + %pre daemon-lock %libvirt_sysconfig_pre virtlockd =20 @@ -1814,12 +1831,18 @@ exit 0 %{_unitdir}/libvirtd-admin.socket %{_unitdir}/libvirtd-tcp.socket %{_unitdir}/libvirtd-tls.socket -%{_unitdir}/virt-guest-shutdown.target -%{_unitdir}/libvirt-guests.service %config(noreplace) %{_sysconfdir}/libvirt/libvirtd.conf -%config(noreplace) %{_sysconfdir}/sasl2/libvirt.conf %config(noreplace) %{_prefix}/lib/sysctl.d/60-libvirtd.conf %config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd +%{_datadir}/augeas/lenses/libvirtd.aug +%{_datadir}/augeas/lenses/tests/test_libvirtd.aug +%attr(0755, root, root) %{_sbindir}/libvirtd +%{_mandir}/man8/libvirtd.8* + +%files daemon-common +%{_unitdir}/virt-guest-shutdown.target +%{_unitdir}/libvirt-guests.service +%config(noreplace) %{_sysconfdir}/sasl2/libvirt.conf %dir %{_datadir}/libvirt/ %ghost %dir %{_rundir}/libvirt/ %ghost %dir %{_rundir}/libvirt/common/ @@ -1832,21 +1855,17 @@ exit 0 %dir %attr(0755, root, root) %{_libdir}/libvirt/connection-driver/ %dir %attr(0755, root, root) %{_libdir}/libvirt/storage-backend/ %dir %attr(0755, root, root) %{_libdir}/libvirt/storage-file/ -%{_datadir}/augeas/lenses/libvirtd.aug -%{_datadir}/augeas/lenses/tests/test_libvirtd.aug %{_datadir}/polkit-1/actions/org.libvirt.unix.policy %{_datadir}/polkit-1/actions/org.libvirt.api.policy %{_datadir}/polkit-1/rules.d/50-libvirt.rules %dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/ %attr(0755, root, root) %{_libexecdir}/libvirt_iohelper %attr(0755, root, root) %{_bindir}/virt-ssh-helper -%attr(0755, root, root) %{_sbindir}/libvirtd %attr(0755, root, root) %{_libexecdir}/libvirt-guests.sh %{_mandir}/man1/virt-admin.1* %{_mandir}/man1/virt-host-validate.1* %{_mandir}/man8/virt-ssh-helper.8* %{_mandir}/man8/libvirt-guests.8* -%{_mandir}/man8/libvirtd.8* %{_bindir}/virt-host-validate %{_bindir}/virt-admin %{_datadir}/bash-completion/completions/virt-admin --=20 2.38.1