File glib2.spec of Package glib2.10237

#
# spec file for package glib2
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#


%define with_systemtap 1
%define _name glib
Name:           glib2
Version:        2.54.3
Release:        0
# FIXME: find out if tapsets should really be in devel package or in main package
Summary:        General-Purpose Utility Library
License:        LGPL-2.1+
Group:          Development/Libraries/C and C++
Url:            http://www.gtk.org/
Source:         http://download.gnome.org/sources/glib/2.54/%{_name}-%{version}.tar.xz
Source1:        glib2.sh
Source2:        glib2.csh
# Not upstream file. Only proposes upstream packages:
Source4:        glib2-upstream-gnome_defaults.conf
# Some documentation for people writing branding packages, shipped in the branding-upstream package
Source5:        README.Gsettings-overrides
Source6:        macros.glib2
# Not depending on gtk-doc shortens bootstrap compilation path.
# Please update this file from the latest gtk-doc package:
Source7:        gtk-doc.m4
# zsh completion from https://github.com/jmatsuzawa/zsh-comp-gsettings
Source8:        gsettings.zsh
Source98:       glib2-rpmlintrc
Source99:       baselibs.conf
# PATCH-FEATURE-UPSTREAM glib2-bgo569829-gettext-gkeyfile.patch fate300461 bgo569829 vuntz@novell.com -- Look for translation of desktop entry strings via gettext, part that we share with Ubuntu and try to push upstream
Patch10:        glib2-bgo569829-gettext-gkeyfile.patch
# PATCH-FEATURE-OPENSUSE glib2-fate300461-gettext-gkeyfile-suse.patch fate300461 vuntz@novell.com -- Look for translation of desktop entry strings via gettext, part that deals with the openSUSE specific infrastructure (with desktop_translations)
Patch11:        glib2-fate300461-gettext-gkeyfile-suse.patch
# PATCH-FIX-OPENSUSE glib2-suppress-schema-deprecated-path-warning.patch rh#814053 badshah400@gmail.com -- Suppress the deprecated path warning since it fills up screen unnecessarily during package installations/upgrade.
Patch13:        glib2-suppress-schema-deprecated-path-warning.patch
# PATCH-FIX-OPENSUSE glib2-dbus-socket-path.patch bnc#845287 dimstar@opensuse.org -- Have gio look for the system dbus socket in /run instead of /var/run.
Patch14:        glib2-dbus-socket-path.patch
# PATCH-FIX-OPENSUSE glib2-gdbus-codegen-version.patch  olaf@aepfle.de -- Remove version string from files generated by gdbus-codegen
Patch16:        glib2-gdbus-codegen-version.patch
# PATCH-FIX-UPSTREAM glib2-gsettings-overrides-per-session.patch bgo#746592 bsc#1070090 xwang@suse.com -- gsettings default value can be overridden depending on session
Patch18:        glib2-gsettings-overrides-per-session.patch
# PATCH-FIX-UPSTREAM glib2-gmain-partial-revert.patch bgo#761102 bjorn.lie@gmail.com -- gmain: Partial revert of recent wakeup changes to gmain.c
Patch19:        glib2-gmain-partial-revert.patch
# PATCH-FIX-UPSTREAM glib2-CVE-2018-16428.patch bnc#1107121 CVE-2018-16428 qzhao@suse.com -- Fix crash in error handling path for closing elements.
Patch20:        glib2-CVE-2018-16428.patch
# PATCH-FIX-UPSTREAM glib2-CVE-2018-16429.patch bsc#1107116 CVE-2018-16429 qzheng@suse.com -- Fix unvalidated UTF-8 read in markup parsing error paths.
Patch21:        glib2-CVE-2018-16429.patch
# PATCH-FIX-UPSTREAM 00[01-15]*.patch  sreeves@suse.com -- set of 15 patches fixing bsc#1111499
Patch101:       0001-gvariant-Fix-checking-arithmetic-for-tuple-element-e.patch
Patch102:       0002-gvarianttype-Impose-a-recursion-limit-of-64-on-varia.patch
Patch103:       0003-gvariant-Check-array-offsets-against-serialised-data.patch
Patch104:       0004-gvariant-Check-tuple-offsets-against-serialised-data.patch
Patch105:       0005-gvariant-Limit-GVariant-strings-to-G_MAXSSIZE.patch
Patch106:       0006-gdbusmessage-Validate-type-of-message-header-signatu.patch
Patch107:       0007-gdbusmessage-Improve-documentation-for-g_dbus_messag.patch
Patch108:       0008-gdbusmessage-Clarify-error-returns-for-g_dbus_messag.patch
Patch109:       0009-gdbusmessage-Fix-a-typo-in-a-documentation-comment.patch
Patch110:       0010-gdbusmessage-Check-for-valid-GVariantType-when-parsi.patch
Patch111:       0011-gvariant-Clarify-internal-documentation-about-GVaria.patch
Patch112:       0012-tests-Tidy-up-GError-handling-in-gdbus-serialization.patch
Patch113:       0013-tests-Use-g_assert_null-in-gdbus-serialization-test.patch
Patch114:       0014-gutf8-Add-a-g_utf8_validate_len-function.patch
Patch115:       0015-glib-Port-various-callers-to-use-g_utf8_validate_len.patch
BuildRequires:  automake
BuildRequires:  docbook-xsl-stylesheets
BuildRequires:  fdupes
BuildRequires:  gamin-devel
BuildRequires:  gcc-c++
BuildRequires:  libmount-devel
BuildRequires:  libselinux-devel
# glib/Makefile.am calls config.status, and thus triggers a bootstrap
BuildRequires:  libtool
BuildRequires:  pkgconfig
BuildRequires:  python3-base
# gdbus-codegen is run during the build, so we need python-xml
BuildRequires:  python3-xml
BuildRequires:  xsltproc
# Needed for gresource
BuildRequires:  pkgconfig(libelf) >= 0.8.12
BuildRequires:  pkgconfig(libffi)
BuildRequires:  pkgconfig(libpcre) >= 8.13
BuildRequires:  pkgconfig(zlib)
PreReq:         /bin/sed
# For temporary %%posttrans script only.
PreReq:         coreutils
%if 0%{?with_systemtap}
BuildRequires:  systemtap-sdt-devel
# systemtap-sdt-devel on openSUSE 11.3 was missing a Requires: python.
%if %{?suse_version} <= 1130
BuildRequires:  python
%endif
%endif
BuildRequires:  translation-update-upstream

%description
GLib is a general-purpose utility library, which provides many useful
data types, macros, type conversions, string utilities, file utilities,
a main loop abstraction, and so on.

%package tools
Summary:        Tools from glib2, a general-purpose utility library
Group:          Development/Libraries/C and C++

%description tools
GLib is a general-purpose utility library, which provides many useful
data types, macros, type conversions, string utilities, file utilities,
a main loop abstraction, and so on.

%package -n gio-branding-upstream
Summary:        Upstream definitions of default settings and applications
Group:          System/Libraries
Requires:       libgio-2_0-0 = %{version}
Supplements:    packageand(libgio-2_0-0:branding-upstream)
Conflicts:      otherproviders(gio-branding)
Provides:       %{name}-branding-upstream = %{version}
Obsoletes:      %{name}-branding-upstream < %{version}
Provides:       gio-branding = %{version}
BuildArch:      noarch
#BRAND: The /etc/gnome_defaults.conf allows to define arbitrary
#BRAND: applications as preferred defaults.
#BRAND: A /usr/share/glib-2.0/schemas/$NAME.gschema.override file can
#BRAND: be used to override the default value for GSettings keys. See
#BRAND: README.Gsettings-overrides for more details. The branding
#BRAND: package should then have proper Requires for features changed
#BRAND: with such an override file.
# NOTE: gnome_defaults is not an upstream feature, but a SuSE
# enhancement, but to conform branding conventions, the package is named
# as gio-branding-upstream.

%description -n gio-branding-upstream
This package provides upstream defaults for settings stored with
GSettings and applications used by the MIME system.

%package devel
Summary:        Development files for glib, a general-purpose utility library
# Now require the subpackages too
Group:          Development/Libraries/C and C++
Requires:       glib2-tools = %{version}
Requires:       glibc-devel
Requires:       libgio-2_0-0 = %{version}
Requires:       libglib-2_0-0 = %{version}
Requires:       libgmodule-2_0-0 = %{version}
Requires:       libgobject-2_0-0 = %{version}
Requires:       libgthread-2_0-0 = %{version}
Requires:       pkgconfig
# Required by gdbus-codegen
Requires:       python3-xml
Provides:       glib2-doc = 2.19.6
Obsoletes:      glib2-doc < 2.19.6
# bug437293
%ifarch ppc64
Obsoletes:      glib2-devel-64bit
%endif
#

%description devel
GLib is a general-purpose utility library, which provides many useful
data types, macros, type conversions, string utilities, file utilities,
a main loop abstraction, and so on.

This package contains the development files for GLib.

%package devel-static
Summary:        Static libraries for glib, a general-purpose utility library
Group:          Development/Libraries/C and C++
Requires:       %{name}-devel = %{version}

%description devel-static
GLib is a general-purpose utility library, which provides many useful
data types, macros, type conversions, string utilities, file utilities,
a main loop abstraction, and so on.

This package contains static versions of the GLib libraries.

%package -n libglib-2_0-0
Summary:        General-Purpose Utility Library
Group:          System/Libraries
Recommends:     %{name}-lang
Provides:       %{name} = %{version}
Obsoletes:      %{name} < %{version}
# bug437293
%ifarch ppc64
Obsoletes:      glib2-64bit
%endif
#

%description -n libglib-2_0-0
GLib is a general-purpose utility library, which provides many useful
data types, macros, type conversions, string utilities, file utilities,
a main loop abstraction, and so on.

%package -n libgmodule-2_0-0
Summary:        General-Purpose Utility Library -- Library for Modules
Group:          System/Libraries

%description -n libgmodule-2_0-0
GLib is a general-purpose utility library, which provides many useful
data types, macros, type conversions, string utilities, file utilities,
a main loop abstraction, and so on.

The libgmodule library provides a portable way to dynamically load
object files (commonly known as 'plug-ins').

%package -n libgio-2_0-0
Summary:        A virtual file system library API
# The tools are useful for people having libgio
Group:          System/Libraries
Requires:       %{name}-tools
# bnc#678518: libgio interacts with others by means of dbus-launch
Requires:       dbus-launch
Requires:       gio-branding = %{version}
# bnc#555605: shared-mime-info is required by libgio to properly detect mime types.
Requires:       shared-mime-info
# Needed for branding packages
Provides:       gio = %{version}
# Temporarily disable this, pending further discussion
# Recommends:     gvfs

%description -n libgio-2_0-0
GLib is a general-purpose utility library, which provides many useful
data types, macros, type conversions, string utilities, file utilities,
a main loop abstraction, and so on.

GIO provides a modern, easy-to-use VFS API.

%package -n libgio-fam
Summary:        GIO module to use FAM
# we need gio-querymodules in %%post/%%postun
Group:          System/Libraries
Requires(post): %{name}-tools
Requires(postun): %{name}-tools
Supplements:    packageand(libgio-2_0-0:fam)

%description -n libgio-fam
GLib is a general-purpose utility library, which provides many useful
data types, macros, type conversions, string utilities, file utilities,
a main loop abstraction, and so on.

This packages provides a GIO module to use FAM for file monitoring.

%package -n libgthread-2_0-0
Summary:        Portable API from glib wrapping system threads
Group:          System/Libraries

%description -n libgthread-2_0-0
GLib is a general-purpose utility library, which provides many useful
data types, macros, type conversions, string utilities, file utilities,
a main loop abstraction, and so on.

The libgthread library provides a portable way to write multi-threaded
software.

%package -n libgobject-2_0-0
Summary:        Object-Oriented Framework for C
Group:          System/Libraries

%description -n libgobject-2_0-0
GLib is a general-purpose utility library, which provides many useful
data types, macros, type conversions, string utilities, file utilities,
a main loop abstraction, and so on.

The GObject library provides an object-oriented framework for C.

%lang_package

%prep
%setup -q -n %{_name}-%{version}
translation-update-upstream
%patch10 -p1
%patch11 -p1
%patch13 -p1
%patch14 -p1
%patch16 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
%patch21 -p1
%patch101 -p1
%patch102 -p1
%patch103 -p1
%patch104 -p1
%patch105 -p1
%patch106 -p1
%patch107 -p1
%patch108 -p1
%patch109 -p1
%patch110 -p1
%patch111 -p1
%patch112 -p1
%patch113 -p1
%patch114 -p1
%patch115 -p1
cp -a %{SOURCE1} %{SOURCE2} %{SOURCE5} .
cp -a %{SOURCE4} gnome_defaults.conf
if ! test -f %{_datadir}/aclocal/gtk-doc.m4 ; then
    cp -a %{SOURCE7} m4macros/
fi

%build
# glib/Makefile.am always calls config.status, which requires aclocal
# in a matching version. Regenerate it now because we likely won't have
# the version of aclocal that was originally used.
autoreconf -fi
%configure \
    --enable-static \
    --enable-selinux \
    --enable-man \
    --with-python=%{_bindir}/python3 \
%if 0%{?with_systemtap}
    --enable-systemtap \
%endif
    --with-pcre=system

make %{?_smp_mflags} V=1

%check
# make check does not work on x86_64. See http://bugzilla.gnome.org/show_bug.cgi?id=554969
# %%{__make} %%{?_smp_mflags} check

%install
%make_install
%if 0%{?suse_version} <= 1120
rm %{buildroot}%{_datadir}/locale/en@shaw/LC_MESSAGES/*
%endif
%find_lang %{_name}20 %{?no_lang_C}
mkdir -p %{buildroot}%{_sysconfdir}/profile.d
install -D -m0644 glib2.sh %{buildroot}%{_sysconfdir}/profile.d/zzz-glib2.sh
install -D -m0644 glib2.csh %{buildroot}%{_sysconfdir}/profile.d/zzz-glib2.csh
install -D -m0644 gnome_defaults.conf %{buildroot}%{_sysconfdir}/gnome_defaults.conf
# default apps magic
mkdir -p %{buildroot}%{_localstatedir}/cache/gio-2.0 %{buildroot}%{_datadir}/applications
touch %{buildroot}%{_localstatedir}/cache/gio-2.0/gnome-mimeapps.list
touch %{buildroot}%{_localstatedir}/cache/gio-2.0/xfce-mimeapps.list
touch %{buildroot}%{_localstatedir}/cache/gio-2.0/lxde-mimeapps.list
ln -s %{_localstatedir}/cache/gio-2.0/gnome-mimeapps.list %{buildroot}%{_datadir}/applications/gnome-mimeapps.list
# gio-querymodules magic
%if "%{_lib}" == "lib64"
mv %{buildroot}%{_bindir}/gio-querymodules %{buildroot}%{_bindir}/gio-querymodules-64
%endif
touch %{buildroot}%{_libdir}/gio/modules/giomodule.cache
# gsettings magic
touch %{buildroot}%{_datadir}/glib-2.0/schemas/gschemas.compiled
# remove files we don't care about
find %{buildroot}%{_libdir} -name '*.la' -type f -delete -print
rm %{buildroot}%{_libdir}/gio/modules/libgiofam.a
# Install rpm macros
mkdir -p %{buildroot}%{_sysconfdir}/rpm
cp %{SOURCE6} %{buildroot}%{_sysconfdir}/rpm
# Install zsh completion for gsettings
mkdir -p  %{buildroot}%{_datadir}/zsh/site-functions/
cp %{SOURCE8} %{buildroot}%{_datadir}/zsh/site-functions/_gsettings
%fdupes %{buildroot}/%{_prefix}

%posttrans
# If it is an upgrade and gnome_defaults.conf were edited,
# move it from its old location. (Upgrade from <= 10.2)
if test -f etc/opt/gnome/gnome_defaults.conf.rpmsave ; then
    mv etc/gnome_defaults.conf etc/gnome_defaults.conf.rpmnew
    sed "s:etc/opt/gnome:etc:g;s:opt/gnome:usr:g" <etc/opt/gnome/gnome_defaults.conf.rpmsave >etc/gnome_defaults.conf
fi
# If it is an upgrade and gnome_defaults.conf were edited,
# revive it from the RPM backup. (Upgrade from == 10.3)
if test -f etc/gnome_defaults.conf.rpmsave ; then
    mv etc/gnome_defaults.conf etc/gnome_defaults.conf.rpmnew
    mv etc/gnome_defaults.conf.rpmsave etc/gnome_defaults.conf
fi

%filetriggerin -n glib2-tools -- %{_datadir}/glib-2.0/schemas
%{_bindir}/glib-compile-schemas %{_datadir}/glib-2.0/schemas

%filetriggerpostun -n glib2-tools -- %{_datadir}/glib-2.0/schemas
%{_bindir}/glib-compile-schemas %{_datadir}/glib-2.0/schemas

%post -n libglib-2_0-0 -p /sbin/ldconfig

%post -n libgobject-2_0-0 -p /sbin/ldconfig

%post -n libgthread-2_0-0 -p /sbin/ldconfig

%post -n libgio-2_0-0
/sbin/ldconfig
for ENV in gnome xfce lxde ; do
	if ! test -f %{_localstatedir}/cache/gio-2.0/$ENV-mimeapps.list ; then
	cat >%{_localstatedir}/cache/gio-2.0/$ENV-mimeapps.list <<EOF
# Dummy file. Install desktop-file-utils to get a better defaults.
[Default Applications]
EOF
fi
done

%post -n libgmodule-2_0-0 -p /sbin/ldconfig

%post -n libgio-fam
%if 0
###############################################################################
# Note: when updating this scriptlet, don't forget to also update baselibs.conf
###############################################################################
%endif
%if "%{_lib}" == "lib64"
  %{_bindir}/gio-querymodules-64 %{_libdir}/gio/modules
%else
  %{_bindir}/gio-querymodules %{_libdir}/gio/modules
%endif

%postun -n libglib-2_0-0 -p /sbin/ldconfig

%postun -n libgobject-2_0-0 -p /sbin/ldconfig

%postun -n libgthread-2_0-0 -p /sbin/ldconfig

%postun -n libgio-2_0-0 -p /sbin/ldconfig

%postun -n libgmodule-2_0-0 -p /sbin/ldconfig

%postun -n libgio-fam
%if 0
###############################################################################
# Note: when updating this scriptlet, don't forget to also update baselibs.conf
###############################################################################
%endif
%if "%{_lib}" == "lib64"
  [ -x %{_bindir}/gio-querymodules-64 ] &&  %{_bindir}/gio-querymodules-64 %{_libdir}/gio/modules || :
%else
  [ -x %{_bindir}/gio-querymodules ] && %{_bindir}/gio-querymodules %{_libdir}/gio/modules || :
%endif

%files tools
%defattr(-,root,root)
%{_bindir}/gapplication
%{_bindir}/gdbus
%{_bindir}/gio
%{_bindir}/gio-querymodules*
%{_bindir}/glib-compile-schemas
%{_bindir}/gresource
%{_bindir}/gsettings
%dir %{_datadir}/bash-completion
%dir %{_datadir}/bash-completion/completions
%{_datadir}/bash-completion/completions/gapplication
%{_datadir}/bash-completion/completions/gdbus
%{_datadir}/bash-completion/completions/gresource
%{_datadir}/bash-completion/completions/gsettings
%dir %{_datadir}/zsh
%dir %{_datadir}/zsh/site-functions
%{_datadir}/zsh/site-functions/_gsettings
%{_mandir}/man1/gapplication.1%{?ext_man}
%{_mandir}/man1/gdbus.1%{?ext_man}
%{_mandir}/man1/gio.1%{?ext_man}
%{_mandir}/man1/gio-querymodules.1%{?ext_man}
%{_mandir}/man1/glib-compile-schemas.1%{?ext_man}
%{_mandir}/man1/gresource.1%{?ext_man}
%{_mandir}/man1/gsettings.1%{?ext_man}
# We put those files here, but they don't really belong here. They just don't
# have a better home... The zzz-glib2 scripts could arguably be in
# libglib-2_0-0 but that would break the shared library policy.
%{_sysconfdir}/profile.d/zzz-glib2.*

%files -n gio-branding-upstream
%defattr(-,root,root)
%doc README.Gsettings-overrides
%config (noreplace) %{_sysconfdir}/gnome_defaults.conf

%files -n libglib-2_0-0
%defattr(-, root, root)
%doc AUTHORS README NEWS
%license COPYING
%{_libdir}/libglib*.so.*

%files -n libgmodule-2_0-0
%defattr(-, root, root)
%{_libdir}/libgmodule*.so.*

%files -n libgobject-2_0-0
%defattr(-, root, root)
%{_libdir}/libgobject*.so.*

%files -n libgthread-2_0-0
%defattr(-, root, root)
%{_libdir}/libgthread*.so.*

%files -n libgio-2_0-0
%defattr(-, root, root)
%{_libdir}/libgio*.so.*
%dir %{_libdir}/gio
%dir %{_libdir}/gio/modules
%ghost %{_libdir}/gio/modules/giomodule.cache
%dir %{_datadir}/glib-2.0/
%dir %{_datadir}/glib-2.0/schemas/
%ghost %{_datadir}/glib-2.0/schemas/gschemas.compiled
%{_datadir}/applications/gnome-mimeapps.list
%dir %{_localstatedir}/cache/gio-2.0
%ghost %{_localstatedir}/cache/gio-2.0/gnome-mimeapps.list
%ghost %{_localstatedir}/cache/gio-2.0/xfce-mimeapps.list
%ghost %{_localstatedir}/cache/gio-2.0/lxde-mimeapps.list

%files -n libgio-fam
%defattr(-,root,root)
%{_libdir}/gio/modules/libgiofam.so

%files lang -f %{_name}20.lang

%files devel
%defattr(-,root,root)
%doc ChangeLog
%{_bindir}/gdbus-codegen
%{_bindir}/glib-compile-resources
%{_bindir}/glib-genmarshal
%{_bindir}/glib-gettextize
%{_bindir}/glib-mkenums
%{_bindir}/gobject-query
%{_bindir}/gtester
%{_bindir}/gtester-report
%{_mandir}/man?/gdbus-codegen.*
%{_mandir}/man?/glib-compile-resources.*
%{_mandir}/man?/glib-genmarshal.*
%{_mandir}/man?/glib-gettextize.*
%{_mandir}/man?/glib-mkenums.*
%{_mandir}/man?/gobject-query.*
%{_mandir}/man?/gtester.*
%{_mandir}/man?/gtester-report.*
%dir %{_datadir}/aclocal
%{_datadir}/aclocal/glib-2.0.m4
%{_datadir}/aclocal/glib-gettext.m4
%{_datadir}/aclocal/gsettings.m4
%dir %{_datadir}/gettext/its/
%{_datadir}/gettext/its/gschema*
%dir %{_datadir}/glib-2.0/
%{_datadir}/glib-2.0/gdb/
%{_datadir}/glib-2.0/gettext/
%{_datadir}/glib-2.0/codegen/
%{_datadir}/glib-2.0/schemas/gschema.dtd
%{_datadir}/glib-2.0/valgrind/
%{_includedir}/glib-2.0
%{_includedir}/gio-unix-2.0
%{_libdir}/lib*.so
%dir %{_libdir}/glib-2.0/
%{_libdir}/glib-2.0/include/
%{_libdir}/pkgconfig/*.pc
%{_datadir}/gtk-doc/html/gio
%{_datadir}/gtk-doc/html/glib
%{_datadir}/gtk-doc/html/gobject
%{_datadir}/gdb/auto-load/%{_libdir}/*-gdb.py
%if 0%{?with_systemtap}
%{_datadir}/systemtap/tapset/*.stp
%endif
%{_sysconfdir}/rpm/macros.glib2
# Own these directories to not depend on gtk-doc while building:
%dir %{_datadir}/gtk-doc
%dir %{_datadir}/gtk-doc/html
# Own these directories to not depend on gdb
%dir %{_datadir}/gdb
%dir %{_datadir}/gdb/auto-load
%dir %{_datadir}/gdb/auto-load%{_prefix}
%dir %{_datadir}/gdb/auto-load%{_libdir}

%files devel-static
%defattr(-,root,root)
%{_libdir}/lib*.a

%changelog
openSUSE Build Service is sponsored by