- Upgrade to 0.46 (#525933, #628893)

- Fixed race in populating builtin timezone components (#637150)
- Fixed wrong ICAL_ERRORS_ARE_FATAL preprocessor check (#575715)
This commit is contained in:
Robert Scheck 2010-12-19 22:06:07 +01:00
parent 2c836463d0
commit 5caa9c402e
8 changed files with 193 additions and 230 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
libical-0.43.tar.gz libical-0.46.tar.gz

View File

@ -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 <unistd.h>
#endif
-#include <libical/icalerror.h>
-#include <icaltz-util.h>
+#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 <ical.h>
+#include <libical/ical.h>
/*
* 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 <ical.h>
+#include <libical/ical.h>
#include <librr/rr.h>
#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 <libical/ical.h>
-#include <icalset.h>
+#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 <libical/ical.h>
-#include <icalset.h>
-#include <icalcomponent.h>
+#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 <libical/ical.h>
-#include <icalset.h>
+#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 <libical/ical.h>
-#include <icalset.h>
-#include <icalcluster.h>
-#include <icalgauge.h>
+#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 <libical/ical.h>
-#include <icalset.h>
-#include <icalcluster.h>
-#include <icalgauge.h>
+#include "icalset.h"
+#include "icalcluster.h"
+#include "icalgauge.h"
#include <sys/types.h> /* For open() flags and mode */
#include <sys/stat.h> /* For open() flags and mode */
#include <fcntl.h> /* 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 <icalcomponent.h>
+#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 <limits.h> /* For PATH_MAX */
#include <libical/ical.h>
-#include <icalgauge.h>
+#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 <libical/ical.h>
-#include <icalset.h>
+#include "icalset.h"
/** @file icalspanlist.h
* @brief Code that supports collections of free/busy spans of time

View File

@ -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 <libical/ical.h>
#include <libical/icalss.h>
#include <libicalvcal/vobject.h>
+#include <libicalvcal/icalvcal.h>
+#include <libicalvcal/vcc.h>
#include "regression.h"

View File

@ -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 = \

View File

@ -0,0 +1,70 @@
Patch by Debarshi Ray <rishi@fedoraproject.org> 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) {

View File

@ -0,0 +1,98 @@
Patch by David Woodhouse <dwmw2@infradead.org> 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 <sys/stat.h>
+#ifdef HAVE_PTHREAD
+#include <pthread.h>
+static pthread_mutex_t builtin_mutex = PTHREAD_MUTEX_INITIALIZER;
+#endif
+
#ifdef WIN32
#include <mbstring.h>
#include <windows.h>
@@ -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; i<count; i++) {
int z_offset;
zone = icalarray_element_at (builtin_timezones, i);
- if (!zone->component)
- 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
}

View File

@ -1,70 +1,46 @@
Name: libical
Version: 0.43
Release: 5%{?dist}
Summary: Reference implementation of the iCalendar data type and serialization format Summary: Reference implementation of the iCalendar data type and serialization format
Summary(pl): Implementacja formatu iCalendar Name: libical
Version: 0.46
Group: System Environment/Libraries Release: 1%{?dist}
License: LGPLv2 or MPLv1.1 License: LGPLv2 or MPLv1.1
Group: System Environment/Libraries
URL: http://freeassociation.sourceforge.net/ URL: http://freeassociation.sourceforge.net/
Source0: http://downloads.sourceforge.net/freeassociation/%{name}-%{version}.tar.gz Source: http://downloads.sourceforge.net/freeassociation/%{name}-%{version}.tar.gz
Patch0: libical-0.46-icaltimezone.patch
# http://bugs.debian.org/511598 Patch1: libical-0.46-errors-are-fatal.patch
Patch0: %{name}-%{version}-implicit-pointer-conversion.patch Requires: tzdata
Patch1: %{name}-%{version}-makefile.patch BuildRequires: autoconf, automake, libtool
# https://bugzilla.redhat.com/484091 BuildRequires: bison, byacc, flex
Patch2: %{name}-%{version}-cflags.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
Requires: tzdata
BuildRequires: bison
BuildRequires: byacc
BuildRequires: flex
%description %description
Reference implementation of the iCalendar data type and serialization format Reference implementation of the iCalendar data type and serialization format
used in dozens of calendaring and scheduling products. used in dozens of calendaring and scheduling products.
%description -l pl
Implementacja formatu iCalendar, używana w wielu kalendarzach i
planerach/planistach.
%package devel %package devel
Summary: Development files for libical Summary: Development files for libical
Summary(pl): Pliki deweloperskie dla libical
Group: Development/Libraries Group: Development/Libraries
Requires: %{name} = %{version}-%{release} Requires: %{name} = %{version}-%{release}, pkgconfig
Requires: pkgconfig
%description devel %description devel
The libical-devel package contains libraries and header files for developing The libical-devel package contains libraries and header files for developing
applications that use libical. applications that use libical.
%description devel -l pl
libical-devel zawiera biblioteki i pliki niezbędne do tworzenia aplikacji
korzystających z libical.
%prep %prep
%setup -q %setup -q
%patch0 -p1 %patch0 -p1 -b .icaltimezone
%patch1 -p1 %patch1 -p1 -b .errors-are-fatal
%patch2 -p1 autoreconf -i
%build %build
%configure --disable-static --enable-reentrant --with-backtrace %configure --disable-static --enable-reentrant --with-backtrace
make %{?_smp_mflags} make %{?_smp_mflags}
%check
# make check
# Fails on x86_64 and ppc64.
%install %install
rm -rf $RPM_BUILD_ROOT 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 rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}*.la
%clean %clean
@ -76,13 +52,7 @@ rm -rf $RPM_BUILD_ROOT
%files %files
%defattr(-,root,root,-) %defattr(-,root,root,-)
%doc ChangeLog %doc LICENSE README THANKS
%doc COPYING
%doc LICENSE
%doc NEWS
%doc README
%doc THANKS
%doc TODO
%{_libdir}/%{name}.so.* %{_libdir}/%{name}.so.*
%{_libdir}/libicalss.so.* %{_libdir}/libicalss.so.*
%{_libdir}/libicalvcal.so.* %{_libdir}/libicalvcal.so.*
@ -95,18 +65,21 @@ rm -rf $RPM_BUILD_ROOT
%{_libdir}/libicalss.so %{_libdir}/libicalss.so
%{_libdir}/libicalvcal.so %{_libdir}/libicalvcal.so
%{_libdir}/pkgconfig/libical.pc %{_libdir}/pkgconfig/libical.pc
%dir %{_includedir}/%{name} %dir %{_includedir}/%{name}
%{_includedir}/%{name}/ical*.h %{_includedir}/%{name}/ical*.h
%{_includedir}/%{name}/pvl.h %{_includedir}/%{name}/pvl.h
%{_includedir}/%{name}/sspm.h %{_includedir}/%{name}/sspm.h
%{_includedir}/%{name}/port.h %{_includedir}/%{name}/port.h
%{_includedir}/%{name}/vcaltmp.h %{_includedir}/%{name}/vcaltmp.h
%{_includedir}/%{name}/vcc.h %{_includedir}/%{name}/vcc.h
%{_includedir}/%{name}/vobject.h %{_includedir}/%{name}/vobject.h
%changelog %changelog
* Sun Dec 19 2010 Robert Scheck <robert@fedoraproject.org> 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 <rel-eng@lists.fedoraproject.org> - 0.43-5 * Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.43-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild

View File

@ -1 +1 @@
5f0a1feb60894d0be537aefea5647474 libical-0.43.tar.gz 9c08f88945bfd5d0791d102e4aa4125c libical-0.46.tar.gz