Ellie, Thanks for the explanation!
I'll try to prepare a PR for the compiling page these days. Regards, Anatoli On 19/6/20 00:29, ellie timoney wrote: > I think transfig is the package that provides fig2dev? I think that's an > artifact from the old days, and is only used for generation of a couple of > png files in the legacy documentation (doc/legacy/murder.png and > doc/legacy/netnews.png). I think it's only needed when configure is run with > --enable-maintainer-mode (i.e. if you're building a release or package, > rather than just building the software). Those files are pre-built in the > release tarballs, so additionally you would only need this when building from > git. It would be nice to one day finish merging this legacy documentation > into the current documentation, cause then we can get rid of it: > https://github.com/cyrusimap/cyrus-imapd/issues/1769 > > libsrs2 looks like it's used for implementing Sender Rewriting Scheme > functionality for messages forwarded by sieve script. Without it, messages > forwarded by sieve script will not have this functionality (and, I suppose, > might have difficulty delivering to servers that insist on it). > > The section of configure.ac that looks for libsrs2 is missing an > AC_MSG_RESULT call to match the AC_MSG_CHECKING one. It probably also wants > an AC_NOTICE when it's not found, explaining the consequences of it being > left out, like we have for the various http dependencies. I'll fix this up > in a moment. > > shapelib is already explained by configure. For example, I don't have it > installed myself, so I see: > >> checking for SHAPELIB... no >> configure: tzdist will not have geolocation support. Consider installing >> shapelib > > If you don't run a tzdist service, you don't need it. If you do, you > probably also know whether geolocation support is useful; I don't. > > I've already updated configure.ac to provide a similar notice when chardet is > not found (https://github.com/cyrusimap/cyrus-imapd/commit/30fef51485); it'll > be in 3.2.2. :) > > If you want to have a go at making the compiling page a bit clearer, I'd be > happy to review/merge a pull request. Please submit it against the master, > and once we're happy with it, I'll get it cherry-picked appropriately to the > other branches. > > Cheers, > > ellie > > On Fri, Jun 19, 2020, at 12:50 PM, Anatoli wrote: >> Ellie (or anyone else, Ken?), >> >> Could you please let us know what's the purpose of transfig, libsrs2 and >> shapelib libs in cyrus-imapd, and if they are required for any >> functionality (and if not (i.e. they are optional), what's their >> benefit)? >> >> Also, Ellie, would it be useful to add to configure checks with warnings >> for these libs (as well as for chardet) to inform those users that build >> cyrus-imapd from sources that these libs are actually needed if certain >> features are enabled (like Cal/CardDAV & JMAP)? I could prepare a patch. >> >> And I'd like to add these clarifications to the compiling page and >> reformat a bit the tables. If you consider it appropriate, I could >> prepare a patch too. >> >> Regards, >> Anatoli >> >> On 5/6/20 05:45, Anatoli wrote: >>>> Thanks for the explanation. What happens is that at least Cal/CardDAV >>>> compile and work well without libchardet (at least under normal >>>> circumstances) and, as it was not marked as required, I thought it's an >>>> optional lib and here is the question of why to use it. >>> >>> Actually, the same happens with transfig, libsrs2 and shapelib. >>> >>> The page mentiones these libs, but "Required for `make check`" (not sure >>> what that means in relation to the lib being reqiured for cyrus-imapd as >>> such) for all of them is "no". >>> >>> What would help is a column "required" yes/no and another column "usage >>> in cyrus-imapd" explaining for what exactly it's used. Say if it's for >>> tzdata processing in the TZDist module, then I probably won't build with >>> it as I don't see much use for it (or maybe package it as a flavor). >>> >>> But if it's something essential for a broader functionality like CalDAV >>> itself, then definitely it would be included. But at this moment the >>> Compiling page doesn't provide these details and here we are. >>> >>> >>> On 5/6/20 05:30, Anatoli wrote: >>>> Ellie, >>>> >>>>> libchardet is already listed on the compiling page as being used by >>>>> the CalDAV, CardDAV, and/or JMAP features. You would decide to >>>>> install libchardet based on whether you need these features: if you >>>>> don't enable these features, you don't need it; if you do, you >>>>> probably do. >>>>> >>>>> If you don't have libchardet, Cyrus will not do character-set >>>>> detection. If some piece of data has no character set coming in, it >>>>> will have no character set. I don't know why you would decide to not >>>>> use this, and it may simply become a mandatory requirement for these >>>>> features in 3.4. It might have been mandatory in 3.2, if this had >>>>> been brought to our attention during the nearly 3 month beta window; >>>>> but now that it's in a stable release, it will remain as it is. >>>> >>>> Thanks for the explanation. What happens is that at least Cal/CardDAV >>>> compile and work well without libchardet (at least under normal >>>> circumstances) and, as it was not marked as required, I thought it's an >>>> optional lib and here is the question of why to use it. >>>> >>>> I guess what you could do for 3.2 is to include a warning in configure >>>> explaining the issue, so the maintainers see it and take appropriate >>>> action. I suppose there are not that many installations with 3.2 yet so >>>> if the warning is included with 3.2.2 it would be an appropriate time. >>>> >>>> Regards, >>>> Anatoli >>>> >>>> On 4/6/20 21:58, ellie timoney wrote: >>>>> On Thu, Jun 4, 2020, at 12:52 PM, Anatoli wrote: >>>>>>> chardet is used by the JMAP module of httpd to detect the character >>>>>> set of untagged 8-bit headers. >>>>>> >>>>>> Does that mean that these libs are required? If not, what would happen >>>>>> if not included? How Cyrus would detect the charset? Or put in other >>>>>> words, if they are not required, what's the benefit to use them? >>>>>> >>>>>> On the other hand, may I suggest to please add these details to the >>>>>> Compiling [1] page? There's already a lot of useful information, but >>>>>> some of the libs lack any details on what's their purpose in Cyrus and >>>>>> why they are beneficial/required (and if they are not used yet, maybe >>>>>> they shouldn't be mentioned there at all?). This could help porters and >>>>>> maintainers to make more educated decisions on how to package Cyrus. >>>>> >>>>> libchardet is already listed on the compiling page as being used by the >>>>> CalDAV, CardDAV, and/or JMAP features. You would decide to install >>>>> libchardet based on whether you need these features: if you don't enable >>>>> these features, you don't need it; if you do, you probably do. >>>>> >>>>> If you don't have libchardet, Cyrus will not do character-set detection. >>>>> If some piece of data has no character set coming in, it will have no >>>>> character set. I don't know why you would decide to not use this, and it >>>>> may simply become a mandatory requirement for these features in 3.4. It >>>>> might have been mandatory in 3.2, if this had been brought to our >>>>> attention during the nearly 3 month beta window; but now that it's in a >>>>> stable release, it will remain as it is. >>>>> >>>>> cld2 was used by one (or maybe both) of the experimental search features >>>>> that were accidentally included in 3.2.0, and removed in 3.2.1 (see the >>>>> release notes). Looks like we forgot to remove the configure checks for >>>>> the library when removing the feature(s) that used it. You don't need >>>>> it, and if you have it, it won't be used anyway. >>>>> >>>>> Cheers, >>>>> >>>>> ellie >>>>> >>