diff --git a/_multibuild b/_multibuild new file mode 100644 index 0000000..69e0196 --- /dev/null +++ b/_multibuild @@ -0,0 +1,3 @@ + +glib + diff --git a/libical.changes b/libical.changes index 6b64d95..4aeeb69 100644 --- a/libical.changes +++ b/libical.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Tue Oct 1 14:48:12 UTC 2019 - Michael Gorse + +- Build glib and gobject-introspection bindings separately in order + to avoid build cycle. +- Move gobject-introspection bindings into their own packages. +- Move libical gir into libical-glib-devel. + ------------------------------------------------------------------- Thu Aug 29 04:17:25 UTC 2019 - Luke Jones diff --git a/libical.spec b/libical.spec index 539fc64..9c76252 100644 --- a/libical.spec +++ b/libical.spec @@ -12,20 +12,34 @@ # 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/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # +%global flavor @BUILD_FLAVOR@%{nil} %define sonum 3 -Name: libical +%if "%{flavor}" == "glib" +%define name_ext -glib +%bcond_without glib +%else +%define name_ext %{nil} +%bcond_with glib +%endif +Name: libical%{name_ext} Version: 3.0.5 Release: 0 +%if %{without glib} Summary: An Implementation of Basic iCAL Protocols License: MPL-2.0 OR LGPL-2.1-only Group: Development/Libraries/C and C++ +%else +Summary: GObject wrapper for libical library +License: MPL-2.0 OR LGPL-2.1-only +Group: Development/Libraries/C and C++ +%endif Url: http://sourceforge.net/projects/freeassociation/ #Git-Clone: https://github.com/libical/libical -Source: https://github.com/libical/libical/releases/download/v%{version}/%{name}-%{version}.tar.gz +Source: https://github.com/libical/libical/releases/download/v%{version}/libical-%{version}.tar.gz Source2: baselibs.conf Source3: libical-rpmlintrc Patch1: 0001-vcc.y-factor-out-hexdigit-conversion.patch @@ -35,21 +49,30 @@ Patch4: 0004-vobject.c-vCard-Unicode-reading-support.patch Patch5: 0005-vcc.y-do-not-ignore-field-separator-in-QUOTED-PRINTA.patch BuildRequires: cmake >= 3.1 BuildRequires: gcc-c++ -BuildRequires: gtk-doc BuildRequires: pkgconfig +BuildRequires: pkgconfig(icu-i18n) +%if %{with glib} +BuildRequires: gtk-doc BuildRequires: vala BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(gobject-2.0) BuildRequires: pkgconfig(gobject-introspection-1.0) -BuildRequires: pkgconfig(icu-i18n) BuildRequires: pkgconfig(libxml-2.0) +%endif +%if %{without glib} %description Libical is an implementation of the IETF's iCalendar calendaring and scheduling protocols (RFC 2445, 2446, and 2447). It parses iCal components and provides a C API for manipulating the component properties, parameters, and subcomponents. +%else +%description +This package provides a GObject wrapper for libical library with support +of GObject Introspection. +%endif +%if %{without glib} %package -n %{name}%{sonum} Summary: An Implementation of Basic iCAL Protocols Group: System/Libraries @@ -66,6 +89,8 @@ component properties, parameters, and subcomponents. Summary: Development files for libical, an implementation of basic iCAL protocols Group: Development/Libraries/C and C++ Requires: %{name}%{sonum} = %{version} +# Typelib should be required, but might create a build cycle +# Requires: typelib-1_0-libical%{sonum} = %%{version} %description devel Libical is an implementation of the IETF's iCalendar @@ -76,9 +101,7 @@ component properties, parameters, and subcomponents. %package doc Summary: Example source code for programs to use libical Group: Documentation/Other -%if 0%{?suse_version} >= 1120 BuildArch: noarch -%endif %description doc Libical is an implementation of the IETF's iCalendar @@ -86,53 +109,89 @@ calendaring and scheduling protocols (RFC 2445, 2446, and 2447). It parses iCal components and provides a C API for manipulating the component properties, parameters, and subcomponents. -%package glib%{sonum} +%else +%package -n %{name}%{sonum} Summary: GObject wrapper for libical library Group: System/Libraries -Requires: %{name}%{sonum} = %{version} +Provides: %{name} = %{version} +Obsoletes: %{name} < %{version} -%description glib%{sonum} +%description -n %{name}%{sonum} This package provides a GObject wrapper for libical library with support of GObject Introspection. -%package glib-devel -Summary: Development files for building against %{name}-glib%{sonum} +%package devel +Summary: Development files for building against %{name} Group: Development/Libraries/C and C++ -Requires: %{name}%{sonum} = %{version} -Requires: %{name}-glib%{sonum} = %{version} +Requires: %{name} = %{version} +Requires: libical%{sonum} = %{version} +Requires: typelib-1_0-%{name}%{sonum} = %{version} -%description glib-devel -Development files for building against %{name}-glib%{sonum}. +%description devel +Development files for building against %{name}%{sonum} -%package glib-doc -Summary: Documentation files for %{name}-glib%{sonum} +%package doc +Summary: Documentation files for %{name}%{sonum} Group: Documentation/Other -%if 0%{?suse_version} >= 1120 BuildArch: noarch + +%description doc +Documentation files for %{name}%{sonum} + +%package -n typelib-1_0-libical%{sonum} +Summary: Introspection bindings for libical +Group: Development/Libraries/C and C++ + +%description -n typelib-1_0-libical%{sonum} +This package provides the gobject-introspection bindings for libical. + +%package -n typelib-1_0-%{name}%{sonum} +Summary: Introspection bindings for the libical glib bindings. +Group: Development/Libraries/C and C++ + +%description -n typelib-1_0-%{name}%{sonum} +This package provides the gobject-introspection bindings for libical-glib. %endif -%description glib-doc -Documentation files for %{name}-glib%{sonum} - %prep -%autosetup -p1 +%autosetup -p1 -n libical-%{version} %build %cmake \ -DICAL_ALLOW_EMPTY_PROPERTIES=true \ +%if %{with glib} -DICAL_GLIB=true \ -DGOBJECT_INTROSPECTION=true \ -DICAL_GLIB_VAPI=true \ +%else + -DICAL_GLIB=false \ +%endif -DSHARED_ONLY=true make -j1 %install %cmake_install rm examples/CMakeLists.txt +%if %{with glib} +rm -r %{buildroot}%{_includedir}/libical/ +rm -r %{buildroot}%{_libdir}/cmake/LibIcal +rm %{buildroot}%{_libdir}/libical.so* +rm %{buildroot}%{_libdir}/libical_cxx.so* +rm %{buildroot}%{_libdir}/libicalss.so* +rm %{buildroot}%{_libdir}/libicalss_cxx.so* +rm %{buildroot}%{_libdir}/libicalvcal.so* +rm %{buildroot}%{_libdir}/pkgconfig/libical.pc +%endif +%if %{without glib} %post -n %{name}%{sonum} -p /sbin/ldconfig %postun -n %{name}%{sonum} -p /sbin/ldconfig +%else +%post -n %{name} -p /sbin/ldconfig +%postun -n %{name} -p /sbin/ldconfig +%endif +%if %{without glib} %files -n %{name}%{sonum} %license COPYING %doc AUTHORS ReadMe.txt ReleaseNotes.txt TEST THANKS TODO @@ -141,7 +200,6 @@ rm examples/CMakeLists.txt %{_libdir}/libicalss.so.* %{_libdir}/libicalss_cxx.so.* %{_libdir}/libicalvcal.so.* -%{_libdir}/girepository-1.0/ICal-3.0.typelib %files devel %{_libdir}/libical.so @@ -152,25 +210,32 @@ rm examples/CMakeLists.txt %{_libdir}/pkgconfig/libical.pc %{_libdir}/cmake/LibIcal/ %{_includedir}/libical/ -%{_datadir}/gir-1.0/ICal-3.0.gir %files doc %doc doc/*.txt %doc examples/ - -%files glib%{sonum} +%else +%files -n %{name}%{sonum} %{_libdir}/libical-glib.so.* -%{_libdir}/girepository-1.0/ICalGLib-3.0.typelib -%files glib-devel +%files devel %{_libdir}/libical-glib.so %{_libdir}/pkgconfig/libical-glib.pc %{_includedir}/libical-glib/ %dir %{_datadir}/vala/vapi %{_datadir}/vala/vapi/libical-glib.vapi +# This should really be in libical-devel +%{_datadir}/gir-1.0/ICal-3.0.gir %{_datadir}/gir-1.0/ICalGLib-3.0.gir -%files glib-doc -%{_datadir}/gtk-doc/html/%{name}-glib +%files doc +%{_datadir}/gtk-doc/html/libical-glib + +%files -n typelib-1_0-libical%{sonum} +%{_libdir}/girepository-1.0/ICal-3.0.typelib + +%files -n typelib-1_0-%{name}%{sonum} +%{_libdir}/girepository-1.0/ICalGLib-3.0.typelib +%endif %changelog