diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..d87f5613ec4234f82f8eaeebc563711f587fdf88 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.xz filter=lfs diff=lfs merge=lfs -text diff --git a/.lfsconfig b/.lfsconfig new file mode 100644 index 0000000000000000000000000000000000000000..a0c3e7f01a3846e09d4dea7b21c55de3a7275434 --- /dev/null +++ b/.lfsconfig @@ -0,0 +1,2 @@ +[lfs] + url = https://artlfs.openeuler.openatom.cn/src-openEuler/pango diff --git a/Revert-build-Drop-the-install-tests-option.patch b/Revert-build-Drop-the-install-tests-option.patch new file mode 100644 index 0000000000000000000000000000000000000000..1d50b94c24bf11dc4ed8b39b109427b20e15d00e --- /dev/null +++ b/Revert-build-Drop-the-install-tests-option.patch @@ -0,0 +1,309 @@ +From: =?utf-8?q?Jeremy_B=C3=ADcha?= +Date: Mon, 10 Jun 2024 08:52:56 -0400 +Subject: Revert "build: Drop the install-tests option" + +This reverts commit 2c637453aa1ece7daa9c477b95b20d993c70ab4e. + +Closes: https://gitlab.gnome.org/GNOME/pango/-/issues/799 +--- + meson.build | 1 + + meson.options | 5 ++ + tests/gen-installed-test.py | 25 ++++++ + tests/meson.build | 208 +++++++++++++++++++++++++++++++++++++++++++- + 4 files changed, 237 insertions(+), 2 deletions(-) + create mode 100755 tests/gen-installed-test.py + +diff --git a/meson.build b/meson.build +index 9cd9026..8e8a693 100644 +--- a/meson.build ++++ b/meson.build +@@ -582,6 +582,7 @@ summary('Introspection', build_gir, section: 'Build') + summary('Documentation', get_option('documentation'), section: 'Build') + summary('Man pages', get_option('man-pages'), section: 'Build') + summary('Tests', get_option('build-testsuite'), section: 'Build') ++summary('Install tests', get_option('install-tests'), section: 'Build') + summary('Examples', get_option('build-examples'), section: 'Build') + + summary('prefix', pango_prefix, section: 'Directories') +diff --git a/meson.options b/meson.options +index 85a268d..2f31c2e 100644 +--- a/meson.options ++++ b/meson.options +@@ -30,6 +30,11 @@ option('build-examples', + type: 'boolean', + value: true) + ++option('install-tests', ++ description : 'Install tests', ++ type: 'boolean', ++ value: false) ++ + option('fontconfig', + description : 'Build with FontConfig support. Passing \'auto\' or \'disabled\' disables fontconfig where it is optional, i.e. on Windows and macOS. Passing \'disabled\' on platforms where fontconfig is required results in error.', + type: 'feature', +diff --git a/tests/gen-installed-test.py b/tests/gen-installed-test.py +new file mode 100755 +index 0000000..eeb4abe +--- /dev/null ++++ b/tests/gen-installed-test.py +@@ -0,0 +1,25 @@ ++#!/usr/bin/env python3 ++ ++import sys ++import argparse ++import os ++ ++template = '''[Test] ++Type=session ++Exec={} ++''' ++ ++def build_template(test_dir, test_name): ++ return template.format(os.path.join(test_dir, test_name)) ++ ++if __name__ == '__main__': ++ argparser = argparse.ArgumentParser(description='Generate installed-test description file') ++ argparser.add_argument('installed_test_dir', help='Path for installed test binaries') ++ argparser.add_argument('test_name', help='Name of the test unit') ++ argparser.add_argument('out_dir', help='Path for the output') ++ ++ args = argparser.parse_args() ++ ++ outfile = os.path.join(args.out_dir, args.test_name + '.test') ++ with open(outfile, 'w') as f: ++ f.write(build_template(args.installed_test_dir, args.test_name)) +diff --git a/tests/meson.build b/tests/meson.build +index 72ea8be..c288d44 100644 +--- a/tests/meson.build ++++ b/tests/meson.build +@@ -90,24 +90,228 @@ if cairo_dep.found() + endif + endif + ++installed_test_data = [ ++ 'boundaries.utf8', ++ 'GraphemeBreakTest.txt', ++ 'WordBreakTest.txt', ++ 'SentenceBreakTest.txt', ++ 'EmojiBreakTest.txt', ++ 'CharBreakTest.txt', ++] ++ ++installed_test_layouts_data = [ ++ 'layouts/bratwurst2.layout', ++ 'layouts/bratwurst3.layout', ++ 'layouts/bratwurst4.layout', ++ 'layouts/bratwurst.layout', ++ 'layouts/effigy.layout', ++ 'layouts/kebab.layout', ++ 'layouts/tabs.layout', ++ 'layouts/tabs-nowrap.layout', ++ 'layouts/valid-1.layout', ++ 'layouts/valid-2.layout', ++ 'layouts/valid-3.layout', ++ 'layouts/valid-4.layout', ++ 'layouts/valid-5.layout', ++ 'layouts/valid-6.layout', ++ 'layouts/valid-7.layout', ++ 'layouts/valid-8.layout', ++ 'layouts/valid-9.layout', ++ 'layouts/valid-10.layout', ++ 'layouts/valid-11.layout', ++ 'layouts/valid-12.layout', ++ 'layouts/valid-13.layout', ++ 'layouts/valid-14.layout', ++ 'layouts/valid-15.layout', ++ 'layouts/valid-16.layout', ++ 'layouts/valid-17.layout', ++ 'layouts/valid-18.layout', ++ 'layouts/valid-19.layout', ++ 'layouts/valid-20.layout', ++ 'layouts/valid-21.layout', ++ 'layouts/valid-22.layout', ++ 'layouts/tab-crash.layout', ++ 'layouts/tab-assert.layout', ++ 'layouts/arabic-format.layout', ++ 'layouts/no-space.layout', ++ 'layouts/aaa.layout', ++ 'layouts/letterspacing.layout', ++ 'layouts/screaming.layout', ++] ++ ++installed_test_fontsets_data = [ ++ 'fontsets/cantarell', ++ 'fontsets/cantarell2', ++ 'fontsets/mono', ++ 'fontsets/mono2', ++] ++ ++installed_test_fonts_data = [ ++ 'fonts/amiri-06dd.ttf', ++ 'fonts/Cantarell-VF.otf', ++ 'fonts/DejaVuSans-Bold.ttf', ++ 'fonts/DejaVuSansMono.ttf', ++ 'fonts/DejaVuSans.ttf', ++ 'fonts/droid-sans-subset.ttf', ++ 'fonts/emoji-subset.ttf', ++ 'fonts/fa-regular-f2db.ttf', ++ 'fonts/fa-solid-f2db.ttf', ++ 'fonts/fonts.conf', ++ 'fonts/noto-sans-cjk.ttf', ++] ++ ++test_markups_data = [ ++ 'markups/fail-1', ++ 'markups/fail-2', ++ 'markups/fail-3', ++ 'markups/fail-4', ++ 'markups/fail-5', ++ 'markups/fail-6', ++ 'markups/fail-7', ++ 'markups/fail-8', ++ 'markups/fail-9', ++ 'markups/fail-10', ++ 'markups/fail-11', ++ 'markups/fail-12', ++ 'markups/fail-13', ++ 'markups/fail-14', ++ 'markups/fail-15', ++ 'markups/fail-16', ++ 'markups/fail-17', ++ 'markups/fail-20', ++ 'markups/fail-21', ++ 'markups/fail-22', ++ 'markups/fail-23', ++ 'markups/fail-24', ++ 'markups/fail-25', ++ 'markups/fail-26', ++ 'markups/fail-27', ++ 'markups/fail-28', ++ 'markups/fail-29', ++ 'markups/fail-30', ++ 'markups/fail-31', ++ 'markups/fail-32', ++ 'markups/fail-33', ++ 'markups/fail-34', ++ 'markups/fail-35', ++ 'markups/fail-36', ++ 'markups/fail-37', ++ 'markups/fail-38', ++ 'markups/fail-39', ++ 'markups/valid-1', ++ 'markups/valid-2', ++ 'markups/valid-3', ++ 'markups/valid-4', ++ 'markups/valid-5', ++ 'markups/valid-6', ++ 'markups/valid-7', ++ 'markups/valid-8', ++ 'markups/valid-9', ++ 'markups/valid-10', ++ 'markups/valid-11', ++ 'markups/valid-12', ++ 'markups/valid-13', ++ 'markups/valid-14', ++ 'markups/valid-15', ++ 'markups/valid-16', ++ 'markups/valid-17', ++ 'markups/valid-18', ++ 'markups/valid-19', ++ 'markups/valid-20', ++ 'markups/valid-21', ++ 'markups/valid-22', ++ 'markups/valid-23', ++ 'markups/valid-24', ++] ++ ++test_breaks_data = [ ++ 'breaks/one', ++ 'breaks/two', ++ 'breaks/three', ++ 'breaks/nine', ++ 'breaks/ten', ++ 'breaks/eleven', ++] ++ ++if thai_dep.found() ++ test_breaks_data += [ 'breaks/four', ] ++endif ++ ++test_items_data = [ ++ 'itemize/one', ++ 'itemize/two', ++] ++ ++installed_test_markups_data = [] ++foreach d: test_markups_data ++ installed_test_markups_data += d + '.markup' ++ installed_test_markups_data += d + '.expected' ++endforeach ++ ++installed_test_breaks_data = [] ++foreach d: test_breaks_data ++ installed_test_breaks_data += d + '.break' ++ installed_test_breaks_data += d + '.expected' ++endforeach ++ ++installed_test_items_data = [] ++foreach d: test_items_data ++ installed_test_items_data += d + '.items' ++ installed_test_items_data += d + '.expected' ++endforeach ++ ++installed_test_nofonts_data = [ ++ 'nofonts/fonts.conf', ++] ++ ++installed_test_datadir = join_paths(pango_datadir, 'installed-tests', 'pango') ++installed_test_bindir = join_paths(pango_libexecdir, 'installed-tests', 'pango') ++ ++if get_option('install-tests') ++ install_data(installed_test_data, install_dir: installed_test_bindir) ++ install_data(installed_test_fonts_data, install_dir: join_paths(installed_test_bindir, 'fonts')) ++ install_data(installed_test_layouts_data, install_dir: join_paths(installed_test_bindir, 'layouts')) ++ install_data(installed_test_markups_data, install_dir: join_paths(installed_test_bindir, 'markups')) ++ install_data(installed_test_breaks_data, install_dir: join_paths(installed_test_bindir, 'breaks')) ++ install_data(installed_test_items_data, install_dir: join_paths(installed_test_bindir, 'itemize')) ++ install_data(installed_test_fontsets_data, install_dir: join_paths(installed_test_bindir, 'fontsets')) ++ install_data(installed_test_nofonts_data, install_dir: join_paths(installed_test_bindir, 'nofonts')) ++endif ++ ++gen_installed_test = files([ 'gen-installed-test.py' ]) + gen_all_unicode = files([ 'gen-all-unicode.py' ]) + + custom_target('all-unicode', + output: 'all-unicode.txt', + command: [ + gen_all_unicode, '@OUTPUT@' +- ]) ++ ], ++ install: get_option('install-tests'), ++ install_dir: installed_test_bindir) + + foreach t: tests + name = t[0] + src = t.get(1, [ '@0@.c'.format(name) ]) + deps = t.get(2, [ libpango_dep ]) + ++ custom_target(name + '.test', ++ output: name + '.test', ++ command: [ ++ gen_installed_test, ++ installed_test_bindir, ++ name, ++ '@OUTDIR@', ++ ], ++ install: get_option('install-tests'), ++ install_dir: installed_test_datadir) ++ + bin = executable(name, src, + dependencies: deps, + include_directories: root_inc, + c_args: common_cflags + pango_debug_cflags + test_cflags, +- cpp_args: common_cppflags + pango_debug_cflags + test_cflags) ++ cpp_args: common_cppflags + pango_debug_cflags + test_cflags, ++ install: get_option('install-tests'), ++ install_dir: installed_test_bindir) + + test(name, bin, + args: ['-k', '--tap'], diff --git a/pango-1.52.2.tar.xz b/pango-1.52.2.tar.xz deleted file mode 100644 index f389c93794676d32d1078a3ee47759efc8e4bf7f..0000000000000000000000000000000000000000 Binary files a/pango-1.52.2.tar.xz and /dev/null differ diff --git a/pango-1.57.0.tar.xz b/pango-1.57.0.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..ab944125cc393e8e61e8bfc60e3a5af56bf5e502 --- /dev/null +++ b/pango-1.57.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:890640c841dae77d3ae3d8fe8953784b930fa241b17423e6120c7bfdf8b891e7 +size 2566400 diff --git a/pango.spec b/pango.spec index 617142db6cb76452bac8f051027580cd9679ef86..f855971119629f7a74a70a9cbd1858ff6bad1fa4 100644 --- a/pango.spec +++ b/pango.spec @@ -1,18 +1,20 @@ -%global glib2_version 2.62 +%global glib2_version 2.82 %global fribidi_version 1.0.6 %global libthai_version 0.1.9 -%global harfbuzz_version 2.6.0 -%global fontconfig_version 2.13.0 +%global harfbuzz_version 8.4.0 +%global fontconfig_version 2.17.0 %global libXft_version 2.0.0 -%global cairo_version 1.12.10 +%global cairo_version 1.18.0 Name: pango -Version: 1.52.2 +Version: 1.57.0 Release: 1 Summary: System for layout and rendering of internationalized text License: LGPL-2.0-or-later URL: https://pango.gnome.org/ -Source0: https://download.gnome.org/sources/%{name}/1.52/%{name}-%{version}.tar.xz +Source0: https://download.gnome.org/sources/%{name}/1.56/%{name}-%{version}.tar.xz +Patch0: Revert-build-Drop-the-install-tests-option.patch +Patch1: tests-update-results-for-newer-harfbuzz.patch BuildRequires: pkgconfig(cairo) >= %{cairo_version} BuildRequires: pkgconfig(cairo-gobject) >= %{cairo_version} @@ -23,9 +25,10 @@ BuildRequires: pkgconfig(harfbuzz) >= %{harfbuzz_version} BuildRequires: pkgconfig(libthai) >= %{libthai_version} BuildRequires: pkgconfig(xft) >= %{libXft_version} BuildRequires: pkgconfig(fribidi) >= %{fribidi_version} -BuildRequires: pkgconfig(gobject-introspection-1.0) -BuildRequires: help2man -BuildRequires: meson >= 0.60.0 +BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.83.2 +BuildRequires: /usr/bin/rst2html +BuildRequires: /usr/bin/rst2html5 +BuildRequires: meson >= 1.2.0 BuildRequires: gcc gcc-c++ BuildRequires: gi-docgen @@ -52,8 +55,6 @@ quality text handling and graphics rendering. %package devel Summary: Development files for pango Requires: pango%{?_isa} = %{version}-%{release} -Provides: %{name}-tests = %{version}-%{release} -Obsoletes: %{name}-tests < %{version}-%{release} %description devel The pango-devel package includes the header files and developer documentation @@ -68,8 +69,11 @@ for the pango package. # "test-font" testcases always failed, so we don't run this case, We have reported this bug to the upstream community # use this link to track bugs https://gitlab.gnome.org/GNOME/pango/-/issues/682 sed -i '/test-font.c/d' ./tests/meson.build -sed -i '/test-layout.c/d' ./tests/meson.build -%meson -Dinstall-tests=true -Dgtk_doc=true +# "test-font-data" testcases always failed. +# https://gitlab.gnome.org/GNOME/pango/-/issues/865 +# https://bugs.gentoo.org/960222 +sed -i '/test-font-data.c/d' ./tests/meson.build +%meson -Dgtk_doc=true -Dman-pages=true %meson_build %install @@ -99,12 +103,10 @@ fi %{_includedir}/* %{_libdir}/pkgconfig/* %{_datadir}/gir-1.0/*.gir -%{_libexecdir}/installed-tests/%{name} -%{_datadir}/installed-tests %files help %doc NEWS -%{_mandir}/man1/pango-view.1.* +%{_mandir}/man1/* %{_docdir}/Pango/ %{_docdir}/PangoCairo/ %{_docdir}/PangoFT2/ @@ -113,6 +115,9 @@ fi %{_docdir}/PangoXft/ %changelog +* Thu Sep 25 2025 Funda Wang - 1.57.0-1 +- update to 1.57.0 + * Tue Sep 24 2024 Funda Wang - 1.52.2-1 - update to version 1.52.2 diff --git a/tests-update-results-for-newer-harfbuzz.patch b/tests-update-results-for-newer-harfbuzz.patch new file mode 100644 index 0000000000000000000000000000000000000000..8bd2deb5caf0204e5a0ef1684707a9aa9c418dff --- /dev/null +++ b/tests-update-results-for-newer-harfbuzz.patch @@ -0,0 +1,42 @@ +From: =?utf-8?q?Jeremy_B=C3=ADcha?= +Date: Mon, 8 Sep 2025 20:09:23 -0400 +Subject: tests: update results for newer harfbuzz + +verified with 11.4.5 on Debian + +Forwarded: https://gitlab.gnome.org/GNOME/pango/-/merge_requests/889 +--- + tests/layouts/valid-20.layout | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/tests/layouts/valid-20.layout b/tests/layouts/valid-20.layout +index 5b2bcf1..c463781 100644 +--- a/tests/layouts/valid-20.layout ++++ b/tests/layouts/valid-20.layout +@@ -139,7 +139,7 @@ + { + "glyph" : 244, + "width" : 18432, +- "x-offset" : 14764, ++ "x-offset" : 12631, + "y-offset" : 3845, + "is-cluster-start" : true, + "log-cluster" : 0 +@@ -147,7 +147,7 @@ + { + "glyph" : 272, + "width" : 18432, +- "x-offset" : 14764, ++ "x-offset" : 14486, + "y-offset" : 4280, + "is-cluster-start" : true, + "log-cluster" : 1 +@@ -155,7 +155,7 @@ + { + "glyph" : 273, + "width" : 18432, +- "x-offset" : 14764, ++ "x-offset" : 12631, + "y-offset" : 3507, + "is-cluster-start" : true, + "log-cluster" : 2