From 7cd687cb7ea576dda2a54114eb4f90838aa13580 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Sun, 28 Feb 2021 04:06:30 -0800 Subject: [PATCH] clamav: update to 0.103.1 Convert to using CMake in order to speed up compilation and to fix compilation under glibc. Add extra dependencies since they're now needed. Signed-off-by: Rosen Penev --- net/clamav/Makefile | 58 ++++++++++++--------------- net/clamav/patches/010-musl12x.patch | 59 ++++++++++++++++++++++++++++ net/clamav/patches/020-cmake.patch | 10 +++++ 3 files changed, 94 insertions(+), 33 deletions(-) create mode 100644 net/clamav/patches/010-musl12x.patch create mode 100644 net/clamav/patches/020-cmake.patch diff --git a/net/clamav/Makefile b/net/clamav/Makefile index 5e8321daa..3adb15316 100644 --- a/net/clamav/Makefile +++ b/net/clamav/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=clamav -PKG_VERSION:=0.103.0 +PKG_VERSION:=0.103.1 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://www.clamav.net/downloads/production/ -PKG_HASH:=32a9745277bfdda80e77ac9ca2f5990897418e9416880f3c31553ca673e80546 +PKG_HASH:=7308c47b89b268af3b9f36140528927a49ff3e633a9c9c0aac2712d81056e257 PKG_MAINTAINER:=Marko Ratkaj \ Lucian Cristian @@ -21,16 +21,16 @@ PKG_LICENSE:=GPL-2.0-only PKG_LICENSE_FILES:=COPYING* PKG_CPE_ID:=cpe:/a:clamav:clamav +PKG_BUILD_DEPENDS:=ncurses PKG_BUILD_PARALLEL:=1 -PKG_INSTALL:=1 -PKG_FIXUP:=autoreconf -include $(INCLUDE_DIR)/uclibc++.mk include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/cmake.mk +include $(INCLUDE_DIR)/nls.mk define Package/clamav/Default SECTION:=net - DEPENDS:=$(CXX_DEPENDS) +libpthread +zlib +libcurl +libjson-c +libmilter-sendmail +libopenssl +libltdl +libpcre2 +USE_MUSL:musl-fts + DEPENDS:=+libstdcpp +libpthread +zlib +libbz2 +libxml2 +libcurl +libjson-c +libmilter-sendmail +libopenssl +libltdl +libpcre2 CATEGORY:=Network SUBMENU:=Web Servers/Proxies TITLE:=ClamAV @@ -56,35 +56,27 @@ define Package/freshclam/description Database updater for ClamAV endef -CONFIGURE_ARGS += \ - --sysconfdir=/etc/clamav/ \ - --enable-milter \ - --disable-bzip2 \ - --disable-check \ - --disable-clamdtop \ - --disable-rpath \ - --disable-xml \ - --disable-zlib-vcheck \ - --with-user=nobody \ - --with-group=nogroup \ - --with-libcurl="$(STAGING_DIR)/usr/" \ - --with-libjson="$(STAGING_DIR)/usr/" \ - --with-openssl="$(STAGING_DIR)/usr/" \ - --with-pcre="$(STAGING_DIR)/usr/" \ - --with-zlib="$(STAGING_DIR)/usr/" \ - --without-iconv \ - --without-libncurses-prefix - -CONFIGURE_VARS += \ - ax_cv_uname_syscall=yes \ - ac_cv_c_mmap_private=yes \ - have_cv_gai=yes \ - ac_cv_sys_file_offset_bits=no - -CONFIGURE_VARS += $(if $(CONFIG_IPV6),have_cv_ipv6=yes) +CMAKE_OPTIONS += \ + -DENABLE_MILTER=ON \ + -DHAVE_ATTRIB_PACKED=ON \ + -DHAVE_ATTRIB_ALIGNED=ON \ + -Dtest_run_result=ON \ + -Dtest_run_result__TRYRUN_OUTPUT=ON \ + -DCLAMAV_USER=nobody \ + -DCLAMAV_GROUP=nogroup \ + -DMMAP_FOR_CROSSCOMPILING=ON \ + -DENABLE_CLAMONACC=ON \ + -DENABLE_DOCS=OFF \ + -DENABLE_DOXYGEN=OFF \ + -DENABLE_EXAMPLES=OFF \ + -DENABLE_UNRAR=OFF \ + -DENABLE_SYSTEMD=OFF \ + -DIconv_INCLUDE_DIR=$(ICONV_PREFIX)/include \ + -DIconv_LIBRARY=$(ICONV_PREFIX)/lib/libiconv.$(if $(ICONV_FULL),so,a) \ + -DHAVE_SYSTEM_LFS_FTS=O$(if $(CONFIG_USE_GLIBC),N,FF) TARGET_CXXFLAGS += -ffunction-sections -fdata-sections -fno-rtti -flto -TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed $(if $(CONFIG_USE_MUSL),-lfts) +TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed define Package/clamav/conffiles /etc/config/clamav diff --git a/net/clamav/patches/010-musl12x.patch b/net/clamav/patches/010-musl12x.patch new file mode 100644 index 000000000..8186fca7d --- /dev/null +++ b/net/clamav/patches/010-musl12x.patch @@ -0,0 +1,59 @@ +--- a/clamonacc/misc/fts.c ++++ b/clamonacc/misc/fts.c +@@ -744,11 +744,11 @@ static FTSENTRY * + if (!ISSET(FTS_SEEDOT) && ISDOT(dp->d_name)) + continue; + +- if ((p = fts_alloc(sp, dp->d_name, _D_EXACT_NAMLEN(dp))) == NULL) ++ if ((p = fts_alloc(sp, dp->d_name, strlen(dp->d_name))) == NULL) + goto mem1; +- if (_D_EXACT_NAMLEN(dp) >= maxlen) { /* include space for NUL */ ++ if (strlen(dp->d_name) >= maxlen) { /* include space for NUL */ + oldaddr = sp->fts_path; +- if (fts_palloc(sp, _D_EXACT_NAMLEN(dp) + len + 1)) { ++ if (fts_palloc(sp, strlen(dp->d_name) + len + 1)) { + /* + * No more memory for path or structures. Save + * errno, free up the current structure and the +@@ -773,7 +773,7 @@ static FTSENTRY * + maxlen = sp->fts_pathlen - len; + } + +- if (len + _D_EXACT_NAMLEN(dp) >= USHRT_MAX) { ++ if (len + strlen(dp->d_name) >= USHRT_MAX) { + /* + * In an FTSENT, fts_pathlen is a u_short so it is + * possible to wraparound here. If we do, free up +@@ -790,7 +790,7 @@ static FTSENTRY * + } + p->fts_level = level; + p->fts_parent = sp->fts_cur; +- p->fts_pathlen = len + _D_EXACT_NAMLEN(dp); ++ p->fts_pathlen = len + strlen(dp->d_name); + + #if defined FTS_WHITEOUT && 0 + if (dp->d_type == DT_WHT) +--- a/clamonacc/misc/priv_fts.h ++++ b/clamonacc/misc/priv_fts.h +@@ -207,14 +207,18 @@ typedef struct _ftsent64 { + } FTSENT64; + #endif + +-__BEGIN_DECLS ++#ifdef __cplusplus ++extern "C" { ++#endif + FTSENT *_priv_fts_children(FTS *, int); + int _priv_fts_close(FTS *); + FTS *_priv_fts_open(char *const *, int, + int (*)(const FTSENT **, const FTSENT **)); + FTSENT *_priv_fts_read(FTS *); +-int _priv_fts_set(FTS *, FTSENT *, int) __THROW; +-__END_DECLS ++int _priv_fts_set(FTS *, FTSENT *, int) __attribute__ ((__nothrow__)); ++#ifdef __cplusplus ++} ++#endif + + #endif /* fts.h */ + #endif diff --git a/net/clamav/patches/020-cmake.patch b/net/clamav/patches/020-cmake.patch new file mode 100644 index 000000000..8279d1353 --- /dev/null +++ b/net/clamav/patches/020-cmake.patch @@ -0,0 +1,10 @@ +--- a/freshclam/CMakeLists.txt ++++ b/freshclam/CMakeLists.txt +@@ -38,7 +38,6 @@ endif() + if(WIN32) + INSTALL(CODE "FILE(MAKE_DIRECTORY \${ENV}\${CMAKE_INSTALL_PREFIX}/database)") + else() +- INSTALL(CODE "FILE(MAKE_DIRECTORY \${ENV}\${CMAKE_INSTALL_PREFIX}/share/clamav)") + endif() + + # now we rename resman-bin executable to resman using target properties