You can subscribe to this list here.
2003 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
|
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
2007 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
(1) |
2009 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
(1) |
Nov
(1) |
Dec
|
2010 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(8) |
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(2) |
2012 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(4) |
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
|
2014 |
Jan
(2) |
Feb
(1) |
Mar
(5) |
Apr
(3) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Ken M. <mu...@an...> - 2014-04-01 11:28:15
|
On 03/31/2014 09:02 PM, Robert Norris wrote: > On Tue, Apr 1, 2014, at 11:49 AM, Ken Murchison wrote: >> I sorted and rearranged a few things, but the enum values should be the >> same. If not, please let me know. > Attached is the differences in installed headers between a shipping > libical 1.0 (from Debian) and the SVN repo + your patch. > > icalvalue_kind is different. The new output is sorted, so the values > don't match anymore. Yes. My bad. I was comparing my values to what the current SVN code outputs, not realizing that it had changed since the 1.0 release. Attached is a corrected version of my patch. > > I see there's a couple of *_LAST_ENUM defines, that are used inside > libical itself. They look right now, but will that be a problem when > they change? > I don't believe so. I looked at this myself a few days ago, and the *_LAST_ENUM values are used for searching for a particular enum in the mapping. So we want/need *LAST_ENUM to grow as we add more stuff. If an application is relying on *_LAST_ENUM to remain constant, then they are screwed. In fact, I'm wondering if we even want/need those values exposed. -- Kenneth Murchison Principal Systems Software Engineer Carnegie Mellon University |
From: Ken M. <mu...@an...> - 2014-04-01 00:49:51
|
On 03/31/2014 08:45 PM, Robert Norris wrote: > I haven't looked closely at the code, just ran it and compared the > generated output. icalvalue_kind seems to have moved around a bit. The > original list was not sorted. I sorted and rearranged a few things, but the enum values should be the same. If not, please let me know. If I don't hear any objections or hear of any problems, I will probably commit this to SVN by the end of the week. -- Kenneth Murchison Principal Systems Software Engineer Carnegie Mellon University |
From: Robert N. <ro...@fa...> - 2014-04-01 00:46:03
|
I haven't looked closely at the code, just ran it and compared the generated output. icalvalue_kind seems to have moved around a bit. The original list was not sorted. Overall though this approach works for me. I'm withdrawing my fork :) |
From: Ken M. <mu...@an...> - 2014-03-31 15:58:00
|
On 03/27/2014 10:19 PM, Robert Norris wrote: > On Fri, Mar 28, 2014, at 01:04 PM, Ken Murchison wrote: >> I looks like design-data/parameters.csv contains the integer value to be >> used for the enumerated type when generated, which I believe preserves >> the ABI for parameters. Perhaps the same can be done for component >> types, methods, properties, value types, and any other enums. >> Obviously, the scripts used to generate the resulting *.[ch] files would >> need to be changed too. > This is the approach I considered too. I think it would work ok arrange > it so that non-sequential values get added to enums as necessary, but my > concern then is that any programs iterating over all values in an enum > by using the range ICAL_FOO_X to ICAL_FOO_NONE is going to miss the new > values. I don't know if that's a legitimate concern, but I don't see a > way around it. Assuming that applications don't actually iterate over enums like Rob mentions above, here is a patch which requires the enum values of properties, parameters, value-types, and values to be specified in the design-data files. The values specified match those in the derived filed in the v1.0 release. I would like some review on this to see if its sane and will actually preserve the ABI in the face of additions to properties/parameters/value-types/values. The second attachment is what a diff for the new VAVAILABILITY and VPOLL components might look like (I didn't include restrictions, etc). -- Kenneth Murchison Principal Systems Software Engineer Carnegie Mellon University |
From: Ken M. <mu...@an...> - 2014-03-28 02:28:10
|
On 03/27/2014 10:19 PM, Robert Norris wrote: > On Fri, Mar 28, 2014, at 01:04 PM, Ken Murchison wrote: >> I looks like design-data/parameters.csv contains the integer value to be >> used for the enumerated type when generated, which I believe preserves >> the ABI for parameters. Perhaps the same can be done for component >> types, methods, properties, value types, and any other enums. >> Obviously, the scripts used to generate the resulting *.[ch] files would >> need to be changed too. > This is the approach I considered too. I think it would work ok arrange > it so that non-sequential values get added to enums as necessary, but my > concern then is that any programs iterating over all values in an enum > by using the range ICAL_FOO_X to ICAL_FOO_NONE is going to miss the new > values. I don't know if that's a legitimate concern, but I don't see a > way around it. I also don't know if thats a legitimate concern or not, but I haven't seen the need to iterate through a range of enum values (say ICAL_VEVENT_COMPONENT to ICAL_VTIMEZONE_COMPONENT). In the code that I have written for Cyrus, I'm either selecting a single component/property/parameter, or I am iterating through all of them using ICAL_ANY_*. Does Bron have any thoughts on this? -- Kenneth Murchison Principal Systems Software Engineer Carnegie Mellon University |
From: Robert N. <ro...@fa...> - 2014-03-28 02:19:15
|
On Fri, Mar 28, 2014, at 01:04 PM, Ken Murchison wrote: > I looks like design-data/parameters.csv contains the integer value to be > used for the enumerated type when generated, which I believe preserves > the ABI for parameters. Perhaps the same can be done for component > types, methods, properties, value types, and any other enums. > Obviously, the scripts used to generate the resulting *.[ch] files would > need to be changed too. This is the approach I considered too. I think it would work ok arrange it so that non-sequential values get added to enums as necessary, but my concern then is that any programs iterating over all values in an enum by using the range ICAL_FOO_X to ICAL_FOO_NONE is going to miss the new values. I don't know if that's a legitimate concern, but I don't see a way around it. |
From: Ken M. <mu...@an...> - 2014-03-28 02:04:21
|
I have patches to add both VAVAILABILITY AND VPOLL, and I plan to work out a way to make these NOT break the ABI. I don't know how I will do this yet, but its on my VTODO list (literally). I looks like design-data/parameters.csv contains the integer value to be used for the enumerated type when generated, which I believe preserves the ABI for parameters. Perhaps the same can be done for component types, methods, properties, value types, and any other enums. Obviously, the scripts used to generate the resulting *.[ch] files would need to be changed too. If any of the early maintainers have any thoughts on this, I'd appreciate them. On 03/27/2014 08:09 PM, Robert Norris wrote: > Hi all, > > The Cyrus project is currently adding CalDAV & CardDAV support to Cyrus > IMAP, using libical as a base. We're interested in implementing some of > the extensions from draft-daboo-valarm-extensions-04[1], mostly to > support ACTION:URI VALARMs for SMS sending. > > As far as we've been able to tell, there's really no way to add > attributes to libical without breaking ABI compatibility. We tried > storing the raw (pre-parse) properties in XLICERROR properties so the > application can handle them specially, but that stops strip_errors > working sanely. Hacky workarounds to preserve ABI compatibility aren't > going to work. > > So unless anyone has a better idea (that's either trivial or backed up > with working code), we're going to fork libical into cyrus-ical, for our > own use. We'll do a name change to avoid conflicts but that's all for > the moment. If there's time and inclination down the track we'd like to > rework a few things so that stuff can be added without breaking the ABI, > but that's not necessary for us right now. > > We don't really want to fork, but neither do we want to contribute > patches that break the world for everyone else. Tracking upstream > shouldn't be too difficult given the lack of activity. > > Happy to discuss further! > > Cheers, > Rob N. > > 1. http://tools.ietf.org/html/draft-daboo-valarm-extensions-04 > > ------------------------------------------------------------------------------ > _______________________________________________ > Freeassociation-libical mailing list > Fre...@li... > https://lists.sourceforge.net/lists/listinfo/freeassociation-libical -- Kenneth Murchison Principal Systems Software Engineer Carnegie Mellon University |
From: Robert N. <ro...@fa...> - 2014-03-28 00:09:10
|
Hi all, The Cyrus project is currently adding CalDAV & CardDAV support to Cyrus IMAP, using libical as a base. We're interested in implementing some of the extensions from draft-daboo-valarm-extensions-04[1], mostly to support ACTION:URI VALARMs for SMS sending. As far as we've been able to tell, there's really no way to add attributes to libical without breaking ABI compatibility. We tried storing the raw (pre-parse) properties in XLICERROR properties so the application can handle them specially, but that stops strip_errors working sanely. Hacky workarounds to preserve ABI compatibility aren't going to work. So unless anyone has a better idea (that's either trivial or backed up with working code), we're going to fork libical into cyrus-ical, for our own use. We'll do a name change to avoid conflicts but that's all for the moment. If there's time and inclination down the track we'd like to rework a few things so that stuff can be added without breaking the ABI, but that's not necessary for us right now. We don't really want to fork, but neither do we want to contribute patches that break the world for everyone else. Tracking upstream shouldn't be too difficult given the lack of activity. Happy to discuss further! Cheers, Rob N. 1. http://tools.ietf.org/html/draft-daboo-valarm-extensions-04 |
From: Patrick O. <pat...@gm...> - 2014-02-04 12:56:42
|
On Sat, 2013-11-23 at 19:57 +0100, Patrick Ohly wrote: > On Sat, 2013-11-23 at 10:12 -0500, Allen Winter wrote: > > But this was a major release, so reasonable and not unexpected for ABI to break in a major release. > > I agree, if there are good reasons for an ABI break, then doing it at a > major release is the right thing to do. But that doesn't mean that a > major release alone is a reason for breaking the ABI. > > > Of course we need to find a way to ensure ABI. > > Good. > > > Now I worried that ABI is broken again for people who rebuilt against 1.0.0 > > and then install the next release. So I'm thinking of reverting 1156 > > And restore the previous behavior where the ABI was essentially > undefined, because it was depending on the implementation of Perl? That > doesn't sound like a solution. > > I had checked, Ubuntu Saucy has libical.so.1 with enums sorted, just > like Fedora has now. I suggest declaring that as the libical.so.1 ABI > and ensuring that all users of libical 1.0 adhere to that; therefore a > bugfix release with commit 1156 would be good. Do we agree that libical.so.1 uses the ABI with sorted enums and that therefore all distros should compile libical 1.0 with commit 1156 included? I'm copying kub...@li..., the maintainers of libical in Ubuntu, to ensure that they are aware of this issue. BTW, I was wrong when I said earlier that no relevant changes happened between libical.so.0 and libical.so.1 as far as SyncEvolution was concerned. Inserting ICAL_ACKNOWLEDGED_PROPERTY at the beginning of the icalproperty_kind enum changed values that SyncEvolution uses, so I'll have to add further hacks to keep the same binary working with dlopened libical.so.1 and libical.so.0. -- Bye, Patrick Ohly -- Pat...@gm... http://www.estamos.de/ |
From: Allen W. <wi...@kd...> - 2014-01-27 22:44:04
|
On Thursday, January 16, 2014 08:59:36 AM Ken Murchison wrote: > A complete description of the problem and a patch to fix it are located > here: > > https://bugzilla.cyrusimap.org/show_bug.cgi?id=3836 > > Thanks for the patch. committed with revision 1157 |
From: Ken M. <mu...@an...> - 2014-01-16 14:41:00
|
A complete description of the problem and a patch to fix it are located here: https://bugzilla.cyrusimap.org/show_bug.cgi?id=3836 -- Kenneth Murchison Principal Systems Software Engineer Carnegie Mellon University |
From: Patrick O. <pat...@gm...> - 2013-11-23 18:57:24
|
On Sat, 2013-11-23 at 10:12 -0500, Allen Winter wrote: > But this was a major release, so reasonable and not unexpected for ABI to break in a major release. I agree, if there are good reasons for an ABI break, then doing it at a major release is the right thing to do. But that doesn't mean that a major release alone is a reason for breaking the ABI. > Of course we need to find a way to ensure ABI. Good. > Now I worried that ABI is broken again for people who rebuilt against 1.0.0 > and then install the next release. So I'm thinking of reverting 1156 And restore the previous behavior where the ABI was essentially undefined, because it was depending on the implementation of Perl? That doesn't sound like a solution. I had checked, Ubuntu Saucy has libical.so.1 with enums sorted, just like Fedora has now. I suggest declaring that as the libical.so.1 ABI and ensuring that all users of libical 1.0 adhere to that; therefore a bugfix release with commit 1156 would be good. -- Bye, Patrick Ohly -- Pat...@gm... http://www.estamos.de/ |
From: Allen W. <wi...@kd...> - 2013-11-23 15:12:54
|
On Friday, November 22, 2013 10:07:00 AM Patrick Ohly wrote: > Hello! > > The recent issue with inconsistent ABIs in Fedora [1,2] because enums > were assigned randomly in the header files makes me wonder: if these > header files contain enums sorted alphabetical, as they do now, how can > new entries be added? > > It looks to me that every small change, like adding a new parameter, > will now lead to a new ABI for libical. In case it is not obvious: this > is very bad for compatibility of binaries with different Linux. > SyncEvolution binaries from syncevolution.org currently no longer work > with distros which switched to libical 1.0 because the soname changed > from libical.so.0 to libical.so.1. > > Can this be avoided in the future? > > For example, can the header file be considered frozen again from now on, > with new enum values added manually at the end of each enumeration? The > rest of the code could still be auto-generated during each compile run, > just the header files need to remain the same. > > [1] http://sourceforge.net/p/freeassociation/code/1156/ > [2] http://sourceforge.net/p/freeassociation/code/1156/ > But this was a major release, so reasonable and not unexpected for ABI to break in a major release. Of course we need to find a way to ensure ABI. Now I worried that ABI is broken again for people who rebuilt against 1.0.0 and then install the next release. So I'm thinking of reverting 1156 |
From: Patrick O. <pat...@gm...> - 2013-11-22 09:07:11
|
Hello! The recent issue with inconsistent ABIs in Fedora [1,2] because enums were assigned randomly in the header files makes me wonder: if these header files contain enums sorted alphabetical, as they do now, how can new entries be added? It looks to me that every small change, like adding a new parameter, will now lead to a new ABI for libical. In case it is not obvious: this is very bad for compatibility of binaries with different Linux. SyncEvolution binaries from syncevolution.org currently no longer work with distros which switched to libical 1.0 because the soname changed from libical.so.0 to libical.so.1. Can this be avoided in the future? For example, can the header file be considered frozen again from now on, with new enum values added manually at the end of each enumeration? The rest of the code could still be auto-generated during each compile run, just the header files need to remain the same. [1] http://sourceforge.net/p/freeassociation/code/1156/ [2] http://sourceforge.net/p/freeassociation/code/1156/ -- Bye, Patrick Ohly -- Pat...@gm... http://www.estamos.de/ |
From: Huang J. (S. TPE3-2) <Hua...@cs...> - 2013-07-26 00:47:47
|
Hello Allen, I tried, and got the error msg bellow, /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c: In function ‘decode’: /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:151:10: error: ‘BYTE_ORDER’ undeclared (first use in this function) /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:151:10: note: each undeclared identifier is reported only once for each function it appears in /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:151:24: error: ‘BIG_ENDIAN’ undeclared (first use in this function) /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:153:28: error: ‘LITTLE_ENDIAN’ undeclared (first use in this function) src/libical/CMakeFiles/ical.dir/build.make:485: recipe for target `src/libical/CMakeFiles/ical.dir/icaltz-util.o' failed make[2]: *** [src/libical/CMakeFiles/ical.dir/icaltz-util.o] Error 1 CMakeFiles/Makefile2:165: recipe for target `src/libical/CMakeFiles/ical.dir/all' failed make[1]: *** [src/libical/CMakeFiles/ical.dir/all] Error 2 Makefile:126: recipe for target `all' failed make: *** [all] Error 2 Here is the msg from cmake, -- Check for working C compiler: /usr/bin/i686-pc-mingw32-gcc.exe -- Check for working C compiler: /usr/bin/i686-pc-mingw32-gcc.exe -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /usr/bin/i686-pc-mingw32-g++.exe -- Check for working CXX compiler: /usr/bin/i686-pc-mingw32-g++.exe -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Found Perl: /usr/bin/perl.exe (found version "5.14.2") -- Looking for include file assert.h -- Looking for include file assert.h - found -- Looking for include file byteswap.h -- Looking for include file byteswap.h - not found. -- Looking for include file ctype.h -- Looking for include file ctype.h - found -- Looking for include file dlfcn.h -- Looking for include file dlfcn.h - not found. -- Looking for include file endian.h -- Looking for include file endian.h - not found. -- Looking for include file inttypes.h -- Looking for include file inttypes.h - found -- Looking for include file memory.h -- Looking for include file memory.h - found -- Looking for include file pthread.h -- Looking for include file pthread.h - found -- Looking for include file stdint.h -- Looking for include file stdint.h - found -- Looking for include file stdlib.h -- Looking for include file stdlib.h - found -- Looking for include file strings.h -- Looking for include file strings.h - found -- Looking for include file string.h -- Looking for include file string.h - found -- Looking for include file sys/endian.h -- Looking for include file sys/endian.h - not found. -- Looking for include file sys/stat.h -- Looking for include file sys/stat.h - found -- Looking for include file sys/types.h -- Looking for include file sys/types.h - found -- Looking for include file time.h -- Looking for include file time.h - found -- Looking for include file unistd.h -- Looking for include file unistd.h - found -- Looking for include file wctype.h -- Looking for include file wctype.h - found -- Looking for backtrace -- Looking for backtrace - not found -- Looking for gmtime_r -- Looking for gmtime_r - not found -- Looking for isspace -- Looking for isspace - found -- Looking for iswspace -- Looking for iswspace - found -- Looking for setenv -- Looking for setenv - not found -- Looking for snprintf -- Looking for snprintf - found -- Looking for strdup -- Looking for strdup - found -- Looking for unsetenv -- Looking for unsetenv - not found -- Looking for stddef.h -- Looking for stddef.h - found -- Check size of mode_t -- Check size of mode_t - done -- Check size of size_t -- Check size of size_t - done -- Check size of intptr_t -- Check size of intptr_t - done -- Check size of pid_t -- Check size of pid_t - done -- Looking for include file pthread.h -- Looking for include file pthread.h - found -- Looking for pthread_create -- Looking for pthread_create - not found. -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - found -- Found Threads: TRUE -- Looking for pthread_attr_get_np in pthread -- Looking for pthread_attr_get_np in pthread - not found -- Looking for pthread_getattr_np in pthread -- Looking for pthread_getattr_np in pthread - not found -- Looking for include files pthread.h, pthread_np.h -- Looking for include files pthread.h, pthread_np.h - not found. -- Configuring done -- Generating done -- Build files have been written to: /home/huangjianzhong/libical-1.0/build -----邮件原件----- 发件人: Allen Winter [mailto:wi...@kd...] 发送时间: 2013年7月25日 23:12 收件人: fre...@li...; Huang Jianzhong (SVW TPE3-2) 主题: Re: [libical] libical 1.0 compile error under Cygwin using i686-pc-mingw32 toolchain Hello, We no longer support configure, sorry about that. So the build instructions are: export CC=i686-pc-mingw32-gcc export CXX= i686-pc-mingw32-g++ mkdir build cd build cmake .. make make install if that fails, please send the compile errors On Thursday, July 25, 2013 06:14:46 AM Huang Jianzhong wrote: > Here is the error msg for "make", can anyone tell me what I have done wrong? > > huangjianzhong@tpdl545 ~/libical-1.0/build $ make [ 3%] Built target > ical-header [ 4%] Building C object > src/libical/CMakeFiles/ical.dir/icaltz-util.o > /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c: In function 'decode': > /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:151:10: > error: 'BYTE_ORDER' undeclared (first use in this function) > /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:151:10: > note: each undeclared identifier is reported only once for each > function it appears in > /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:151:24: > error: 'BIG_ENDIAN' undeclared (first use in this function) > /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:153:28: > error: 'LITTLE_ENDIAN' undeclared (first use in this function) > src/libical/CMakeFiles/ical.dir/build.make:485: recipe for target > `src/libical/CMakeFiles/ical.dir/icaltz-util.o' failed > make[2]: *** [src/libical/CMakeFiles/ical.dir/icaltz-util.o] Error 1 > CMakeFiles/Makefile2:165: recipe for target > `src/libical/CMakeFiles/ical.dir/all' failed > make[1]: *** [src/libical/CMakeFiles/ical.dir/all] Error 2 > Makefile:126: recipe for target `all' failed > make: *** [all] Error 2 > > Following is my build steps: > > > 1) export CC=i686-pc-mingw32-gcc > > 2) export CXX= i686-pc-mingw32-g++ > > 3) ./configure --host=i686-pc-mingw32 > > 4) Call "cmake .." and modified the CMakeCache.txt setting env for compiler etc., below is the content. then regenerate > ######################## > # EXTERNAL cache entries > ######################## > > //Path to a program. > CMAKE_AR:FILEPATH=/usr/bin/i686-pc-mingw32-ar.exe > > //For backwards compatibility, what version of CMake commands and // > syntax should this version of CMake try to support. > CMAKE_BACKWARDS_COMPATIBILITY:STRING=2.4 > > //Choose the type of build, options are: None(CMAKE_CXX_FLAGS or // > CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel. > CMAKE_BUILD_TYPE:STRING= > > //Enable/Disable color output during build. > CMAKE_COLOR_MAKEFILE:BOOL=ON > > //CXX compiler. > CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/i686-pc-mingw32-g++.exe > > //Flags used by the compiler during all build types. > CMAKE_CXX_FLAGS:STRING=-I/usr/include -I/usr/include/w32api //I have > tried adding -I flag and remove them totally both does not work > > //Flags used by the compiler during debug builds. > CMAKE_CXX_FLAGS_DEBUG:STRING=-g > > //Flags used by the compiler during release minsize builds. > CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG > > //Flags used by the compiler during release builds (/MD /Ob1 /Oi // > /Ot /Oy /Gs will produce slightly less optimized but smaller // > files). > CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG > > //Flags used by the compiler during Release with Debug Info builds. > CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g > > //C compiler. > CMAKE_C_COMPILER:FILEPATH=/usr/bin/i686-pc-mingw32-gcc.exe > > //Flags used by the compiler during all build types. > CMAKE_C_FLAGS:STRING= > > //Flags used by the compiler during debug builds. > CMAKE_C_FLAGS_DEBUG:STRING=-g > > //Flags used by the compiler during release minsize builds. > CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG > > //Flags used by the compiler during release builds (/MD /Ob1 /Oi // > /Ot /Oy /Gs will produce slightly less optimized but smaller // > files). > CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG > > //Flags used by the compiler during Release with Debug Info builds. > CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g > > //Flags used by the linker. > CMAKE_EXE_LINKER_FLAGS:STRING='-Wl,--enable-auto-import ' > > //Flags used by the linker during debug builds. > CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= > > //Flags used by the linker during release minsize builds. > CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= > > //Flags used by the linker during release builds. > CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= > > //Flags used by the linker during Release with Debug Info builds. > CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= > > //Enable/Disable output of compile commands during generation. > CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF > > //Install path prefix, prepended onto install directories. > CMAKE_INSTALL_PREFIX:PATH=/usr/local > > //Path to a program. > CMAKE_LINKER:FILEPATH=/usr/bin/i686-pc-mingw32-ld.exe > > //Path to a program. > CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make.exe > > //Flags used by the linker during the creation of modules. > CMAKE_MODULE_LINKER_FLAGS:STRING=' ' > > //Flags used by the linker during debug builds. > CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= > > //Flags used by the linker during release minsize builds. > CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= > > //Flags used by the linker during release builds. > CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= > > //Flags used by the linker during Release with Debug Info builds. > CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= > > //Path to a program. > CMAKE_NM:FILEPATH=/usr/bin/i686-pc-mingw32-nm.exe > > //Path to a program. > CMAKE_OBJCOPY:FILEPATH=/usr/bin/i686-pc-mingw32-objcopy.exe > > //Path to a program. > CMAKE_OBJDUMP:FILEPATH=/usr/bin/i686-pc-mingw32-objdump.exe > > //Value Computed by CMake > CMAKE_PROJECT_NAME:STATIC=libical > > //Path to a program. > CMAKE_RANLIB:FILEPATH=/usr/bin/i686-pc-mingw32-ranlib.exe > > //RC compiler. > CMAKE_RC_COMPILER:FILEPATH=/usr/bin/i686-pc-mingw32-windres.exe > > //Flags for Fortran compiler. > CMAKE_RC_FLAGS:STRING=' ' > > //Flags used by the linker during the creation of dll's. > CMAKE_SHARED_LINKER_FLAGS:STRING=' ' > > //Flags used by the linker during debug builds. > CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= > > //Flags used by the linker during release minsize builds. > CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= > > //Flags used by the linker during release builds. > CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= > > //Flags used by the linker during Release with Debug Info builds. > CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= > > //If set, runtime paths are not added when installing shared > libraries, // but are added when building. > CMAKE_SKIP_INSTALL_RPATH:BOOL=NO > > //If set, runtime paths are not added when using shared libraries. > CMAKE_SKIP_RPATH:BOOL=NO > > //Path to a program. > CMAKE_STRIP:FILEPATH=/usr/bin/i686-pc-mingw32-strip.exe > > //If true, cmake will use relative paths in makefiles and projects. > CMAKE_USE_RELATIVE_PATHS:BOOL=OFF > > //If this value is on, makefiles will be generated without the // > .SILENT directive, and all commands will be echoed to the console // > during the make. This is useful for debugging only. With Visual // > Studio IDE projects all commands are done without /nologo. > CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE > > //Single output directory for building all executables. > EXECUTABLE_OUTPUT_PATH:PATH= > > //Include directory name > INCLUDE_INSTALL_DIR:STRING=/usr/local/include > > //Single output directory for building all libraries. > LIBRARY_OUTPUT_PATH:PATH= > > //Library directory name > LIB_INSTALL_DIR:STRING=/usr/local/lib > > //Define suffix of directory name (32/64) LIB_SUFFIX:STRING= > > //Path to a program. > PERL_EXECUTABLE:FILEPATH=/usr/bin/perl.exe > > //Share directory name > SHARE_INSTALL_DIR:STRING=/usr/local/share > > //Dependencies for target > ical-static_LIB_DEPENDS:STATIC= > > //Dependencies for the target > ical_LIB_DEPENDS:STATIC=general;-lpthread; > > //Dependencies for target > icalss-static_LIB_DEPENDS:STATIC= > > //Dependencies for the target > icalss_LIB_DEPENDS:STATIC=general;ical; > > //Dependencies for target > icalvcal-static_LIB_DEPENDS:STATIC= > > //Dependencies for the target > icalvcal_LIB_DEPENDS:STATIC=general;ical; > > //Value Computed by CMake > libical_BINARY_DIR:STATIC=/home/huangjianzhong/libical-1.0/build > > //Value Computed by CMake > libical_SOURCE_DIR:STATIC=/home/huangjianzhong/libical-1.0 > |
From: Allen W. <wi...@kd...> - 2013-07-25 15:12:05
|
Hello, We no longer support configure, sorry about that. So the build instructions are: export CC=i686-pc-mingw32-gcc export CXX= i686-pc-mingw32-g++ mkdir build cd build cmake .. make make install if that fails, please send the compile errors On Thursday, July 25, 2013 06:14:46 AM Huang Jianzhong wrote: > Here is the error msg for "make", can anyone tell me what I have done wrong? > > huangjianzhong@tpdl545 ~/libical-1.0/build > $ make > [ 3%] Built target ical-header > [ 4%] Building C object src/libical/CMakeFiles/ical.dir/icaltz-util.o > /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c: In function 'decode': > /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:151:10: error: 'BYTE_ORDER' undeclared (first use in this function) > /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:151:10: note: each undeclared identifier is reported only once for each function it appears in > /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:151:24: error: 'BIG_ENDIAN' undeclared (first use in this function) > /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:153:28: error: 'LITTLE_ENDIAN' undeclared (first use in this function) > src/libical/CMakeFiles/ical.dir/build.make:485: recipe for target `src/libical/CMakeFiles/ical.dir/icaltz-util.o' failed > make[2]: *** [src/libical/CMakeFiles/ical.dir/icaltz-util.o] Error 1 > CMakeFiles/Makefile2:165: recipe for target `src/libical/CMakeFiles/ical.dir/all' failed > make[1]: *** [src/libical/CMakeFiles/ical.dir/all] Error 2 > Makefile:126: recipe for target `all' failed > make: *** [all] Error 2 > > Following is my build steps: > > > 1) export CC=i686-pc-mingw32-gcc > > 2) export CXX= i686-pc-mingw32-g++ > > 3) ./configure --host=i686-pc-mingw32 > > 4) Call "cmake .." and modified the CMakeCache.txt setting env for compiler etc., below is the content. then regenerate > ######################## > # EXTERNAL cache entries > ######################## > > //Path to a program. > CMAKE_AR:FILEPATH=/usr/bin/i686-pc-mingw32-ar.exe > > //For backwards compatibility, what version of CMake commands and > // syntax should this version of CMake try to support. > CMAKE_BACKWARDS_COMPATIBILITY:STRING=2.4 > > //Choose the type of build, options are: None(CMAKE_CXX_FLAGS or > // CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel. > CMAKE_BUILD_TYPE:STRING= > > //Enable/Disable color output during build. > CMAKE_COLOR_MAKEFILE:BOOL=ON > > //CXX compiler. > CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/i686-pc-mingw32-g++.exe > > //Flags used by the compiler during all build types. > CMAKE_CXX_FLAGS:STRING=-I/usr/include -I/usr/include/w32api > //I have tried adding -I flag and remove them totally both does not work > > //Flags used by the compiler during debug builds. > CMAKE_CXX_FLAGS_DEBUG:STRING=-g > > //Flags used by the compiler during release minsize builds. > CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG > > //Flags used by the compiler during release builds (/MD /Ob1 /Oi > // /Ot /Oy /Gs will produce slightly less optimized but smaller > // files). > CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG > > //Flags used by the compiler during Release with Debug Info builds. > CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g > > //C compiler. > CMAKE_C_COMPILER:FILEPATH=/usr/bin/i686-pc-mingw32-gcc.exe > > //Flags used by the compiler during all build types. > CMAKE_C_FLAGS:STRING= > > //Flags used by the compiler during debug builds. > CMAKE_C_FLAGS_DEBUG:STRING=-g > > //Flags used by the compiler during release minsize builds. > CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG > > //Flags used by the compiler during release builds (/MD /Ob1 /Oi > // /Ot /Oy /Gs will produce slightly less optimized but smaller > // files). > CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG > > //Flags used by the compiler during Release with Debug Info builds. > CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g > > //Flags used by the linker. > CMAKE_EXE_LINKER_FLAGS:STRING='-Wl,--enable-auto-import ' > > //Flags used by the linker during debug builds. > CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= > > //Flags used by the linker during release minsize builds. > CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= > > //Flags used by the linker during release builds. > CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= > > //Flags used by the linker during Release with Debug Info builds. > CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= > > //Enable/Disable output of compile commands during generation. > CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF > > //Install path prefix, prepended onto install directories. > CMAKE_INSTALL_PREFIX:PATH=/usr/local > > //Path to a program. > CMAKE_LINKER:FILEPATH=/usr/bin/i686-pc-mingw32-ld.exe > > //Path to a program. > CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make.exe > > //Flags used by the linker during the creation of modules. > CMAKE_MODULE_LINKER_FLAGS:STRING=' ' > > //Flags used by the linker during debug builds. > CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= > > //Flags used by the linker during release minsize builds. > CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= > > //Flags used by the linker during release builds. > CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= > > //Flags used by the linker during Release with Debug Info builds. > CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= > > //Path to a program. > CMAKE_NM:FILEPATH=/usr/bin/i686-pc-mingw32-nm.exe > > //Path to a program. > CMAKE_OBJCOPY:FILEPATH=/usr/bin/i686-pc-mingw32-objcopy.exe > > //Path to a program. > CMAKE_OBJDUMP:FILEPATH=/usr/bin/i686-pc-mingw32-objdump.exe > > //Value Computed by CMake > CMAKE_PROJECT_NAME:STATIC=libical > > //Path to a program. > CMAKE_RANLIB:FILEPATH=/usr/bin/i686-pc-mingw32-ranlib.exe > > //RC compiler. > CMAKE_RC_COMPILER:FILEPATH=/usr/bin/i686-pc-mingw32-windres.exe > > //Flags for Fortran compiler. > CMAKE_RC_FLAGS:STRING=' ' > > //Flags used by the linker during the creation of dll's. > CMAKE_SHARED_LINKER_FLAGS:STRING=' ' > > //Flags used by the linker during debug builds. > CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= > > //Flags used by the linker during release minsize builds. > CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= > > //Flags used by the linker during release builds. > CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= > > //Flags used by the linker during Release with Debug Info builds. > CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= > > //If set, runtime paths are not added when installing shared libraries, > // but are added when building. > CMAKE_SKIP_INSTALL_RPATH:BOOL=NO > > //If set, runtime paths are not added when using shared libraries. > CMAKE_SKIP_RPATH:BOOL=NO > > //Path to a program. > CMAKE_STRIP:FILEPATH=/usr/bin/i686-pc-mingw32-strip.exe > > //If true, cmake will use relative paths in makefiles and projects. > CMAKE_USE_RELATIVE_PATHS:BOOL=OFF > > //If this value is on, makefiles will be generated without the > // .SILENT directive, and all commands will be echoed to the console > // during the make. This is useful for debugging only. With Visual > // Studio IDE projects all commands are done without /nologo. > CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE > > //Single output directory for building all executables. > EXECUTABLE_OUTPUT_PATH:PATH= > > //Include directory name > INCLUDE_INSTALL_DIR:STRING=/usr/local/include > > //Single output directory for building all libraries. > LIBRARY_OUTPUT_PATH:PATH= > > //Library directory name > LIB_INSTALL_DIR:STRING=/usr/local/lib > > //Define suffix of directory name (32/64) > LIB_SUFFIX:STRING= > > //Path to a program. > PERL_EXECUTABLE:FILEPATH=/usr/bin/perl.exe > > //Share directory name > SHARE_INSTALL_DIR:STRING=/usr/local/share > > //Dependencies for target > ical-static_LIB_DEPENDS:STATIC= > > //Dependencies for the target > ical_LIB_DEPENDS:STATIC=general;-lpthread; > > //Dependencies for target > icalss-static_LIB_DEPENDS:STATIC= > > //Dependencies for the target > icalss_LIB_DEPENDS:STATIC=general;ical; > > //Dependencies for target > icalvcal-static_LIB_DEPENDS:STATIC= > > //Dependencies for the target > icalvcal_LIB_DEPENDS:STATIC=general;ical; > > //Value Computed by CMake > libical_BINARY_DIR:STATIC=/home/huangjianzhong/libical-1.0/build > > //Value Computed by CMake > libical_SOURCE_DIR:STATIC=/home/huangjianzhong/libical-1.0 > |
From: Huang J. (S. TPE3-2) <Hua...@cs...> - 2013-07-25 06:15:03
|
Here is the error msg for "make", can anyone tell me what I have done wrong? huangjianzhong@tpdl545 ~/libical-1.0/build $ make [ 3%] Built target ical-header [ 4%] Building C object src/libical/CMakeFiles/ical.dir/icaltz-util.o /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c: In function 'decode': /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:151:10: error: 'BYTE_ORDER' undeclared (first use in this function) /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:151:10: note: each undeclared identifier is reported only once for each function it appears in /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:151:24: error: 'BIG_ENDIAN' undeclared (first use in this function) /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:153:28: error: 'LITTLE_ENDIAN' undeclared (first use in this function) src/libical/CMakeFiles/ical.dir/build.make:485: recipe for target `src/libical/CMakeFiles/ical.dir/icaltz-util.o' failed make[2]: *** [src/libical/CMakeFiles/ical.dir/icaltz-util.o] Error 1 CMakeFiles/Makefile2:165: recipe for target `src/libical/CMakeFiles/ical.dir/all' failed make[1]: *** [src/libical/CMakeFiles/ical.dir/all] Error 2 Makefile:126: recipe for target `all' failed make: *** [all] Error 2 Following is my build steps: 1) export CC=i686-pc-mingw32-gcc 2) export CXX= i686-pc-mingw32-g++ 3) ./configure --host=i686-pc-mingw32 4) Call "cmake .." and modified the CMakeCache.txt setting env for compiler etc., below is the content. then regenerate ######################## # EXTERNAL cache entries ######################## //Path to a program. CMAKE_AR:FILEPATH=/usr/bin/i686-pc-mingw32-ar.exe //For backwards compatibility, what version of CMake commands and // syntax should this version of CMake try to support. CMAKE_BACKWARDS_COMPATIBILITY:STRING=2.4 //Choose the type of build, options are: None(CMAKE_CXX_FLAGS or // CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel. CMAKE_BUILD_TYPE:STRING= //Enable/Disable color output during build. CMAKE_COLOR_MAKEFILE:BOOL=ON //CXX compiler. CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/i686-pc-mingw32-g++.exe //Flags used by the compiler during all build types. CMAKE_CXX_FLAGS:STRING=-I/usr/include -I/usr/include/w32api //I have tried adding -I flag and remove them totally both does not work //Flags used by the compiler during debug builds. CMAKE_CXX_FLAGS_DEBUG:STRING=-g //Flags used by the compiler during release minsize builds. CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG //Flags used by the compiler during release builds (/MD /Ob1 /Oi // /Ot /Oy /Gs will produce slightly less optimized but smaller // files). CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG //Flags used by the compiler during Release with Debug Info builds. CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g //C compiler. CMAKE_C_COMPILER:FILEPATH=/usr/bin/i686-pc-mingw32-gcc.exe //Flags used by the compiler during all build types. CMAKE_C_FLAGS:STRING= //Flags used by the compiler during debug builds. CMAKE_C_FLAGS_DEBUG:STRING=-g //Flags used by the compiler during release minsize builds. CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG //Flags used by the compiler during release builds (/MD /Ob1 /Oi // /Ot /Oy /Gs will produce slightly less optimized but smaller // files). CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG //Flags used by the compiler during Release with Debug Info builds. CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g //Flags used by the linker. CMAKE_EXE_LINKER_FLAGS:STRING='-Wl,--enable-auto-import ' //Flags used by the linker during debug builds. CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= //Flags used by the linker during release minsize builds. CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= //Flags used by the linker during release builds. CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= //Flags used by the linker during Release with Debug Info builds. CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= //Enable/Disable output of compile commands during generation. CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF //Install path prefix, prepended onto install directories. CMAKE_INSTALL_PREFIX:PATH=/usr/local //Path to a program. CMAKE_LINKER:FILEPATH=/usr/bin/i686-pc-mingw32-ld.exe //Path to a program. CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make.exe //Flags used by the linker during the creation of modules. CMAKE_MODULE_LINKER_FLAGS:STRING=' ' //Flags used by the linker during debug builds. CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= //Flags used by the linker during release minsize builds. CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= //Flags used by the linker during release builds. CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= //Flags used by the linker during Release with Debug Info builds. CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= //Path to a program. CMAKE_NM:FILEPATH=/usr/bin/i686-pc-mingw32-nm.exe //Path to a program. CMAKE_OBJCOPY:FILEPATH=/usr/bin/i686-pc-mingw32-objcopy.exe //Path to a program. CMAKE_OBJDUMP:FILEPATH=/usr/bin/i686-pc-mingw32-objdump.exe //Value Computed by CMake CMAKE_PROJECT_NAME:STATIC=libical //Path to a program. CMAKE_RANLIB:FILEPATH=/usr/bin/i686-pc-mingw32-ranlib.exe //RC compiler. CMAKE_RC_COMPILER:FILEPATH=/usr/bin/i686-pc-mingw32-windres.exe //Flags for Fortran compiler. CMAKE_RC_FLAGS:STRING=' ' //Flags used by the linker during the creation of dll's. CMAKE_SHARED_LINKER_FLAGS:STRING=' ' //Flags used by the linker during debug builds. CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= //Flags used by the linker during release minsize builds. CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= //Flags used by the linker during release builds. CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= //Flags used by the linker during Release with Debug Info builds. CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= //If set, runtime paths are not added when installing shared libraries, // but are added when building. CMAKE_SKIP_INSTALL_RPATH:BOOL=NO //If set, runtime paths are not added when using shared libraries. CMAKE_SKIP_RPATH:BOOL=NO //Path to a program. CMAKE_STRIP:FILEPATH=/usr/bin/i686-pc-mingw32-strip.exe //If true, cmake will use relative paths in makefiles and projects. CMAKE_USE_RELATIVE_PATHS:BOOL=OFF //If this value is on, makefiles will be generated without the // .SILENT directive, and all commands will be echoed to the console // during the make. This is useful for debugging only. With Visual // Studio IDE projects all commands are done without /nologo. CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE //Single output directory for building all executables. EXECUTABLE_OUTPUT_PATH:PATH= //Include directory name INCLUDE_INSTALL_DIR:STRING=/usr/local/include //Single output directory for building all libraries. LIBRARY_OUTPUT_PATH:PATH= //Library directory name LIB_INSTALL_DIR:STRING=/usr/local/lib //Define suffix of directory name (32/64) LIB_SUFFIX:STRING= //Path to a program. PERL_EXECUTABLE:FILEPATH=/usr/bin/perl.exe //Share directory name SHARE_INSTALL_DIR:STRING=/usr/local/share //Dependencies for target ical-static_LIB_DEPENDS:STATIC= //Dependencies for the target ical_LIB_DEPENDS:STATIC=general;-lpthread; //Dependencies for target icalss-static_LIB_DEPENDS:STATIC= //Dependencies for the target icalss_LIB_DEPENDS:STATIC=general;ical; //Dependencies for target icalvcal-static_LIB_DEPENDS:STATIC= //Dependencies for the target icalvcal_LIB_DEPENDS:STATIC=general;ical; //Value Computed by CMake libical_BINARY_DIR:STATIC=/home/huangjianzhong/libical-1.0/build //Value Computed by CMake libical_SOURCE_DIR:STATIC=/home/huangjianzhong/libical-1.0 |
From: Huang J. (S. TPE3-2) <Hua...@cs...> - 2013-07-25 06:03:28
|
Here is the error msg for "make", can anyone tell me what I have done wrong? huangjianzhong@tpdl545 ~/libical-1.0/build $ make [ 3%] Built target ical-header [ 4%] Building C object src/libical/CMakeFiles/ical.dir/icaltz-util.o /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c: In function 'decode': /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:151:10: error: 'BYTE_ORDER' undeclared (first use in this function) /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:151:10: note: each undeclared identifier is reported only once for each function it appears in /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:151:24: error: 'BIG_ENDIAN' undeclared (first use in this function) /home/huangjianzhong/libical-1.0/src/libical/icaltz-util.c:153:28: error: 'LITTLE_ENDIAN' undeclared (first use in this function) src/libical/CMakeFiles/ical.dir/build.make:485: recipe for target `src/libical/CMakeFiles/ical.dir/icaltz-util.o' failed make[2]: *** [src/libical/CMakeFiles/ical.dir/icaltz-util.o] Error 1 CMakeFiles/Makefile2:165: recipe for target `src/libical/CMakeFiles/ical.dir/all' failed make[1]: *** [src/libical/CMakeFiles/ical.dir/all] Error 2 Makefile:126: recipe for target `all' failed make: *** [all] Error 2 Following is my build steps: 1) export CC=i686-pc-mingw32-gcc 2) export CXX= i686-pc-mingw32-g++ 3) ./configure --host=i686-pc-mingw32 4) Call "cmake .." and modified the CMakeCache.txt setting env for compiler etc., below is the content. then regenerate ######################## # EXTERNAL cache entries ######################## //Path to a program. CMAKE_AR:FILEPATH=/usr/bin/i686-pc-mingw32-ar.exe //For backwards compatibility, what version of CMake commands and // syntax should this version of CMake try to support. CMAKE_BACKWARDS_COMPATIBILITY:STRING=2.4 //Choose the type of build, options are: None(CMAKE_CXX_FLAGS or // CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel. CMAKE_BUILD_TYPE:STRING= //Enable/Disable color output during build. CMAKE_COLOR_MAKEFILE:BOOL=ON //CXX compiler. CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/i686-pc-mingw32-g++.exe //Flags used by the compiler during all build types. CMAKE_CXX_FLAGS:STRING=-I/usr/include -I/usr/include/w32api //I have tried adding -I flag and remove them totally both does not work //Flags used by the compiler during debug builds. CMAKE_CXX_FLAGS_DEBUG:STRING=-g //Flags used by the compiler during release minsize builds. CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG //Flags used by the compiler during release builds (/MD /Ob1 /Oi // /Ot /Oy /Gs will produce slightly less optimized but smaller // files). CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG //Flags used by the compiler during Release with Debug Info builds. CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g //C compiler. CMAKE_C_COMPILER:FILEPATH=/usr/bin/i686-pc-mingw32-gcc.exe //Flags used by the compiler during all build types. CMAKE_C_FLAGS:STRING= //Flags used by the compiler during debug builds. CMAKE_C_FLAGS_DEBUG:STRING=-g //Flags used by the compiler during release minsize builds. CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG //Flags used by the compiler during release builds (/MD /Ob1 /Oi // /Ot /Oy /Gs will produce slightly less optimized but smaller // files). CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG //Flags used by the compiler during Release with Debug Info builds. CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g //Flags used by the linker. CMAKE_EXE_LINKER_FLAGS:STRING='-Wl,--enable-auto-import ' //Flags used by the linker during debug builds. CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= //Flags used by the linker during release minsize builds. CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= //Flags used by the linker during release builds. CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= //Flags used by the linker during Release with Debug Info builds. CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= //Enable/Disable output of compile commands during generation. CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF //Install path prefix, prepended onto install directories. CMAKE_INSTALL_PREFIX:PATH=/usr/local //Path to a program. CMAKE_LINKER:FILEPATH=/usr/bin/i686-pc-mingw32-ld.exe //Path to a program. CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make.exe //Flags used by the linker during the creation of modules. CMAKE_MODULE_LINKER_FLAGS:STRING=' ' //Flags used by the linker during debug builds. CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= //Flags used by the linker during release minsize builds. CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= //Flags used by the linker during release builds. CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= //Flags used by the linker during Release with Debug Info builds. CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= //Path to a program. CMAKE_NM:FILEPATH=/usr/bin/i686-pc-mingw32-nm.exe //Path to a program. CMAKE_OBJCOPY:FILEPATH=/usr/bin/i686-pc-mingw32-objcopy.exe //Path to a program. CMAKE_OBJDUMP:FILEPATH=/usr/bin/i686-pc-mingw32-objdump.exe //Value Computed by CMake CMAKE_PROJECT_NAME:STATIC=libical //Path to a program. CMAKE_RANLIB:FILEPATH=/usr/bin/i686-pc-mingw32-ranlib.exe //RC compiler. CMAKE_RC_COMPILER:FILEPATH=/usr/bin/i686-pc-mingw32-windres.exe //Flags for Fortran compiler. CMAKE_RC_FLAGS:STRING=' ' //Flags used by the linker during the creation of dll's. CMAKE_SHARED_LINKER_FLAGS:STRING=' ' //Flags used by the linker during debug builds. CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= //Flags used by the linker during release minsize builds. CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= //Flags used by the linker during release builds. CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= //Flags used by the linker during Release with Debug Info builds. CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= //If set, runtime paths are not added when installing shared libraries, // but are added when building. CMAKE_SKIP_INSTALL_RPATH:BOOL=NO //If set, runtime paths are not added when using shared libraries. CMAKE_SKIP_RPATH:BOOL=NO //Path to a program. CMAKE_STRIP:FILEPATH=/usr/bin/i686-pc-mingw32-strip.exe //If true, cmake will use relative paths in makefiles and projects. CMAKE_USE_RELATIVE_PATHS:BOOL=OFF //If this value is on, makefiles will be generated without the // .SILENT directive, and all commands will be echoed to the console // during the make. This is useful for debugging only. With Visual // Studio IDE projects all commands are done without /nologo. CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE //Single output directory for building all executables. EXECUTABLE_OUTPUT_PATH:PATH= //Include directory name INCLUDE_INSTALL_DIR:STRING=/usr/local/include //Single output directory for building all libraries. LIBRARY_OUTPUT_PATH:PATH= //Library directory name LIB_INSTALL_DIR:STRING=/usr/local/lib //Define suffix of directory name (32/64) LIB_SUFFIX:STRING= //Path to a program. PERL_EXECUTABLE:FILEPATH=/usr/bin/perl.exe //Share directory name SHARE_INSTALL_DIR:STRING=/usr/local/share //Dependencies for target ical-static_LIB_DEPENDS:STATIC= //Dependencies for the target ical_LIB_DEPENDS:STATIC=general;-lpthread; //Dependencies for target icalss-static_LIB_DEPENDS:STATIC= //Dependencies for the target icalss_LIB_DEPENDS:STATIC=general;ical; //Dependencies for target icalvcal-static_LIB_DEPENDS:STATIC= //Dependencies for the target icalvcal_LIB_DEPENDS:STATIC=general;ical; //Value Computed by CMake libical_BINARY_DIR:STATIC=/home/huangjianzhong/libical-1.0/build //Value Computed by CMake libical_SOURCE_DIR:STATIC=/home/huangjianzhong/libical-1.0 |
From: Allen W. <wi...@kd...> - 2012-10-07 17:11:43
|
Thanks Keith, I just committed this in r1134 On Friday 27 April 2012 01:22:29 PM Keith Packard wrote: > > Ical arrays are allocated as a monolithic block of data, which is nice > and space efficient. However, because ical exposes pointers to arrays to > applications, it's important for these pointers to remain stable across > array reallocation, especially for timezone information. > > Here's a patch which changes how arrays are managed, allocating a new > block of data for each increment of new objects. This retains the O(1) > behaviour of fetching and storing data, amortizes allocation overhead > for multiple objects and makes inserting objects nominally faster > (copying only the array of pointers to chunks, and not the data itself). > > It does introduce a performance regression for sort, when sorting more > objects than can be held in a single chunk. > > This keeps evolution from crashing... > > ---------------------- > > Description: Allocate icalarray data in chunks > Allocating the icalarray data in chunks makes the pointers > to the data stable across resize. > . > libical (0.48-2) unstable; urgency=low > . > * Change icalarray to chunks > Author: Keith Packard <ke...@ke...> > Origin: author > Bug: http://sourceforge.net/tracker/?func=detail&aid=3514871&group_id=16077&atid=116077 > > --- > --- libical-0.48.orig/src/libical/icalarray.c > +++ libical-0.48/src/libical/icalarray.c > @@ -38,7 +38,6 @@ > #include "icalarray.h" > #include "icalerror.h" > > - > static void icalarray_expand (icalarray *array, > int space_needed); > > @@ -61,15 +60,25 @@ icalarray_new (int element_size, > array->increment_size = increment_size; > array->num_elements = 0; > array->space_allocated = 0; > - array->data = NULL; > + array->chunks = NULL; > > return array; > } > > +static void * > +icalarray_alloc_chunk(icalarray *array) > +{ > + void *chunk = malloc(array->element_size * array->increment_size); > + if (!chunk) > + icalerror_set_errno(ICAL_NEWFAILED_ERROR); > + return chunk; > +} > > icalarray *icalarray_copy (icalarray *originalarray) > { > icalarray *array = icalarray_new(originalarray->element_size, originalarray->increment_size); > + int chunks = originalarray->space_allocated / originalarray->increment_size; > + int chunk; > > if (!array) > return NULL; > @@ -77,15 +86,18 @@ icalarray *icalarray_copy (icalarray *or > array->num_elements = originalarray->num_elements; > array->space_allocated = originalarray->space_allocated; > > - array->data = malloc(array->space_allocated * array->element_size); > - > - if (array->data) { > - memcpy(array->data, originalarray->data, > - array->element_size*array->space_allocated); > + array->chunks = malloc(chunks * sizeof (void *)); > + if (array->chunks) { > + for (chunk = 0; chunk < chunks; chunk++) { > + array->chunks[chunk] = icalarray_alloc_chunk(array); > + if (array->chunks[chunk]) > + memcpy(array->chunks[chunk], originalarray->chunks[chunk], > + array->increment_size * array->element_size); > + } > } else { > icalerror_set_errno(ICAL_ALLOCATION_ERROR); > } > - > + > return array; > } > > @@ -96,9 +108,13 @@ icalarray *icalarray_copy (icalarray *or > void > icalarray_free (icalarray *array) > { > - if (array->data) { > - free (array->data); > - array->data = 0; > + if (array->chunks) { > + int chunks = array->space_allocated / array->increment_size; > + int chunk; > + for (chunk = 0; chunk < chunks; chunk++) > + free(array->chunks[chunk]); > + free (array->chunks); > + array->chunks = 0; > } > free (array); > array = 0; > @@ -109,12 +125,12 @@ void > icalarray_append (icalarray *array, > const void *element) > { > + int pos; > if (array->num_elements >= array->space_allocated) > icalarray_expand (array, 1); > > - memcpy ((char *)(array->data) + ( array->num_elements * array->element_size ), element, > - array->element_size); > - array->num_elements++; > + pos = array->num_elements++; > + memcpy (icalarray_element_at(array, pos), element, array->element_size); > } > > > @@ -122,10 +138,12 @@ void* > icalarray_element_at (icalarray *array, > int position) > { > + int chunk = position / array->increment_size; > + int offset = position % array->increment_size; > assert (position >= 0); > assert ((unsigned int)position < array->num_elements); > > - return (char *)(array->data) + (position * array->element_size); > + return (char *)(array->chunks[chunk]) + (offset * array->element_size); > } > > > @@ -139,13 +157,12 @@ icalarray_remove_element_at (icalarray * > assert (position >= 0); > assert ((unsigned int)position < array->num_elements); > > - dest = (char *)array->data + (position * array->element_size); > - elements_to_move = array->num_elements - position - 1; > - > - if (elements_to_move > 0) > - memmove (dest, (char *)dest + array->element_size, > - elements_to_move * array->element_size); > - > + while (position < array->num_elements - 1) { > + memmove(icalarray_element_at(array, position), > + icalarray_element_at(array, position + 1), > + array->element_size); > + position++; > + } > array->num_elements--; > } > > @@ -155,7 +172,22 @@ icalarray_sort (icalarray *array, > int (*compare) (const void *, > const void *)) > { > - qsort (array->data, array->num_elements, array->element_size, compare); > + if (array->num_elements <= array->increment_size) { > + qsort(array->chunks[0], array->num_elements, array->element_size, compare); > + } else { > + int pos; > + void *tmp = malloc (array->num_elements * array->element_size); > + if (!tmp) > + return; > + for (pos = 0; pos < array->num_elements; pos++) > + memcpy((char *) tmp + array->element_size * pos, icalarray_element_at(array, pos), array->element_size); > + > + qsort (tmp, array->num_elements, array->element_size, compare); > + > + for (pos = 0; pos < array->num_elements; pos++) > + memcpy(icalarray_element_at(array, pos), (char *) tmp + array->element_size * pos, array->element_size); > + free (tmp); > + } > } > > > @@ -163,31 +195,27 @@ static void > icalarray_expand (icalarray *array, > int space_needed) > { > - int new_space_allocated; > - void *new_data; > - > - new_space_allocated = array->space_allocated + array->increment_size; > - > - if ((unsigned int)space_needed > array->increment_size) > - new_space_allocated += space_needed; > - > - /* > - new_data = realloc (array->data, > - new_space_allocated * array->element_size); > - */ > - new_data = malloc(new_space_allocated * array->element_size); > - > - if (new_data) { > - memcpy(new_data,array->data,array->element_size*array->space_allocated); > - if (array->data) { > - free(array->data); > - array->data = 0; > - } > - array->data = new_data; > - array->space_allocated = new_space_allocated; > - } else { > + int num_chunks = array->space_allocated / array->increment_size; > + int num_new_chunks; > + int c; > + void **new_chunks; > + > + num_new_chunks = (space_needed + array->increment_size - 1) / array->increment_size; > + if (!num_new_chunks) > + num_new_chunks = 1; > + > + new_chunks = malloc ((num_chunks + num_new_chunks) * sizeof (void *)); > + > + if (new_chunks) { > + memcpy(new_chunks, array->chunks, num_chunks * sizeof (void *)); > + for (c = 0; c < num_new_chunks; c++) > + new_chunks[c + num_chunks] = icalarray_alloc_chunk(array); > + if (array->chunks) > + free (array->chunks); > + array->chunks = new_chunks; > + array->space_allocated = array->space_allocated + num_new_chunks * array->increment_size; > + } else > icalerror_set_errno(ICAL_ALLOCATION_ERROR); > - } > } > > > --- libical-0.48.orig/src/libical/icalarray.h > +++ libical-0.48/src/libical/icalarray.h > @@ -39,7 +39,7 @@ struct _icalarray { > unsigned int increment_size; > unsigned int num_elements; > unsigned int space_allocated; > - void *data; > + void **chunks; > }; > > |
From: Keith P. <ke...@ke...> - 2012-04-27 20:41:23
|
Ical arrays are allocated as a monolithic block of data, which is nice and space efficient. However, because ical exposes pointers to arrays to applications, it's important for these pointers to remain stable across array reallocation, especially for timezone information. Here's a patch which changes how arrays are managed, allocating a new block of data for each increment of new objects. This retains the O(1) behaviour of fetching and storing data, amortizes allocation overhead for multiple objects and makes inserting objects nominally faster (copying only the array of pointers to chunks, and not the data itself). It does introduce a performance regression for sort, when sorting more objects than can be held in a single chunk. This keeps evolution from crashing... ---------------------- Description: Allocate icalarray data in chunks Allocating the icalarray data in chunks makes the pointers to the data stable across resize. . libical (0.48-2) unstable; urgency=low . * Change icalarray to chunks Author: Keith Packard <ke...@ke...> Origin: author Bug: http://sourceforge.net/tracker/?func=detail&aid=3514871&group_id=16077&atid=116077 --- --- libical-0.48.orig/src/libical/icalarray.c +++ libical-0.48/src/libical/icalarray.c @@ -38,7 +38,6 @@ #include "icalarray.h" #include "icalerror.h" - static void icalarray_expand (icalarray *array, int space_needed); @@ -61,15 +60,25 @@ icalarray_new (int element_size, array->increment_size = increment_size; array->num_elements = 0; array->space_allocated = 0; - array->data = NULL; + array->chunks = NULL; return array; } +static void * +icalarray_alloc_chunk(icalarray *array) +{ + void *chunk = malloc(array->element_size * array->increment_size); + if (!chunk) + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return chunk; +} icalarray *icalarray_copy (icalarray *originalarray) { icalarray *array = icalarray_new(originalarray->element_size, originalarray->increment_size); + int chunks = originalarray->space_allocated / originalarray->increment_size; + int chunk; if (!array) return NULL; @@ -77,15 +86,18 @@ icalarray *icalarray_copy (icalarray *or array->num_elements = originalarray->num_elements; array->space_allocated = originalarray->space_allocated; - array->data = malloc(array->space_allocated * array->element_size); - - if (array->data) { - memcpy(array->data, originalarray->data, - array->element_size*array->space_allocated); + array->chunks = malloc(chunks * sizeof (void *)); + if (array->chunks) { + for (chunk = 0; chunk < chunks; chunk++) { + array->chunks[chunk] = icalarray_alloc_chunk(array); + if (array->chunks[chunk]) + memcpy(array->chunks[chunk], originalarray->chunks[chunk], + array->increment_size * array->element_size); + } } else { icalerror_set_errno(ICAL_ALLOCATION_ERROR); } - + return array; } @@ -96,9 +108,13 @@ icalarray *icalarray_copy (icalarray *or void icalarray_free (icalarray *array) { - if (array->data) { - free (array->data); - array->data = 0; + if (array->chunks) { + int chunks = array->space_allocated / array->increment_size; + int chunk; + for (chunk = 0; chunk < chunks; chunk++) + free(array->chunks[chunk]); + free (array->chunks); + array->chunks = 0; } free (array); array = 0; @@ -109,12 +125,12 @@ void icalarray_append (icalarray *array, const void *element) { + int pos; if (array->num_elements >= array->space_allocated) icalarray_expand (array, 1); - memcpy ((char *)(array->data) + ( array->num_elements * array->element_size ), element, - array->element_size); - array->num_elements++; + pos = array->num_elements++; + memcpy (icalarray_element_at(array, pos), element, array->element_size); } @@ -122,10 +138,12 @@ void* icalarray_element_at (icalarray *array, int position) { + int chunk = position / array->increment_size; + int offset = position % array->increment_size; assert (position >= 0); assert ((unsigned int)position < array->num_elements); - return (char *)(array->data) + (position * array->element_size); + return (char *)(array->chunks[chunk]) + (offset * array->element_size); } @@ -139,13 +157,12 @@ icalarray_remove_element_at (icalarray * assert (position >= 0); assert ((unsigned int)position < array->num_elements); - dest = (char *)array->data + (position * array->element_size); - elements_to_move = array->num_elements - position - 1; - - if (elements_to_move > 0) - memmove (dest, (char *)dest + array->element_size, - elements_to_move * array->element_size); - + while (position < array->num_elements - 1) { + memmove(icalarray_element_at(array, position), + icalarray_element_at(array, position + 1), + array->element_size); + position++; + } array->num_elements--; } @@ -155,7 +172,22 @@ icalarray_sort (icalarray *array, int (*compare) (const void *, const void *)) { - qsort (array->data, array->num_elements, array->element_size, compare); + if (array->num_elements <= array->increment_size) { + qsort(array->chunks[0], array->num_elements, array->element_size, compare); + } else { + int pos; + void *tmp = malloc (array->num_elements * array->element_size); + if (!tmp) + return; + for (pos = 0; pos < array->num_elements; pos++) + memcpy((char *) tmp + array->element_size * pos, icalarray_element_at(array, pos), array->element_size); + + qsort (tmp, array->num_elements, array->element_size, compare); + + for (pos = 0; pos < array->num_elements; pos++) + memcpy(icalarray_element_at(array, pos), (char *) tmp + array->element_size * pos, array->element_size); + free (tmp); + } } @@ -163,31 +195,27 @@ static void icalarray_expand (icalarray *array, int space_needed) { - int new_space_allocated; - void *new_data; - - new_space_allocated = array->space_allocated + array->increment_size; - - if ((unsigned int)space_needed > array->increment_size) - new_space_allocated += space_needed; - - /* - new_data = realloc (array->data, - new_space_allocated * array->element_size); - */ - new_data = malloc(new_space_allocated * array->element_size); - - if (new_data) { - memcpy(new_data,array->data,array->element_size*array->space_allocated); - if (array->data) { - free(array->data); - array->data = 0; - } - array->data = new_data; - array->space_allocated = new_space_allocated; - } else { + int num_chunks = array->space_allocated / array->increment_size; + int num_new_chunks; + int c; + void **new_chunks; + + num_new_chunks = (space_needed + array->increment_size - 1) / array->increment_size; + if (!num_new_chunks) + num_new_chunks = 1; + + new_chunks = malloc ((num_chunks + num_new_chunks) * sizeof (void *)); + + if (new_chunks) { + memcpy(new_chunks, array->chunks, num_chunks * sizeof (void *)); + for (c = 0; c < num_new_chunks; c++) + new_chunks[c + num_chunks] = icalarray_alloc_chunk(array); + if (array->chunks) + free (array->chunks); + array->chunks = new_chunks; + array->space_allocated = array->space_allocated + num_new_chunks * array->increment_size; + } else icalerror_set_errno(ICAL_ALLOCATION_ERROR); - } } --- libical-0.48.orig/src/libical/icalarray.h +++ libical-0.48/src/libical/icalarray.h @@ -39,7 +39,7 @@ struct _icalarray { unsigned int increment_size; unsigned int num_elements; unsigned int space_allocated; - void *data; + void **chunks; }; -- kei...@in... |
From: Ken M. <mu...@an...> - 2012-03-19 13:07:18
|
Just getting started with libical and I need to iterate through all recurrences of an event, so I am using icalcomponent_foreach_recurrence() on the first VEVENT in the VCALENDAR object. This does everything that is expected except it doesn't account for any overridden recurrences that appear as additional VEVENTS in the VCALENDAR object. Am I doing something wrong, or do I have to create my own in-memory recurrence list using foreach() and then do the overrides myself based on the RECURRENCE-IDs? -- Kenneth Murchison Principal Systems Software Engineer Carnegie Mellon University |
From: Allen W. <all...@kd...> - 2011-12-17 22:45:48
|
On Friday, December 16, 2011 04:21:06 PM Zhai, Edwin wrote: > All, > After enabling pthread, there are deadlock because of missing some > unlock logic. > > This patch can fix it. Any comments pls. reply me as I'm not in this > mailing list. > Thanks, much appreciated. Committed in revision 1117 -Allen |
From: Zhai, E. <edw...@in...> - 2011-12-16 08:21:42
|
All, After enabling pthread, there are deadlock because of missing some unlock logic. This patch can fix it. Any comments pls. reply me as I'm not in this mailing list. Thanks, Edwin |
From: <and...@uk...> - 2010-09-07 14:32:22
|
Hello people, I am having trouble working out how to use icalcomponent_new_from_string. It fails to parse an ical entry taken from the test program recur. It gives a parse error when it gets to the end of the string, i.e after it has read and processed END:VEVENT. I have tried adding various combinations of newline and carriage return but with no effect. Can some kind person please tell me what I am doing wrong. void andrew() { icalcomponent* component; icalproperty *desc, *dtstart, *rrule; struct icalrecurrencetype recur; struct icaltimetype start; icalrecur_iterator* ritr; struct icaltimetype next; const char *desc_str = "malformed component"; const char* ical_text = "BEGIN:VEVENT\n\r" "DESCRIPTION\n\r" " :Repeat every thursday starting Tue 2nd April 2002\n\r" "RRULE\n\r" " :FREQ=WEEKLY;INTERVAL=1;COUNT=6;BYDAY=TH\n\r" "DTSTART\n\r" " :20020402T114500\n\r" "DTEND\n\r" " :20020402T124500\n\r" "X-EXPECT-NUMEVENTS: 6\n\r" "END:VEVENT"; component = icalcomponent_new_from_string(ical_text); if (component == NULL) { printf("ANDREW: Parse error.\n"); } /* do other things... */ } Regards, Andrew Marlow ___________________________________________________________ This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and delete this e-mail. Any unauthorised copying, disclosure or distribution of the material in this e-mail is prohibited. Please refer to http://www.bnpparibas.co.uk/en/information/legal_information.asp?Code=ECAS-845C5H for additional disclosures. |
From: <and...@uk...> - 2010-09-07 11:08:02
|
Now that I have got libical to build on windoze the next problem I found was that the regression test program core dumped. I have the fix, which involves changes to the file icaltimezone.c. It was blowing up referencing through a null pointer because the routine icaltimezone_parse_zone_tab does not expect icaltzutil_get_zone_directory() or get_zone_directory() to return the null pointer. However, there might be no timezone information directories configured. Looking at this in the debugger revealed that it was going down the code path for UNIX timezone files. It was calling set_zonedir, which has a list of UNIX directory names in which to look for zone.tab. This is wrong for Windoze, but revealed icaltimezone_parse_zone_tab does not handle the case of no timezone files. I fixed it by changing the code to look like this: const char* zone_dir; icalerror_assert (builtin_timezones == NULL, "Parsing zones.tab file multiple times"); builtin_timezones = icalarray_new (sizeof (icaltimezone), 32); #ifndef USE_BUILTIN_TZDATA zone_dir = icaltzutil_get_zone_directory(); if (zone_dir == NULL) { return; } filename_len = strlen((char *)zone_dir) + strlen (ZONES_TAB_SYSTEM_FILENAME) + 2; #else zone_dir = get_zone_directory(); if (zone_dir == NULL) { return; } filename_len = strlen(zone_dir) + strlen (ZONES_TAB_FILENAME) + 2; #endif With this change in place, the regression test program ran ok. I would be grateful for peoples comments on this fix please. icaltzutil_get_zone_directory seems to expect that returning NULL is ok when there is no timezone directory. Otherwise it would raise an error, right? I am also puzzled by why it doesn't call get_zone_directory, which has windoze-specific code for locating the directory. It looks like it might be to do with USE_BUILTIN_TZDATA not being defined. Also, it is looking for the file zone.tab, which does not seem to be in the distribution. Regards, Andrew Marlow ___________________________________________________________ This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and delete this e-mail. Any unauthorised copying, disclosure or distribution of the material in this e-mail is prohibited. Please refer to http://www.bnpparibas.co.uk/en/information/legal_information.asp?Code=ECAS-845C5H for additional disclosures. |