From: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
To: pgsql-hackers <pgsql-hackers@postgresql.org>
Subject: meson: Add equivalent of configure --disable-rpath option
Date: Wed, 22 Feb 2023 13:56:32 +0100
Message-ID: <33e957e6-4b4e-b0ed-1cc1-6335a24543ff@enterprisedb.com> (raw)
The configure option --disable-rpath currently has no equivalent in
meson. This option is used by packagers, so I think it would be good to
have it in meson as well. I came up with the attached patch.
Attachments:0001-meson-Add-equivalent-of-configure-disable-rpath-opti.patch (text/plain, 4.3K) download
From 2677bb5f7f808000e8a04e3b8c3193e3faa4de39 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Wed, 22 Feb 2023 13:54:23 +0100
Subject: [PATCH] meson: Add equivalent of configure --disable-rpath option
---
doc/src/sgml/installation.sgml | 22 +++++++++++++++++++++-
meson.build | 16 +++++++++++++---
meson_options.txt | 3 +++
src/makefiles/meson.build | 2 +-
4 files changed, 38 insertions(+), 5 deletions(-)
diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgmlindex 0ed35d99e9..6e1087c67f 100644--- a/doc/src/sgml/installation.sgml+++ b/doc/src/sgml/installation.sgml@@ -2216,7 +2216,9 @@ <title>Installation Locations</title>
different subdirectories may render the installation non-relocatable,
meaning you won't be able to move it after installation.
(The <literal>man</literal> and <literal>doc</literal> locations are
- not affected by this restriction.)+ not affected by this restriction.) For relocatable installs, you+ might want to use the <literal>-Drpath=false</literal> option+ described later.
</para>
<variablelist>
@@ -2856,6 +2858,24 @@ <title>Build Process Details</title>
</listitem>
</varlistentry>
+ <varlistentry id="configure-rpath-meson">+ <term><option>-Drpath={ true | false }</option></term>+ <listitem>+ <para>+ Do not mark <productname>PostgreSQL</productname>'s executables+ to indicate that they should search for shared libraries in the+ installation's library directory (see <option>--libdir</option>).+ On most platforms, this marking uses an absolute path to the+ library directory, so that it will be unhelpful if you relocate+ the installation later. However, you will then need to provide+ some other way for the executables to find the shared libraries.+ Typically this requires configuring the operating system's+ dynamic linker to search the library directory; see+ <xref linkend="install-post-shlibs"/> for more detail.+ </para>+ </listitem>+ </varlistentry>+
<varlistentry id="configure-binary-name-meson">
<term><option>-D<replaceable>BINARY_NAME</replaceable>=<replaceable>PATH</replaceable></option></term>
<listitem>
diff --git a/meson.build b/meson.buildindex f534704452..136a5f8b09 100644--- a/meson.build+++ b/meson.build@@ -2572,7 +2572,6 @@ default_target_args = {
default_lib_args = default_target_args + {
'name_prefix': '',
- 'install_rpath': ':'.join(lib_install_rpaths),
}
internal_lib_args = default_lib_args + {
@@ -2583,14 +2582,25 @@ internal_lib_args = default_lib_args + {
default_mod_args = default_lib_args + {
'name_prefix': '',
'install_dir': dir_lib_pkg,
- 'install_rpath': ':'.join(mod_install_rpaths),
}
default_bin_args = default_target_args + {
'install_dir': dir_bin,
- 'install_rpath': ':'.join(bin_install_rpaths),
}
+if get_option('rpath')+ default_lib_args += {+ 'install_rpath': ':'.join(lib_install_rpaths),+ }++ default_mod_args += {+ 'install_rpath': ':'.join(mod_install_rpaths),+ }++ default_bin_args += {+ 'install_rpath': ':'.join(bin_install_rpaths),+ }+endif
# Helper for exporting a limited number of symbols
diff --git a/meson_options.txt b/meson_options.txtindex 9d3ef4aa20..7d33c9f1d4 100644--- a/meson_options.txt+++ b/meson_options.txt@@ -67,6 +67,9 @@ option('extra_version', type : 'string', value: '',
option('darwin_sysroot', type : 'string', value: '',
description: 'select a non-default sysroot path')
+option('rpath', type : 'boolean', value: true,+ description: 'whether to embed shared library search path in executables')+
# External dependencies
diff --git a/src/makefiles/meson.build b/src/makefiles/meson.buildindex bf7303dc99..5a0032ab0d 100644--- a/src/makefiles/meson.build+++ b/src/makefiles/meson.build@@ -53,7 +53,7 @@ pgxs_kv = {
'abs_top_srcdir': meson.source_root(),
'enable_thread_safety': 'yes',
- 'enable_rpath': 'yes',+ 'enable_rpath': get_option('rpath') ? 'yes' : 'no',
'enable_nls': libintl.found() ? 'yes' : 'no',
'enable_tap_tests': tap_tests_enabled ? 'yes' : 'no',
'enable_debug': get_option('debug') ? 'yes' : 'no',
--
2.39.2
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: peter.eisentraut@enterprisedb.com
Subject: Re: meson: Add equivalent of configure --disable-rpath option
In-Reply-To: <33e957e6-4b4e-b0ed-1cc1-6335a24543ff@enterprisedb.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox