[packages/python-libical] - last version of swig-based python binding, copied from libical.spec, built with static libical
qboosh
qboosh at pld-linux.org
Thu Jul 16 18:13:56 CEST 2026
commit 0405edf0c8ded0f5a73a8365015fe972efc3e217
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date: Thu Jul 16 18:13:50 2026 +0200
- last version of swig-based python binding, copied from libical.spec, built with static libical
libical-cmake-python.patch | 48 ++++++++++++++++
libical-python.patch | 37 ++++++++++++
python-libical.spec | 136 +++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 221 insertions(+)
---
diff --git a/python-libical.spec b/python-libical.spec
new file mode 100644
index 0000000..d18a2a8
--- /dev/null
+++ b/python-libical.spec
@@ -0,0 +1,136 @@
+#
+# Conditional build:
+%bcond_without python2 # CPython 2.x module
+%bcond_without python3 # CPython 3.x module
+%bcond_without bdb # Berkeley DB support
+
+Summary: Python 2 binding for libical
+Summary(pl.UTF-8): Wiązanie Pythona 2 do biblioteki libical
+Name: python-libical
+Version: 3.0.20
+Release: 1
+License: MPL v1.0 or LGPL v2.1
+Group: Libraries/Python
+#Source0Download: https://github.com/libical/libical/releases
+Source0: https://github.com/libical/libical/releases/download/v%{version}/libical-%{version}.tar.gz
+# Source0-md5: 539a8a293d344e7aa8ccf3740494a46d
+Patch0: libical-cmake-python.patch
+Patch1: libical-python.patch
+URL: https://libical.github.io/libical/
+BuildRequires: cmake >= 3.5.0
+%{?with_bdb:BuildRequires: db-devel}
+BuildRequires: libicu-devel >= 50
+BuildRequires: libstdc++-devel
+BuildRequires: perl-base
+BuildRequires: pkgconfig
+%{?with_python2:BuildRequires: python-devel >= 1:2.3}
+%{?with_python3:BuildRequires: python3-devel >= 1:3.2}
+BuildRequires: rpm-pythonprov
+BuildRequires: rpmbuild(macros) >= 1.714
+BuildRequires: swig-python >= 2
+Requires: python-modules >= 1:2.3
+BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%description
+Python 2 binding for libical.
+
+%description -l pl.UTF-8
+Wiązanie Pythona 2 do biblioteki libical.
+
+%package -n python3-libical
+Summary: Python 3 binding for libical
+Summary(pl.UTF-8): Wiązanie Pythona 3 do biblioteki libical
+Group: Libraries/Python
+Requires: python3-modules >= 1:3.2
+
+%description -n python3-libical
+Python 3 binding for libical.
+
+%description -n python3-libical -l pl.UTF-8
+Wiązanie Pythona 3 do biblioteki libical.
+
+%prep
+%setup -q -n libical-%{version}
+%patch -P0 -p1
+%patch -P1 -p1
+
+%build
+%if %{with python2}
+install -d build-py2
+cd build-py2
+%cmake .. \
+ %{!?with_bdb:-DCMAKE_DISABLE_FIND_PACKAGE_BerkeleyDB=ON} \
+ -DICAL_BUILD_DOCS=OFF \
+ -DICAL_GLIB=OFF \
+ -DLIBICAL_BUILD_EXAMPLES=OFF \
+ -DLIBICAL_BUILD_TESTING=OFF \
+ -DPYTHON_EXECUTABLE=%{__python} \
+ -DPY_SITEDIR=%{py_sitedir} \
+ -DSTATIC_ONLY=ON \
+ -DWITH_CXX_BINDINGS=OFF
+
+%{__make}
+cd ..
+%endif
+
+%if %{with python3}
+install -d build-py3
+cd build-py3
+%cmake .. \
+ %{!?with_bdb:-DCMAKE_DISABLE_FIND_PACKAGE_BerkeleyDB=ON} \
+ -DICAL_BUILD_DOCS=OFF \
+ -DICAL_GLIB=OFF \
+ -DLIBICAL_BUILD_EXAMPLES=OFF \
+ -DLIBICAL_BUILD_TESTING=OFF \
+ -DPYTHON_EXECUTABLE=%{__python3} \
+ -DPY_SITEDIR=%{py3_sitedir} \
+ -DSTATIC_ONLY=ON \
+ -DWITH_CXX_BINDINGS=OFF
+
+%{__make}
+cd ..
+%endif
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+%if %{with python2}
+%{__make} -C build-py2 install \
+ DESTDIR=$RPM_BUILD_ROOT
+
+# not installed by cmake build system
+install -d $RPM_BUILD_ROOT%{py_sitescriptdir}/libical
+cp -p src/python/*.py build-py2/src/python/*.py $RPM_BUILD_ROOT%{py_sitescriptdir}/libical
+%py_postclean
+%endif
+
+%if %{with python3}
+%{__make} -C build-py3 install \
+ DESTDIR=$RPM_BUILD_ROOT
+
+# not installed by cmake build system
+install -d $RPM_BUILD_ROOT%{py3_sitescriptdir}/libical
+cp -p src/python/*.py build-py3/src/python/*.py $RPM_BUILD_ROOT%{py3_sitescriptdir}/libical
+%endif
+
+%{__rm} -r $RPM_BUILD_ROOT%{_includedir}/libical
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/libical*.a
+%{__rm} -r $RPM_BUILD_ROOT%{_libdir}/cmake/LibIcal
+%{__rm} $RPM_BUILD_ROOT%{_pkgconfigdir}/libical*.pc
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%if %{with python2}
+%files
+%defattr(644,root,root,755)
+%attr(755,root,root) %{py_sitedir}/_LibicalWrap.so
+%{py_sitescriptdir}/libical
+%endif
+
+%if %{with python3}
+%files -n python3-libical
+%defattr(644,root,root,755)
+%attr(755,root,root) %{py3_sitedir}/_LibicalWrap.so
+%{py3_sitescriptdir}/libical
+%endif
diff --git a/libical-cmake-python.patch b/libical-cmake-python.patch
new file mode 100644
index 0000000..e0650f6
--- /dev/null
+++ b/libical-cmake-python.patch
@@ -0,0 +1,48 @@
+--- libical-3.0.16/src/python/CMakeLists.txt.orig 2023-03-04 19:38:26.490595543 +0100
++++ libical-3.0.16/src/python/CMakeLists.txt 2023-03-04 19:41:03.049747390 +0100
+@@ -6,18 +6,28 @@ include_directories(
+
+ ########### next target ###############
+
++find_package(PythonInterp REQUIRED)
++find_package(PythonLibs REQUIRED)
++include_directories(${PYTHON_INCLUDE_DIRS} ${CMAKE_BINARY_DIR}/src ${CMAKE_BINARY_DIR})
++add_custom_command(
++ OUTPUT
++ ${CMAKE_BINARY_DIR}/src/python/LibicalWrap.c
++ COMMAND
++ swig -python -Wall -I${CMAKE_SOURCE_DIR}/src -I${CMAKE_BINARY_DIR}/src -o ${CMAKE_BINARY_DIR}/src/python/LibicalWrap.c ${CMAKE_SOURCE_DIR}/src/python/LibicalWrap.i
++ DEPENDS ${CMAKE_SOURCE_DIR}/src/python/LibicalWrap.i
++)
++
+ set(LibicalWrap_LIB_SRCS
+- LibicalWrap.c
++ ${CMAKE_BINARY_DIR}/src/python/LibicalWrap.c
+ )
+
+-add_library(LibicalWrap ${LIBRARY_TYPE} ${LibicalWrap_LIB_SRCS})
++add_library(LibicalWrap SHARED ${LibicalWrap_LIB_SRCS})
+
+-target_link_libraries(LibicalWrap)
++target_link_libraries(LibicalWrap icalss ical)
+
+ set_target_properties(LibicalWrap PROPERTIES
+- VERSION ${LIBICAL_LIB_VERSION_STRING}
+- SOVERSION ${LIBICAL_LIB_MAJOR_VERSION}
+-)
+-install(TARGETS LibicalWrap DESTINATION lib)
++ OUTPUT_NAME "_LibicalWrap" PREFIX "")
++set(PY_SITEDIR lib${LIB_SUFFIX}/python CACHE STRING "Python module dir")
++install(TARGETS LibicalWrap DESTINATION ${PY_SITEDIR})
+
+ ########### install files ###############
+--- libical-3.0.6/src/CMakeLists.txt.orig 2019-10-15 05:33:01.947974507 +0200
++++ libical-3.0.6/src/CMakeLists.txt 2019-10-15 05:33:59.810994370 +0200
+@@ -4,6 +4,7 @@
+ if(ICAL_GLIB)
+ add_subdirectory(libical-glib)
+ endif()
++add_subdirectory(python)
+ if(LIBICAL_BUILD_TESTING)
+ add_subdirectory(test)
+ endif()
diff --git a/libical-python.patch b/libical-python.patch
new file mode 100644
index 0000000..83966a6
--- /dev/null
+++ b/libical-python.patch
@@ -0,0 +1,37 @@
+--- libical-3.0.6/src/python/LibicalWrap.i.orig 2019-10-15 20:39:58.908627822 +0200
++++ libical-3.0.6/src/python/LibicalWrap.i 2019-10-16 05:32:56.454846915 +0200
+@@ -24,6 +24,8 @@
+
+ %module LibicalWrap
+
++#define LIBICAL_ICAL_EXPORT
++#define LIBICAL_ICALSS_EXPORT
+
+ %{
+ #include "libical/ical.h"
+@@ -45,6 +45,14 @@
+
+ typedef int time_t;
+
++// Can't wrap va_list
++%ignore icalproperty_add_parameters(struct icalproperty_impl *prop, va_list args);
++// not exported
++%ignore icalfileset_options_default;
++%ignore print_date_to_string;
++%ignore print_datetime_to_string;
++%ignore icaltimezone_tzid_prefix;
++
+ #ifndef _DLOPEN_TEST
+ %ignore icalset_register_class(icalset *set);
+ #endif
+--- libical-3.0.20/src/libicalss/icalbdbset.h.orig 2025-03-10 17:08:27.000000000 +0100
++++ libical-3.0.20/src/libicalss/icalbdbset.h 2025-04-10 22:32:41.961141924 +0200
+@@ -144,8 +144,6 @@ LIBICAL_ICALSS_EXPORT icalcomponent *ica
+
+ LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbsetiter_to_next(icalset *set, icalsetiter *i);
+
+-LIBICAL_ICALSS_EXPORT icalcomponent *icalbdbsetiter_to_prior(icalset *set, icalsetiter *i);
+-
+ /* Return a reference to the internal component. You probably should
+ not be using this. */
+
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/python-libical.git/commitdiff/0405edf0c8ded0f5a73a8365015fe972efc3e217
More information about the pld-cvs-commit
mailing list