diff --git a/.gitignore b/.gitignore index 082bee5..5524c0f 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -libical-0.43.tar.gz +libical-0.46.tar.gz diff --git a/libical-0.43-cflags.patch b/libical-0.43-cflags.patch deleted file mode 100644 index 08c2f9c..0000000 --- a/libical-0.43-cflags.patch +++ /dev/null @@ -1,154 +0,0 @@ -diff -urNp libical-0.43.orig/libical.pc.in libical-0.43/libical.pc.in ---- libical-0.43.orig/libical.pc.in 2009-03-15 21:58:49.000000000 +0530 -+++ libical-0.43/libical.pc.in 2009-03-15 22:11:13.000000000 +0530 -@@ -7,5 +7,5 @@ Name: libical - Description: An implementation of basic iCAL protocols - Version: @VERSION@ - Libs: -L${libdir} -lical -licalss -licalvcal --Cflags: -I${includedir}/libical -+Cflags: -I${includedir} - -diff -urNp libical-0.43.orig/src/libical/icaltz-util.c libical-0.43/src/libical/icaltz-util.c ---- libical-0.43.orig/src/libical/icaltz-util.c 2009-03-15 21:58:49.000000000 +0530 -+++ libical-0.43/src/libical/icaltz-util.c 2009-03-15 22:08:03.000000000 +0530 -@@ -81,8 +81,8 @@ - #ifdef HAVE_UNISTD_H - #include - #endif --#include --#include -+#include "icalerror.h" -+#include "icaltz-util.h" - - typedef struct - { -diff -urNp libical-0.43.orig/src/libicalcap/icalcap.h libical-0.43/src/libicalcap/icalcap.h ---- libical-0.43.orig/src/libicalcap/icalcap.h 2009-03-15 21:58:49.000000000 +0530 -+++ libical-0.43/src/libicalcap/icalcap.h 2009-03-15 22:08:48.000000000 +0530 -@@ -1,7 +1,7 @@ - #ifndef __ICALCAP_H__ - #define __ICALCAP_H__ - --#include -+#include - - /* - * Opaque objects -diff -urNp libical-0.43.orig/src/libicalcap/icalcap_message_impl.h libical-0.43/src/libicalcap/icalcap_message_impl.h ---- libical-0.43.orig/src/libicalcap/icalcap_message_impl.h 2009-03-15 21:58:49.000000000 +0530 -+++ libical-0.43/src/libicalcap/icalcap_message_impl.h 2009-03-15 22:09:16.000000000 +0530 -@@ -3,7 +3,7 @@ - - #ifdef WITH_RR - --#include -+#include - #include - - #define ICALCAP_MESSAGE_CMD 1 -diff -urNp libical-0.43.orig/src/libicalss/icalcalendar.h libical-0.43/src/libicalss/icalcalendar.h ---- libical-0.43.orig/src/libicalss/icalcalendar.h 2009-03-15 21:58:49.000000000 +0530 -+++ libical-0.43/src/libicalss/icalcalendar.h 2009-03-15 22:02:47.000000000 +0530 -@@ -30,7 +30,7 @@ - #define ICALCALENDAR_H - - #include --#include -+#include "icalset.h" - - /* icalcalendar - * Routines for storing calendar data in a file system. The calendar -diff -urNp libical-0.43.orig/src/libicalss/icalclassify.h libical-0.43/src/libicalss/icalclassify.h ---- libical-0.43.orig/src/libicalss/icalclassify.h 2009-03-15 21:58:49.000000000 +0530 -+++ libical-0.43/src/libicalss/icalclassify.h 2009-03-15 22:03:39.000000000 +0530 -@@ -28,8 +28,8 @@ - #define ICALCLASSIFY_H - - #include --#include --#include -+#include "icalset.h" -+#include "icalcomponent.h" - - icalproperty_xlicclass icalclassify(icalcomponent* c,icalcomponent* match, - const char* user); -diff -urNp libical-0.43.orig/src/libicalss/icalcluster.h libical-0.43/src/libicalss/icalcluster.h ---- libical-0.43.orig/src/libicalss/icalcluster.h 2009-03-15 21:58:48.000000000 +0530 -+++ libical-0.43/src/libicalss/icalcluster.h 2009-03-15 22:01:36.000000000 +0530 -@@ -30,7 +30,7 @@ - #define ICALCLUSTER_H - - #include --#include -+#include "icalset.h" - - typedef struct icalcluster_impl icalcluster; - -diff -urNp libical-0.43.orig/src/libicalss/icaldirset.h libical-0.43/src/libicalss/icaldirset.h ---- libical-0.43.orig/src/libicalss/icaldirset.h 2009-03-15 21:58:49.000000000 +0530 -+++ libical-0.43/src/libicalss/icaldirset.h 2009-03-15 22:04:53.000000000 +0530 -@@ -30,9 +30,9 @@ - #define ICALDIRSET_H - - #include --#include --#include --#include -+#include "icalset.h" -+#include "icalcluster.h" -+#include "icalgauge.h" - - /* icaldirset Routines for storing, fetching, and searching for ical - * objects in a database */ -diff -urNp libical-0.43.orig/src/libicalss/icalfileset.h libical-0.43/src/libicalss/icalfileset.h ---- libical-0.43.orig/src/libicalss/icalfileset.h 2009-03-15 21:58:49.000000000 +0530 -+++ libical-0.43/src/libicalss/icalfileset.h 2009-03-15 22:03:13.000000000 +0530 -@@ -30,9 +30,9 @@ - #define ICALFILESET_H - - #include --#include --#include --#include -+#include "icalset.h" -+#include "icalcluster.h" -+#include "icalgauge.h" - #include /* For open() flags and mode */ - #include /* For open() flags and mode */ - #include /* For open() flags and mode */ -diff -urNp libical-0.43.orig/src/libicalss/icalgauge.h libical-0.43/src/libicalss/icalgauge.h ---- libical-0.43.orig/src/libicalss/icalgauge.h 2009-03-15 21:58:49.000000000 +0530 -+++ libical-0.43/src/libicalss/icalgauge.h 2009-03-15 22:04:12.000000000 +0530 -@@ -29,7 +29,7 @@ - #ifndef ICALGAUGE_H - #define ICALGAUGE_H - --#include -+#include "icalcomponent.h" - - /** @file icalgauge.h - * @brief Routines implementing a filter for ical components -diff -urNp libical-0.43.orig/src/libicalss/icalset.h libical-0.43/src/libicalss/icalset.h ---- libical-0.43.orig/src/libicalss/icalset.h 2009-03-15 21:58:49.000000000 +0530 -+++ libical-0.43/src/libicalss/icalset.h 2009-03-15 22:04:29.000000000 +0530 -@@ -41,7 +41,7 @@ - - #include /* For PATH_MAX */ - #include --#include -+#include "icalgauge.h" - - #ifdef PATH_MAX - #define ICAL_PATH_MAX PATH_MAX -diff -urNp libical-0.43.orig/src/libicalss/icalspanlist.h libical-0.43/src/libicalss/icalspanlist.h ---- libical-0.43.orig/src/libicalss/icalspanlist.h 2009-03-15 21:58:48.000000000 +0530 -+++ libical-0.43/src/libicalss/icalspanlist.h 2009-03-15 22:02:29.000000000 +0530 -@@ -26,7 +26,7 @@ - #define ICALSPANLIST_H - - #include --#include -+#include "icalset.h" - - /** @file icalspanlist.h - * @brief Code that supports collections of free/busy spans of time diff --git a/libical-0.43-implicit-pointer-conversion.patch b/libical-0.43-implicit-pointer-conversion.patch deleted file mode 100644 index 5cfdca2..0000000 --- a/libical-0.43-implicit-pointer-conversion.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -urNp libical-0.43.orig/src/test/regression.c libical-0.43/src/test/regression.c ---- libical-0.43.orig/src/test/regression.c 2009-01-13 09:34:39.000000000 +0530 -+++ libical-0.43/src/test/regression.c 2009-01-13 09:54:37.000000000 +0530 -@@ -34,6 +34,8 @@ - #include - #include - #include -+#include -+#include - - #include "regression.h" - diff --git a/libical-0.43-makefile.patch b/libical-0.43-makefile.patch deleted file mode 100644 index 088890d..0000000 --- a/libical-0.43-makefile.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -urNp libical-0.43.orig/src/libicalss/Makefile.in libical-0.43/src/libicalss/Makefile.in ---- libical-0.43.orig/src/libicalss/Makefile.in 2009-01-13 09:34:39.000000000 +0530 -+++ libical-0.43/src/libicalss/Makefile.in 2009-01-13 09:52:10.000000000 +0530 -@@ -308,7 +308,7 @@ INCLUDES = \ - $(BDB_INCLUDE) - - libicalss_la_LDFLAGS = -version-info 43:0:43 --libicalss_la_LIBADD = $(BDB_LIBFILES) -+libicalss_la_LIBADD = $(BDB_LIBFILES) ../libical/libical.la - @DEV_FALSE@libicalss_la_DEVSOURCES = icalsslexer.c icalssyacc.c - @DEV_TRUE@libicalss_la_DEVSOURCES = icalsslexer.l icalssyacc.y - libicalss_la_SOURCES = \ diff --git a/libical-0.46-errors-are-fatal.patch b/libical-0.46-errors-are-fatal.patch new file mode 100644 index 0000000..4d6e0c6 --- /dev/null +++ b/libical-0.46-errors-are-fatal.patch @@ -0,0 +1,70 @@ +Patch by Debarshi Ray for libical >= 0.46, which replaces the broken +overlefts regarding ICAL_ERRORS_ARE_FATAL preprocessor conditions by correct ones. Since libical +0.43, errors are set to be non-fatal by default. Configure has "#define ICAL_ERRORS_ARE_FATAL 0" +which simply invalidates "#ifndef" and thus breaks applications like e.g. Zarafa Groupware. More +details can be found at: https://bugzilla.redhat.com/show_bug.cgi?id=575715 + +--- libical-0.46/src/libical/autogenex/ical.h 2010-08-30 22:05:05.000000000 +0200 ++++ libical-0.46/src/libical/autogenex/ical.h.errors-are-fatal 2010-12-19 21:39:10.000000000 +0100 +@@ -3272,7 +3272,7 @@ + void icalerror_set_errno(icalerrorenum x); + #endif + +-#ifdef ICAL_ERRORS_ARE_FATAL ++#if ICAL_ERRORS_ARE_FATAL == 1 + #undef NDEBUG + #endif + +@@ -3282,7 +3282,7 @@ + #define icalerror_check_component_type(value,type); + + /* Assert with a message */ +-#ifdef ICAL_ERRORS_ARE_FATAL ++#if ICAL_ERRORS_ARE_FATAL == 1 + + #ifdef __GNUC__ + #define icalerror_assert(test,message) if(!(test)){fprintf(stderr,"%s(), %s:%d: %s\n",__FUNCTION__,__FILE__,__LINE__,message);icalerror_stop_here(); abort();} +--- libical-0.46/src/libical/icalerror.h 2010-08-30 22:05:06.000000000 +0200 ++++ libical-0.46/src/libical/icalerror.h.errors-are-fatal 2010-12-19 21:40:12.000000000 +0100 +@@ -121,7 +121,7 @@ + void icalerror_set_errno(icalerrorenum x); + #endif + +-#ifdef ICAL_ERRORS_ARE_FATAL ++#if ICAL_ERRORS_ARE_FATAL == 1 + #undef NDEBUG + #endif + +@@ -131,7 +131,7 @@ + #define icalerror_check_component_type(value,type); + + /* Assert with a message */ +-#ifdef ICAL_ERRORS_ARE_FATAL ++#if ICAL_ERRORS_ARE_FATAL == 1 + + #ifdef __GNUC__ + #define icalerror_assert(test,message) if(!(test)){fprintf(stderr,"%s(), %s:%d: %s\n",__FUNCTION__,__FILE__,__LINE__,message);icalerror_stop_here(); abort();} +--- libical-0.46/src/libical/icalparser.c 2010-08-30 22:05:06.000000000 +0200 ++++ libical-0.46/src/libical/icalparser.c.errors-are-fatal 2010-12-19 21:41:18.000000000 +0100 +@@ -930,10 +930,7 @@ + + /* Change for mozilla */ + /* have the option of being flexible towards unsupported parameters */ +- #ifndef ICAL_ERRORS_ARE_FATAL +- continue; +- #endif +- ++ #if ICAL_ERRORS_ARE_FATAL == 1 + insert_error(tail, str, "Cant parse parameter name", + ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR); + tail = 0; +@@ -947,6 +944,9 @@ + name = 0; + } + return 0; ++ #else ++ continue; ++ #endif + } + + /* if (pvalue) { diff --git a/libical-0.46-icaltimezone.patch b/libical-0.46-icaltimezone.patch new file mode 100644 index 0000000..85f5c18 --- /dev/null +++ b/libical-0.46-icaltimezone.patch @@ -0,0 +1,98 @@ +Patch by David Woodhouse for libical >= 0.46, which fixes a race in populating +builtin timezone components. When multiple threads call icaltimezone_get_component() for the same +zone, it can be populated by icaltimezone_load_builtin_timezone() multiple times simultaneously, and +bad things happen. More details can be found at: https://bugzilla.redhat.com/show_bug.cgi?id=637150 + +This patch is already part of upstream and thus should be obsolete once libical 0.47 gets released. + +--- libical-0.46/src/libical/icaltimezone.c 2010-08-30 22:05:06.000000000 +0200 ++++ libical-0.46/src/libical/icaltimezone.c.icaltimezone 2010-12-19 20:37:11.000000000 +0100 +@@ -45,6 +45,11 @@ + + #include + ++#ifdef HAVE_PTHREAD ++#include ++static pthread_mutex_t builtin_mutex = PTHREAD_MUTEX_INITIALIZER; ++#endif ++ + #ifdef WIN32 + #include + #include +@@ -453,8 +458,7 @@ + + int changes_end_year; + +- if (!zone->component) +- icaltimezone_load_builtin_timezone (zone); ++ icaltimezone_load_builtin_timezone (zone); + + if (icaltimezone_minimum_expansion_year == -1) { + struct icaltimetype today = icaltime_today(); +@@ -1140,8 +1144,7 @@ + if (!zone) + return NULL; + +- if (!zone->tzid) +- icaltimezone_load_builtin_timezone (zone); ++ icaltimezone_load_builtin_timezone (zone); + + return zone->tzid; + } +@@ -1167,8 +1170,7 @@ + if (!zone) + return NULL; + +- if (!zone->component) +- icaltimezone_load_builtin_timezone (zone); ++ icaltimezone_load_builtin_timezone (zone); + + return zone->tznames; + } +@@ -1210,8 +1212,7 @@ + if (!zone) + return NULL; + +- if (!zone->component) +- icaltimezone_load_builtin_timezone (zone); ++ icaltimezone_load_builtin_timezone (zone); + + return zone->component; + } +@@ -1449,8 +1450,7 @@ + for (i=0; icomponent) +- icaltimezone_load_builtin_timezone (zone); ++ icaltimezone_load_builtin_timezone (zone); + + z_offset = get_offset(zone); + +@@ -1745,6 +1745,12 @@ + if (!zone->location || !zone->location[0]) + return; + ++#ifdef HAVE_PTHREAD ++ pthread_mutex_lock(&builtin_mutex); ++ if (zone->component) ++ goto out; ++#endif ++ + #ifdef USE_BUILTIN_TZDATA + { + char *filename; +@@ -1801,8 +1807,11 @@ + icalcomponent_remove_component(comp,subcomp); + icalcomponent_free(comp); + } +-#endif +- ++#endif ++#ifdef HAVE_PTHREAD ++ out: ++ pthread_mutex_unlock(&builtin_mutex); ++#endif + } + + diff --git a/libical.spec b/libical.spec index 1d0b305..5ec0046 100644 --- a/libical.spec +++ b/libical.spec @@ -1,70 +1,46 @@ -Name: libical -Version: 0.43 -Release: 5%{?dist} Summary: Reference implementation of the iCalendar data type and serialization format -Summary(pl): Implementacja formatu iCalendar - -Group: System Environment/Libraries +Name: libical +Version: 0.46 +Release: 1%{?dist} License: LGPLv2 or MPLv1.1 +Group: System Environment/Libraries URL: http://freeassociation.sourceforge.net/ -Source0: http://downloads.sourceforge.net/freeassociation/%{name}-%{version}.tar.gz - -# http://bugs.debian.org/511598 -Patch0: %{name}-%{version}-implicit-pointer-conversion.patch -Patch1: %{name}-%{version}-makefile.patch -# https://bugzilla.redhat.com/484091 -Patch2: %{name}-%{version}-cflags.patch - -BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) - -Requires: tzdata - -BuildRequires: bison -BuildRequires: byacc -BuildRequires: flex +Source: http://downloads.sourceforge.net/freeassociation/%{name}-%{version}.tar.gz +Patch0: libical-0.46-icaltimezone.patch +Patch1: libical-0.46-errors-are-fatal.patch +Requires: tzdata +BuildRequires: autoconf, automake, libtool +BuildRequires: bison, byacc, flex +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) %description Reference implementation of the iCalendar data type and serialization format used in dozens of calendaring and scheduling products. -%description -l pl -Implementacja formatu iCalendar, używana w wielu kalendarzach i -planerach/planistach. - %package devel Summary: Development files for libical -Summary(pl): Pliki deweloperskie dla libical Group: Development/Libraries -Requires: %{name} = %{version}-%{release} -Requires: pkgconfig +Requires: %{name} = %{version}-%{release}, pkgconfig %description devel The libical-devel package contains libraries and header files for developing applications that use libical. -%description devel -l pl -libical-devel zawiera biblioteki i pliki niezbędne do tworzenia aplikacji -korzystających z libical. - %prep %setup -q -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 +%patch0 -p1 -b .icaltimezone +%patch1 -p1 -b .errors-are-fatal +autoreconf -i %build %configure --disable-static --enable-reentrant --with-backtrace - make %{?_smp_mflags} -%check -# make check -# Fails on x86_64 and ppc64. - %install rm -rf $RPM_BUILD_ROOT +make DESTDIR=$RPM_BUILD_ROOT INSTALL='install -p' install -make install INSTALL="%{__install} -p" DESTDIR=$RPM_BUILD_ROOT +# Don't install any libtool .la files rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}*.la %clean @@ -76,13 +52,7 @@ rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) -%doc ChangeLog -%doc COPYING -%doc LICENSE -%doc NEWS -%doc README -%doc THANKS -%doc TODO +%doc LICENSE README THANKS %{_libdir}/%{name}.so.* %{_libdir}/libicalss.so.* %{_libdir}/libicalvcal.so.* @@ -95,18 +65,21 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/libicalss.so %{_libdir}/libicalvcal.so %{_libdir}/pkgconfig/libical.pc - %dir %{_includedir}/%{name} %{_includedir}/%{name}/ical*.h %{_includedir}/%{name}/pvl.h %{_includedir}/%{name}/sspm.h - %{_includedir}/%{name}/port.h %{_includedir}/%{name}/vcaltmp.h %{_includedir}/%{name}/vcc.h %{_includedir}/%{name}/vobject.h %changelog +* Sun Dec 19 2010 Robert Scheck 0.46-1 +- Upgrade to 0.46 (#525933, #628893) +- Fixed race in populating builtin timezone components (#637150) +- Fixed wrong ICAL_ERRORS_ARE_FATAL preprocessor check (#575715) + * Fri Jul 24 2009 Fedora Release Engineering - 0.43-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild diff --git a/sources b/sources index 0d724c2..81e3577 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -5f0a1feb60894d0be537aefea5647474 libical-0.43.tar.gz +9c08f88945bfd5d0791d102e4aa4125c libical-0.46.tar.gz