%bcond_without introspection

Name:           glib2
Version:        2.88.2
Release:        1
Summary:        The core library that forms the basis for projects such as GTK+ and GNOME
License:        LGPL-2.1-or-later
URL:            https://www.gtk.org
Source0:        https://download.gnome.org/sources/glib/%{version_major_minor}/glib-%{version}.tar.xz

Patch1:  gspawn-eperm.patch
Patch3:  gio-fix-filesystem-type-ext-err.patch
Patch4:  Correct-translation-information.patch

BuildRequires: gcc gettext
BuildRequires: meson >= 1.4.0
BuildRequires: pkgconfig(bash-completion) >= 2.0
BuildRequires: pkgconfig(gi-docgen) >= 2026.1
BuildRequires: pkgconfig(libelf) >= 0.8.12
BuildRequires: pkgconfig(libffi) >= 3.0.0
BuildRequires: pkgconfig(libpcre2-8) >= 10.32
BuildRequires: pkgconfig(libselinux) >= 2.2
BuildRequires: pkgconfig(mount) >= 2.23
BuildRequires: pkgconfig(zlib)
BuildRequires: libattr-devel
BuildRequires: python3-devel
BuildRequires: /usr/bin/rst2man
BuildRequires: desktop-file-utils
BuildRequires: shared-mime-info
BuildRequires: chrpath
%if %{with introspection}
BuildRequires: /usr/bin/g-ir-scanner
BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.80.0
%endif

Provides:       %{name}-fam = %{version}-%{release}
Obsoletes:      %{name}-fam < %{version}-%{release}

Recommends:     shared-mime-info
Conflicts:      gcr < 3.28.1

Provides:       bundled(gnulib)
Provides:       bundled(gvdb)
Provides:       bundled(libcharset)
Provides:       bundled(xdgmime)

%if %{with introspection}
Conflicts: gobject-introspection < 1.79.1
%endif

%description
GLib is a bundle of three (formerly five) low-level system libraries
written in C and developed mainly by GNOME. GLib's code was separated
from GTK, so it can be used by software other than GNOME and has been
developed in parallel ever since.

%package        devel
Summary:        Development files for the GLib library
Requires:       %{name} = %{version}-%{release}
Requires:       gdb-headless
%if %{with introspection}
Conflicts: gobject-introspection-devel < 1.79.1
%endif

%description    devel
Development files for the GLib library.

%package        static
Summary:        glib static
Requires:       pcre2-static
Requires:       %{name}-devel = %{version}-%{release}
Provides:       %{name}-static = %{version}-%{release}
Obsoletes:      %{name}-static < %{version}-%{release}

%description    static
The %{name}-static subpackage contains libraries for %{name}.

%package        tests
Summary:        Tests for the glib2 package
Requires:       %{name}-devel = %{version}-%{release}
Provides:       %{name}-tests = %{version}-%{release}
Obsoletes:      %{name}-tests < %{version}-%{release}

%description    tests
The glib2-tests package contains tests that can be used to verify
the functionality of the installed package.

%package        help
Summary:        help document for the glib2 package
Buildarch:      noarch
Provides:       %{name}-doc = %{version}-%{release}
Obsoletes:      %{name}-doc < %{version}-%{release}

%description    help
help document for the glib2 package.

%prep
%autosetup -n glib-%{version} -p1

%build
%meson --default-library=both -Ddtrace=enabled \
%if %{with introspection}
    -Dintrospection=enabled \
%else
    -Dintrospection=disabled \
%endif
    -Dman-pages=enabled -Ddocumentation=true \
    -Dsystemtap=enabled -Dinstalled_tests=true \
    -Dglib_debug=enabled -Dsysprof=disabled

%meson_build
find . -name *.dtrace-temp.c -exec rm -f {} \;

%install
%meson_install
%global py_reproducible_pyc_path %{buildroot}%{_datadir}
touch -r gio/gdbus-2.0/codegen/config.py.in %{buildroot}%{_datadir}/glib-2.0/codegen/*.py

export PYTHONHASHSEED=0
%py_byte_compile %{__python3} %{buildroot}%{_datadir}

mv %{buildroot}%{_bindir}/gio-querymodules %{buildroot}%{_bindir}/gio-querymodules-%{__isa_bits}
sed -i -e "/^gio_querymodules=/s/gio-querymodules/gio-querymodules-%{__isa_bits}/" %{buildroot}%{_libdir}/pkgconfig/gio-2.0.pc
mkdir -p %{buildroot}%{_libdir}/gio/modules
touch %{buildroot}%{_libdir}/gio/modules/giomodule.cache

# remove pycache
rm -rf %{buildroot}/%{_datadir}/gdb/auto-load/%{_libdir}/__pycache__
rm -rf %{buildroot}/%{_datadir}/glib-2.0/codegen/__pycache__
rm -rf %{buildroot}/%{_datadir}/glib-2.0/gdb/__pycache__

# remove rpath
chrpath -d %{buildroot}%{_libexecdir}/installed-tests/glib/gdbus-peer

%find_lang glib20

%transfiletriggerin -- %{_libdir}/gio/modules
gio-querymodules-%{__isa_bits} %{_libdir}/gio/modules &> /dev/null || :

%transfiletriggerpostun -- %{_libdir}/gio/modules
gio-querymodules-%{__isa_bits} %{_libdir}/gio/modules &> /dev/null || :

%transfiletriggerin -- %{_datadir}/glib-2.0/schemas
glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :

%transfiletriggerpostun -- %{_datadir}/glib-2.0/schemas
glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :

%files -f glib20.lang
%doc NEWS
%license LICENSES/LGPL-2.1-or-later.txt
%{_libdir}/*.so.*
%if %{with introspection}
%dir %{_libdir}/girepository-1.0
%{_libdir}/girepository-1.0/GIRepository-3.0.typelib
%{_libdir}/girepository-1.0/GLib-2.0.typelib
%{_libdir}/girepository-1.0/GLibUnix-2.0.typelib
%{_libdir}/girepository-1.0/GModule-2.0.typelib
%{_libdir}/girepository-1.0/GObject-2.0.typelib
%{_libdir}/girepository-1.0/Gio-2.0.typelib
%{_libdir}/girepository-1.0/GioUnix-2.0.typelib
%endif
%dir %{_libdir}/gio
%ghost %{_libdir}/gio/modules/giomodule.cache

%dir %{_datadir}/glib-2.0
%dir %{_datadir}/bash-completion
%dir %{_datadir}/bash-completion/completions
%{_datadir}/bash-completion/completions/gapplication
%{_datadir}/bash-completion/completions/gdbus
%{_datadir}/bash-completion/completions/gio
%{_datadir}/bash-completion/completions/gsettings

%{_bindir}/gio
%{_bindir}/gio-querymodules*
%{_bindir}/glib-compile-schemas
%{_bindir}/gsettings
%{_bindir}/gdbus
%{_bindir}/gapplication

%files devel
%{_libdir}/lib*.so
%{_libdir}/glib-2.0
%{_libdir}/pkgconfig/*
%{_includedir}/*

%{_libexecdir}/gio-launch-desktop

%{_datadir}/aclocal/*
%{_datadir}/glib-2.0/*
%{_datadir}/bash-completion/completions/gresource
%{_datadir}/gdb/auto-load/%{_libdir}/*-gdb.py
%{_datadir}/gettext/*
%{_datadir}/systemtap/*

%{_bindir}/glib-genmarshal
%{_bindir}/glib-gettextize
%{_bindir}/glib-mkenums
%{_bindir}/gi-compile-repository
%{_bindir}/gi-decompile-typelib
%{_bindir}/gi-inspect-typelib
%{_bindir}/gobject-query
%{_bindir}/gtester
%{_bindir}/gdbus-codegen
%{_bindir}/glib-compile-resources
%{_bindir}/gresource
%attr (0755, root, root) %{_bindir}/gtester-report
%if %{with introspection}
%dir %{_datadir}/gir-1.0
%{_datadir}/gir-1.0/GIRepository-3.0.gir
%{_datadir}/gir-1.0/GLib-2.0.gir
%{_datadir}/gir-1.0/GLibUnix-2.0.gir
%{_datadir}/gir-1.0/GModule-2.0.gir
%{_datadir}/gir-1.0/GObject-2.0.gir
%{_datadir}/gir-1.0/Gio-2.0.gir
%{_datadir}/gir-1.0/GioUnix-2.0.gir
%endif

%files static
%{_libdir}/*.a

%files tests
%{_libexecdir}/installed-tests
%exclude %{_libexecdir}/installed-tests/glib/cert-tests
%exclude %{_libexecdir}/installed-tests/glib/tls-certificate

%{_datadir}/installed-tests
%exclude %{_datadir}/installed-tests/glib/tls-certificate.test

%files help
%{_mandir}/man1/*
%{_docdir}/g*-2.0

%changelog
* Fri Jun 26 2026 Funda Wang <fundawang@yeah.net> - 2.88.2-1
- update to 2.88.2

* Tue Mar 17 2026 Funda Wang <fundawang@yeah.net> - 2.88.0-1
- update to 2.88.0

* Sat Feb 14 2026 Funda Wang <fundawang@yeah.net> - 2.86.4-1
- update to 2.86.4

* Wed Jan 28 2026 Funda Wang <fundawang@yeah.net> - 2.86.3-2
- fix CVE-2026-0988, CVE-2026-1484, CVE-2026-1485, CVE-2026-1489

* Tue Dec 09 2025 Funda Wang <fundawang@yeah.net> - 2.86.3-1
- update to 2.86.3

* Sat Nov 29 2025 Funda Wang <fundawang@yeah.net> - 2.86.2-2
- fix CVE-2025-13601

* Wed Nov 19 2025 Funda Wang <fundawang@yeah.net> - 2.86.2-1
- update to 2.86.2

* Wed Oct 22 2025 Funda Wang <fundawang@yeah.net> - 2.86.1-1
- update to 2.86.1

* Fri Sep 05 2025 Funda Wang <fundawang@yeah.net> - 2.86.0-1
- update to 2.86.0

* Sat Aug 09 2025 Funda Wang <fundawang@yeah.net> - 2.84.4-1
- update to 2.84.4

* Sat Jun 14 2025 Funda Wang <fundawang@yeah.net> - 2.84.3-1
- update to 2.84.3

* Fri Jun 06 2025 Funda Wang <fundawang@yeah.net> - 2.84.2-2
- build with introspection

* Fri Jun 06 2025 Funda Wang <fundawang@yeah.net> - 2.84.2-1
- update to version 2.84.2

* Sat May 10 2025 Funda Wang <fundawang@yeah.net> - 2.78.6-6
- fix CVE-2025-3360, CVE-2025-4373
- fix symlink of COYPING

* Wed May 7 2025 hanhuihui <hanhuihui5@huawei.com> - 2.78.6-5
- fix CVE-2025-4056

* Tue Nov 12 2024 liningjie <liningjie@xfusion.com> - 2.78.6-4
- Fix CVE-2024-52533

* Thu Oct 24 2024 GuoCe <guoce@kylinos.cn> - 2.78.6-3
- Correct translation information

* Wed Oct 23 2024 litenglong <litenglong@kylinos.cn> - 2.78.6-2
- fix filesystem type ext err

* Wed Jul 24 2024 Funda Wang <fundawang@yeah.net> - 2.78.6-1
- Update to 2.78.6

* Tue Jun 18 2024 hanhuihui <hanhuihui5@huawei.com> - 2.78.3-2
- fix CVE-2024-34397

* Mon Feb 5 2024 hanhuihui <hanhuihui5@huawei.com> - 2.78.3-1
- Update to 2.78.3

* Thu Jan 11 2024 hanhuihui <hanhuihui5@huawei.com> - 2.76.4-3
- fix pcre2 error , memory leak and log domains error

* Sat Aug 19 2023 hanhuihui <hanhuihui5@huawei.com> - 2.76.4-2
- fix group comment management

* Mon Jul 24 2023 dillon chen <dillon.chen@gmail.com> - 2.76.4-1
- Update to 2.76.4

* Sat Jul 15 2023 hanhuihui <hanhuihui5@huawei.com> - 2.74.4-3
- Align G_FILE_MEASURE_APPARENT_SIZE behaviour with du from GNU coreutils

* Tue Mar 14 2023 hanhuihui <hanhuihui5@huawei.com> - 2.74.4-2
- fix a use-after-free of a GDBusMethodInvocation

* Mon Jan 2 2023 lin zhang <lin.zhang@turbolinux.com.cn> - 2.74.4-1
- Update to 2.74.1

* Tue Jan 10 2023 hanhuihui <hanhuihui5@huawei.com> - 2.72.2-7
- adjust pcre2 requires

* Tue Dec 27 2022 hanhuihui <hanhuihui5@huawei.com> - 2.72.2-6
- fix some pcre2 error

* Wed Nov 9 2022 hanhuihui <hanhuihui5@huawei.com> - 2.72.2-5
- separate the test and static package from devel package

* Sat Oct 15 2022 hanhuihui <hanhuihui5@huawei.com> - 2.72.2-4
- backport some patches from community

* Mon Sep 5 2022 hanhuihui <hanhuihui5@huawei.com> - 2.72.2-3
- replace pcre1 with pcre2

* Sat Jun 18 2022 zhujunhao <zhujunhao11@huawei.com> - 2.72.2-2
- remove gnutls require

* Mon Jun 6 2022 lin zhang <lin.zhang@turbolinux.com.cn> - 2.72.2-1
- Update to 2.72.2

* Thu Jun 2 2022 lin zhang <lin.zhang@turbolinux.com.cn> - 2.72.0-1
- Update to 2.72.0

* Thu Apr 28 2022 yanan <yanan@huawei.com> - 2.68.1-12
- Type:bugfix
- DESC:fix issues found by svace static code analyzer
       fix segfault,memory leak,EOF,arguments leak

* Wed Apr 6 2022 hanhui <hanhui15@h-partners.com> - 2.68.1-11
- DESC:fix gfileenumerator/gdbusobjectmanagerservice/gdbusauth of memory leak

* Fri Mar 11 2022 weijin deng <weijin.deng@turbolinux.com.cn> - 2.68.1-10
- Type:bugfix
- DESC:solve glib2 enable "glib2_debug" option causes gnome-calendar reopen
       coredumped in gtk3's _gtk_widget_get_toplevel()

* Wed Mar 9 2022 yangcheng<yangcheng87@h-partners.com> - 2.68.1-9
- Type:bugfix
- Id:NA
- SUG:NA
- DESC:remove gdbus-peer rpath compile option

* Wed Mar 2 2022 hanhui<hanhui15@h-partners.com> - 2.68.1-8
- Type:bugfix
- Id:NA
- SUG:NA
- DESC:custom installation depend on sysprof

* Sat Feb 19 2022 wangkerong<wangkerong@h-partners.com> - 2.68.1-7
- Type:bugfix
- Id:NA
- SUG:NA
- DESC:add i686 options,fix build failure on i686

* Sun Nov 14 2021 fengtao<fengtao40@huawei.com> - 2.68.1-6
- Type:bugfix
- Id:NA
- SUG:NA
- DESC:add require gdb-headless for devel


* Tue Sep 14 2021 yangcheng<yangcheng87@huawei.com> - 2.68.1-5
- Type:bugfix
- Id:NA
- SUG:NA
- DESC:Drop dependebcy on gamin

* Tue Sep 7 2021 fengtao<fengtao40@huawei.com> - 2.68.1-4
- Type:bugfix
- Id:NA
- SUG:NA
- DESC:enable all tests

* Sat Aug 14 2021 liuyumeng<liuyumeng5@huawei.com> - 2.68.1-3
- Type:bugfix
- Id:NA
- SUG:NA
- DESC:fix a memory leak

* Tue Aug 10 2021 liuyumeng<liuyumeng5@huawei.com> - 2.68.1-2
- Type:bugfix
- Id:NA
- SUG:NA
- DESC:fix the third parameter of clise-range

* Wed Jun 30 2021 weijin deng <weijin.deng@turbolinux.com.cn> - 2.68.1-1
- Upgrade to 2.68.1 because gnome-builder and more new gnome applications
  need function g_memdup2 which needs glib2 ≥2.67.3 to instead of g_memdup

* Wed May 19 2021 weijin deng <weijin.deng@turbolinux.com.cn> - 2.66.8-1
- Upgrade to 2.66.8
- Update Version, Release
- Delete patch files, delete gio-launch-desktop(not exist in 2.66.8)
- Correct date, make it match weekday

* Tue Apr 13 2021 hanhui<hanhui15@huawei.com> - 2.62.5-5
- Type:cve
- Id:CVE-2021-28153
- SUG:NA
- DESC:fix CVE-2021-28153

* Sat Mar 6 2021 hanhui<hanhui15@huawei.com> - 2.62.5-4
- Type:cve
- Id:CVE-2021-27219
- SUG:NA
- DESC:fix CVE-2021-27219

* Mon Mar 1 2021 jinzhimin<jinzhimin2@huawei.com> - 2.62.5-3
- Type:cve
- Id:CVE-2021-27218
- SUG:NA
- DESC:fix CVE-2021-27218

* Sat Feb 27 2021 zhujunhao<zhujunhao8@huawei.com> - 2.62.5-2
- Type:cve
- Id:CVE-2020-35457
- SUG:NA
- DESC:fix CVE-2020-35457

* Tue Jul 21 2020 hanhui<hanhui15@huawei.com> - 2.62.5-1
- Update to 2.62.5

* Mon Mar 2 2020 hexiujun<hexiujun1@huawei.com> - 2.62.1-4
- Type:bugfix
- Id:NA
- SUG:NA
- DESC:fix accidentally delete temp file within dtrace

* Fri Feb 28 2020 zhangrui <zhangrui182@huawei.com> - 2.62.1-3
- Type:bugfix
- Id:NA
- SUG:NA
- DESC:remove dist in spec

* Mon Feb 24 2020 openEuler Buildteam <buildteam@openeuler.org> - 2.62.1-2
- Type:bugfix
- Id:NA
- SUG:NA
- DESC:exclude some unnecessary files

* Thu Jan 9 2020 openEuler Buildteam <buildteam@openeuler.org> - 2.62.1-1
- update to 2.62.1

* Tue Dec 24 2019 openEuler Buildteam <buildteam@openeuler.org> - 2.58.1-6
- change the path of files

* Sat Dec 21 2019 openEuler Buildteam <buildteam@openeuler.org> - 2.58.1-5
- Type:bugfix
- Id:NA
- SUG:NA
- DESC:Fix a leaking GRemoteActionGroup member

* Sat Nov 23 2019 openEuler Buildteam <buildteam@openeuler.org> - 2.58.1-4
- Type:bugfix
- Id:NA
- SUG:NA
- DESC:add the libxslt in buildrequires

* Wed Sep 25 2019 huzunhao<huzunhao2@huawei.com> - 2.58.1-3
- Type:cves
- ID:CVE-2019-12450 CVE-2019-13012
- SUG:restart
- DESC:fix CVE-2019-12450 CVE-2019-13012

* Thu Sep 19 2019 Lijin Yang <yanglijin@huawei.com> - 2.58.1-2
- Package init