diff options
author | Adrian Szyndela <adrian.s@samsung.com> | 2020-01-22 12:45:24 +0100 |
---|---|---|
committer | Adrian Szyndela <adrian.s@samsung.com> | 2020-01-31 11:46:28 +0100 |
commit | 599660c6eb6b8885ced2b3bb0964436734c52fb5 (patch) | |
tree | 88b9288805398f26f95a9df02ed4240f4a37a63e | |
parent | 549aed72c9d3ab598bb0f11d3f08819f9f2c5acd (diff) | |
download | glib-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.build | 11 | ||||
-rw-r--r-- | gio/tests/meson.build | 79 | ||||
-rw-r--r-- | glib/meson.build | 1 | ||||
-rw-r--r-- | meson_options.txt | 5 | ||||
-rw-r--r-- | packaging/glib2.spec | 228 |
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 |