Name:           glib2
Version:        2.66.8
Release:        8
Summary:        The core library that forms the basis for projects such as GTK+ and GNOME
License:        LGPLv2+
URL:            http://www.gtk.org
Source0:        http://download.gnome.org/sources/glib/2.66/glib-%{version}.tar.xz

Patch9001:      fix-accidentally-delete-temp-file-within-dtrace.patch

Patch6001:      backport-gsocketclient-set-IP-BIND-ADDRESS-NO-PORT-if-binding.patch
Patch6002:      backport-gsocketclient-emit-RESOLVING-RESOLVED-events-only-once.patch
Patch6003:      backport-gsocketclient-Crash-on-error-if-error-is-missing.patch
Patch6004:      backport-gsocketclient-return-best-errors-possible.patch
Patch6005:      backport-gsocketclient-fix-crash-when-async-connectio-step-fails.patch
Patch6006:      backport-Correct-memory-leaks-of-error-in-completion-case.patch
Patch6007:      backport-gapplication-Fix-a-memory-leak.patch
Patch6008:      backport-gdbusauth-fix-error-leak.patch
Patch6009:      backport-gdbusobjectmanagerservice-fix-leak-in-error-path.patch
Patch6010:      backport-gfileenumerator-fix-leak-in-error-path.patch
Patch6011:      backport-gsettings-Fix-a-minor-memory-leak-when-getting-GSettingsAction-state.patch
Patch6012:      backport-fix-a-memory-leak.patch
Patch6013:      backport-fix-expectations-when-running-as-root.patch
Patch6014:      backport-gapplication-fix-arguments-leak-in-error-path.patch
Patch6015:      backport-gsocks5proxy-Handle-EOF-when-reading-from-a-stream.patch
Patch6016:      backport-application-Unset-the-registered-state-after-shutting-down.patch
Patch6017:      backport-gdtlsconnection-Fix-a-check-for-a-vfunc-being-implemented.patch
Patch6018:      backport-gthread-posix-Free-a-memory-leak-on-error-path.patch
Patch6019:      backport-gutils-Avoid-segfault-in-g_get_user_database_entry.patch
Patch6020:      backport-glocalfileinfo-Fix-atime-mtime-mix.patch
Patch6021:      backport-gopenuriportal-Fix-GVariantBuilder-and-string-leakage.patch
Patch6022:      backport-gproxyaddressenumerator-Fix-string-leakage-on-an-invalid-input.patch
Patch6023:      backport-gsocks5proxy-Fix-buffer-overflow-on-a-really-long-domain-name.patch
Patch6024:      backport-gvariant-Fix-memory-leak-on-a-TYPE-CHECK-failure.patch
Patch6025:      backport-gvariant-Fix-pointers-being-dereferenced-despite-NULL-checks.patch
Patch6026:      backport-gtype-Fix-pointer-being-dereferenced-despite-NULL-check.patch
Patch6027:      backport-add-OOM-handling-in-mimemagic.patch
Patch6028:      backport-garray-buffer-overflow-fix.patch
Patch6029:      backport-gutf8-add-string-length-check-when-ending-character-offset-is-1.patch
Patch6030:      backport-gvariant-serialiser-Prevent-unbounded-recursion.patch
Patch6031:      backport-dbusmessage-Disallow-empty-structures-tuples-in-D-Bus-messages.patch
Patch6032:      backport-gdbusmessage-Disallow-zero-length-elements-in-arrays.patch
Patch6033:      backport-garray-Fix-integer-overflows-in-element-capacity-calculations.patch
Patch6034:      backport-gutils-Fix-g_find_program_in_path-to-return-an-absolute-path.patch
Patch6035:      backport-Fix-memory-leak-in-gdbusauthmechanismsha1.patch
Patch6036:      backport-gprintf-Fix-a-memory-leak-with-an-invalid-format.patch
Patch6037:      backport-tests-Add-some-tests-for-g_vasprintf-invalid-format-strings.patch
Patch6038:      backport-tests-Add-some-tests-for-g_string_append_vprintf.patch
Patch6039:      backport-gdbusmethodinvocation-Fix-a-leak-on-an-early-return-path.patch
Patch6040:      backport-gdbusmethodinvocation-Fix-dead-code-for-type-checking-GetAll.patch
Patch6041:      backport-gdbusmethodinvocation-Drop-redundant-quote-from-warning.patch
Patch6042:      backport-tests-Add-unit-tests-for-GDBusMethodInvocation.patch
Patch6043:      backport-gio-tool-Fix-a-minor-memory-leak.patch
Patch6044:      backport-gopenuriportal-Fix-a-use-after-free-on-an-error-path.patch
Patch6045:      backport-xdgmime-fix-double-free.patch
Patch6046:      backport-gunixmounts-Add-cache-to-g_unix_mount_points_get.patch
Patch6047:      backport-Add-lock-in-_g_get_unix_mount_points-around-fsent-functions.patch
Patch6048:      backport-g_get_unix_mount_points-reduce-syscalls-inside-loop.patch
Patch6049:      backport-tests-Make-the-642026-test-take-100x-less-time.patch

BuildRequires:  chrpath gcc gcc-c++ gettext perl-interpreter
%ifnarch i686
BUildRequires:  gtk-doc
%endif
BUildRequires:  glibc-devel libattr-devel libselinux-devel meson
BuildRequires:  systemtap-sdt-devel pkgconfig(libelf) pkgconfig(libffi)
BuildRequires:  pkgconfig(libpcre) pkgconfig(mount) pkgconfig(zlib)
BuildRequires:  python3-devel gamin-devel
BuildRequires:  desktop-file-utils shared-mime-info
%ifarch i686
BuildRequires:  libxslt
%endif

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

Recommends:     shared-mime-info

Conflicts:      gcr < 3.28.1

%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 and test files for the GLib library
Requires:       %{name} = %{version}-%{release}

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

%description    devel
Development and test files for the GLib library.

%ifnarch i686
%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.
%endif

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

%build
rm glib/pcre/*.[ch]
%meson --default-library=both -Ddtrace=true \
%ifarch i686
	-Dman=false -Dgtk_doc=false \
%else
	-Dman=true -Dgtk_doc=true \
%endif 
    -Dsystemtap=true -Dfam=true -Dinstalled_tests=true

%meson_build

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

%check
%meson_test

%install
%meson_install
touch -r gio/gdbus-2.0/codegen/config.py.in %{buildroot}%{_datadir}/glib-2.0/codegen/*.py
chrpath --delete %{buildroot}%{_libdir}/*.so

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

mv  %{buildroot}%{_bindir}/gio-querymodules %{buildroot}%{_bindir}/gio-querymodules-%{__isa_bits}
touch %{buildroot}%{_libdir}/gio/modules/giomodule.cache
%find_lang glib20

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

mkdir -p $RPM_BUILD_ROOT/etc/ld.so.conf.d
echo %{_libexecdir}/installed-tests/glib > $RPM_BUILD_ROOT/etc/ld.so.conf.d/%{name}-%{_arch}.conf

%ldconfig_scriptlets devel



%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
%defattr(-,root,root)
%doc AUTHORS NEWS README
%license COPYING
%{_libdir}/*.so.*
%{_libdir}/gio/modules/libgiofam.so
%dir %{_libdir}/gio
%ghost %{_libdir}/gio/modules/giomodule.cache

%dir %{_datadir}/glib-2.0
%dir %{_datadir}/bash-completion
%{_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
%defattr(-,root,root)
%config(noreplace) /etc/ld.so.conf.d/*
%{_libdir}/lib*.so
%{_libdir}/glib-2.0
%{_libdir}/pkgconfig/*
%{_libdir}/*.a
%{_includedir}/*
%{_libexecdir}/installed-tests
%exclude %{_libexecdir}/installed-tests/glib/cert-tests
%exclude %{_libexecdir}/installed-tests/glib/tls-certificate

%{_datadir}/aclocal/*
%{_datadir}/glib-2.0/*
%{_datadir}/bash-completion/completions/gresource
%{_datadir}/gdb/
%{_datadir}/gettext/
%{_datadir}/systemtap/
%{_datadir}/installed-tests
%exclude %{_datadir}/installed-tests/glib/tls-certificate.test

%{_bindir}/glib-genmarshal
%{_bindir}/glib-gettextize
%{_bindir}/glib-mkenums
%{_bindir}/gobject-query
%{_bindir}/gtester
%{_bindir}/gdbus-codegen
%{_bindir}/glib-compile-resources
%{_bindir}/gresource
%attr (0755, root, root) %{_bindir}/gtester-report
%ifarch i686
%exclude %{_libexecdir}/installed-tests/glib/libgdbus-example-objectmanager.a
%exclude %{_datadir}/glib-2.0/codegen/__pycache__
%exclude %{_datadir}/glib-2.0/gdb/__pycache__
%exclude %{_datadir}/installed-tests/glib/static-link.test
%endif

%ifnarch i686
%files help
%defattr(-,root,root)
%{_mandir}/man1/*
%doc %{_datadir}/gtk-doc/html/*
%endif

%changelog
* Wed Dec 14 2022 hanhuihui <hanhuihui5@huawei.com> - 2.66.8-8
- fix failed tests

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

* Mon May 09 2022 wangkerong <wangkerong@h-partners.com> - 2.66.8-6
- fix issues found by svace static code analyzer
  fix segfault,memory leak,EOF,arguments leak

* Thu Dec 16 2021 wangkerong <wangkerong@huawei.com> - 2.66.8-5
- fixed the fileutils testcase failure when the rpmbuild -ba command is used to building

* Tue Sep 7 2021 fengtao <fengtao40@huawei.com> - 2.66.8-4
- Type:bugfix
- ID:NA
- SUG:NA
- DESE:enable all tests

* Tue Aug 24 2021 yangcheng <yangcheng87@huawei.com> - 2.66.8-3
- Type:bugfix
- ID:NA
- SUG:NA
- DESE:remove the installation dependency of the main pakage on the help package

* Thu Aug 19 2021 liuyumeng <liuyumeng5@huawei.com> - 2.66.8-2
- Type:bugfix
- ID:NA
- SUG:NA
- DESE:fix a memory leak

* Sat Jun 5 2021 wangkerong <wangkerong@huawei.com> - 2.66.8-1
- Type:NA
- Id:NA
- SUG:NA
- DESC:Upgrade to 2.66.8 

* Fri May 21 2021 hanhui<hanhui15@huawei.com> - 2.62.5-7
- add i686 options，round community patches

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

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

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

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

* Thu Nov 5 2020 wangye<wangye70@huawei.com> - 2.62.5-2
- add require for package

* Thu Apr 16 2020 hexiujun<hexiujun1@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
