Opened 5 months ago
Closed 5 months ago
#23234 closed enhancement (fixed)
libical-4.0.0
| Reported by: | Bruce Dubbs | Owned by: | Bruce Dubbs |
|---|---|---|---|
| Priority: | normal | Milestone: | 13.1 |
| Component: | BOOK | Version: | git |
| Severity: | medium | Keywords: | |
| Cc: |
Description
New point version.
Attachments (1)
Change History (12)
comment:1 by , 5 months ago
follow-up: 4 comment:2 by , 5 months ago
Some options have changed name and SHARED_ONLY is no longer supported
-D LIBICAL_BUILD_DOCS=false \
-D LIBICAL_GOBJECT_INTROSPECTION=true \
-D LIBICAL_GLIB_VAPI=true \
comment:3 by , 5 months ago
The only dependent package I have is bluez. There is one new library libicalvcard.so. The attached patch plus an autoreconf -fvi will allow obexd to link successfully.
comment:4 by , 5 months ago
Replying to martyj19:
Some options have changed name and SHARED_ONLY is no longer supported
It's -D LIBICAL_STATIC=NO instead now.
comment:5 by , 5 months ago
And -D LIBICAL_JAVA_BINDINGS=OFF is needed to avoid a dependency on JDK.
comment:6 by , 5 months ago
It looks like for bluez it's easier to pass ICAL_LIBS='-lical -licalvcal' to make. Note that libicalvcard is not needed.
comment:7 by , 5 months ago
| Owner: | changed from to |
|---|---|
| Status: | new → assigned |
comment:8 by , 5 months ago
comment:9 by , 5 months ago
## [4.0.0] - 2026-04-30
This is a major release and is not source or binary compatible with version 3.x.
Please see [Version 4 Migration Guide](MigrationGuide_to_4.md) for details about API changes since libical 3.x.
Included in this release is a Technical Preview (TP) of our new library libicalvcard for handling VCARD formatted data. We encourage users to try-out this new library and provide feedback to our issue tracker at <https://github.com/libical/libical/issues>. Note that the libicalvcard API is not finalized and no source or binary compatibility is guaranteed until sometime later in 4.x release cycle. Additionally, there are currently no C++ bindings available for libicalvcard (volunteers wanted).
Please do not use libicalvcard for production or other non-experimental purposes until the Technical Preview phase is completed.
### Added
- REUSE compliant licensing
- Supports multi-valued parameters (DELEGATED-FROM, DELEGATED-TO, MEMBER, DISPLAY, FEATURE, etc)
- Adds java bindings
- (TP) Brand new icalvcard library that follows the libical API.
- draft-ietf-calext-eventpub-extensions-19 (RFC 9073) support added
- draft-ietf-calext-valarm-extensions-07 (RFC 9074) support added
- Added support for Event Publishing (RFC 9073) and VALARM (RFC 9074) Extensions
- New CMake option "LIBICAL_ENABLE_64BIT_ICALTIME_T" to use 64-bit time_t implementations on 32-bit systems (where available and supported. Windows-only so far)
- GEO property has arbitrary precision (values are internally stored as strings, not doubles)
- Allow previous recurrence iteration
- icalparser_ctrl setting defines how to handle invalid CONTROL characters during parsing
- Full support for
BYSETPOS, i.e. remove the limitation to MONTHLY and YEARLY frequencies - An API for setting/getting internal library limits (
icallimit_setandicallimit_get)
### Changed
- Built-in timezones updated to tzdata2026a to include historical data
- Requires MSVC 2013 or higher (when building on Windows with MSVC)
- Requires CMake v3.20.0 or higher
- For the C++ bindings, requires a C++11 compliant C++ compiler
- libical-glib requires glib 2.38 or higher
- libical-glib requires a C11 compliant C compiler
- Replace gtk-doc with gi-docgen to produce libical-glib developer documentation
- libical-glib API is considered stable; no longer need to define LIBICAL_GLIB_UNSTABLE_API=1 before including <libical-glib/libical-glib.h>
- By default, only shared libraries are built; to get static libraries one must invoke
separate build using the CMake
-DLIBICAL_STATIC=Trueoption. - CMake option -DGOBJECT_INTROSPECTION=True by default.
icaltzutil_get_zone_directory()can use the TZDIR environment to find system zoneinfoicaltimezone_set_tzid_prefix()now allows setting an empty tzid prefix.icaldurationtype_from_intandicaldurationtype_as_inthave been renamed toicaldurationtype_from_secondsandicaldurationtype_as_seconds, respectively.- Components and properties with arbitrary iana-token names now are parsed with kind
ICAL_IANA_COMPONENT and ICAL_IANA_PROPERTY if the
ical_unknown_token_handlingsetting is ICAL_ASSUME_IANA_TOKEN. Otherwise, they are handled as error. - Property and parameter names that start with "x-" (lowercase) now also are parsed as X kind.
- The
icalproperty_remove_parameter_by_(kind|name)functions now remove all matching parameters. Before, they only removed the first matching parameter contrary to their documentation. icalrecurrencetype_new_from_string()is more strict against overflows and empty rule parts. E.g. it now rejects RRULE parts likeBYDAY=255SU(which used to be interpreted asBYDAY=-1SU).
### Deprecated
- Several CMake options are renamed in favor of a "namespaced" equivalent. Please port your buildscripts to the new CMake option names. A complete list is provided in this "CMake options" section of the [Version 4 Migration Guide](MigrationGuide_to_4.md)
### Removed
- The old src/python code is removed in favor of the glib-introspection generated Python bindings. Requires building with -DGOBJECT_INTROSPECTION=True
### Fixed
- Fixed
icalcomponent_get_duration()to account for DTEND/DUE TZID - Improved performance of recurrence iterators
- Improved handling of BYWEEKNO when BYDAY is not present
- Fixed
icalcomponent_get_dtend()andicalcomponent_foreach_recurrence()to correctly handle nominal durations - Fixed
icalcomponent_foreach_recurrenceto filter out duplicate instances
comment:10 by , 5 months ago
I got a build error with -D LIBICAL_STATIC=NO at -j4, but it was OK at -j1.
Note that BLFS has 4 references to libical:
general/sysutils/bluez.xml: <xref linkend="libical"/> xsoft/other/balsa.xml: <xref linkend="libical"/>, kde/kf6/kf6-frameworks.xml: <xref linkend="libical"/>, gnome/platform/evolution-data-server.xml: <xref linkend="libical"/>,
Also note that there do not seem to be any tests:
$ make test Running tests... Test project /build/libical/libical-4.0.0/build No tests were found!!!
But it looks like we need to change some defults for them:
LIBICAL_BUILD_TESTING:BOOL=OFF LIBICAL_BUILD_TESTING_BIGFUZZ:BOOL=OFF
We might want to change the default LIBICAL_ENABLE_64BIT_ICALTIME_T:BOOL=OFF
Specific directories installed:
/usr/lib/cmake/LibIcal /usr/libexec/libical /usr/include/libical /usr/include/libical-glib
Libraries:
/usr/lib/libical.so /usr/lib/libicalss.so /usr/lib/libicalss_cxx.so /usr/lib/libicalvcal.so /usr/lib/libicalvcard.so new /usr/lib/libical-glib.so /usr/lib/libical_cxx.so
comment:11 by , 5 months ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
Fixed at commit 92cc3bd271.

"This is a major release and is not source or binary compatible with version 3.x." There is a porting guide. I would expect some dependent package breaks.