SHA256
1
0
forked from pool/libical

Accepting request 734421 from home:mgorse:branches:devel:libraries:c_c++

- 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.

OBS-URL: https://build.opensuse.org/request/show/734421
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/libical?expand=0&rev=57
This commit is contained in:
Marcus Meissner 2019-10-03 08:17:13 +00:00 committed by Git OBS Bridge
parent 0771341216
commit 8f74fda8a7
3 changed files with 107 additions and 31 deletions

3
_multibuild Normal file
View File

@ -0,0 +1,3 @@
<multibuild>
<package>glib</package>
</multibuild>

View File

@ -1,3 +1,11 @@
-------------------------------------------------------------------
Tue Oct 1 14:48:12 UTC 2019 - Michael Gorse <mgorse@suse.com>
- 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 <luke@ljones.dev> Thu Aug 29 04:17:25 UTC 2019 - Luke Jones <luke@ljones.dev>

View File

@ -12,20 +12,34 @@
# license that conforms to the Open Source Definition (Version 1.9) # license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative. # 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 %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 Version: 3.0.5
Release: 0 Release: 0
%if %{without glib}
Summary: An Implementation of Basic iCAL Protocols Summary: An Implementation of Basic iCAL Protocols
License: MPL-2.0 OR LGPL-2.1-only License: MPL-2.0 OR LGPL-2.1-only
Group: Development/Libraries/C and C++ 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/ Url: http://sourceforge.net/projects/freeassociation/
#Git-Clone: https://github.com/libical/libical #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 Source2: baselibs.conf
Source3: libical-rpmlintrc Source3: libical-rpmlintrc
Patch1: 0001-vcc.y-factor-out-hexdigit-conversion.patch 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 Patch5: 0005-vcc.y-do-not-ignore-field-separator-in-QUOTED-PRINTA.patch
BuildRequires: cmake >= 3.1 BuildRequires: cmake >= 3.1
BuildRequires: gcc-c++ BuildRequires: gcc-c++
BuildRequires: gtk-doc
BuildRequires: pkgconfig BuildRequires: pkgconfig
BuildRequires: pkgconfig(icu-i18n)
%if %{with glib}
BuildRequires: gtk-doc
BuildRequires: vala BuildRequires: vala
BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gobject-2.0) BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(gobject-introspection-1.0) BuildRequires: pkgconfig(gobject-introspection-1.0)
BuildRequires: pkgconfig(icu-i18n)
BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(libxml-2.0)
%endif
%if %{without glib}
%description %description
Libical is an implementation of the IETF's iCalendar Libical is an implementation of the IETF's iCalendar
calendaring and scheduling protocols (RFC 2445, 2446, and 2447). It calendaring and scheduling protocols (RFC 2445, 2446, and 2447). It
parses iCal components and provides a C API for manipulating the parses iCal components and provides a C API for manipulating the
component properties, parameters, and subcomponents. 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} %package -n %{name}%{sonum}
Summary: An Implementation of Basic iCAL Protocols Summary: An Implementation of Basic iCAL Protocols
Group: System/Libraries Group: System/Libraries
@ -66,6 +89,8 @@ component properties, parameters, and subcomponents.
Summary: Development files for libical, an implementation of basic iCAL protocols Summary: Development files for libical, an implementation of basic iCAL protocols
Group: Development/Libraries/C and C++ Group: Development/Libraries/C and C++
Requires: %{name}%{sonum} = %{version} Requires: %{name}%{sonum} = %{version}
# Typelib should be required, but might create a build cycle
# Requires: typelib-1_0-libical%{sonum} = %%{version}
%description devel %description devel
Libical is an implementation of the IETF's iCalendar Libical is an implementation of the IETF's iCalendar
@ -76,9 +101,7 @@ component properties, parameters, and subcomponents.
%package doc %package doc
Summary: Example source code for programs to use libical Summary: Example source code for programs to use libical
Group: Documentation/Other Group: Documentation/Other
%if 0%{?suse_version} >= 1120
BuildArch: noarch BuildArch: noarch
%endif
%description doc %description doc
Libical is an implementation of the IETF's iCalendar 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 parses iCal components and provides a C API for manipulating the
component properties, parameters, and subcomponents. component properties, parameters, and subcomponents.
%package glib%{sonum} %else
%package -n %{name}%{sonum}
Summary: GObject wrapper for libical library Summary: GObject wrapper for libical library
Group: System/Libraries 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 This package provides a GObject wrapper for libical library with support
of GObject Introspection. of GObject Introspection.
%package glib-devel %package devel
Summary: Development files for building against %{name}-glib%{sonum} Summary: Development files for building against %{name}
Group: Development/Libraries/C and C++ Group: Development/Libraries/C and C++
Requires: %{name}%{sonum} = %{version} Requires: %{name} = %{version}
Requires: %{name}-glib%{sonum} = %{version} Requires: libical%{sonum} = %{version}
Requires: typelib-1_0-%{name}%{sonum} = %{version}
%description glib-devel %description devel
Development files for building against %{name}-glib%{sonum}. Development files for building against %{name}%{sonum}
%package glib-doc %package doc
Summary: Documentation files for %{name}-glib%{sonum} Summary: Documentation files for %{name}%{sonum}
Group: Documentation/Other Group: Documentation/Other
%if 0%{?suse_version} >= 1120
BuildArch: noarch 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 %endif
%description glib-doc
Documentation files for %{name}-glib%{sonum}
%prep %prep
%autosetup -p1 %autosetup -p1 -n libical-%{version}
%build %build
%cmake \ %cmake \
-DICAL_ALLOW_EMPTY_PROPERTIES=true \ -DICAL_ALLOW_EMPTY_PROPERTIES=true \
%if %{with glib}
-DICAL_GLIB=true \ -DICAL_GLIB=true \
-DGOBJECT_INTROSPECTION=true \ -DGOBJECT_INTROSPECTION=true \
-DICAL_GLIB_VAPI=true \ -DICAL_GLIB_VAPI=true \
%else
-DICAL_GLIB=false \
%endif
-DSHARED_ONLY=true -DSHARED_ONLY=true
make -j1 make -j1
%install %install
%cmake_install %cmake_install
rm examples/CMakeLists.txt 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 %post -n %{name}%{sonum} -p /sbin/ldconfig
%postun -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} %files -n %{name}%{sonum}
%license COPYING %license COPYING
%doc AUTHORS ReadMe.txt ReleaseNotes.txt TEST THANKS TODO %doc AUTHORS ReadMe.txt ReleaseNotes.txt TEST THANKS TODO
@ -141,7 +200,6 @@ rm examples/CMakeLists.txt
%{_libdir}/libicalss.so.* %{_libdir}/libicalss.so.*
%{_libdir}/libicalss_cxx.so.* %{_libdir}/libicalss_cxx.so.*
%{_libdir}/libicalvcal.so.* %{_libdir}/libicalvcal.so.*
%{_libdir}/girepository-1.0/ICal-3.0.typelib
%files devel %files devel
%{_libdir}/libical.so %{_libdir}/libical.so
@ -152,25 +210,32 @@ rm examples/CMakeLists.txt
%{_libdir}/pkgconfig/libical.pc %{_libdir}/pkgconfig/libical.pc
%{_libdir}/cmake/LibIcal/ %{_libdir}/cmake/LibIcal/
%{_includedir}/libical/ %{_includedir}/libical/
%{_datadir}/gir-1.0/ICal-3.0.gir
%files doc %files doc
%doc doc/*.txt %doc doc/*.txt
%doc examples/ %doc examples/
%else
%files glib%{sonum} %files -n %{name}%{sonum}
%{_libdir}/libical-glib.so.* %{_libdir}/libical-glib.so.*
%{_libdir}/girepository-1.0/ICalGLib-3.0.typelib
%files glib-devel %files devel
%{_libdir}/libical-glib.so %{_libdir}/libical-glib.so
%{_libdir}/pkgconfig/libical-glib.pc %{_libdir}/pkgconfig/libical-glib.pc
%{_includedir}/libical-glib/ %{_includedir}/libical-glib/
%dir %{_datadir}/vala/vapi %dir %{_datadir}/vala/vapi
%{_datadir}/vala/vapi/libical-glib.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 %{_datadir}/gir-1.0/ICalGLib-3.0.gir
%files glib-doc %files doc
%{_datadir}/gtk-doc/html/%{name}-glib %{_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 %changelog