From cd6040129b42e3874e751478e28e84dd7b213e80 Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Sun, 29 Sep 2019 09:59:24 +0200 Subject: [PATCH] package/c-icap: fix build with musl Add an upstream patch which includes various fixes including renaming PAGE_SIZE into DB_PAGE_SIZE which fix the build on musl Fixes: - http://autobuild.buildroot.org/results/2ce70b92d7e4ad78aa0fd257a3b40a841489ab6d Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- ...ixes-to-compile-and-run-under-cygwin.patch | 391 ++++++++++++++++++ 1 file changed, 391 insertions(+) create mode 100644 package/c-icap/0001-Required-fixes-to-compile-and-run-under-cygwin.patch diff --git a/package/c-icap/0001-Required-fixes-to-compile-and-run-under-cygwin.patch b/package/c-icap/0001-Required-fixes-to-compile-and-run-under-cygwin.patch new file mode 100644 index 0000000000..452223c67d --- /dev/null +++ b/package/c-icap/0001-Required-fixes-to-compile-and-run-under-cygwin.patch @@ -0,0 +1,391 @@ +From 1631a6c1f50e152b8a45d8279c96086e5636795b Mon Sep 17 00:00:00 2001 +From: Christos Tsantilas +Date: Fri, 25 Jan 2019 06:42:22 -0800 +Subject: [PATCH] Required fixes to compile and run under cygwin + +[Retrieved from: +https://github.com/c-icap/c-icap-server/commit/1631a6c1f50e152b8a45d8279c96086e5636795b, +which has the side effect of fixing the build with the musl C library] +Signed-off-by: Fabrice Fontaine +--- + Makefile.am | 2 +- + configure.ac | 10 +++++++--- + header.c | 34 ---------------------------------- + include/header.h | 8 -------- + modules/Makefile.am | 34 ++++++++++++++++++++-------------- + modules/bdb_tables.c | 17 +++++++++++++++-- + modules/shared_cache.c | 12 ++++++++++++ + modules/sys_logger.c | 13 +++++++++++++ + services/echo/Makefile.am | 10 ++++++++-- + services/ex-206/Makefile.am | 10 ++++++++-- + utils/c-icap-mkbdb.c | 8 ++++---- + 11 files changed, 88 insertions(+), 70 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 4c34033..ab80f4f 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -53,7 +53,7 @@ c_icap_SOURCES = aserver.c request.c cfg_param.c \ + libicapapi_la_CFLAGS= $(INVISIBILITY_CFLAG) -I$(srcdir)/include/ -Iinclude/ @ZLIB_ADD_FLAG@ @OPENSSL_ADD_FLAG@ @BZLIB_ADD_FLAG@ @BROTLI_ADD_FLAG@ @PCRE_ADD_FLAG@ -DCI_BUILD_LIB + + libicapapi_la_LIBADD = @ZLIB_ADD_LDADD@ @BZLIB_ADD_LDADD@ @BROTLI_ADD_LDADD@ @PCRE_ADD_LDADD@ @DL_ADD_FLAG@ @THREADS_LDADD@ @OPENSSL_ADD_LDADD@ +-libicapapi_la_LDFLAGS= -shared -version-info @CICAPLIB_VERSION@ @THREADS_LDFLAGS@ ++libicapapi_la_LDFLAGS= -shared -version-info @CICAPLIB_VERSION@ @LIBS_LDFLAGS@ @THREADS_LDFLAGS@ + + export EXT_PROGRAMS_MKLIB = @ZLIB_LNDIR_LDADD@ @BZLIB_LNDIR_LDADD@ @BROTLI_LNDIR_LDADD@ @PCRE_LNDIR_LDADD@ @OPENSSL_LNDIR_LDADD@ + +diff --git a/configure.ac b/configure.ac +index 405571b..8059cb7 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -45,12 +45,14 @@ case "$host_os" in + CFLAGS="-D_REENTRANT $CFLAGS" + THREADS_LDADD="-lpthread" + THREADS_LDFLAGS="" ++ LIBS_LDFLAGS="" + ;; + solaris2.*) + CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS $CFLAGS" + LIBS="-lsocket -lnsl -lrt $LIBS" + THREADS_LDADD="-lpthread" + THREADS_LDFLAGS="" ++ LIBS_LDFLAGS="" + ;; + freebsd5*) + ## If I understand how all those threading models works correctly +@@ -69,6 +71,7 @@ case "$host_os" in + CFLAGS="-pthread -D_THREAD_SAFE $CFLAGS" + THREADS_LDADD="-XCClinker -lc_r" + THREADS_LDFLAGS="" ++ LIBS_LDFLAGS="" + ## FreeBSD has pthreads rwlocks from version 3 (I think) + # AC_DEFINE(HAVE_PTHREADS_RWLOCK,1,[Define HAVE_PTHREADS_RWLOCK if pthreads library supports rwlocks]) + ## 1:1 threads +@@ -82,24 +85,28 @@ case "$host_os" in + CFLAGS="-D_THREAD_SAFE $CFLAGS" + THREADS_LDADD="-XCClinker -lthr" + THREADS_LDFLAGS="" ++ LIBS_LDFLAGS="" + ;; + + cygwin*) + CFLAGS="-D_REENTRANT $CFLAGS" + THREADS_LDADD="-lpthread" + THREADS_LDFLAGS=""; ++ LIBS_LDFLAGS="-no-undefined" + iscygwin="yes" + ;; + *) + CFLAGS="-D_REENTRANT $CFLAGS" + THREADS_LDADD="-lpthread" + THREADS_LDFLAGS="" ++ LIBS_LDFLAGS="" + ;; + esac + + TEST_LIBS="$TEST_LIBS $THREADS_LDADD" + AC_SUBST(THREADS_LDADD) + AC_SUBST(THREADS_LDFLAGS) ++AC_SUBST(LIBS_LDFLAGS) + + AC_DEFINE_UNQUOTED(C_ICAP_CONFIGURE_OPTIONS, "$ac_configure_args", + [configure command line used to configure c-icap]) +@@ -984,9 +991,6 @@ LIBS="$LIBS $EXTRALIBS" + + #Configure common flags + MODULES_LIBADD="" +-if test a"$iscygwin" != a; then +- MODULES_LIBADD="-L../../ -licapapi" +-fi + MODULES_CFLAGS="$INVISIBILITY_CFLAG -DCI_BUILD_MODULE" + AC_SUBST(MODULES_LIBADD) + AC_SUBST(MODULES_CFLAGS) +diff --git a/header.c b/header.c +index 807a2e0..266b958 100644 +--- a/header.c ++++ b/header.c +@@ -110,21 +110,6 @@ const struct ci_error_code ci_error_codes[] = { + {505, "Unsupported version"} /*ICAP version not supported by server. */ + }; + +-/* +-#ifdef __CYGWIN__ +-int ci_error_code(int ec){ +- return (ec >= EC_100 && ec < EC_MAX ? ci_error_codes[ec].code:1000); +-} +- +-const char *unknownerrorcode = "UNKNOWN ERROR CODE"; +- +-const char *ci_error_code_string(int ec){ +- return (ec >= EC_100 && ec < EC_MAX?ci_error_codes[ec].str:unknownerrorcode); +-} +-#endif +-*/ +- +- + const char *ci_encaps_entities[] = { + "req-hdr", + "res-hdr", +@@ -134,25 +119,6 @@ const char *ci_encaps_entities[] = { + "opt-body" + }; + +-#ifdef __CYGWIN__ +- +-const char *unknownentity = "UNKNOWN"; +-const char *unknownmethod = "UNKNOWN"; +- +-const char *ci_method_string(int method) +-{ +- return (method <= ICAP_RESPMOD +- && method >= ICAP_OPTIONS ? CI_Methods[method] : unknownmethod); +-} +- +- +-const char *ci_encaps_entity_string(int e) +-{ +- return (e <= ICAP_OPT_BODY +- && e >= ICAP_REQ_HDR ? CI_EncapsEntities[e] : unknownentity); +-} +-#endif +- + ci_headers_list_t *ci_headers_create() + { + ci_headers_list_t *h; +diff --git a/include/header.h b/include/header.h +index 4cab365..ed2de88 100644 +--- a/include/header.h ++++ b/include/header.h +@@ -52,16 +52,8 @@ enum ci_encapsulated_entities {ICAP_REQ_HDR, ICAP_RES_HDR, + }; + CI_DECLARE_DATA extern const char *ci_encaps_entities[]; + +-#ifdef __CYGWIN__ +- +-const char *ci_encaps_entity_string(int e); +- +-#else +- + #define ci_encaps_entity_string(e) (e <= ICAP_OPT_BODY && e >= ICAP_REQ_HDR?ci_encaps_entities[e]:"UNKNOWN") + +-#endif +- + /** + \typedef ci_headers_list_t + \ingroup HEADERS +diff --git a/modules/Makefile.am b/modules/Makefile.am +index e6e9270..2d43a60 100644 +--- a/modules/Makefile.am ++++ b/modules/Makefile.am +@@ -21,38 +21,44 @@ endif + + AM_CPPFLAGS=-I$(top_srcdir)/ -I$(top_srcdir)/include/ -I$(top_builddir)/include/ + +-sys_logger_la_LIBADD = @MODULES_LIBADD@ ++if ISCYGWIN ++MODS_LIB_ADD=$(top_builddir)/libicapapi.la ++else ++MODS_LIB_ADD= ++endif ++ ++sys_logger_la_LIBADD = $(MODS_LIB_ADD) + sys_logger_la_CFLAGS= @MODULES_CFLAGS@ +-sys_logger_la_LDFLAGS= -module -avoid-version ++sys_logger_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ + sys_logger_la_SOURCES = sys_logger.c + +-dnsbl_tables_la_LIBADD = @MODULES_LIBADD@ ++dnsbl_tables_la_LIBADD = $(MODS_LIB_ADD) + dnsbl_tables_la_CFLAGS= @MODULES_CFLAGS@ +-dnsbl_tables_la_LDFLAGS= -module -avoid-version ++dnsbl_tables_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ + dnsbl_tables_la_SOURCES = dnsbl_tables.c + +-perl_handler_la_LIBADD = @MODULES_LIBADD@ @perllib@ -L@perlcore@ -lperl ++perl_handler_la_LIBADD = $(MODS_LIB_ADD) @perllib@ -L@perlcore@ -lperl + perl_handler_la_CFLAGS= @MODULES_CFLAGS@ @perlccflags@ -I@perlcore@ +-perl_handler_la_LDFLAGS= -module -avoid-version @perlldflags@ ++perl_handler_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ @perlldflags@ + perl_handler_la_SOURCES = perl_handler.c + + +-bdb_tables_la_LIBADD = @MODULES_LIBADD@ @BDB_ADD_LDADD@ ++bdb_tables_la_LIBADD = $(MODS_LIB_ADD) @BDB_ADD_LDADD@ + bdb_tables_la_CFLAGS= @MODULES_CFLAGS@ @BDB_ADD_FLAG@ +-bdb_tables_la_LDFLAGS= -module -avoid-version ++bdb_tables_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ + bdb_tables_la_SOURCES = bdb_tables.c + +-ldap_module_la_LIBADD = @MODULES_LIBADD@ @LDAP_ADD_LDADD@ $(top_builddir)/libicapapi.la ++ldap_module_la_LIBADD = $(MODS_LIB_ADD) @LDAP_ADD_LDADD@ + ldap_module_la_CFLAGS= @MODULES_CFLAGS@ @LDAP_ADD_FLAG@ +-ldap_module_la_LDFLAGS= -module -avoid-version ++ldap_module_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ + ldap_module_la_SOURCES = ldap_module.c + +-memcached_cache_la_LIBADD= @MODULES_LIBADD@ @MEMCACHED_ADD_LDADD@ ++memcached_cache_la_LIBADD= $(MODS_LIB_ADD) @MEMCACHED_ADD_LDADD@ + memcached_cache_la_CFLAGS= @MODULES_CFLAGS@ @MEMCACHED_ADD_FLAG@ +-memcached_cache_la_LDFLAGS= -module -avoid-version ++memcached_cache_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ + memcached_cache_la_SOURCES= memcached.c + +-shared_cache_la_LIBADD= @MODULES_LIBADD@ ++shared_cache_la_LIBADD= $(MODS_LIB_ADD) + shared_cache_la_CFLAGS= +-shared_cache_la_LDFLAGS= -module -avoid-version ++shared_cache_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ + shared_cache_la_SOURCES= shared_cache.c +diff --git a/modules/bdb_tables.c b/modules/bdb_tables.c +index b8459be..1e908a9 100644 +--- a/modules/bdb_tables.c ++++ b/modules/bdb_tables.c +@@ -176,8 +176,8 @@ void *bdb_table_open(struct ci_lookup_table *table) + + /*We can not fork a Berkeley DB table, so we have to + open bdb tables for every child, on childs start-up procedure*/ +- register_command_extend("openBDBtable", CHILD_START_CMD, table, +- command_real_open_table); ++ ci_command_register_action("openBDBtable", CHILD_START_CMD, table, ++ command_real_open_table); + + return table->data; + } +@@ -257,3 +257,16 @@ void bdb_table_release_result(struct ci_lookup_table *table,void **val) + { + ci_buffer_free(val); + } ++ ++ #ifdef __CYGWIN__ ++#include ++void ci_command_register_action(const char *name, int type, void *data, ++ void (*command_action) (const char *name, int type, void *data)) ++ { ++ typedef void (*RA)(const char *, int, void *, void(*)(const char *, int, void *)); ++ RA fn; ++ fn = (RA)GetProcAddress(GetModuleHandle(NULL), "ci_command_register_action"); ++ if (fn) ++ (*fn)(name, type, data, command_action); ++ } ++#endif +diff --git a/modules/shared_cache.c b/modules/shared_cache.c +index 103b760..a79d51a 100644 +--- a/modules/shared_cache.c ++++ b/modules/shared_cache.c +@@ -345,3 +345,15 @@ void ci_shared_cache_destroy(struct ci_cache *cache) + ci_shared_mem_detach(&data->id); + } + ++#ifdef __CYGWIN__ ++#include ++void ci_command_register_action(const char *name, int type, void *data, ++ void (*command_action) (const char *name, int type, void *data)) ++ { ++ typedef void (*RA)(const char *, int, void *, void(*)(const char *, int, void *)); ++ RA fn; ++ fn = (RA)GetProcAddress(GetModuleHandle(NULL), "ci_command_register_action"); ++ if (fn) ++ (*fn)(name, type, data, command_action); ++ } ++#endif +diff --git a/modules/sys_logger.c b/modules/sys_logger.c +index 1c47753..1764b0d 100644 +--- a/modules/sys_logger.c ++++ b/modules/sys_logger.c +@@ -60,7 +60,20 @@ int cfg_syslog_access(const char *directive, const char **argv, void *setdata); + functions declared in log.c. This file is not included in c-icap library + but defined in primary c-icap binary. + */ ++#ifdef __CYGWIN__ ++#include ++char *logformat_fmt(const char *name) ++{ ++ typedef char* (*LF_FMT)(const char *); ++ LF_FMT fn; ++ fn = (LF_FMT)GetProcAddress(GetModuleHandle(NULL), "logformat_fmt"); ++ if (fn) ++ return (*fn)(name); ++ return NULL; ++} ++#else + extern char *logformat_fmt(const char *name); ++#endif + + /*Configuration Table .....*/ + static struct ci_conf_entry conf_variables[] = { +diff --git a/services/echo/Makefile.am b/services/echo/Makefile.am +index 402c8f9..7d701b1 100644 +--- a/services/echo/Makefile.am ++++ b/services/echo/Makefile.am +@@ -3,9 +3,15 @@ pkglib_LTLIBRARIES=srv_echo.la + + AM_CPPFLAGS=-I$(top_srcdir)/ -I$(top_srcdir)/include/ -I$(top_builddir)/include/ + +-srv_echo_la_LIBADD = @MODULES_LIBADD@ ++if ISCYGWIN ++MODS_LIB_ADD=$(top_builddir)/libicapapi.la ++else ++MODS_LIB_ADD= ++endif ++ ++srv_echo_la_LIBADD = $(MODS_LIB_ADD) + srv_echo_la_CFLAGS= @MODULES_CFLAGS@ +-srv_echo_la_LDFLAGS= -module -avoid-version ++srv_echo_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ + srv_echo_la_SOURCES = srv_echo.c + + +diff --git a/services/ex-206/Makefile.am b/services/ex-206/Makefile.am +index 44bbf21..ff73399 100644 +--- a/services/ex-206/Makefile.am ++++ b/services/ex-206/Makefile.am +@@ -3,8 +3,14 @@ pkglib_LTLIBRARIES=srv_ex206.la + + AM_CPPFLAGS=-I$(top_srcdir)/ -I$(top_srcdir)/include/ -I$(top_builddir)/include/ + +-srv_ex206_la_LIBADD = @MODULES_LIBADD@ ++if ISCYGWIN ++MODS_LIB_ADD=$(top_builddir)/libicapapi.la ++else ++MODS_LIB_ADD= ++endif ++ ++srv_ex206_la_LIBADD = $(MODS_LIB_ADD) + srv_ex206_la_CFLAGS= @MODULES_CFLAGS@ +-srv_ex206_la_LDFLAGS= -module -avoid-version ++srv_ex206_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ + srv_ex206_la_SOURCES = srv_ex206.c + +diff --git a/utils/c-icap-mkbdb.c b/utils/c-icap-mkbdb.c +index c29a46f..326ee1c 100644 +--- a/utils/c-icap-mkbdb.c ++++ b/utils/c-icap-mkbdb.c +@@ -23,7 +23,7 @@ char *dbfile = NULL; + int DUMP_MODE = 0; + int VERSION_MODE = 0; + int USE_DBTREE = 0; +-long int PAGE_SIZE; ++long int DB_PAGE_SIZE; + + ci_mem_allocator_t *allocator = NULL; + int cfg_set_type(const char *directive, const char **argv, void *setdata); +@@ -52,7 +52,7 @@ static struct ci_options_entry options[] = { + "The type of values" + }, + { +- "-p", "page_size", &PAGE_SIZE, ci_cfg_size_long, ++ "-p", "page_size", &DB_PAGE_SIZE, ci_cfg_size_long, + "The page size to use for the database" + }, + { +@@ -107,8 +107,8 @@ int open_db(char *path) + return 0; + } + +- if (PAGE_SIZE > 512 && PAGE_SIZE <= 64*1024) +- db->set_pagesize(db, (uint32_t)PAGE_SIZE); ++ if (DB_PAGE_SIZE > 512 && DB_PAGE_SIZE <= 64*1024) ++ db->set_pagesize(db, (uint32_t)DB_PAGE_SIZE); + + if ((ret = db->open(db, NULL, path, NULL, + (USE_DBTREE ? DB_BTREE : DB_HASH), -- 2.30.2