0003-Implement-unaccent-Unicode-data-update-in-meson.patch
text/plain
Filename: 0003-Implement-unaccent-Unicode-data-update-in-meson.patch
Type: text/plain
Part: 2
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch 0003
Subject: Implement unaccent Unicode data update in meson
| File | + | − |
|---|---|---|
| contrib/unaccent/meson.build | 39 | 1 |
| doc/src/sgml/installation.sgml | 1 | 1 |
| meson.build | 7 | 1 |
| src/common/unicode/meson.build | 15 | 14 |
| src/common/unicode/README | 1 | 1 |
From ef15b16dcef7a3868fc37744d201bb233f8271bd Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Thu, 26 Feb 2026 11:36:27 +0100
Subject: [PATCH 3/6] Implement unaccent Unicode data update in meson
The meson/ninja update-unicode target did not cover the required
updates in contrib/unaccent/. This is fixed now.
---
contrib/unaccent/meson.build | 40 +++++++++++++++++++++++++++++++++-
doc/src/sgml/installation.sgml | 2 +-
meson.build | 8 ++++++-
src/common/unicode/README | 2 +-
src/common/unicode/meson.build | 29 ++++++++++++------------
5 files changed, 63 insertions(+), 18 deletions(-)
diff --git a/contrib/unaccent/meson.build b/contrib/unaccent/meson.build
index 7f582fc04a7..36decdcfe1f 100644
--- a/contrib/unaccent/meson.build
+++ b/contrib/unaccent/meson.build
@@ -28,7 +28,6 @@ install_data(
install_dir: dir_data / 'tsearch_data'
)
-# XXX: Implement downlo
tests += {
'name': 'unaccent',
'sd': meson.current_source_dir(),
@@ -39,3 +38,42 @@ tests += {
],
},
}
+
+
+# Download CLDR files on demand.
+
+cldr_baseurl = 'https://raw.githubusercontent.com/unicode-org/cldr/release-@0@/common/transforms/@1@'
+
+if not wget.found() or not cp.found()
+ subdir_done()
+endif
+
+foreach f : ['Latin-ASCII.xml']
+ # XXX .replace requires meson 0.58
+ url = cldr_baseurl.format(CLDR_VERSION.replace('.', '-'), f)
+ target = custom_target(f,
+ output: f,
+ command: [wget, wget_flags, url],
+ build_by_default: false,
+ )
+ unicode_data += {f: target}
+endforeach
+
+unaccent_update_unicode_targets = \
+ custom_target('unaccent.rules',
+ input: [unicode_data['UnicodeData.txt'], unicode_data['Latin-ASCII.xml']],
+ output: ['unaccent.rules'],
+ command: [python, files('generate_unaccent_rules.py'), '--unicode-data-file', '@INPUT0@', '--latin-ascii-file', '@INPUT1@'],
+ build_by_default: false,
+ capture: true,
+ )
+
+update_unicode_unaccent = custom_target('update-unicode',
+ output: ['dont-exist'],
+ input: unaccent_update_unicode_targets,
+ command: [cp, '@INPUT@', '@SOURCE_ROOT@/contrib/unaccent/'],
+ build_by_default: false,
+ build_always_stale: true,
+)
+
+update_unicode_targets += update_unicode_unaccent
diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml
index b345a105674..c6f4b93d547 100644
--- a/doc/src/sgml/installation.sgml
+++ b/doc/src/sgml/installation.sgml
@@ -65,7 +65,7 @@ <title>Requirements</title>
</para>
<para>
- The minimum required version of <application>Meson</application> is 0.57.2.
+ The minimum required version of <application>Meson</application> is 0.58.
</para>
</listitem>
diff --git a/meson.build b/meson.build
index 5122706477d..f1bc24615a3 100644
--- a/meson.build
+++ b/meson.build
@@ -15,7 +15,8 @@ project('postgresql',
# RHEL 8 has 0.58. < 0.57 would require various additional
# backward-compatibility conditionals.
# Meson 0.57.0 and 0.57.1 are buggy, therefore >=0.57.2.
- meson_version: '>=0.57.2',
+ # FIXME: update comment
+ meson_version: '>=0.58',
default_options: [
'warning_level=1', #-Wall equivalent
'b_pch=false',
@@ -3180,6 +3181,7 @@ pl_targets = []
contrib_targets = []
testprep_targets = []
nls_targets = []
+update_unicode_targets = []
# Define the tests to distribute them to the correct test styles later
@@ -3953,6 +3955,10 @@ alias_target('testprep', testprep_targets)
alias_target('world', all_built, docs)
alias_target('install-world', install_quiet, installdocs)
+if update_unicode_targets.length() > 0
+ alias_target('update-unicode', update_unicode_targets)
+endif
+
run_target('help',
command: [
perl, '-ne', 'next if /^#/; print',
diff --git a/src/common/unicode/README b/src/common/unicode/README
index 4974c3c885d..fdb8b66fa58 100644
--- a/src/common/unicode/README
+++ b/src/common/unicode/README
@@ -10,7 +10,7 @@ Update Unicode Version
----------------------
Edit src/Makefile.global.in and src/common/unicode/meson.build
-to update the UNICODE_VERSION.
+to update the UNICODE_VERSION and the CLDR_VERSION.
Then, generate the new header files with:
diff --git a/src/common/unicode/meson.build b/src/common/unicode/meson.build
index f650dd95b5c..94d02f0070d 100644
--- a/src/common/unicode/meson.build
+++ b/src/common/unicode/meson.build
@@ -1,6 +1,7 @@
# Copyright (c) 2022-2026, PostgreSQL Global Development Group
UNICODE_VERSION = '16.0.0'
+CLDR_VERSION = '47'
unicode_data = {}
unicode_baseurl = 'https://www.unicode.org/Public/@0@/ucd/@1@'
@@ -22,9 +23,9 @@ foreach f : ['CompositionExclusions.txt', 'CaseFolding.txt', 'DerivedCorePropert
endforeach
-update_unicode_targets = []
+update_unicode_common_targets = []
-update_unicode_targets += \
+update_unicode_common_targets += \
custom_target('unicode_case_table.h',
input: [unicode_data['CaseFolding.txt'], unicode_data['SpecialCasing.txt'], unicode_data['UnicodeData.txt']],
output: ['unicode_case_table.h'],
@@ -34,7 +35,7 @@ update_unicode_targets += \
build_by_default: false,
)
-update_unicode_targets += \
+update_unicode_common_targets += \
custom_target('unicode_category_table.h',
input: [unicode_data['UnicodeData.txt'], unicode_data['DerivedCoreProperties.txt'], unicode_data['PropList.txt']],
output: ['unicode_category_table.h'],
@@ -44,7 +45,7 @@ update_unicode_targets += \
build_by_default: false,
)
-update_unicode_targets += \
+update_unicode_common_targets += \
custom_target('unicode_east_asian_fw_table.h',
input: [unicode_data['EastAsianWidth.txt']],
output: ['unicode_east_asian_fw_table.h'],
@@ -53,7 +54,7 @@ update_unicode_targets += \
capture: true,
)
-update_unicode_targets += \
+update_unicode_common_targets += \
custom_target('unicode_nonspacing_table.h',
input: [unicode_data['UnicodeData.txt']],
output: ['unicode_nonspacing_table.h'],
@@ -63,7 +64,7 @@ update_unicode_targets += \
capture: true,
)
-update_unicode_targets += \
+update_unicode_common_targets += \
custom_target('unicode_norm_table.h',
input: [unicode_data['UnicodeData.txt'], unicode_data['CompositionExclusions.txt']],
output: ['unicode_norm_table.h', 'unicode_norm_hashfunc.h'],
@@ -74,7 +75,7 @@ update_unicode_targets += \
build_by_default: false,
)
-update_unicode_targets += \
+update_unicode_common_targets += \
custom_target('unicode_normprops_table.h',
input: [unicode_data['DerivedNormalizationProps.txt']],
output: ['unicode_normprops_table.h'],
@@ -84,7 +85,7 @@ update_unicode_targets += \
capture: true,
)
-update_unicode_targets += \
+update_unicode_common_targets += \
custom_target('unicode_version.h',
output: ['unicode_version.h'],
command: [
@@ -140,7 +141,7 @@ update_unicode_dep = []
if not meson.is_cross_build()
update_unicode_dep += custom_target('case_test.run',
output: 'case_test.run',
- input: update_unicode_targets,
+ input: update_unicode_common_targets,
command: [case_test, UNICODE_VERSION],
build_by_default: false,
build_always_stale: true,
@@ -150,7 +151,7 @@ endif
if not meson.is_cross_build()
update_unicode_dep += custom_target('category_test.run',
output: 'category_test.run',
- input: update_unicode_targets,
+ input: update_unicode_common_targets,
command: [category_test, UNICODE_VERSION],
build_by_default: false,
build_always_stale: true,
@@ -160,7 +161,7 @@ endif
if not meson.is_cross_build()
update_unicode_dep += custom_target('norm_test.run',
output: 'norm_test.run',
- input: update_unicode_targets,
+ input: update_unicode_common_targets,
command: [norm_test],
build_by_default: false,
build_always_stale: true,
@@ -170,13 +171,13 @@ endif
# Use a custom target, as run targets serialize the output, making this harder
# to debug, and don't deal well with targets with multiple outputs.
-update_unicode = custom_target('update-unicode',
+update_unicode_common = custom_target('update-unicode',
depends: update_unicode_dep,
output: ['dont-exist'],
- input: update_unicode_targets,
+ input: update_unicode_common_targets,
command: [cp, '@INPUT@', '@SOURCE_ROOT@/src/include/common/'],
build_by_default: false,
build_always_stale: true,
)
-alias_target('update-unicode', update_unicode)
+update_unicode_targets += update_unicode_common
--
2.53.0