New comment by r-ricci on void-packages repository https://github.com/void-linux/void-packages/pull/41188#issuecomment-1570941191 Comment: @jcgruenhage I made some other changes and cleanups on top of your work. Now it builds on musl and cross-compiles. I disabled rar support because its code is source-available but [proprietary](https://github.com/Cisco-Talos/clamav/blob/clamav-1.1.0/libclamunrar/license.txt). I also enabled optimization for rust code. This is the diff compared to current master: ```diff diff --git a/common/shlibs b/common/shlibs index df0384d3b2..0a7dfac162 100644 --- a/common/shlibs +++ b/common/shlibs @@ -2283,10 +2283,10 @@ libsfml-system.so.2.5 SFML-2.5.0_1 libsfml-window.so.2.5 SFML-2.5.0_1 libsfml-audio.so.2.5 SFML-2.5.0_1 libsfml-graphics.so.2.5 SFML-2.5.0_1 -libclamav.so.9 clamav-0.103.1_2 -libclamunrar.so.9 clamav-0.103.1_2 -libclamunrar_iface.so.9 clamav-0.103.1_2 -libfreshclam.so.2 clamav-0.103.1_2 +libclamav.so.12 clamav-1.1.0_1 +libclamunrar.so.12 clamav-1.1.0_1 +libclamunrar_iface.so.12 clamav-1.1.0_1 +libfreshclam.so.3 clamav-1.1.0_1 libqca-qt5.so.2 qca-qt5-2.1.3_1 libqt5keychain.so.1 qtkeychain-qt5-0.7.0_1 libphonon4qt5.so.4 phonon-qt5-4.8.3_1 diff --git a/srcpkgs/clamav/files/clamd/log/run b/srcpkgs/clamav/files/clamd/log/run new file mode 120000 index 0000000000..3a5b4a5860 --- /dev/null +++ b/srcpkgs/clamav/files/clamd/log/run @@ -0,0 +1 @@ +/usr/bin/vlogger \ No newline at end of file diff --git a/srcpkgs/clamav/files/clamd/run b/srcpkgs/clamav/files/clamd/run new file mode 100755 index 0000000000..ae2b1f0f5d --- /dev/null +++ b/srcpkgs/clamav/files/clamd/run @@ -0,0 +1,4 @@ +#!/bin/sh +mkdir -p /run/clamav +chown _clamav:_clamav /run/clamav +exec clamd --foreground 2>&1 diff --git a/srcpkgs/clamav/files/freshclam/log/run b/srcpkgs/clamav/files/freshclam/log/run new file mode 120000 index 0000000000..3a5b4a5860 --- /dev/null +++ b/srcpkgs/clamav/files/freshclam/log/run @@ -0,0 +1 @@ +/usr/bin/vlogger \ No newline at end of file diff --git a/srcpkgs/clamav/files/freshclam/run b/srcpkgs/clamav/files/freshclam/run new file mode 100755 index 0000000000..d42df2fb5d --- /dev/null +++ b/srcpkgs/clamav/files/freshclam/run @@ -0,0 +1,4 @@ +#!/bin/sh +mkdir -p /run/clamav +chown _clamav:_clamav /run/clamav +exec freshclam --daemon --foreground 2>&1 diff --git a/srcpkgs/clamav/files/link-fts.patch b/srcpkgs/clamav/files/link-fts.patch new file mode 100644 index 0000000000..fe88e99c01 --- /dev/null +++ b/srcpkgs/clamav/files/link-fts.patch @@ -0,0 +1,12 @@ +diff --git a/clamonacc/CMakeLists.txt b/clamonacc/CMakeLists.txt +index e95e6d0..928b60a 100644 +--- a/clamonacc/CMakeLists.txt ++++ b/clamonacc/CMakeLists.txt +@@ -47,6 +47,7 @@ set_target_properties( clamonacc PROPERTIES COMPILE_FLAGS "${WARNCFLAGS}" ) + + target_link_libraries( clamonacc + PRIVATE ++ fts + ClamAV::libclamav + ClamAV::common + CURL::libcurl ) diff --git a/srcpkgs/clamav/patches/rust-optimize.patch b/srcpkgs/clamav/patches/rust-optimize.patch new file mode 100644 index 0000000000..1c54b7da92 --- /dev/null +++ b/srcpkgs/clamav/patches/rust-optimize.patch @@ -0,0 +1,31 @@ +--- a/cmake/FindRust.cmake ++++ b/cmake/FindRust.cmake +@@ -339,9 +339,7 @@ + list(APPEND MY_CARGO_ARGS "--target" ${RUST_COMPILER_TARGET}) + endif() + +- if("${CMAKE_BUILD_TYPE}" STREQUAL "Release" OR "${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo") + list(APPEND MY_CARGO_ARGS "--release") +- endif() + + list(APPEND MY_CARGO_ARGS "--target-dir" ${ARGS_BINARY_DIRECTORY}) + list(JOIN MY_CARGO_ARGS " " MY_CARGO_ARGS_STRING) +@@ -443,18 +441,8 @@ + list(APPEND CARGO_ARGS "--target" ${RUST_COMPILER_TARGET}) + endif() + +-if(NOT CMAKE_BUILD_TYPE) +- set(CARGO_BUILD_TYPE "debug") +-elseif(${CMAKE_BUILD_TYPE} STREQUAL "Release" OR ${CMAKE_BUILD_TYPE} STREQUAL "MinSizeRel") +- set(CARGO_BUILD_TYPE "release") +- list(APPEND CARGO_ARGS "--release") +-elseif(${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo") + set(CARGO_BUILD_TYPE "release") + list(APPEND CARGO_ARGS "--release") +- string(APPEND RUSTFLAGS " -g") +-else() +- set(CARGO_BUILD_TYPE "debug") +-endif() + string(STRIP "${RUSTFLAGS}" RUSTFLAGS) + + find_package_handle_standard_args(Rust diff --git a/srcpkgs/clamav/template b/srcpkgs/clamav/template index 65237deb14..32b956270d 100644 --- a/srcpkgs/clamav/template +++ b/srcpkgs/clamav/template @@ -1,65 +1,76 @@ # Template file for 'clamav' pkgname=clamav -version=0.103.8 -revision=2 -build_style=gnu-configure -# XXX: system llvm is too new (< 3.7 required) -# Shipped llvm does not build with gcc>=6 -configure_args="--sbindir=/usr/bin --libdir=/usr/lib - --with-openssl=${XBPS_CROSS_BASE}/usr --with-pcre=${XBPS_CROSS_BASE}/usr - --with-zlib=${XBPS_CROSS_BASE}/usr --with-libbz2-prefix=${XBPS_CROSS_BASE}/usr - --with-system-libmspack=${XBPS_CROSS_BASE}/usr --with-libcurl=${XBPS_CROSS_BASE}/usr - --enable-ipv6 --with-user=_clamav --with-group=_clamav" +version=1.1.0 +revision=1 +build_style=cmake +build_helper="qemu" +configure_args="-DAPP_CONFIG_DIRECTORY=/etc + -DDATABASE_DIRECTORY=/var/lib/_clamav + -DENABLE_JSON_SHARED=ON + -DCLAMAV_USER=_clamav + -DCLAMAV_GROUP=_clamav + -DENABLE_APP=ON + -DENABLE_MILTER=ON + -DENABLE_CLAMONACC=ON + -DENABLE_MAN_PAGES=ON + -DENABLE_DOXYGEN=OFF + -DENABLE_EXAMPLES=ON + -DENABLE_TESTS=ON + -DENABLE_SHARED_LIB=ON + -DENABLE_SYSTEMD=OFF + -DENABLE_UNRAR=OFF" conf_files="/etc/clamd.conf /etc/freshclam.conf" -hostmakedepends="flex pkg-config zip" +hostmakedepends="flex pkg-config zip cargo python3" makedepends="json-c-devel libcurl-devel libmspack-devel libxml2-devel - ncurses-devel pcre-devel tcl-devel" + ncurses-devel pcre2-devel tcl-devel check-devel libmilter-devel rust-std" short_desc="Clam Anti-Virus scanner" -maintainer="Orphaned " +maintainer="Jan Christian Grünhage " license="GPL-2.0-only" homepage="https://www.clamav.net/" +changelog="https://raw.githubusercontent.com/Cisco-Talos/clamav/main/NEWS.md" distfiles="https://www.clamav.net/downloads/production/clamav-${version}.tar.gz" -checksum=6f49da6ee927936de13d359e559d3944248e3a257d40b80b6c99ebe6fe8c8c3f +checksum=a30020d99cd467fa5ea0efbd6f4f182efebf62a9fc62fc4a3a7b2cc3f55e6b74 _clamav_homedir="/var/lib/_${pkgname}" _clamav_descr="ClamAV user" system_accounts="_clamav" -make_check=ci-skip -CPPFLAGS="-Wno-unused-local-typedefs" if [ "$CROSS_BUILD" ]; then - configure_args+=" --disable-mempool" + configure_args+=" -DRUSTFLAGS=${XBPS_CROSS_RUSTFLAGS}" + configure_args+=" -DRUST_COMPILER_TARGET=${XBPS_CROSS_RUST_TARGET}" fi + if [ "$XBPS_TARGET_LIBC" = "musl" ]; then makedepends+=" musl-fts-devel" - LDFLAGS="-lfts" + configure_args+=" -DHAVE_SYSTEM_LFS_FTS=ON" fi -do_configure() { - # Disable detection of sys/cdefs.h (it's obsolete) - sed -i configure -e 's; sys/cdefs\.h$;;' - sed -i configure -e 's;3\.7;3.9;' - # Enable IPv6 for cross builds - if [ "$CROSS_BUILD" ]; then - configure_args+=" have_cv_ipv6=yes" +post_patch() { + if [ "$XBPS_TARGET_LIBC" = "musl" ]; then + # CFLAGS="-lfts" doesn't work and we can't use + # a regular patch because it won't build on glibc + patch -Np1 < "${FILESDIR}/link-fts.patch" fi - # Need to set PCRE_HOME to make --with-pcre=/usr work - PCRE_HOME=/usr ./configure ${configure_args} } -post_install() { - # Enable and patch clamd configuration - mv -v ${PKGDESTDIR}/etc/clamd.conf.sample ${PKGDESTDIR}/etc/clamd.conf - vsconf etc/clamd.conf.sample - sed -i ${PKGDESTDIR}/etc/clamd.conf \ - -e "s;^Example$;# Example;" \ - -e "s;#DatabaseDirectory.*;DatabaseDirectory /var/lib/_${pkgname};" - # Enable and patch freshclam configuration - mv -v ${PKGDESTDIR}/etc/freshclam.conf.sample ${PKGDESTDIR}/etc/freshclam.conf - vsconf etc/freshclam.conf.sample +post_install() { + vsv clamd + vsv freshclam + for service in clamd clamav-milter freshclam; do + # Enable and patch service configuration + mv -v ${PKGDESTDIR}/etc/${service}.conf.sample ${PKGDESTDIR}/etc/${service}.conf + vsconf etc/${service}.conf.sample + sed -i ${PKGDESTDIR}/etc/${service}.conf \ + -e "s:^\(Example\)$:# \1:" \ + -e "s:#DatabaseDirectory.*:DatabaseDirectory /var/lib/_${pkgname}:" + done sed -i ${PKGDESTDIR}/etc/freshclam.conf \ - -e "s;^Example$;# Example;" \ - -e "s;#DatabaseDirectory.*;DatabaseDirectory /var/lib/_${pkgname};" + -e "s:.*\(PidFile\) .*:\1 /run/clamav/freshclam.pid:" \ + -e "s:^\#\(NotifyClamd\).*:\1 /etc/clamd.conf:" + sed -i ${PKGDESTDIR}/etc/clamd.conf \ + -e "s:.*\(PidFile\) .*:\1 /run/clamav/clamd.pid:" \ + -e "s:.*\(LocalSocket\) .*:\1 /run/clamav/clamd.sock:" } + clamav-devel_package() { depends="${sourcepkg}>=${version}_${revision}" short_desc+=" - development files" ```