From nobody Mon Apr 29 00:43:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) client-ip=207.211.31.120; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1597847389; cv=none; d=zohomail.com; s=zohoarc; b=QEYbEEi7zqquqq4FRr/rVnx1teoj8NeHDIFpMOY2KrFSePzpoiT/BXBw0/k0RU1+sI/UnXyuQyhx49vhwuH64/QTR3WTVnpctkqoUaK88QVHk/8d/1aw8kKTsW3Uljw9Ke1vZKZ3tkv/KAkfc+b8tcRXlhj3JEHpHN7CRTdfIis= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1597847389; h=Content-Type:Content-Transfer-Encoding:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=Wvk6KTuBCoUJqZa7RYBNndhpG7YfVuDAPfWA8aYw/K8=; b=LhMtp+xdLwOI01xH7yGY3CNuu2rtet+bNAcx1kYGZJdhUE4xUK9QCoSbuPVWzy/KAjqcxXQl7+yojqbPaY2nFBh1v+MYHWEnV2cVTXDYVphylRoK96n9XVPfvPoWUjfKTeeAnfeSHgOq8hMYgqYfyWlOIYuXf9H7aGouR2300nY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) by mx.zohomail.com with SMTPS id 1597847389718801.9836486614471; Wed, 19 Aug 2020 07:29:49 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-323-FJbPFZP7NhSlL_1wQBkgdA-1; Wed, 19 Aug 2020 10:29:45 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 0B27A1009BA6; Wed, 19 Aug 2020 14:29:40 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D9F7B5B680; Wed, 19 Aug 2020 14:29:39 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 2F5331832FC2; Wed, 19 Aug 2020 14:29:39 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 07JETbcc028961 for ; Wed, 19 Aug 2020 10:29:37 -0400 Received: by smtp.corp.redhat.com (Postfix) id B51E17DFEF; Wed, 19 Aug 2020 14:29:37 +0000 (UTC) Received: from harajuku.usersys.redhat.com (unknown [10.40.192.116]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A878C5B680 for ; Wed, 19 Aug 2020 14:29:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1597847388; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=Wvk6KTuBCoUJqZa7RYBNndhpG7YfVuDAPfWA8aYw/K8=; b=g+Li3ZyUEfgNcMNJuzhyWmr+tj1Tvl1/mds6Tx4T6+f7gWRd+Ae5AETZ1ST4e5OKzJyJW/ H2D1dsp40f2SXDmg1ch1gdZywbv7xaMchcssZmdk1e5aagQ8J7fVuNtprQTahdPhGxs0UQ v2ug/dmoEqdDYX3Akx/MNtBYHltAZtw= X-MC-Unique: FJbPFZP7NhSlL_1wQBkgdA-1 From: Andrea Bolognani To: libvir-list@redhat.com Subject: [libvirt PATCH v3] meson: Improve RPATH handling Date: Wed, 19 Aug 2020 16:29:31 +0200 Message-Id: <20200819142931.46760-1-abologna@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0.003 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Right now we're unconditionally adding RPATH information to the installed binaries and libraries, but that's not always desired. autotools seem to be smart enough to only include that information when targeting a non-standard prefix, so most distro packages don't actually contain it; moreover, both Debian and Fedora have wiki pages encouraging packagers to avoid setting RPATH: https://wiki.debian.org/RpathIssue https://fedoraproject.org/wiki/RPath_Packaging_Draft Implement RPATH logic that Does The Right Thing=E2=84=A2 in the most common cases, while still offering users the ability to override the default behavior if they have specific needs. Signed-off-by: Andrea Bolognani Reviewed-by: Pavel Hrdina --- meson.build | 10 ++++++++++ meson_options.txt | 1 + src/meson.build | 12 ++++++------ tools/meson.build | 8 ++++---- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/meson.build b/meson.build index a72d0c0e85..d81aceae7a 100644 --- a/meson.build +++ b/meson.build @@ -156,6 +156,16 @@ if rc.returncode() =3D=3D 0 endif =20 =20 +# Add RPATH information when building for a non-standard prefix, or +# when explicitly requested to do so + +if prefix =3D=3D '/usr' and not get_option('rpath').enabled() + libvirt_rpath =3D '' +else + libvirt_rpath =3D libdir +endif + + # figure out libvirt version strings =20 arr_version =3D meson.project_version().split('.') diff --git a/meson_options.txt b/meson_options.txt index c538d323c1..79554c3186 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -6,6 +6,7 @@ option('runstatedir', type: 'string', value: '', descriptio= n: 'State directory f option('expensive_tests', type: 'feature', value: 'auto', description: 'se= t the default for enabling expensive tests (long timeouts), use VIR_TEST_EX= PENSIVE to override') option('test_coverage', type: 'boolean', value: false, description: 'turn = on code coverage instrumentation') option('git_werror', type: 'feature', value: 'auto', description: 'use -We= rror if building from GIT') +option('rpath', type: 'feature', value: 'auto', description: 'whether to i= nclude rpath information in installed binaries and libraries') =20 =20 # build dependencies options diff --git a/src/meson.build b/src/meson.build index 73ac99f01e..d058cec2e4 100644 --- a/src/meson.build +++ b/src/meson.build @@ -454,7 +454,7 @@ libvirt_qemu_lib =3D shared_library( libvirt_qemu_syms_file, ], install: true, - install_rpath: libdir, + install_rpath: libvirt_rpath, version: libvirt_lib_version, soversion: libvirt_so_version, ) @@ -510,7 +510,7 @@ libvirt_lxc_lib =3D shared_library( libvirt_lxc_syms_file, ], install: true, - install_rpath: libdir, + install_rpath: libvirt_rpath, version: libvirt_lib_version, soversion: libvirt_so_version, ) @@ -554,7 +554,7 @@ libvirt_admin_lib =3D shared_library( libvirt_admin_syms_file, ], install: true, - install_rpath: libdir, + install_rpath: libvirt_rpath, version: libvirt_lib_version, soversion: libvirt_so_version, ) @@ -588,7 +588,7 @@ foreach module : virt_modules ], install: true, install_dir: module.get('install_dir', libdir / 'libvirt' / 'connectio= n-driver'), - install_rpath: libdir, + install_rpath: libvirt_rpath, ) set_variable('@0@_module'.format(module['name'].underscorify()), mod) endforeach @@ -633,7 +633,7 @@ foreach daemon : virt_daemons ], install: true, install_dir: sbindir, - install_rpath: libdir, + install_rpath: libvirt_rpath, ) endforeach =20 @@ -661,7 +661,7 @@ foreach helper : virt_helpers ], install: true, install_dir: helper.get('install_dir', libexecdir), - install_rpath: libdir, + install_rpath: libvirt_rpath, ) endforeach =20 diff --git a/tools/meson.build b/tools/meson.build index 090179470a..e18adfa7f2 100644 --- a/tools/meson.build +++ b/tools/meson.build @@ -75,7 +75,7 @@ if conf.has('WITH_HOST_VALIDATE') ], install: true, install_dir: bindir, - install_rpath: libdir, + install_rpath: libvirt_rpath, ) endif =20 @@ -112,7 +112,7 @@ if conf.has('WITH_LOGIN_SHELL') ], install: true, install_dir: libexecdir, - install_rpath: libdir, + install_rpath: libvirt_rpath, ) =20 install_data('virt-login-shell.conf', install_dir: sysconfdir / 'libvirt= ') @@ -197,7 +197,7 @@ executable( ], install: true, install_dir: bindir, - install_rpath: libdir, + install_rpath: libvirt_rpath, ) =20 executable( @@ -219,7 +219,7 @@ executable( ], install: true, install_dir: bindir, - install_rpath: libdir, + install_rpath: libvirt_rpath, ) =20 tools_conf =3D configuration_data() --=20 2.26.2