]> source.dussan.org Git - rspamd.git/commitdiff
Allow conditional build of snowball.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 23 Oct 2015 10:51:53 +0000 (11:51 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 23 Oct 2015 10:51:53 +0000 (11:51 +0100)
CMakeLists.txt
config.h.in
src/CMakeLists.txt
src/libmime/message.c
src/libstat/tokenizers/osb.c
src/rspamadm/CMakeLists.txt
test/CMakeLists.txt

index aa66b075a777e39ba981cbe0a68ac051b3d96ae8..6c4830408eb1238a980c3cb7fc61fcef8194aa62 100644 (file)
@@ -45,6 +45,7 @@ OPTION(FORCE_GMIME24       "Link with gmime2.4 [default: OFF]"
 OPTION(INSTALL_EXAMPLES    "Install examples [default: OFF]"                    OFF)
 OPTION(INSTALL_WEBUI       "Install web interface [default: ON]"                ON)
 OPTION(WANT_SYSTEMD_UNITS  "Install systemd unit files on Linux [default: OFF]" OFF)
+OPTION(ENABLE_SNOWBALL     "Enable snowball stemmer [default: ON]"              ON)
 
 # Build optimized code for following CPU (default i386)
 #SET(CPU_TUNE               "i686")
@@ -1014,7 +1015,10 @@ ADD_SUBDIRECTORY(contrib/xxhash)
 ADD_SUBDIRECTORY(contrib/cdb)
 ADD_SUBDIRECTORY(contrib/http-parser)
 ADD_SUBDIRECTORY(contrib/libottery)
-ADD_SUBDIRECTORY(contrib/snowball)
+IF(ENABLE_SNOWBALL MATCHES "ON")
+       ADD_SUBDIRECTORY(contrib/snowball)
+       SET(WITH_SNOWBALL 1)
+ENDIF()
 ADD_SUBDIRECTORY(contrib/blake2)
 ADD_SUBDIRECTORY(contrib/libucl)
 ADD_SUBDIRECTORY(contrib/librdns)
index f53f519787f12016c857a864e3c9aa1acb818a15..3ecb964bed7bacf9da192c34b550fe4cfeb6cc8d 100644 (file)
 #cmakedefine HAVE_STROPS_H       1
 #cmakedefine HAVE_SETSIG         1
 #cmakedefine HAVE_OASYNC         1
+#cmakedefine WITH_SNOWBALL       1
 
 /* Configure allocator */
 #define uthash_malloc(sz) g_slice_alloc(sz)
index 17ff6ebe563c8bb55f01de41c09019b357fb683e..b580672100a695a8ccecdc2ec5e065a5314517a2 100644 (file)
@@ -108,7 +108,9 @@ IF(NOT DEBIAN_BUILD)
 ENDIF(NOT DEBIAN_BUILD)
 
 TARGET_LINK_LIBRARIES(rspamd rspamd-server)
-TARGET_LINK_LIBRARIES(rspamd stemmer)
+IF (ENABLE_SNOWBALL MATCHES "ON")
+       TARGET_LINK_LIBRARIES(rspamd stemmer)
+ENDIF()
 TARGET_LINK_LIBRARIES(rspamd rspamd-actrie)
 
 TARGET_LINK_LIBRARIES(rspamd ${RSPAMD_REQUIRED_LIBRARIES})
index 591107ba492f2836f15ac1ccf458533a9cad31ea..845f2f80457129265c201dbcf1031db14a17d2b8 100644 (file)
 #include "images.h"
 #include "utlist.h"
 #include "tokenizers/tokenizers.h"
+
+#ifdef WITH_SNOWBALL
 #include "libstemmer.h"
+#endif
+
 #include "acism.h"
 
 #include <iconv.h>
@@ -947,13 +951,16 @@ static void
 rspamd_normalize_text_part (struct rspamd_task *task,
                struct mime_text_part *part)
 {
+#ifdef WITH_SNOWBALL
        struct sb_stemmer *stem = NULL;
+#endif
        rspamd_ftok_t *w;
        const guchar *r;
        gchar *temp_word;
        guint i, nlen;
        GArray *tmp;
 
+#ifdef WITH_SNOWBALL
        if (part->language && part->language[0] != '\0' && IS_PART_UTF (part)) {
                stem = sb_stemmer_new (part->language, "UTF_8");
                if (stem == NULL) {
@@ -961,6 +968,7 @@ rspamd_normalize_text_part (struct rspamd_task *task,
                                task->message_id, part->language);
                }
        }
+#endif
 
        /* Ugly workaround */
        tmp = rspamd_tokenize_text (part->content->data,
@@ -971,12 +979,15 @@ rspamd_normalize_text_part (struct rspamd_task *task,
        if (tmp) {
                for (i = 0; i < tmp->len; i ++) {
                        w = &g_array_index (tmp, rspamd_ftok_t, i);
+                       r = NULL;
+#ifdef WITH_SNOWBALL
                        if (stem) {
                                r = sb_stemmer_stem (stem, w->begin, w->len);
                        }
+#endif
 
                        if (w->len > 0 && !(w->len == 6 && memcmp (w->begin, "!!EX!!", 6) == 0)) {
-                               if (stem != NULL && r != NULL) {
+                               if (r != NULL) {
                                        nlen = strlen (r);
                                        nlen = MIN (nlen, w->len);
                                        temp_word = rspamd_mempool_alloc (task->task_pool, nlen);
@@ -1001,10 +1012,11 @@ rspamd_normalize_text_part (struct rspamd_task *task,
                }
                part->normalized_words = tmp;
        }
-
+#ifdef WITH_SNOWBALL
        if (stem != NULL) {
                sb_stemmer_delete (stem);
        }
+#endif
 }
 
 #define MIN3(a, b, c) ((a) < (b) ? ((a) < (c) ? (a) : (c)) : ((b) < (c) ? (b) : (c)))
index 7744e2883a696eccbc5f0714d8e8b2426afdf55e..20fc6ece843859106422a84daabd40037361bfb6 100644 (file)
@@ -28,7 +28,6 @@
 
 #include "tokenizers.h"
 #include "stat_internal.h"
-#include "libstemmer.h"
 #include "xxhash.h"
 #include "cryptobox.h"
 
index 20cf3b3a0d86edf957550594c887b69dee35d627..7d693c388895523f6ee7e3e7fa1155a961f30f90 100644 (file)
@@ -11,7 +11,10 @@ SET(RSPAMADMSRC rspamadm.c commands.c pw.c keypair.c configtest.c
 ADD_EXECUTABLE(rspamadm ${RSPAMADMSRC})
 TARGET_LINK_LIBRARIES(rspamadm rspamd-server)
 TARGET_LINK_LIBRARIES(rspamadm ${RSPAMD_REQUIRED_LIBRARIES})
-TARGET_LINK_LIBRARIES(rspamadm stemmer)
+
+IF (ENABLE_SNOWBALL MATCHES "ON")
+    TARGET_LINK_LIBRARIES(rspamadm stemmer)
+ENDIF()
 TARGET_LINK_LIBRARIES(rspamadm rspamd-actrie)
 
 IF (NOT DEBIAN_BUILD)
index 1e8fcb67f1762fa366993224b5c421f68d17b110..241565b19880cfb9b442517e5d4900050f1ba7a1 100644 (file)
@@ -25,7 +25,9 @@ ENDIF(NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin")
 TARGET_LINK_LIBRARIES(rspamd-test rspamd-cdb)
 TARGET_LINK_LIBRARIES(rspamd-test rspamd-http-parser)
 TARGET_LINK_LIBRARIES(rspamd-test ${RSPAMD_REQUIRED_LIBRARIES})
-TARGET_LINK_LIBRARIES(rspamd-test stemmer)
+IF (ENABLE_SNOWBALL MATCHES "ON")
+       TARGET_LINK_LIBRARIES(rspamd-test stemmer)
+ENDIF()
 TARGET_LINK_LIBRARIES(rspamd-test rspamd-actrie)
 
 ADD_CUSTOM_TARGET(rspamd-func-test COMMAND