summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Szyndela <adrian.s@samsung.com>2020-01-22 12:45:24 +0100
committerAdrian Szyndela <adrian.s@samsung.com>2020-01-31 11:46:28 +0100
commit599660c6eb6b8885ced2b3bb0964436734c52fb5 (patch)
tree88b9288805398f26f95a9df02ed4240f4a37a63e
parent549aed72c9d3ab598bb0f11d3f08819f9f2c5acd (diff)
downloadglib-599660c6eb6b8885ced2b3bb0964436734c52fb5.tar.gz
glib-599660c6eb6b8885ced2b3bb0964436734c52fb5.tar.bz2
glib-599660c6eb6b8885ced2b3bb0964436734c52fb5.zip
spec: switch to meson build system
This commit is based on commit 9a04ca6058b68 by DongHun Kwak <dh0128.kwak@samsung.com>. This switches spec to meson build system which is the only build system supported by glib 2.59.1. We also drop the coverage package with this commit. Change-Id: Iceb6d74380c497b4b02ee4fd30e706b3033a57ca
-rw-r--r--gio/meson.build11
-rw-r--r--gio/tests/meson.build79
-rw-r--r--glib/meson.build1
-rw-r--r--meson_options.txt5
-rw-r--r--packaging/glib2.spec228
5 files changed, 132 insertions, 192 deletions
diff --git a/gio/meson.build b/gio/meson.build
index 47aa0b48d..fcebb84dd 100644
--- a/gio/meson.build
+++ b/gio/meson.build
@@ -229,6 +229,8 @@ gdbus_sources = files(
'gdbusobjectmanagerclient.c',
'gdbusobjectmanagerserver.c',
'gtestdbus.c',
+ 'gkdbus.c',
+ 'gkdbusfakedaemon.c',
)
# Generate gdbus-codegen
@@ -722,6 +724,7 @@ gio_headers = files(
'gzlibdecompressor.h',
'glistmodel.h',
'gliststore.h',
+ 'tizen_header_glib.h',
)
gio_headers += application_headers
@@ -791,6 +794,12 @@ else
gio_dtrace_hdr = []
endif
+libdbuspolicy_dep = dependency('', required : false)
+if get_option('libdbuspolicy')
+ libdbuspolicy_dep = dependency('libdbuspolicy1', version : '>=1', required : true)
+ gio_c_args += '-DLIBDBUSPOLICY'
+endif
+
libgio = library('gio-2.0',
gioenumtypes_h, gioenumtypes_c, gnetworking_h, gio_sources,
gio_dtrace_hdr, gio_dtrace_obj,
@@ -803,7 +812,7 @@ libgio = library('gio-2.0',
# '$(gio_win32_res_ldflag)',
dependencies : [libz_dep, libdl_dep, libmount_dep, libglib_dep,
libgobject_dep, libgmodule_dep, selinux_dep, xattr_dep,
- platform_deps, network_libs],
+ platform_deps, network_libs, libdbuspolicy_dep],
c_args : gio_c_args,
objc_args : gio_c_args,
# intl.lib is not compatible with SAFESEH
diff --git a/gio/tests/meson.build b/gio/tests/meson.build
index 8bf555cf2..7b48c30df 100644
--- a/gio/tests/meson.build
+++ b/gio/tests/meson.build
@@ -528,54 +528,57 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
# Create object file containing resource data
# for testing the external data option
if build_machine.system() == 'linux'
- test_gresource_binary = custom_target('test5.gresource',
- input : 'test5.gresource.xml',
- output : 'test5.gresource',
- command : [glib_compile_resources,
- '--target=@OUTPUT@',
- '--sourcedir=' + meson.current_source_dir(),
- '--sourcedir=' + meson.current_build_dir(),
- '@INPUT@'],
- install_dir : installed_tests_execdir,
- install : installed_tests_enabled)
+## FIXME: disabled because it segfaults while linking for unknown reason
+# test_gresource_binary = custom_target('test5.gresource',
+# input : 'test5.gresource.xml',
+# output : 'test5.gresource',
+# command : [glib_compile_resources,
+# '--target=@OUTPUT@',
+# '--sourcedir=' + meson.current_source_dir(),
+# '--sourcedir=' + meson.current_build_dir(),
+# '@INPUT@'],
+# install_dir : installed_tests_execdir,
+# install : installed_tests_enabled)
# Create resource data file
- test_resources_binary_c = custom_target('test_resources_binary.c',
- input : 'test5.gresource.xml',
- output : 'test_resources_binary.c',
- command : [glib_compile_resources,
- '--target=@OUTPUT@',
- '--sourcedir=' + meson.current_source_dir(),
- '--sourcedir=' + meson.current_build_dir(),
- '--generate-source',
- '--external-data',
- '--c-name', '_g_binary_test1',
- '@INPUT@'])
+# test_resources_binary_c = custom_target('test_resources_binary.c',
+# input : 'test5.gresource.xml',
+# output : 'test_resources_binary.c',
+# command : [glib_compile_resources,
+# '--target=@OUTPUT@',
+# '--sourcedir=' + meson.current_source_dir(),
+# '--sourcedir=' + meson.current_build_dir(),
+# '--generate-source',
+# '--external-data',
+# '--c-name', '_g_binary_test1',
+# '@INPUT@'])
# Create object file containing resource data
- test_resources_binary = custom_target('test_resources.o',
- input : test_gresource_binary,
- output : 'test_resources.o',
- command : ['ld',
- '-r',
- '-b','binary',
- '@INPUT@',
- '-o','@OUTPUT@'])
+# test_resources_binary = custom_target('test_resources.o',
+# input : test_gresource_binary,
+# output : 'test_resources.o',
+# command : ['ld',
+# '-r',
+# '-b','binary',
+# '@INPUT@',
+# '-o','@OUTPUT@'])
# Rename symbol to match the one in the C file
- test_resources_binary2 = custom_target('test_resources2.o',
- input : test_resources_binary,
- output : 'test_resources2.o',
- command : ['objcopy',
- '--add-symbol','_g_binary_test1_resource_data=.data:0',
- '@INPUT@',
- '@OUTPUT@'])
+# test_resources_binary2 = custom_target('test_resources2.o',
+# input : test_resources_binary,
+# output : 'test_resources2.o',
+# command : ['objcopy',
+# '--add-symbol','_g_binary_test1_resource_data=.data:0',
+# '@INPUT@',
+# '@OUTPUT@'])
gio_tests += {
'resources' : {
'extra_sources' : [test_gresource, test_resources_c, test_resources2_c,
- test_resources2_h, test_resources_binary_c,
- test_resources_binary2],
+ test_resources2_h
+# , test_resources_binary_c,
+# test_resources_binary2
+ ],
},
}
else
diff --git a/glib/meson.build b/glib/meson.build
index 512ab82d2..764adc062 100644
--- a/glib/meson.build
+++ b/glib/meson.build
@@ -205,6 +205,7 @@ glib_sources = files(
'gvariant-core.c',
'gvariant-parser.c',
'gvariant-serialiser.c',
+ 'gvariant-vectors.c',
'gvarianttypeinfo.c',
'gvarianttype.c',
'gversion.c',
diff --git a/meson_options.txt b/meson_options.txt
index 5c5b4dfe1..40c342b84 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -89,3 +89,8 @@ option('nls',
value : 'auto',
yield: true,
description : 'Enable native language support (translations)')
+
+option('libdbuspolicy',
+ type : 'boolean',
+ value : false,
+ description : 'enable libdbuspolicy for kdbus transport')
diff --git a/packaging/glib2.spec b/packaging/glib2.spec
index 25092eb2b..2e498a151 100644
--- a/packaging/glib2.spec
+++ b/packaging/glib2.spec
@@ -2,17 +2,49 @@
# should anchor any reverse-dependencies
%global __provides_exclude_from ^(.*\\.extension-kdbus)$
-%bcond_with coverage
-%define baseline 2.52
+%define baseline 2.59
%define with_systemtap 0
%define keepstatic 1
+%define build_dir _build
+%define build_dir_kdbus _build_kdbus
+
+# The 'meson' macro is defined in rpm macros, but it uses features from rpm 4.15 ({shrink, set_build_flags)
+# Below is a version suitable for our purposes
+%define meson \
+ CFLAGS="${CFLAGS:-%optflags}" \
+ export CFLAGS \
+ %{__meson} \\\
+ --buildtype=plain \\\
+ --prefix=%{_prefix} \\\
+ --libdir=%{_libdir} \\\
+ --libexecdir=%{_libexecdir} \\\
+ --bindir=%{_bindir} \\\
+ --sbindir=%{_sbindir} \\\
+ --includedir=%{_includedir} \\\
+ --datadir=%{_datadir} \\\
+ --mandir=%{_mandir} \\\
+ --infodir=%{_infodir} \\\
+ --localedir=%{_datadir}/locale \\\
+ --sysconfdir=%{_sysconfdir} \\\
+ --localstatedir=%{_localstatedir} \\\
+ --sharedstatedir=%{_sharedstatedir} \\\
+ --wrap-mode=%{__meson_wrap_mode} \\\
+ %{_vpath_builddir}
+# Ninja macros below are defined for ninja in e.g. fedora distro, but
+# so far they are not provided by Tizen's ninja package.
+%define __ninja %{_bindir}/ninja
+%define __ninja_common_opts -v %{?_smp_flags}
+%define ninja_build \
+ %{__ninja} %{__ninja_common_opts}
+%define ninja_install \
+ DESTDIR=%{buildroot} %{__ninja} install %{__ninja_common_opts}
Name: glib2
-Version: 2.52.2
+Version: 2.59.1
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.0+
+License: LGPL-2.1+
Group: Base/Libraries
Url: http://www.gtk.org/
Source: http://download.gnome.org/sources/glib/%{baseline}/%{name}-%{version}.tar.xz
@@ -30,6 +62,8 @@ Source1001: glib2.manifest
BuildRequires: automake
BuildRequires: fdupes
BuildRequires: gcc-c++
+BuildRequires: m4
+BuildRequires: meson >= 0.49.2
BuildRequires: pkg-config
BuildRequires: python
BuildRequires: gettext-tools
@@ -41,7 +75,8 @@ BuildRequires: systemtap-sdt-devel
# Needed for gresource
BuildRequires: pkgconfig(libelf) >= 0.8.12
BuildRequires: pkgconfig(libffi)
-BuildRequires: pkgconfig(libpcre) >= 8.13
+BuildRequires: pkgconfig(libpcre) >= 8.31
+BuildRequires: pkgconfig(mount) >= 2.28
BuildRequires: pkgconfig(zlib)
# Enable support for libdbuspolicy (only for kdbus transport)
BuildRequires: pkgconfig(libdbuspolicy1)
@@ -109,8 +144,9 @@ 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}
-Summary: General-Purpose Utility Library -- Static Libraries
%description devel-static
GLib is a general-purpose utility library, which provides many useful
@@ -194,24 +230,6 @@ Requires: %{name} = %{version}
This package is part of 'dbus-integration-tests' framework and contains set of tests
for gdbus component.
-%if %{with coverage}
-%package coverage
-Summary: Special version of glib libraries for getting coverage analysis
-
-%description coverage
-Special version of glib libraries for getting coverage analysis. *.gcda coverage files
-are generated on each use of library in directory set by GCOV_PREFIX and GCOV_PREFIX_STRIP.
-Use the library by modifying LD_LIBRARY_PATH.
-This package is intended for debug/test use only.
-
-%package coverage-objects
-Summary: Generated object files and gcov notes for coverage analysis
-
-%description coverage-objects
-Objects and gcno files to analyze coverage.
-This package is intended for debug/test use only.
-%endif
-
%prep
%setup -q -n %{name}-%{version}
@@ -223,112 +241,48 @@ cp -a %{S:4} gnome_defaults.conf
if ! test -f %{_datadir}/aclocal/gtk-doc.m4 ; then
cp -a %{S:7} m4macros/
fi
-NOAUTORECONF=1 NOCONFIGURE=1 ./autogen.sh
-export CFLAGS+=" -D_TIZEN_DBUS_TOUCH"
-%ifarch %{arm}
-export CFLAGS=${CFLAGS/-Wa,-mimplicit-it=thumb/}" -marm"
-%endif
-
-export CFLAGS="${CFLAGS} -fPIC"
-export LDFLAGS="${LDFLAGS}"
-# Create kdbus extension first (libgio)
-%reconfigure \
- --enable-static \
-%if 0%{?with_systemtap}
- --enable-systemtap \
-%endif
- --enable-libdbuspolicy \
- --enable-always-build-tests \
- --enable-installed-tests \
- --enable-force-dbus-tests \
-%if %{with coverage}
- --disable-gcov-coverage \
-%endif
- --with-pcre=system \
- --enable-libmount=no
-
-%{__make} %{?_smp_mflags} V=1
-
-mkdir -p extension-kdbus
-pushd gio/.libs/
-# rm if symlink. mv if regular file.
-for FILE in libgio-*.so*; do test -h "$FILE" && rm "$FILE" || mv "$FILE" ../../extension-kdbus/ ; done
-popd
+%define _vpath_srcdir .
-%{__make} clean
+# Normal build
+%define _vpath_builddir %{build_dir}
+%meson \
+ --default-library=both \
+ -Dinstalled_tests=true \
+ -Db_pie=true
+%meson_build
-
-
-# Support for generating separate packages with libraries generating coverage files
-# WARNING: if coverage build is enabled, incremental builds will not work correctly.
-# Use the option only to generate glib2-coverage packages.
-%if %{with coverage}
-%reconfigure \
- --disable-static \
- --enable-libdbuspolicy \
- --with-pcre=system \
- --enable-libmount=no \
- --enable-gcov-coverage
-
-%{__make} %{?_smp_mflags} V=1
-
-mkdir -p coverage
-mv gio/.libs/libgio-2.0.so* glib/.libs/libglib-2.0.so* gthread/.libs/libgthread-2.0.so* gobject/.libs/libgobject-2.0.so* gmodule/.libs/libgmodule-2.0.so* coverage
-mkdir -p coverage-objects
-find g* -name '*.o' -exec mv '{}' coverage-objects ';'
-find g* -name '*.gcno' -exec mv '{}' coverage-objects ';'
-
-%{__make} clean
-%endif
-
-%reconfigure \
- --enable-static \
-%if 0%{?with_systemtap}
- --enable-systemtap \
-%endif
- --enable-always-build-tests \
- --enable-installed-tests \
- --enable-force-dbus-tests \
-%if %{with coverage}
- --disable-gcov-coverage \
-%endif
- --with-pcre=system \
- --enable-libmount=no
-
-%{__make} %{?_smp_mflags} V=1
+# Configure kdbus extension build
+%define _vpath_builddir %{build_dir_kdbus}
+%meson \
+ --default-library=both \
+ -Dlibdbuspolicy=true \
+ -Db_pie=true
+%meson_build
# compile test-runner for 'dbus-integration-test' framework
%__cc %{_builddir}/%{name}-%{version}/test-runner.c -fPIC -pie -o %{_builddir}/%{name}-%{version}/glib-tests
%install
-%make_install
+# kdbus extension install and gather required files
+%define _vpath_builddir %{build_dir_kdbus}
+%meson_install
+for FILE in %{buildroot}%{_libdir}/libgio*; do mv "$FILE" "$FILE.extension-kdbus"; done
+
+# normal install overwriting kdbus extension install
+%define _vpath_builddir %{build_dir}
+%meson_install
%find_lang glib20 %{?no_lang_C}
-# kdbus extension
-pushd extension-kdbus
-for FILE in *; do mv "$FILE" "%{buildroot}%{_libdir}/$FILE.extension-kdbus"; done
-popd
-
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-defaults.list
-touch %{buildroot}%{_localstatedir}/cache/gio-2.0/xfce-defaults.list
-touch %{buildroot}%{_localstatedir}/cache/gio-2.0/lxde-defaults.list
-ln -s %{_localstatedir}/cache/gio-2.0/gnome-defaults.list %{buildroot}%{_datadir}/applications/defaults.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
# prepare tests for 'dbus-integration-test' framework
%define relative_dbus_tests_base_dir %{_prefix}/lib/dbus-tests
@@ -345,41 +299,23 @@ rm -Rf %{buildroot}%{_prefix}/share/installed-tests/glib/
# Install rpm macros
mkdir -p %{buildroot}%{_sysconfdir}/rpm
-cp %{S:6} %{buildroot}%{_sysconfdir}/rpm
-%fdupes %{buildroot}
-
-# install libraries with coverage analysis enabled
-%if %{with coverage}
-%define relative_cov_lib_dir %{relative_dbus_tests_base_dir}/coverage-libs
-%define cov_lib_dir %{buildroot}%{relative_cov_lib_dir}
-
-mkdir -p %{cov_lib_dir}
-mkdir -p %{cov_lib_dir}/objects
-install -m 0755 coverage/*.so* %{cov_lib_dir}
-install -m 0644 coverage-objects/* %{cov_lib_dir}/objects
-%endif
+cp %{SOURCE6} %{buildroot}%{_sysconfdir}/rpm
-%post -n libglib -p /sbin/ldconfig
+mkdir -p %{buildroot}%{_libdir}/gio/modules
+mkdir -p %{buildroot}%{_datadir}/glib-2.0/schemas/
+%post -n libglib -p /sbin/ldconfig
%post -n libgobject -p /sbin/ldconfig
-
%post -n libgthread -p /sbin/ldconfig
-
%post -n libgio -p /sbin/ldconfig
-
%post -n libgmodule -p /sbin/ldconfig
%postun -n libglib -p /sbin/ldconfig
-
%postun -n libgobject -p /sbin/ldconfig
-
%postun -n libgthread -p /sbin/ldconfig
-
%postun -n libgio -p /sbin/ldconfig
-
%postun -n libgmodule -p /sbin/ldconfig
-
%files tools
%manifest %{name}.manifest
%defattr(-,root,root)
@@ -389,12 +325,14 @@ install -m 0644 coverage-objects/* %{cov_lib_dir}/objects
%{_datadir}/bash-completion/completions/gresource
%{_datadir}/bash-completion/completions/gsettings
%{_bindir}/gdbus
+%{_bindir}/gio
+%{_bindir}/gio-launch-desktop
%{_bindir}/gio-querymodules*
%{_bindir}/glib-compile-schemas
%{_bindir}/gresource
%{_bindir}/gsettings
%{_bindir}/gapplication
-%{_bindir}/gio
+
# 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 but that would break the shared library policy.
@@ -441,13 +379,6 @@ install -m 0644 coverage-objects/* %{cov_lib_dir}/objects
%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/defaults.list
-%dir %{_localstatedir}/cache/gio-2.0
-%ghost %{_localstatedir}/cache/gio-2.0/gnome-defaults.list
-%ghost %{_localstatedir}/cache/gio-2.0/xfce-defaults.list
-%ghost %{_localstatedir}/cache/gio-2.0/lxde-defaults.list
-
%lang_package -f glib20
@@ -455,12 +386,12 @@ install -m 0644 coverage-objects/* %{cov_lib_dir}/objects
pushd %{_libdir}
for FILE in libgio*.so.*.extension-kdbus; do mv "$FILE" "${FILE%.extension-kdbus}"; done
popd
+
%files -n libgio-extension-kdbus
%manifest %{name}.manifest
%license COPYING
%{_libdir}/libgio*.so.*.extension-kdbus
-
%files devel
%manifest %{name}.manifest
%defattr(-,root,root)
@@ -509,6 +440,7 @@ popd
%defattr(-,root,root)
%license COPYING
%{_libdir}/lib*.a
+%{_libdir}/lib*.a.extension-kdbus
%files tests
%manifest %{name}.manifest
@@ -516,14 +448,4 @@ popd
%{relative_dbus_tests_base_dir}/test-suites/glib-tests/
%{relative_dbus_tests_base_dir}/runner/glib-tests
-%if %{with coverage}
-%files coverage
-%license COPYING
-%{relative_cov_lib_dir}/*.so*
-
-%files coverage-objects
-%license COPYING
-%{relative_cov_lib_dir}/objects/*
-%endif
-
%changelog