Skip to content

Commit

Permalink
Update to pcre2
Browse files Browse the repository at this point in the history
Classic pcre is unmaintained and being dropped from distributions.

Fixes: #3861
Signed-off-by: Yaakov Selkowitz <[email protected]>
  • Loading branch information
yselkowitz committed Jul 11, 2023
1 parent 15e29dd commit fc3154c
Show file tree
Hide file tree
Showing 11 changed files with 37 additions and 40 deletions.
30 changes: 15 additions & 15 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -675,8 +675,8 @@ AM_CONDITIONAL([SQUATTER],

AC_ARG_ENABLE(sieve,
[AS_HELP_STRING([--disable-sieve], [disable Sieve support])],,[enable_sieve="yes";])
AC_ARG_ENABLE(pcre,
[AS_HELP_STRING([--disable-pcre], [disable PCRE library])],[cyrus_cv_pcre_utf8="$enableval"])
AC_ARG_ENABLE(pcre2,
[AS_HELP_STRING([--disable-pcre2], [disable PCRE2 library])],[cyrus_cv_pcre2_utf8="$enableval"])

if test "$enable_sieve" != "no"; then
AC_DEFINE(USE_SIEVE,[],[Build in Sieve support?])
Expand All @@ -702,25 +702,25 @@ fi

AM_CONDITIONAL([SIEVE], [test "${enable_sieve}" != "no"])

if test "$enable_pcre" != "no"; then
AC_CHECK_HEADER(pcreposix.h)
if test "$ac_cv_header_pcreposix_h" = "yes"; then
AC_MSG_CHECKING(for utf8 enabled pcre)
AC_CACHE_VAL(cyrus_cv_pcre_utf8, AC_TRY_CPP([#include <pcreposix.h>
#ifndef REG_UTF8
if test "$enable_pcre2" != "no"; then
AC_CHECK_HEADER(pcre2posix.h)
if test "$ac_cv_header_pcre2posix_h" = "yes"; then
AC_MSG_CHECKING(for utf8 enabled pcre2)
AC_CACHE_VAL(cyrus_cv_pcre2_utf8, AC_TRY_CPP([#include <pcre2posix.h>
#ifndef REG_UTF
#include </nonexistent>
#endif],cyrus_cv_pcre_utf8=yes,cyrus_cv_pcre_utf8=no))
AC_MSG_RESULT($cyrus_cv_pcre_utf8)
#endif],cyrus_cv_pcre2_utf8=yes,cyrus_cv_pcre2_utf8=no))
AC_MSG_RESULT($cyrus_cv_pcre2_utf8)
else
cyrus_cv_pcre_utf8="no"
cyrus_cv_pcre2_utf8="no"
fi
fi

LIB_REGEX=
if test "$cyrus_cv_pcre_utf8" = "yes"; then
LIB_REGEX="-lpcre -lpcreposix";
if test "$cyrus_cv_pcre2_utf8" = "yes"; then
LIB_REGEX="-lpcre2-posix -lpcre2-8";
AC_DEFINE(ENABLE_REGEX, [], [Do we have a regex library?])
AC_DEFINE(HAVE_PCREPOSIX_H, [], [Do we have usable pcre library?])
AC_DEFINE(HAVE_PCRE2POSIX_H, [], [Do we have usable pcre2 library?])
else
AC_CHECK_HEADERS(rxposix.h)
if test "$ac_cv_header_rxposix_h" = "yes"; then
Expand Down Expand Up @@ -2541,7 +2541,7 @@ External dependencies:
openssl: $with_ssl
zlib: $with_zlib
jansson: $with_jansson
pcre: $cyrus_cv_pcre_utf8
pcre2: $cyrus_cv_pcre2_utf8
clamav: $with_clamav
-----------------------
caringo: $with_caringo
Expand Down
2 changes: 1 addition & 1 deletion docsrc/assets/cyrus-build-devpkg.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ automated test facility.
debhelper flex g++ git gperf groff heimdal-dev libbsd-resource-perl libclone-perl libconfig-inifiles-perl \
libcunit1-dev libdatetime-perl libbsd-dev libdigest-sha-perl libencode-imaputf7-perl \ libfile-chdir-perl libglib2.0-dev libical-dev libio-socket-inet6-perl \
libio-stringy-perl libldap2-dev libmysqlclient-dev \
libnet-server-perl libnews-nntpclient-perl libpam0g-dev libpcre3-dev libsasl2-dev \
libnet-server-perl libnews-nntpclient-perl libpam0g-dev libpcre2-dev libsasl2-dev \
libsqlite3-dev libssl-dev libtest-unit-perl libtool libunix-syslog-perl liburi-perl \
libxapian-dev libxml-generator-perl libxml-xpath-perl libxml2-dev libwrap0-dev libzephyr-dev lsb-base \
net-tools perl php-cli php-curl pkg-config po-debconf tcl-dev \
Expand Down
2 changes: 1 addition & 1 deletion docsrc/assets/cyrus-build-reqpkg.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
sudo apt-get install git build-essential autoconf automake libtool \
pkg-config bison flex libssl-dev libjansson-dev libxml2-dev \
libsqlite3-dev libical-dev libsasl2-dev libpcre3-dev uuid-dev \
libsqlite3-dev libical-dev libsasl2-dev libpcre2-dev uuid-dev \
libicu-dev
sudo apt-get -t jessie-backports install libxapian-dev
7 changes: 3 additions & 4 deletions docsrc/imap/developer/compiling.rst
Original file line number Diff line number Diff line change
Expand Up @@ -186,9 +186,8 @@ Other
to enable **ptloader** to interface with LDAP directly, for canonification
of login usernames to mailbox names, and verification of login usernames,
ACL subjects and group membership. Configure option: ``--with-ldap``."
`pcre`_, libpcre3-dev, pcre-devel, "yes", "PCRE 1 (8.x) - for utf-8/unicode
regular expression matching. Could be replaced by something else in the
future. See `issues/1731`_ for more information."
`pcre2`_, libpcre2-dev, pcre2-devel, "yes", "PCRE 2 (10.x) - for utf-8/unicode
regular expression matching."
`perl(Term::ReadLine)`_,,, "no", "Perl library needed by **cyradm**."
`libsrs2`_, *no package*, *no package*, "no", "It is used for
implementing Sender Rewriting Scheme (SRS) functionality for messages
Expand All @@ -210,7 +209,7 @@ Other
.. _mariadb: http://mariadb.org
.. _nghttp2: https://nghttp2.org/
.. _openldap: http://www.openldap.org/
.. _pcre: http://www.pcre.org/
.. _pcre2: https://www.pcre.org/
.. _perl(Term::ReadLine): https://metacpan.org/pod/Term::ReadLine
.. _perl(ExtUtils::MakeMaker): http://search.cpan.org/dist/ExtUtils-MakeMaker/
.. _perl(Pod::POM::View::Restructured): https://metacpan.org/pod/Pod::POM::View::Restructured
Expand Down
2 changes: 1 addition & 1 deletion docsrc/imap/download/upgrade.rst
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ packages) for Debian is::
libcunit1-dev libdatetime-perl libdigest-sha-perl libencode-imaputf7-perl \
libfile-chdir-perl libglib2.0-dev libical-dev libio-socket-inet6-perl \
libio-stringy-perl libjansson-dev libldap2-dev libmysqlclient-dev \
libnet-server-perl libnews-nntpclient-perl libpam0g-dev libpcre3-dev \
libnet-server-perl libnews-nntpclient-perl libpam0g-dev libpcre2-dev \
libsasl2-dev libsqlite3-dev libssl-dev libtest-unit-perl libtool \
libunix-syslog-perl liburi-perl libxapian-dev libxml-generator-perl \
libxml-xpath-perl libxml2-dev libwrap0-dev libzephyr-dev lsb-base \
Expand Down
6 changes: 3 additions & 3 deletions imap/cyr_buildinfo.c
Original file line number Diff line number Diff line change
Expand Up @@ -193,10 +193,10 @@ static json_t *buildinfo()
#else
json_object_set_new(dependency, "jansson", json_false());
#endif
#if defined(ENABLE_REGEX) && defined(HAVE_PCREPOSIX_H)
json_object_set_new(dependency, "pcre", json_true());
#if defined(ENABLE_REGEX) && defined(HAVE_PCRE2POSIX_H)
json_object_set_new(dependency, "pcre2", json_true());
#else
json_object_set_new(dependency, "pcre", json_false());
json_object_set_new(dependency, "pcre2", json_false());
#endif
#ifdef HAVE_CLAMAV
json_object_set_new(dependency, "clamav", json_true());
Expand Down
9 changes: 4 additions & 5 deletions lib/util.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,16 +71,15 @@
extern const char CYRUS_VERSION[];

#ifdef ENABLE_REGEX
# ifdef HAVE_PCREPOSIX_H
# include <pcre.h>
# include <pcreposix.h>
# else /* !HAVE_PCREPOSIX_H */
# ifdef HAVE_PCRE2POSIX_H
# include <pcre2posix.h>
# else /* !HAVE_PCRE2POSIX_H */
# ifdef HAVE_RXPOSIX_H
# include <rxposix.h>
# else /* !HAVE_RXPOSIX_H */
# include <regex.h>
# endif /* HAVE_RXPOSIX_H */
# endif /* HAVE_PCREPOSIX_H */
# endif /* HAVE_PCRE2POSIX_H */
#endif /* ENABLE_REGEX */

#ifdef HAVE_LIBUUID
Expand Down
2 changes: 1 addition & 1 deletion ptclient/test3.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*
* test ptsmodule_standard_root_dn
* gcc -lz -lpcreposix -I.. -I ../lib ../lib/.libs/util.o ../lib/.libs/xmalloc.o ../lib/.libs/map_shared.o ../lib/.libs/retry.o ../lib/.libs/assert.o test3.c
* gcc -I.. -I ../lib ../lib/.libs/util.o ../lib/.libs/xmalloc.o ../lib/.libs/map_shared.o ../lib/.libs/retry.o ../lib/.libs/assert.o test3.c -lz -lpcre2-posix
*/
#include <assert.h>
#include <stdio.h>
Expand Down
4 changes: 2 additions & 2 deletions sieve/bc_eval.c
Original file line number Diff line number Diff line change
Expand Up @@ -320,9 +320,9 @@ static int regcomp_flags(int comparator, int requires)
{
int cflags = REG_EXTENDED;

#ifdef HAVE_PCREPOSIX_H
#ifdef HAVE_PCRE2POSIX_H
/* support UTF8 comparisons */
cflags |= REG_UTF8;
cflags |= REG_UTF;
#endif

if (comparator == B_ASCIICASEMAP) {
Expand Down
9 changes: 4 additions & 5 deletions sieve/comparator.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,16 +47,15 @@
#include <sys/types.h>

#ifdef ENABLE_REGEX
# ifdef HAVE_PCREPOSIX_H
# include <pcre.h>
# include <pcreposix.h>
# else /* !HAVE_PCREPOSIX_H */
# ifdef HAVE_PCRE2POSIX_H
# include <pcre2posix.h>
# else /* !HAVE_PCRE2POSIX_H */
# ifdef HAVE_RXPOSIX_H
# include <rxposix.h>
# else /* !HAVE_RXPOSIX_H */
# include <regex.h>
# endif /* HAVE_RXPOSIX_H */
# endif /* HAVE_PCREPOSIX_H */
# endif /* HAVE_PCRE2POSIX_H */
#endif /* ENABLE_REGEX */

#include "sieve_interface.h"
Expand Down
4 changes: 2 additions & 2 deletions sieve/sieve.y
Original file line number Diff line number Diff line change
Expand Up @@ -2199,9 +2199,9 @@ static int verify_regexlist(sieve_script_t *sscript,
regex_t reg;
int cflags = REG_EXTENDED | REG_NOSUB;

#ifdef HAVE_PCREPOSIX_H
#ifdef HAVE_PCRE2POSIX_H
/* support UTF8 comparisons */
cflags |= REG_UTF8;
cflags |= REG_UTF;
#endif

if (collation == B_ASCIICASEMAP) {
Expand Down

0 comments on commit fc3154c

Please sign in to comment.