Forgot that I had gotten a review from a Meson maintainer. The last two patches in this set are new. One is just a simple spelling correction.
-- Tristan Partin Neon (https://neon.tech)
From c20ece79c625c8ca33fee26791ab40c311a5c97e Mon Sep 17 00:00:00 2001 From: Tristan Partin <tris...@neon.tech> Date: Tue, 16 May 2023 07:55:03 -0500 Subject: [PATCH v5 01/16] Remove triple-quoted strings Triple-quoted strings are for multiline strings in Meson. None of the descriptions that got changed were multiline and the entire file uses single-line descriptions. --- meson_options.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/meson_options.txt b/meson_options.txt index 5b44a8829d..1ea9729dc2 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -10,19 +10,19 @@ option('blocksize', type : 'combo', option('wal_blocksize', type : 'combo', choices: ['1', '2', '4', '8', '16', '32', '64'], value: '8', - description : '''WAL block size, in kilobytes''') + description : 'WAL block size, in kilobytes') option('segsize', type : 'integer', value : 1, - description : '''Segment size, in gigabytes''') + description : 'Segment size, in gigabytes') option('segsize_blocks', type : 'integer', value: 0, - description : '''Segment size, in blocks''') + description : 'Segment size, in blocks') # Miscellaneous options option('krb_srvnam', type : 'string', value : 'postgres', - description : '''Default Kerberos service principal for GSSAPI''') + description : 'Default Kerberos service principal for GSSAPI') option('system_tzdata', type: 'string', value: '', description: 'use system time zone data in specified directory') @@ -32,7 +32,7 @@ option('system_tzdata', type: 'string', value: '', option('pgport', type : 'integer', value : 5432, min: 1, max: 65535, - description : '''Default port number for server and clients''') + description : 'Default port number for server and clients') # Developer options -- Tristan Partin Neon (https://neon.tech)
From 230bfbb6029e520fc980ad9c0e6ff7369ca0f939 Mon Sep 17 00:00:00 2001 From: Tristan Partin <tris...@neon.tech> Date: Tue, 16 May 2023 08:03:31 -0500 Subject: [PATCH v5 02/16] Use consistent casing in Meson option descriptions Meson itself uses capital letters for option descriptions, so follow that. --- meson_options.txt | 90 +++++++++++++++++++++++------------------------ 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/meson_options.txt b/meson_options.txt index 1ea9729dc2..fa823fd088 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -5,7 +5,7 @@ option('blocksize', type : 'combo', choices : ['1', '2', '4', '8', '16', '32'], value : '8', - description: 'set relation block size in kB') + description: 'Set relation block size in kB') option('wal_blocksize', type : 'combo', choices: ['1', '2', '4', '8', '16', '32', '64'], @@ -25,7 +25,7 @@ option('krb_srvnam', type : 'string', value : 'postgres', description : 'Default Kerberos service principal for GSSAPI') option('system_tzdata', type: 'string', value: '', - description: 'use system time zone data in specified directory') + description: 'Use system time zone data in specified directory') # Defaults @@ -38,7 +38,7 @@ option('pgport', type : 'integer', value : 5432, # Developer options option('cassert', type : 'boolean', value: false, - description: 'enable assertion checks (for debugging)') + description: 'Enable assertion checks (for debugging)') option('tap_tests', type : 'feature', value : 'auto', description : 'Whether to enable tap tests') @@ -47,43 +47,43 @@ option('PG_TEST_EXTRA', type : 'string', value: '', description: 'Enable selected extra tests') option('atomics', type : 'boolean', value: true, - description: 'whether to use atomic operations') + description: 'Whether to use atomic operations') option('spinlocks', type : 'boolean', value: true, - description: 'whether to use spinlocks') + description: 'Whether to use spinlocks') # Compilation options option('extra_include_dirs', type : 'array', value: [], - description: 'non-default directories to be searched for headers') + description: 'Non-default directories to be searched for headers') option('extra_lib_dirs', type : 'array', value: [], - description: 'non-default directories to be searched for libs') + description: 'Non-default directories to be searched for libs') option('extra_version', type : 'string', value: '', - description: 'append STRING to the PostgreSQL version number') + description: 'Append STRING to the PostgreSQL version number') option('darwin_sysroot', type : 'string', value: '', - description: 'select a non-default sysroot path') + description: 'Select a non-default sysroot path') option('rpath', type : 'boolean', value: true, - description: 'whether to embed shared library search path in executables') + description: 'Whether to embed shared library search path in executables') # External dependencies option('bonjour', type : 'feature', value: 'auto', - description: 'build with Bonjour support') + description: 'Build with Bonjour support') option('bsd_auth', type : 'feature', value: 'auto', - description: 'build with BSD Authentication support') + description: 'Build with BSD Authentication support') option('docs', type : 'feature', value: 'auto', - description: 'documentation in HTML and man page format') + description: 'Documentation in HTML and man page format') option('docs_pdf', type : 'feature', value: 'auto', - description: 'documentation in PDF format') + description: 'Documentation in PDF format') option('docs_html_style', type : 'combo', choices: ['simple', 'website'], description: 'CSS stylesheet for HTML documentation') @@ -110,102 +110,102 @@ option('libxslt', type : 'feature', value: 'auto', description: 'XSLT support in contrib/xml2') option('llvm', type : 'feature', value: 'disabled', - description: 'whether to use llvm') + description: 'Whether to use llvm') option('lz4', type : 'feature', value: 'auto', description: 'LZ4 support') option('nls', type: 'feature', value: 'auto', - description: 'native language support') + description: 'Native language support') option('pam', type : 'feature', value: 'auto', - description: 'build with PAM support') + description: 'Build with PAM support') option('plperl', type : 'feature', value: 'auto', - description: 'build Perl modules (PL/Perl)') + description: 'Build Perl modules (PL/Perl)') option('plpython', type : 'feature', value: 'auto', - description: 'build Python modules (PL/Python)') + description: 'Build Python modules (PL/Python)') option('pltcl', type : 'feature', value: 'auto', - description: 'build with TCL support') + description: 'Build with TCL support') option('tcl_version', type : 'string', value : 'tcl', - description: 'specify TCL version') + description: 'Specify TCL version') option('readline', type : 'feature', value : 'auto', - description: 'use GNU Readline or BSD Libedit for editing') + description: 'Use GNU Readline or BSD Libedit for editing') option('selinux', type : 'feature', value : 'disabled', - description: 'build with SELinux support') + description: 'Build with SELinux support') option('ssl', type : 'combo', choices : ['auto', 'none', 'openssl'], value : 'auto', - description: 'use LIB for SSL/TLS support (openssl)') + description: 'Use LIB for SSL/TLS support (openssl)') option('systemd', type : 'feature', value: 'auto', - description: 'build with systemd support') + description: 'Build with systemd support') option('uuid', type : 'combo', choices : ['none', 'bsd', 'e2fs', 'ossp'], value : 'none', - description: 'build contrib/uuid-ossp using LIB') + description: 'Build contrib/uuid-ossp using LIB') option('zlib', type : 'feature', value: 'auto', - description: 'whether to use zlib') + description: 'Whether to use zlib') option('zstd', type : 'feature', value: 'auto', - description: 'whether to use zstd') + description: 'Whether to use zstd') # Programs option('BISON', type : 'array', value: ['bison', 'win_bison'], - description: 'path to bison binary') + description: 'Path to bison binary') option('DTRACE', type : 'string', value: 'dtrace', - description: 'path to dtrace binary') + description: 'Path to dtrace binary') option('FLEX', type : 'array', value: ['flex', 'win_flex'], - description: 'path to flex binary') + description: 'Path to flex binary') option('FOP', type : 'string', value: 'fop', - description: 'path to fop binary') + description: 'Path to fop binary') option('GZIP', type : 'string', value: 'gzip', - description: 'path to gzip binary') + description: 'Path to gzip binary') option('LZ4', type : 'string', value: 'lz4', - description: 'path to lz4 binary') + description: 'Path to lz4 binary') option('OPENSSL', type : 'string', value: 'openssl', - description: 'path to openssl binary') + description: 'Path to openssl binary') option('PERL', type : 'string', value: 'perl', - description: 'path to perl binary') + description: 'Path to perl binary') option('PROVE', type : 'string', value: 'prove', - description: 'path to prove binary') + description: 'Path to prove binary') option('PYTHON', type : 'array', value: ['python3', 'python'], - description: 'path to python binary') + description: 'Path to python binary') option('SED', type : 'string', value: 'gsed', - description: 'path to sed binary') + description: 'Path to sed binary') option('STRIP', type : 'string', value: 'strip', - description: 'path to strip binary, used for PGXS emulation') + description: 'Path to strip binary, used for PGXS emulation') option('TAR', type : 'string', value: 'tar', - description: 'path to tar binary') + description: 'Path to tar binary') option('XMLLINT', type : 'string', value: 'xmllint', - description: 'path to xmllint binary') + description: 'Path to xmllint binary') option('XSLTPROC', type : 'string', value: 'xsltproc', - description: 'path to xsltproc binary') + description: 'Path to xsltproc binary') option('ZSTD', type : 'string', value: 'zstd', - description: 'path to zstd binary') + description: 'Path to zstd binary') option('ZIC', type : 'string', value: 'zic', - description: 'path to zic binary, when cross-compiling') + description: 'Path to zic binary, when cross-compiling') -- Tristan Partin Neon (https://neon.tech)
From 365871a337fe05fedca4b845d5b4625a2616d137 Mon Sep 17 00:00:00 2001 From: Tristan Partin <tris...@neon.tech> Date: Tue, 16 May 2023 08:11:14 -0500 Subject: [PATCH v5 03/16] Use consistent Meson option description formats --- meson_options.txt | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/meson_options.txt b/meson_options.txt index fa823fd088..ac7bcd366e 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -5,7 +5,7 @@ option('blocksize', type : 'combo', choices : ['1', '2', '4', '8', '16', '32'], value : '8', - description: 'Set relation block size in kB') + description: 'Relation block size, in kilobytes') option('wal_blocksize', type : 'combo', choices: ['1', '2', '4', '8', '16', '32', '64'], @@ -41,16 +41,16 @@ option('cassert', type : 'boolean', value: false, description: 'Enable assertion checks (for debugging)') option('tap_tests', type : 'feature', value : 'auto', - description : 'Whether to enable tap tests') + description : 'Enable TAP tests') option('PG_TEST_EXTRA', type : 'string', value: '', description: 'Enable selected extra tests') option('atomics', type : 'boolean', value: true, - description: 'Whether to use atomic operations') + description: 'Use atomic operations') option('spinlocks', type : 'boolean', value: true, - description: 'Whether to use spinlocks') + description: 'Use spinlocks') # Compilation options @@ -68,16 +68,16 @@ 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') + description: 'Embed shared library search path in executables') # External dependencies option('bonjour', type : 'feature', value: 'auto', - description: 'Build with Bonjour support') + description: 'Bonjour support') option('bsd_auth', type : 'feature', value: 'auto', - description: 'Build with BSD Authentication support') + description: 'BSD Authentication support') option('docs', type : 'feature', value: 'auto', description: 'Documentation in HTML and man page format') @@ -110,7 +110,7 @@ option('libxslt', type : 'feature', value: 'auto', description: 'XSLT support in contrib/xml2') option('llvm', type : 'feature', value: 'disabled', - description: 'Whether to use llvm') + description: 'LLVM support') option('lz4', type : 'feature', value: 'auto', description: 'LZ4 support') @@ -119,7 +119,7 @@ option('nls', type: 'feature', value: 'auto', description: 'Native language support') option('pam', type : 'feature', value: 'auto', - description: 'Build with PAM support') + description: 'PAM support') option('plperl', type : 'feature', value: 'auto', description: 'Build Perl modules (PL/Perl)') @@ -128,33 +128,33 @@ option('plpython', type : 'feature', value: 'auto', description: 'Build Python modules (PL/Python)') option('pltcl', type : 'feature', value: 'auto', - description: 'Build with TCL support') + description: 'Build with Tcl support (PL/Tcl)') option('tcl_version', type : 'string', value : 'tcl', - description: 'Specify TCL version') + description: 'Tcl version') option('readline', type : 'feature', value : 'auto', description: 'Use GNU Readline or BSD Libedit for editing') option('selinux', type : 'feature', value : 'disabled', - description: 'Build with SELinux support') + description: 'SELinux support') option('ssl', type : 'combo', choices : ['auto', 'none', 'openssl'], value : 'auto', description: 'Use LIB for SSL/TLS support (openssl)') option('systemd', type : 'feature', value: 'auto', - description: 'Build with systemd support') + description: 'systemd support') option('uuid', type : 'combo', choices : ['none', 'bsd', 'e2fs', 'ossp'], value : 'none', - description: 'Build contrib/uuid-ossp using LIB') + description: 'Use LIB for contrib/uuid-ossp support') option('zlib', type : 'feature', value: 'auto', - description: 'Whether to use zlib') + description: 'Enable zlib') option('zstd', type : 'feature', value: 'auto', - description: 'Whether to use zstd') + description: 'Enable zstd') # Programs -- Tristan Partin Neon (https://neon.tech)
From 317c3e213c250d2bdb7aae7433fe9a8c2305fb4b Mon Sep 17 00:00:00 2001 From: Tristan Partin <tris...@neon.tech> Date: Tue, 16 May 2023 08:28:48 -0500 Subject: [PATCH v5 04/16] Attach colon to keyword argument This matches the style found in the rest of the Meson build description. --- meson_options.txt | 138 +++++++++++++++++++++++----------------------- 1 file changed, 69 insertions(+), 69 deletions(-) diff --git a/meson_options.txt b/meson_options.txt index ac7bcd366e..d2f95cfec3 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -2,27 +2,27 @@ # Data layout influencing options -option('blocksize', type : 'combo', - choices : ['1', '2', '4', '8', '16', '32'], - value : '8', +option('blocksize', type: 'combo', + choices: ['1', '2', '4', '8', '16', '32'], + value: '8', description: 'Relation block size, in kilobytes') -option('wal_blocksize', type : 'combo', +option('wal_blocksize', type: 'combo', choices: ['1', '2', '4', '8', '16', '32', '64'], value: '8', - description : 'WAL block size, in kilobytes') + description: 'WAL block size, in kilobytes') -option('segsize', type : 'integer', value : 1, - description : 'Segment size, in gigabytes') +option('segsize', type: 'integer', value: 1, + description: 'Segment size, in gigabytes') -option('segsize_blocks', type : 'integer', value: 0, - description : 'Segment size, in blocks') +option('segsize_blocks', type: 'integer', value: 0, + description: 'Segment size, in blocks') # Miscellaneous options -option('krb_srvnam', type : 'string', value : 'postgres', - description : 'Default Kerberos service principal for GSSAPI') +option('krb_srvnam', type: 'string', value: 'postgres', + description: 'Default Kerberos service principal for GSSAPI') option('system_tzdata', type: 'string', value: '', description: 'Use system time zone data in specified directory') @@ -30,182 +30,182 @@ option('system_tzdata', type: 'string', value: '', # Defaults -option('pgport', type : 'integer', value : 5432, +option('pgport', type: 'integer', value: 5432, min: 1, max: 65535, - description : 'Default port number for server and clients') + description: 'Default port number for server and clients') # Developer options -option('cassert', type : 'boolean', value: false, +option('cassert', type: 'boolean', value: false, description: 'Enable assertion checks (for debugging)') -option('tap_tests', type : 'feature', value : 'auto', - description : 'Enable TAP tests') +option('tap_tests', type: 'feature', value: 'auto', + description: 'Enable TAP tests') -option('PG_TEST_EXTRA', type : 'string', value: '', +option('PG_TEST_EXTRA', type: 'string', value: '', description: 'Enable selected extra tests') -option('atomics', type : 'boolean', value: true, +option('atomics', type: 'boolean', value: true, description: 'Use atomic operations') -option('spinlocks', type : 'boolean', value: true, +option('spinlocks', type: 'boolean', value: true, description: 'Use spinlocks') # Compilation options -option('extra_include_dirs', type : 'array', value: [], +option('extra_include_dirs', type: 'array', value: [], description: 'Non-default directories to be searched for headers') -option('extra_lib_dirs', type : 'array', value: [], +option('extra_lib_dirs', type: 'array', value: [], description: 'Non-default directories to be searched for libs') -option('extra_version', type : 'string', value: '', +option('extra_version', type: 'string', value: '', description: 'Append STRING to the PostgreSQL version number') -option('darwin_sysroot', type : 'string', value: '', +option('darwin_sysroot', type: 'string', value: '', description: 'Select a non-default sysroot path') -option('rpath', type : 'boolean', value: true, +option('rpath', type: 'boolean', value: true, description: 'Embed shared library search path in executables') # External dependencies -option('bonjour', type : 'feature', value: 'auto', +option('bonjour', type: 'feature', value: 'auto', description: 'Bonjour support') -option('bsd_auth', type : 'feature', value: 'auto', +option('bsd_auth', type: 'feature', value: 'auto', description: 'BSD Authentication support') -option('docs', type : 'feature', value: 'auto', +option('docs', type: 'feature', value: 'auto', description: 'Documentation in HTML and man page format') -option('docs_pdf', type : 'feature', value: 'auto', +option('docs_pdf', type: 'feature', value: 'auto', description: 'Documentation in PDF format') -option('docs_html_style', type : 'combo', choices: ['simple', 'website'], +option('docs_html_style', type: 'combo', choices: ['simple', 'website'], description: 'CSS stylesheet for HTML documentation') -option('dtrace', type : 'feature', value: 'disabled', +option('dtrace', type: 'feature', value: 'disabled', description: 'DTrace support') -option('gssapi', type : 'feature', value: 'auto', +option('gssapi', type: 'feature', value: 'auto', description: 'GSSAPI support') -option('icu', type : 'feature', value: 'auto', +option('icu', type: 'feature', value: 'auto', description: 'ICU support') -option('ldap', type : 'feature', value: 'auto', +option('ldap', type: 'feature', value: 'auto', description: 'LDAP support') -option('libedit_preferred', type : 'boolean', value: false, +option('libedit_preferred', type: 'boolean', value: false, description: 'Prefer BSD Libedit over GNU Readline') -option('libxml', type : 'feature', value: 'auto', +option('libxml', type: 'feature', value: 'auto', description: 'XML support') -option('libxslt', type : 'feature', value: 'auto', +option('libxslt', type: 'feature', value: 'auto', description: 'XSLT support in contrib/xml2') -option('llvm', type : 'feature', value: 'disabled', +option('llvm', type: 'feature', value: 'disabled', description: 'LLVM support') -option('lz4', type : 'feature', value: 'auto', +option('lz4', type: 'feature', value: 'auto', description: 'LZ4 support') option('nls', type: 'feature', value: 'auto', description: 'Native language support') -option('pam', type : 'feature', value: 'auto', +option('pam', type: 'feature', value: 'auto', description: 'PAM support') -option('plperl', type : 'feature', value: 'auto', +option('plperl', type: 'feature', value: 'auto', description: 'Build Perl modules (PL/Perl)') -option('plpython', type : 'feature', value: 'auto', +option('plpython', type: 'feature', value: 'auto', description: 'Build Python modules (PL/Python)') -option('pltcl', type : 'feature', value: 'auto', +option('pltcl', type: 'feature', value: 'auto', description: 'Build with Tcl support (PL/Tcl)') -option('tcl_version', type : 'string', value : 'tcl', +option('tcl_version', type: 'string', value: 'tcl', description: 'Tcl version') -option('readline', type : 'feature', value : 'auto', +option('readline', type: 'feature', value: 'auto', description: 'Use GNU Readline or BSD Libedit for editing') -option('selinux', type : 'feature', value : 'disabled', +option('selinux', type: 'feature', value: 'disabled', description: 'SELinux support') -option('ssl', type : 'combo', choices : ['auto', 'none', 'openssl'], - value : 'auto', +option('ssl', type: 'combo', choices: ['auto', 'none', 'openssl'], + value: 'auto', description: 'Use LIB for SSL/TLS support (openssl)') -option('systemd', type : 'feature', value: 'auto', +option('systemd', type: 'feature', value: 'auto', description: 'systemd support') -option('uuid', type : 'combo', choices : ['none', 'bsd', 'e2fs', 'ossp'], - value : 'none', +option('uuid', type: 'combo', choices: ['none', 'bsd', 'e2fs', 'ossp'], + value: 'none', description: 'Use LIB for contrib/uuid-ossp support') -option('zlib', type : 'feature', value: 'auto', +option('zlib', type: 'feature', value: 'auto', description: 'Enable zlib') -option('zstd', type : 'feature', value: 'auto', +option('zstd', type: 'feature', value: 'auto', description: 'Enable zstd') # Programs -option('BISON', type : 'array', value: ['bison', 'win_bison'], +option('BISON', type: 'array', value: ['bison', 'win_bison'], description: 'Path to bison binary') -option('DTRACE', type : 'string', value: 'dtrace', +option('DTRACE', type: 'string', value: 'dtrace', description: 'Path to dtrace binary') -option('FLEX', type : 'array', value: ['flex', 'win_flex'], +option('FLEX', type: 'array', value: ['flex', 'win_flex'], description: 'Path to flex binary') -option('FOP', type : 'string', value: 'fop', +option('FOP', type: 'string', value: 'fop', description: 'Path to fop binary') -option('GZIP', type : 'string', value: 'gzip', +option('GZIP', type: 'string', value: 'gzip', description: 'Path to gzip binary') -option('LZ4', type : 'string', value: 'lz4', +option('LZ4', type: 'string', value: 'lz4', description: 'Path to lz4 binary') -option('OPENSSL', type : 'string', value: 'openssl', +option('OPENSSL', type: 'string', value: 'openssl', description: 'Path to openssl binary') -option('PERL', type : 'string', value: 'perl', +option('PERL', type: 'string', value: 'perl', description: 'Path to perl binary') -option('PROVE', type : 'string', value: 'prove', +option('PROVE', type: 'string', value: 'prove', description: 'Path to prove binary') -option('PYTHON', type : 'array', value: ['python3', 'python'], +option('PYTHON', type: 'array', value: ['python3', 'python'], description: 'Path to python binary') -option('SED', type : 'string', value: 'gsed', +option('SED', type: 'string', value: 'gsed', description: 'Path to sed binary') -option('STRIP', type : 'string', value: 'strip', +option('STRIP', type: 'string', value: 'strip', description: 'Path to strip binary, used for PGXS emulation') -option('TAR', type : 'string', value: 'tar', +option('TAR', type: 'string', value: 'tar', description: 'Path to tar binary') -option('XMLLINT', type : 'string', value: 'xmllint', +option('XMLLINT', type: 'string', value: 'xmllint', description: 'Path to xmllint binary') -option('XSLTPROC', type : 'string', value: 'xsltproc', +option('XSLTPROC', type: 'string', value: 'xsltproc', description: 'Path to xsltproc binary') -option('ZSTD', type : 'string', value: 'zstd', +option('ZSTD', type: 'string', value: 'zstd', description: 'Path to zstd binary') -option('ZIC', type : 'string', value: 'zic', +option('ZIC', type: 'string', value: 'zic', description: 'Path to zic binary, when cross-compiling') -- Tristan Partin Neon (https://neon.tech)
From 3070be8a712cf447d598d15928128560225d96b4 Mon Sep 17 00:00:00 2001 From: Tristan Partin <tris...@neon.tech> Date: Tue, 16 May 2023 08:33:12 -0500 Subject: [PATCH v5 05/16] Use the not_found_dep constant Previously in the build description, a not_found_dep was defined. Make use of it. --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 82f2782673..c2b100bcb5 100644 --- a/meson.build +++ b/meson.build @@ -558,7 +558,7 @@ endif ############################################################### bonjouropt = get_option('bonjour') -bonjour = dependency('', required : false) +bonjour = not_found_dep if cc.check_header('dns_sd.h', required: bonjouropt, args: test_c_args, include_directories: postgres_inc) and \ cc.has_function('DNSServiceRegister', -- Tristan Partin Neon (https://neon.tech)
From e275e82caa100cb0d199eebd522dd705be6ad8d4 Mon Sep 17 00:00:00 2001 From: Tristan Partin <tris...@neon.tech> Date: Tue, 16 May 2023 09:19:46 -0500 Subject: [PATCH v5 06/16] Remove old comment That portion of code is not run in the Windows case already given the structure of the surrounding if statement. --- meson.build | 2 -- 1 file changed, 2 deletions(-) diff --git a/meson.build b/meson.build index c2b100bcb5..121126a7da 100644 --- a/meson.build +++ b/meson.build @@ -722,8 +722,6 @@ choke me endif endif - # XXX: this shouldn't be tested in the windows case, but should be tested in - # the dependency() success case if ldap.found() and cc.has_function('ldap_initialize', dependencies: ldap, args: test_c_args) cdata.set('HAVE_LDAP_INITIALIZE', 1) -- Tristan Partin Neon (https://neon.tech)
From 4e4934ee125c06d639de43c8e1f46b63b93813b9 Mon Sep 17 00:00:00 2001 From: Tristan Partin <tris...@neon.tech> Date: Tue, 16 May 2023 09:27:06 -0500 Subject: [PATCH v5 07/16] Tie adding C++ support to the llvm Meson option In the event the llvm option is defined to be 'auto', it is possible that the host machine might not have a C++ compiler. If that is the case, then we shouldn't continue reaching for the llvm dependency. --- meson.build | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/meson.build b/meson.build index 121126a7da..52c4b9bba8 100644 --- a/meson.build +++ b/meson.build @@ -742,8 +742,8 @@ endif ############################################################### llvmopt = get_option('llvm') -if not llvmopt.disabled() - add_languages('cpp', required: true, native: false) +llvm = not_found_dep +if add_languages('cpp', required: llvmopt, native: false) llvm = dependency('llvm', version: '>=3.9', method: 'config-tool', required: llvmopt) if llvm.found() @@ -757,8 +757,6 @@ if not llvmopt.disabled() ccache = find_program('ccache', native: true, required: false) clang = find_program(llvm_binpath / 'clang', required: true) endif -else - llvm = not_found_dep endif -- Tristan Partin Neon (https://neon.tech)
From c01828eed1cc8e9ceec55076aa2cd816d6bb31d7 Mon Sep 17 00:00:00 2001 From: Tristan Partin <tris...@neon.tech> Date: Tue, 16 May 2023 10:27:34 -0500 Subject: [PATCH v5 08/16] Mention the correct way to disable readline support Using false to disable a feature option is incorrect. --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 52c4b9bba8..161513bab3 100644 --- a/meson.build +++ b/meson.build @@ -1129,7 +1129,7 @@ if not get_option('readline').disabled() error('''readline header not found If you have @0@ already installed, see meson-log/meson-log.txt for details on the failure. It is possible the compiler isn't looking in the proper directory. -Use -Dreadline=false to disable readline support.'''.format(readline_dep)) +Use -Dreadline=disabled to disable readline support.'''.format(readline_dep)) endif check_funcs = [ -- Tristan Partin Neon (https://neon.tech)
From 21eacba1bf4146ad4fb8bf12069f3bbb583197a3 Mon Sep 17 00:00:00 2001 From: Tristan Partin <tris...@neon.tech> Date: Wed, 17 May 2023 09:30:54 -0500 Subject: [PATCH v5 09/16] Remove return code check run_command(check: true) will already handle this. --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 161513bab3..94d68a5d94 100644 --- a/meson.build +++ b/meson.build @@ -385,7 +385,7 @@ install_files = files('src/tools/install_files') # https://github.com/mesonbuild/meson/issues/8511 meson_binpath_r = run_command(python, 'src/tools/find_meson', check: true) -if meson_binpath_r.returncode() != 0 or meson_binpath_r.stdout() == '' +if meson_binpath_r.stdout() == '' error('huh, could not run find_meson.\nerrcode: @0@\nstdout: @1@\nstderr: @2@'.format( meson_binpath_r.returncode(), meson_binpath_r.stdout(), -- Tristan Partin Neon (https://neon.tech)
From 7ef201bba7476d094ff6bc10b6d971038f08dccc Mon Sep 17 00:00:00 2001 From: Tristan Partin <tris...@neon.tech> Date: Wed, 17 May 2023 09:33:18 -0500 Subject: [PATCH v5 10/16] Fix some grammar usage in Meson comments --- meson.build | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meson.build b/meson.build index 94d68a5d94..4b91b75930 100644 --- a/meson.build +++ b/meson.build @@ -150,7 +150,7 @@ cdata.set_quoted('PG_MAJORVERSION', pg_version_major.to_string()) cdata.set('PG_MAJORVERSION_NUM', pg_version_major) cdata.set('PG_MINORVERSION_NUM', pg_version_minor) cdata.set('PG_VERSION_NUM', pg_version_num) -# PG_VERSION_STR is built later, it depends compiler test results +# PG_VERSION_STR is built later, it depends on compiler test results cdata.set_quoted('CONFIGURE_ARGS', '') @@ -1672,7 +1672,7 @@ if cc.has_function_attribute('visibility:default') and \ cdata.set('HAVE_VISIBILITY_ATTRIBUTE', 1) # Only newer versions of meson know not to apply gnu_symbol_visibility = - # inlineshidden to C code as well... Any either way, we want to put these + # inlineshidden to C code as well... And either way, we want to put these # flags into exported files (pgxs, .pc files). cflags_mod += '-fvisibility=hidden' cxxflags_mod += ['-fvisibility=hidden', '-fvisibility-inlines-hidden'] -- Tristan Partin Neon (https://neon.tech)
From a1986738af20e1cae1ee172427fd5740f207724b Mon Sep 17 00:00:00 2001 From: Tristan Partin <tris...@neon.tech> Date: Wed, 17 May 2023 09:38:09 -0500 Subject: [PATCH v5 11/16] Pass feature option through to required kwarg Meson understands this already. No need to convert it to a boolean. --- meson.build | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/meson.build b/meson.build index 4b91b75930..5806463138 100644 --- a/meson.build +++ b/meson.build @@ -767,8 +767,8 @@ endif icuopt = get_option('icu') if not icuopt.disabled() - icu = dependency('icu-uc', required: icuopt.enabled()) - icu_i18n = dependency('icu-i18n', required: icuopt.enabled()) + icu = dependency('icu-uc', required: icuopt) + icu_i18n = dependency('icu-i18n', required: icuopt) if icu.found() cdata.set('USE_ICU', 1) @@ -1077,7 +1077,7 @@ if not get_option('readline').disabled() readline = dependency(readline_dep, required: false) if not readline.found() readline = cc.find_library(readline_dep, - required: get_option('readline').enabled(), + required: get_option('readline'), dirs: test_lib_d) endif if readline.found() @@ -2537,7 +2537,7 @@ if not nlsopt.disabled() # otherwise there'd be lots of # "Gettext not found, all translation (po) targets will be ignored." # warnings if not found. - msgfmt = find_program('msgfmt', required: nlsopt.enabled(), native: true) + msgfmt = find_program('msgfmt', required: nlsopt, native: true) # meson 0.59 has this wrapped in dependency('int') if (msgfmt.found() and -- Tristan Partin Neon (https://neon.tech)
From 56b43d0d66a8aaf057f9c2bc0c0e70e874f9c305 Mon Sep 17 00:00:00 2001 From: Tristan Partin <tris...@neon.tech> Date: Wed, 17 May 2023 09:40:02 -0500 Subject: [PATCH v5 12/16] Make finding pkg-config(python3) more robust It is a possibility that the installation can't be found. Checking for Python.h is redundant with what Meson does internally. https://github.com/mesonbuild/meson/blob/master/mesonbuild/dependencies/python.py#L218 --- meson.build | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/meson.build b/meson.build index 5806463138..7c50c7567d 100644 --- a/meson.build +++ b/meson.build @@ -1050,15 +1050,17 @@ endif ############################################################### pyopt = get_option('plpython') +python3_dep = not_found_dep if not pyopt.disabled() pm = import('python') - python3_inst = pm.find_installation(required: pyopt.enabled()) - python3_dep = python3_inst.dependency(embed: true, required: pyopt.enabled()) - if not cc.check_header('Python.h', dependencies: python3_dep, required: pyopt.enabled()) - python3_dep = not_found_dep + python3_inst = pm.find_installation(required: pyopt) + if python3_inst.found() + python3_dep = python3_inst.dependency(embed: true, required: pyopt) + # Remove this check after we depend on Meson >= 1.1.0 + if not cc.check_header('Python.h', dependencies: python3_dep, required: pyopt) + python3_dep = not_found_dep + endif endif -else - python3_dep = not_found_dep endif -- Tristan Partin Neon (https://neon.tech)
From 917f4b02875c2b076e3f0aede0581b502d574f4a Mon Sep 17 00:00:00 2001 From: Tristan Partin <tris...@neon.tech> Date: Wed, 17 May 2023 09:43:51 -0500 Subject: [PATCH v5 13/16] Make some Meson style more consistent with surrounding code --- meson.build | 17 ++++++++--------- src/include/meson.build | 2 +- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/meson.build b/meson.build index 7c50c7567d..843161d5ee 100644 --- a/meson.build +++ b/meson.build @@ -1146,7 +1146,7 @@ Use -Dreadline=disabled to disable readline support.'''.format(readline_dep)) foreach func : check_funcs found = cc.has_function(func, dependencies: [readline], args: test_c_args, include_directories: postgres_inc) - cdata.set('HAVE_'+func.to_upper(), found ? 1 : false) + cdata.set('HAVE_' + func.to_upper(), found ? 1 : false) endforeach check_vars = [ @@ -1156,7 +1156,7 @@ Use -Dreadline=disabled to disable readline support.'''.format(readline_dep)) ] foreach var : check_vars - cdata.set('HAVE_'+var.to_upper(), + cdata.set('HAVE_' + var.to_upper(), cc.has_header_symbol(readline_h, var, args: test_c_args, include_directories: postgres_inc, prefix: '#include <stdio.h>', @@ -1311,7 +1311,7 @@ if sslopt in ['auto', 'openssl'] cdata.set('USE_OPENSSL', 1, description: 'Define to 1 to build with OpenSSL support. (-Dssl=openssl)') cdata.set('OPENSSL_API_COMPAT', '0x10001000L', - description: '''Define to the OpenSSL API version in use. This avoids deprecation warnings from newer OpenSSL versions.''') + description: 'Define to the OpenSSL API version in use. This avoids deprecation warnings from newer OpenSSL versions.') ssl_library = 'openssl' else ssl = not_found_dep @@ -1599,8 +1599,7 @@ if cc.links(''' if not buggy_int128 cdata.set('PG_INT128_TYPE', '__int128') - cdata.set('ALIGNOF_PG_INT128_TYPE', cc. - alignment('__int128', args: test_c_args)) + cdata.set('ALIGNOF_PG_INT128_TYPE', cc.alignment('__int128', args: test_c_args)) endif endif @@ -1642,8 +1641,8 @@ endif # We use <stdbool.h> if we have it and it declares type bool as having # size 1. Otherwise, c.h will fall back to declaring bool as unsigned char. if cc.has_type('_Bool', args: test_c_args) \ - and cc.has_type('bool', prefix: '#include <stdbool.h>', args: test_c_args) \ - and cc.sizeof('bool', prefix: '#include <stdbool.h>', args: test_c_args) == 1 + and cc.has_type('bool', prefix: '#include <stdbool.h>', args: test_c_args) \ + and cc.sizeof('bool', prefix: '#include <stdbool.h>', args: test_c_args) == 1 cdata.set('HAVE__BOOL', 1) cdata.set('PG_USE_STDBOOL', 1) endif @@ -1670,7 +1669,7 @@ endforeach if cc.has_function_attribute('visibility:default') and \ - cc.has_function_attribute('visibility:hidden') + cc.has_function_attribute('visibility:hidden') cdata.set('HAVE_VISIBILITY_ATTRIBUTE', 1) # Only newer versions of meson know not to apply gnu_symbol_visibility = @@ -3046,7 +3045,7 @@ meson_install_args = meson_args + ['install'] + { 'muon': [] }[meson_impl] -# setup tests should be run first, +# setup tests should be run first, # so define priority for these setup_tests_priority = 100 test('tmp_install', diff --git a/src/include/meson.build b/src/include/meson.build index 33c0a5562c..d7e1ecd4c9 100644 --- a/src/include/meson.build +++ b/src/include/meson.build @@ -89,7 +89,7 @@ install_headers( 'c.h', 'port.h', 'postgres_fe.h', - install_dir: dir_include_internal + install_dir: dir_include_internal, ) install_headers( -- Tristan Partin Neon (https://neon.tech)
From e0aa122ac46a34d02384eed27b6c5598b5e8e16a Mon Sep 17 00:00:00 2001 From: Tristan Partin <tris...@neon.tech> Date: Wed, 17 May 2023 09:48:18 -0500 Subject: [PATCH v5 14/16] Use a better error message in an impossible case Meson validates 'choice' options for us, so technically this case is impossible. A better error message helps people reading the code understand what is going on in that branch. --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 843161d5ee..0e0bdaddc5 100644 --- a/meson.build +++ b/meson.build @@ -1346,7 +1346,7 @@ if uuidopt != 'none' uuidfunc = 'uuid_export' uuidheader = 'uuid.h' else - error('huh') + error('unknown uuid build option value: @0@'.format(uuidopt)) endif if not cc.has_header_symbol(uuidheader, uuidfunc, args: test_c_args, dependencies: uuid) -- Tristan Partin Neon (https://neon.tech)
From bb843fc8d03649ac6ca86334100b5438b35b3005 Mon Sep 17 00:00:00 2001 From: Tristan Partin <tris...@neon.tech> Date: Tue, 13 Jun 2023 15:43:02 -0500 Subject: [PATCH v5 15/16] Clean up some usage of Meson features With Meson features, you can skip the `if myopt.disabled()` dance. Reduces the amount of indentation as a benefit. --- meson.build | 516 ++++++++++++++++++++++++---------------------------- 1 file changed, 236 insertions(+), 280 deletions(-) diff --git a/meson.build b/meson.build index 0e0bdaddc5..0ae82dee1e 100644 --- a/meson.build +++ b/meson.build @@ -591,13 +591,11 @@ endif docs_pdf_opt = get_option('docs_pdf') docs_pdf_dep = not_found_dep -if not docs_pdf_opt.disabled() - fop = find_program(get_option('FOP'), native: true, required: docs_pdf_opt) - if xmllint_bin.found() and xsltproc_bin.found() and fop.found() - docs_pdf_dep = declare_dependency() - elif docs_pdf_opt.enabled() - error('missing required tools for docs in PDF format') - endif +fop = find_program(get_option('FOP'), native: true, required: docs_pdf_opt) +if xmllint_bin.found() and xsltproc_bin.found() and fop.found() + docs_pdf_dep = declare_dependency() +elif docs_pdf_opt.enabled() + error('missing required tools for docs in PDF format') endif @@ -609,45 +607,40 @@ endif gssapiopt = get_option('gssapi') krb_srvtab = '' have_gssapi = false -if not gssapiopt.disabled() - gssapi = dependency('krb5-gssapi', required: gssapiopt) - have_gssapi = gssapi.found() +gssapi = dependency('krb5-gssapi', required: gssapiopt) +have_gssapi = gssapi.found() - if not have_gssapi - elif cc.check_header('gssapi/gssapi.h', dependencies: gssapi, required: false, - args: test_c_args, include_directories: postgres_inc) - cdata.set('HAVE_GSSAPI_GSSAPI_H', 1) - elif cc.check_header('gssapi.h', args: test_c_args, dependencies: gssapi, required: gssapiopt) - cdata.set('HAVE_GSSAPI_H', 1) - else - have_gssapi = false - endif - - if not have_gssapi - elif cc.check_header('gssapi/gssapi_ext.h', dependencies: gssapi, required: false, - args: test_c_args, include_directories: postgres_inc) - cdata.set('HAVE_GSSAPI_GSSAPI_EXT_H', 1) - elif cc.check_header('gssapi_ext.h', args: test_c_args, dependencies: gssapi, required: gssapiopt) - cdata.set('HAVE_GSSAPI_EXT_H', 1) - else - have_gssapi = false - endif - - if not have_gssapi - elif cc.has_function('gss_store_cred_into', dependencies: gssapi, - args: test_c_args, include_directories: postgres_inc) - cdata.set('ENABLE_GSS', 1) +if not have_gssapi +elif cc.check_header('gssapi/gssapi.h', dependencies: gssapi, required: false, + args: test_c_args, include_directories: postgres_inc) + cdata.set('HAVE_GSSAPI_GSSAPI_H', 1) +elif cc.check_header('gssapi.h', args: test_c_args, dependencies: gssapi, required: gssapiopt) + cdata.set('HAVE_GSSAPI_H', 1) +else + have_gssapi = false +endif - krb_srvtab = 'FILE:/@0@/krb5.keytab)'.format(get_option('sysconfdir')) - cdata.set_quoted('PG_KRB_SRVTAB', krb_srvtab) - elif gssapiopt.enabled() - error('''could not find function 'gss_store_cred_into' required for GSSAPI''') - else - have_gssapi = false - endif +if not have_gssapi +elif cc.check_header('gssapi/gssapi_ext.h', dependencies: gssapi, required: false, + args: test_c_args, include_directories: postgres_inc) + cdata.set('HAVE_GSSAPI_GSSAPI_EXT_H', 1) +elif cc.check_header('gssapi_ext.h', args: test_c_args, dependencies: gssapi, required: gssapiopt) + cdata.set('HAVE_GSSAPI_EXT_H', 1) +else + have_gssapi = false endif + if not have_gssapi - gssapi = not_found_dep +elif cc.has_function('gss_store_cred_into', dependencies: gssapi, + args: test_c_args, include_directories: postgres_inc) + cdata.set('ENABLE_GSS', 1) + + krb_srvtab = 'FILE:/@0@/krb5.keytab)'.format(get_option('sysconfdir')) + cdata.set_quoted('PG_KRB_SRVTAB', krb_srvtab) +elif gssapiopt.enabled() + error('''could not find function 'gss_store_cred_into' required for GSSAPI''') +else + have_gssapi = false endif @@ -766,17 +759,11 @@ endif ############################################################### icuopt = get_option('icu') -if not icuopt.disabled() - icu = dependency('icu-uc', required: icuopt) - icu_i18n = dependency('icu-i18n', required: icuopt) - - if icu.found() - cdata.set('USE_ICU', 1) - endif +icu = dependency('icu-uc', required: icuopt) +icu_i18n = dependency('icu-i18n', required: icuopt) -else - icu = not_found_dep - icu_i18n = not_found_dep +if icu.found() + cdata.set('USE_ICU', 1) endif @@ -786,14 +773,10 @@ endif ############################################################### libxmlopt = get_option('libxml') -if not libxmlopt.disabled() - libxml = dependency('libxml-2.0', required: libxmlopt, version: '>= 2.6.23') +libxml = dependency('libxml-2.0', required: libxmlopt, version: '>= 2.6.23') - if libxml.found() - cdata.set('USE_LIBXML', 1) - endif -else - libxml = not_found_dep +if libxml.found() + cdata.set('USE_LIBXML', 1) endif @@ -803,14 +786,10 @@ endif ############################################################### libxsltopt = get_option('libxslt') -if not libxsltopt.disabled() - libxslt = dependency('libxslt', required: libxsltopt) +libxslt = dependency('libxslt', required: libxsltopt) - if libxslt.found() - cdata.set('USE_LIBXSLT', 1) - endif -else - libxslt = not_found_dep +if libxslt.found() + cdata.set('USE_LIBXSLT', 1) endif @@ -820,16 +799,11 @@ endif ############################################################### lz4opt = get_option('lz4') -if not lz4opt.disabled() - lz4 = dependency('liblz4', required: lz4opt) - - if lz4.found() - cdata.set('USE_LZ4', 1) - cdata.set('HAVE_LIBLZ4', 1) - endif +lz4 = dependency('liblz4', required: lz4opt) -else - lz4 = not_found_dep +if lz4.found() + cdata.set('USE_LZ4', 1) + cdata.set('HAVE_LIBLZ4', 1) endif @@ -846,20 +820,18 @@ endif tclopt = get_option('pltcl') tcl_version = get_option('tcl_version') tcl_dep = not_found_dep -if not tclopt.disabled() - # via pkg-config - tcl_dep = dependency(tcl_version, required: false) +# via pkg-config +tcl_dep = dependency(tcl_version, required: false) - if not tcl_dep.found() - tcl_dep = cc.find_library(tcl_version, - required: tclopt, - dirs: test_lib_d) - endif +if not tcl_dep.found() + tcl_dep = cc.find_library(tcl_version, + required: tclopt, + dirs: test_lib_d) +endif - if not cc.has_header('tcl.h', dependencies: tcl_dep, required: tclopt) - tcl_dep = not_found_dep - endif +if not cc.has_header('tcl.h', dependencies: tcl_dep, required: tclopt) + tcl_dep = not_found_dep endif @@ -869,35 +841,32 @@ endif ############################################################### pamopt = get_option('pam') -if not pamopt.disabled() - pam = dependency('pam', required: false) +pam = not_found_dep - if not pam.found() - pam = cc.find_library('pam', required: pamopt, dirs: test_lib_d) - endif +pam = dependency('pam', required: false) +if not pam.found() + pam = cc.find_library('pam', required: pamopt, dirs: test_lib_d) +endif - if pam.found() - pam_header_found = false +if pam.found() + pam_header_found = false - # header file <security/pam_appl.h> or <pam/pam_appl.h> is required for PAM. - if cc.check_header('security/pam_appl.h', dependencies: pam, required: false, - args: test_c_args, include_directories: postgres_inc) - cdata.set('HAVE_SECURITY_PAM_APPL_H', 1) - pam_header_found = true - elif cc.check_header('pam/pam_appl.h', dependencies: pam, required: pamopt, - args: test_c_args, include_directories: postgres_inc) - cdata.set('HAVE_PAM_PAM_APPL_H', 1) - pam_header_found = true - endif + # header file <security/pam_appl.h> or <pam/pam_appl.h> is required for PAM. + if cc.check_header('security/pam_appl.h', dependencies: pam, required: false, + args: test_c_args, include_directories: postgres_inc) + cdata.set('HAVE_SECURITY_PAM_APPL_H', 1) + pam_header_found = true + elif cc.check_header('pam/pam_appl.h', dependencies: pam, required: pamopt, + args: test_c_args, include_directories: postgres_inc) + cdata.set('HAVE_PAM_PAM_APPL_H', 1) + pam_header_found = true + endif - if pam_header_found - cdata.set('USE_PAM', 1) - else - pam = not_found_dep - endif + if pam_header_found + cdata.set('USE_PAM', 1) + else + pam = not_found_dep endif -else - pam = not_found_dep endif @@ -908,111 +877,110 @@ endif perlopt = get_option('plperl') perl_dep = not_found_dep -if not perlopt.disabled() - perl_may_work = true - - # First verify that perl has the necessary dependencies installed - perl_mods = run_command( - [perl, - '-MConfig', '-MOpcode', '-MExtUtils::Embed', '-MExtUtils::ParseXS', - '-e', ''], - check: false) - if perl_mods.returncode() != 0 +perl_may_work = true + +# First verify that perl has the necessary dependencies installed +perl_mods = run_command( + [perl, + '-MConfig', '-MOpcode', '-MExtUtils::Embed', '-MExtUtils::ParseXS', + '-e', ''], + check: false) +if perl_mods.returncode() != 0 + perl_may_work = false + perl_msg = 'perl installation does not have the required modules' +endif + +# Then inquire perl about its configuration +if perl_may_work + perl_conf_cmd = [perl, '-MConfig', '-e', 'print $Config{$ARGV[0]}'] + perlversion = run_command(perl_conf_cmd, 'api_versionstring', check: true).stdout() + archlibexp = run_command(perl_conf_cmd, 'archlibexp', check: true).stdout() + privlibexp = run_command(perl_conf_cmd, 'privlibexp', check: true).stdout() + useshrplib = run_command(perl_conf_cmd, 'useshrplib', check: true).stdout() + + perl_inc_dir = '@0@/CORE'.format(archlibexp) + + if perlversion.version_compare('< 5.14') + perl_may_work = false + perl_msg = 'Perl version 5.14 or later is required, but this is @0@'.format(perlversion) + elif useshrplib != 'true' perl_may_work = false - perl_msg = 'perl installation does not have the required modules' + perl_msg = 'need a shared perl' endif +endif - # Then inquire perl about its configuration - if perl_may_work - perl_conf_cmd = [perl, '-MConfig', '-e', 'print $Config{$ARGV[0]}'] - perlversion = run_command(perl_conf_cmd, 'api_versionstring', check: true).stdout() - archlibexp = run_command(perl_conf_cmd, 'archlibexp', check: true).stdout() - privlibexp = run_command(perl_conf_cmd, 'privlibexp', check: true).stdout() - useshrplib = run_command(perl_conf_cmd, 'useshrplib', check: true).stdout() - - perl_inc_dir = '@0@/CORE'.format(archlibexp) - - if perlversion.version_compare('< 5.14') - perl_may_work = false - perl_msg = 'Perl version 5.14 or later is required, but this is @0@'.format(perlversion) - elif useshrplib != 'true' - perl_may_work = false - perl_msg = 'need a shared perl' - endif +if perl_may_work + # On most platforms, archlibexp is also where the Perl include files live ... + perl_ccflags = ['-I@0@'.format(perl_inc_dir)] + # ... but on newer macOS versions, we must use -iwithsysroot to look + # under sysroot + if not fs.is_file('@0@/perl.h'.format(perl_inc_dir)) and \ + fs.is_file('@0@@1@/perl.h'.format(pg_sysroot, perl_inc_dir)) + perl_ccflags = ['-iwithsysroot', perl_inc_dir] endif - if perl_may_work - # On most platforms, archlibexp is also where the Perl include files live ... - perl_ccflags = ['-I@0@'.format(perl_inc_dir)] - # ... but on newer macOS versions, we must use -iwithsysroot to look - # under sysroot - if not fs.is_file('@0@/perl.h'.format(perl_inc_dir)) and \ - fs.is_file('@0@@1@/perl.h'.format(pg_sysroot, perl_inc_dir)) - perl_ccflags = ['-iwithsysroot', perl_inc_dir] - endif - - # check compiler finds header - if not cc.has_header('perl.h', required: false, - args: test_c_args + perl_ccflags, include_directories: postgres_inc) - perl_may_work = false - perl_msg = 'missing perl.h' - endif + # check compiler finds header + if not cc.has_header('perl.h', required: false, + args: test_c_args + perl_ccflags, include_directories: postgres_inc) + perl_may_work = false + perl_msg = 'missing perl.h' endif +endif - if perl_may_work - perl_ccflags_r = run_command(perl_conf_cmd, 'ccflags', check: true).stdout() +if perl_may_work + perl_ccflags_r = run_command(perl_conf_cmd, 'ccflags', check: true).stdout() - # See comments for PGAC_CHECK_PERL_EMBED_CCFLAGS in perl.m4 - foreach flag : perl_ccflags_r.split(' ') - if flag.startswith('-D') and \ - (not flag.startswith('-D_') or flag == '_USE_32BIT_TIME_T') - perl_ccflags += flag - endif - endforeach + # See comments for PGAC_CHECK_PERL_EMBED_CCFLAGS in perl.m4 + foreach flag : perl_ccflags_r.split(' ') + if flag.startswith('-D') and \ + (not flag.startswith('-D_') or flag == '_USE_32BIT_TIME_T') + perl_ccflags += flag + endif + endforeach - if host_system == 'windows' - perl_ccflags += ['-DPLPERL_HAVE_UID_GID'] + if host_system == 'windows' + perl_ccflags += ['-DPLPERL_HAVE_UID_GID'] - if cc.get_id() == 'msvc' - # prevent binary mismatch between MSVC built plperl and Strawberry or - # msys ucrt perl libraries - perl_ccflags += ['-DNO_THREAD_SAFE_LOCALE'] - endif + if cc.get_id() == 'msvc' + # prevent binary mismatch between MSVC built plperl and Strawberry or + # msys ucrt perl libraries + perl_ccflags += ['-DNO_THREAD_SAFE_LOCALE'] endif + endif - message('CCFLAGS recommended by perl: @0@'.format(perl_ccflags_r)) - message('CCFLAGS for embedding perl: @0@'.format(' '.join(perl_ccflags))) + message('CCFLAGS recommended by perl: @0@'.format(perl_ccflags_r)) + message('CCFLAGS for embedding perl: @0@'.format(' '.join(perl_ccflags))) - # We are after Embed's ldopts, but without the subset mentioned in - # Config's ccdlflags and ldflags. (Those are the choices of those who - # built the Perl installation, which are not necessarily appropriate - # for building PostgreSQL.) - ldopts = run_command(perl, '-MExtUtils::Embed', '-e', 'ldopts', check: true).stdout().strip() - undesired = run_command(perl_conf_cmd, 'ccdlflags', check: true).stdout().split() - undesired += run_command(perl_conf_cmd, 'ldflags', check: true).stdout().split() + # We are after Embed's ldopts, but without the subset mentioned in + # Config's ccdlflags and ldflags. (Those are the choices of those who + # built the Perl installation, which are not necessarily appropriate + # for building PostgreSQL.) + ldopts = run_command(perl, '-MExtUtils::Embed', '-e', 'ldopts', check: true).stdout().strip() + undesired = run_command(perl_conf_cmd, 'ccdlflags', check: true).stdout().split() + undesired += run_command(perl_conf_cmd, 'ldflags', check: true).stdout().split() - perl_ldopts = [] - foreach ldopt : ldopts.split(' ') - if ldopt == '' or ldopt in undesired - continue - endif + perl_ldopts = [] + foreach ldopt : ldopts.split(' ') + if ldopt == '' or ldopt in undesired + continue + endif - perl_ldopts += ldopt.strip('"') - endforeach + perl_ldopts += ldopt.strip('"') + endforeach - message('LDFLAGS recommended by perl: "@0@"'.format(ldopts)) - message('LDFLAGS for embedding perl: "@0@"'.format(' '.join(perl_ldopts))) + message('LDFLAGS recommended by perl: "@0@"'.format(ldopts)) + message('LDFLAGS for embedding perl: "@0@"'.format(' '.join(perl_ldopts))) - perl_dep_int = declare_dependency( - compile_args: perl_ccflags, - link_args: perl_ldopts, - version: perlversion, - ) + perl_dep_int = declare_dependency( + compile_args: perl_ccflags, + link_args: perl_ldopts, + version: perlversion, + ) - # While we're at it, check that we can link to libperl. - # On most platforms, if perl.h is there then libperl.so will be too, but - # at this writing Debian packages them separately. - perl_link_test = ''' + # While we're at it, check that we can link to libperl. + # On most platforms, if perl.h is there then libperl.so will be too, but + # at this writing Debian packages them separately. + perl_link_test = ''' /* see plperl.h */ #ifdef _MSC_VER #define __inline__ inline @@ -1023,23 +991,22 @@ int main(void) { perl_alloc(); }''' - if not cc.links(perl_link_test, name: 'libperl', - args: test_c_args + perl_ccflags + perl_ldopts, - include_directories: postgres_inc) - perl_may_work = false - perl_msg = 'missing libperl' - endif + if not cc.links(perl_link_test, name: 'libperl', + args: test_c_args + perl_ccflags + perl_ldopts, + include_directories: postgres_inc) + perl_may_work = false + perl_msg = 'missing libperl' + endif - endif # perl_may_work +endif # perl_may_work - if perl_may_work - perl_dep = perl_dep_int +if perl_may_work + perl_dep = perl_dep_int +else + if perlopt.enabled() + error('dependency plperl failed: @0@'.format(perl_msg)) else - if perlopt.enabled() - error('dependency plperl failed: @0@'.format(perl_msg)) - else - message('disabling optional dependency plperl: @0@'.format(perl_msg)) - endif + message('disabling optional dependency plperl: @0@'.format(perl_msg)) endif endif @@ -1051,15 +1018,13 @@ endif pyopt = get_option('plpython') python3_dep = not_found_dep -if not pyopt.disabled() - pm = import('python') - python3_inst = pm.find_installation(required: pyopt) - if python3_inst.found() - python3_dep = python3_inst.dependency(embed: true, required: pyopt) - # Remove this check after we depend on Meson >= 1.1.0 - if not cc.check_header('Python.h', dependencies: python3_dep, required: pyopt) - python3_dep = not_found_dep - endif +pm = import('python') +python3_inst = pm.find_installation(required: pyopt) +if python3_inst.found() + python3_dep = python3_inst.dependency(embed: true, required: pyopt) + # Remove this check after we depend on Meson >= 1.1.0 + if not cc.check_header('Python.h', dependencies: python3_dep, required: pyopt) + python3_dep = not_found_dep endif endif @@ -1069,7 +1034,9 @@ endif # Library: Readline ############################################################### -if not get_option('readline').disabled() +readlineopt = get_option('readline') +readline = not_found_dep +if not readlineopt.disabled() libedit_preferred = get_option('libedit_preferred') # Set the order of readline dependencies check_readline_deps = libedit_preferred ? \ @@ -1079,7 +1046,7 @@ if not get_option('readline').disabled() readline = dependency(readline_dep, required: false) if not readline.found() readline = cc.find_library(readline_dep, - required: get_option('readline'), + required: readlineopt, dirs: test_lib_d) endif if readline.found() @@ -1180,8 +1147,6 @@ Use -Dreadline=disabled to disable readline support.'''.format(readline_dep)) endif # XXX: Figure out whether to implement mingw warning equivalent -else - readline = not_found_dep endif @@ -1368,34 +1333,32 @@ endif zlibopt = get_option('zlib') zlib = not_found_dep -if not zlibopt.disabled() - zlib_t = dependency('zlib', required: zlibopt) - - if zlib_t.type_name() == 'internal' - # if fallback was used, we don't need to test if headers are present (they - # aren't built yet, so we can't test) - zlib = zlib_t - elif not zlib_t.found() - warning('did not find zlib') - elif not cc.has_header('zlib.h', - args: test_c_args, include_directories: postgres_inc, - dependencies: [zlib_t], required: zlibopt.enabled()) - warning('zlib header not found') - elif not cc.has_type('z_streamp', - dependencies: [zlib_t], prefix: '#include <zlib.h>', - args: test_c_args, include_directories: postgres_inc) - if zlibopt.enabled() - error('zlib version is too old') - else - warning('zlib version is too old') - endif + +zlib_t = dependency('zlib', required: zlibopt) +if zlib_t.found() and zlib_t.type_name() == 'internal' + # if fallback was used, we don't need to test if headers are present (they + # aren't built yet, so we can't test) + zlib = zlib_t +elif not zlib_t.found() + warning('did not find zlib') +elif not cc.has_header('zlib.h', + args: test_c_args, include_directories: postgres_inc, + dependencies: [zlib_t], required: zlibopt) + warning('zlib header not found') +elif not cc.has_type('z_streamp', + dependencies: [zlib_t], prefix: '#include <zlib.h>', + args: test_c_args, include_directories: postgres_inc) + if zlibopt.enabled() + error('zlib version is too old') else - zlib = zlib_t + warning('zlib version is too old') endif +else + zlib = zlib_t +endif - if zlib.found() - cdata.set('HAVE_LIBZ', 1) - endif +if zlib.found() + cdata.set('HAVE_LIBZ', 1) endif @@ -1429,16 +1392,11 @@ endif ############################################################### zstdopt = get_option('zstd') -if not zstdopt.disabled() - zstd = dependency('libzstd', required: zstdopt, version: '>=1.4.0') - - if zstd.found() - cdata.set('USE_ZSTD', 1) - cdata.set('HAVE_LIBZSTD', 1) - endif +zstd = dependency('libzstd', required: zstdopt, version: '>=1.4.0') -else - zstd = not_found_dep +if zstd.found() + cdata.set('USE_ZSTD', 1) + cdata.set('HAVE_LIBZSTD', 1) endif @@ -2534,32 +2492,30 @@ cdata.set('ENABLE_THREAD_SAFETY', 1) nlsopt = get_option('nls') libintl = not_found_dep -if not nlsopt.disabled() - # otherwise there'd be lots of - # "Gettext not found, all translation (po) targets will be ignored." - # warnings if not found. - msgfmt = find_program('msgfmt', required: nlsopt, native: true) +# otherwise there'd be lots of +# "Gettext not found, all translation (po) targets will be ignored." +# warnings if not found. +msgfmt = find_program('msgfmt', required: nlsopt, native: true) - # meson 0.59 has this wrapped in dependency('int') - if (msgfmt.found() and - cc.check_header('libintl.h', required: nlsopt, - args: test_c_args, include_directories: postgres_inc)) +# meson 0.59 has this wrapped in dependency('int') +if (msgfmt.found() and + cc.check_header('libintl.h', required: nlsopt, + args: test_c_args, include_directories: postgres_inc)) - # in libc - if cc.has_function('ngettext') - libintl = declare_dependency() - else - libintl = cc.find_library('intl', - has_headers: ['libintl.h'], required: nlsopt, - header_include_directories: postgres_inc, - dirs: test_lib_d) - endif + # in libc + if cc.has_function('ngettext') + libintl = declare_dependency() + else + libintl = cc.find_library('intl', + has_headers: ['libintl.h'], required: nlsopt, + header_include_directories: postgres_inc, + dirs: test_lib_d) endif +endif - if libintl.found() - i18n = import('i18n') - cdata.set('ENABLE_NLS', 1) - endif +if libintl.found() + i18n = import('i18n') + cdata.set('ENABLE_NLS', 1) endif -- Tristan Partin Neon (https://neon.tech)
From dc691784c858410bb9216eae958cf255528cc224 Mon Sep 17 00:00:00 2001 From: Tristan Partin <tris...@neon.tech> Date: Tue, 13 Jun 2023 15:44:27 -0500 Subject: [PATCH v5 16/16] Fix intl misspelling --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 0ae82dee1e..fc4b7ec2ba 100644 --- a/meson.build +++ b/meson.build @@ -2497,7 +2497,7 @@ libintl = not_found_dep # warnings if not found. msgfmt = find_program('msgfmt', required: nlsopt, native: true) -# meson 0.59 has this wrapped in dependency('int') +# meson 0.59 has this wrapped in dependency('intl') if (msgfmt.found() and cc.check_header('libintl.h', required: nlsopt, args: test_c_args, include_directories: postgres_inc)) -- Tristan Partin Neon (https://neon.tech)