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)

bluez-5.86-libical_4.0.0-1.patch​ (1.0 KB ) - added by martyj19 5 months ago.
Adjustment to bluez 5.86

Download all attachments as: .zip

Change History (12)

comment:1 by martyj19, 5 months ago

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

comment:2 by martyj19, 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        \
Last edited 5 months ago by martyj19 (previous) (diff)

by martyj19, 5 months ago

Adjustment to bluez 5.86

comment:3 by martyj19, 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.

Last edited 5 months ago by martyj19 (previous) (diff)

in reply to:  2 comment:4 by Xi Ruoyao, 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 Xi Ruoyao, 5 months ago

And -D LIBICAL_JAVA_BINDINGS=OFF is needed to avoid a dependency on JDK.

comment:6 by Xi Ruoyao, 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 Bruce Dubbs, 5 months ago

Owner: changed from blfs-book to Bruce Dubbs
Status: new → assigned

comment:9 by Bruce Dubbs, 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_set and icallimit_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=True option.
  • CMake option -DGOBJECT_INTROSPECTION=True by default.
  • icaltzutil_get_zone_directory() can use the TZDIR environment to find system zoneinfo
  • icaltimezone_set_tzid_prefix() now allows setting an empty tzid prefix.
  • icaldurationtype_from_int and icaldurationtype_as_int have been renamed to icaldurationtype_from_seconds and icaldurationtype_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_handling setting 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 like BYDAY=255SU (which used to be interpreted as BYDAY=-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() and icalcomponent_foreach_recurrence() to correctly handle nominal durations
  • Fixed icalcomponent_foreach_recurrence to filter out duplicate instances

comment:10 by Bruce Dubbs, 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 Bruce Dubbs, 5 months ago

Resolution: → fixed
Status: assigned → closed

Fixed at commit 92cc3bd271.

Note: See TracTickets for help on using tickets.