[MacPorts] #44469: libical build improvement

MacPorts noreply at macports.org
Mon Jul 28 10:31:16 PDT 2014


#44469: libical build improvement
------------------------------------------------+--------------------------
 Reporter:  rjvbertin@…                         |      Owner:  macports-
     Type:  enhancement                         |  tickets@…
 Priority:  Normal                              |     Status:  new
Component:  ports                               |  Milestone:
 Keywords:  cmake, deadlock, fix, ktimetracker  |    Version:  2.3.1
                                                |       Port:  libical
------------------------------------------------+--------------------------
 As reported on the mailing list, I ran into a libical-related issue when
 trying to get ktimetracker to work (component of the kdepim4 port). In
 fact, that process ran into a deadlock when trying to obtain timezone
 data.

 At first I thought a libical background thread was missing because of
 incomplete initialisation (or exited prematurely). However, tracing code
 execution on Linux, I noticed that libical was built using BUILTIN_TZDATA
 on OS X, but not on Linux, presumably leading to
 icaltimezone_load_builtin_timezone() calling itself and pthread_mutex_lock
 recursively.
 Further investigation showed that on Linux (Ubuntu 14.04 LTS), libical is
 built using cmake, and also includes a timezone related patch.

 In this ticket, I include patches to the Portfile to build libical using
 cmake, which effectively prevents BUILTIN_TZDATA from being defined. I
 included the timezone crash preventing patch, plus one that ensures that
 the mutex used by icaltimezone_load_builtin_timezone() is initialised as a
 recursive mutex, supporting multiple locks by the same thread.

 With these patches, ktimetracker is now able to load .ics files correctly.

 The patches also change the dylib version naming and the embedded version
 information to more appropriate values, requiring a rebuild of kdepimlibs4
 (something MacPorts couldn't handle on my system because that port is a
 dependency?!).

-- 
Ticket URL: <https://trac.macports.org/ticket/44469>
MacPorts <http://www.macports.org/>
Ports system for OS X


More information about the macports-tickets mailing list