configure: WARNING: libndpi/ndpi_main.h: proceeding with the compiler's result checking for libndpi/ndpi_main.h... yes configure: error: ERROR: missing nDPI static library !!! Please attach the following file when seeking support: !!! /var/tmp/portage/net-analyzer/pmacct-1.7.1/work/pmacct-1.7.1/config.log ------------------------------------------------------------------- This is an unstable amd64 chroot image at a tinderbox (==build bot) name: 17.0_libressl_20180811-095538 ------------------------------------------------------------------- gcc-config -l: [1] x86_64-pc-linux-gnu-7.3.0 [2] x86_64-pc-linux-gnu-7.3.1 [3] x86_64-pc-linux-gnu-8.2.0 * Available Python interpreters, in order of preference: [1] python3.7 [2] python3.6 [3] python2.7 (fallback) [4] pypy3 (fallback) [5] pypy (fallback) Available Ruby profiles: [1] ruby23 (with Rubygems) * java-config: The following VMs are available for generation-2: emerge -qpv net-analyzer/pmacct [ebuild N ] net-analyzer/pmacct-1.7.1 USE="bgp-bins bmp-bins ipv6 l2 ndpi st-bins traffic-bins -64bit -geoip -geoipv2 -jansson -kafka -mongodb -mysql -nflog -plabel -postgres -rabbitmq -sqlite -zmq"
Created attachment 544162 [details] emerge-info.txt
Created attachment 544164 [details] emerge-history.txt
Created attachment 544166 [details] environment
Created attachment 544168 [details] etc.portage.tbz2
Created attachment 544170 [details] logs.tbz2
Created attachment 544172 [details] net-analyzer:pmacct-1.7.1:20180820-153156.log
Created attachment 544174 [details] temp.tbz2
Even more problems after hacking around the weird static lib check. ndpi.c: In function ‘pm_ndpi_get_flow_info6’: ndpi.c:284:24: error: ‘const struct ndpi_ipv6hdr’ has no member named ‘ip6_hdr’; did you mean ‘ip6_src’? iph.protocol = iph6->ip6_hdr.ip6_un1_nxt; ^~~~~~~ ip6_src In file included from ../pmacct.h:55, from ndpi.c:30: ndpi.c:294:20: error: ‘const struct ndpi_ipv6hdr’ has no member named ‘ip6_hdr’; did you mean ‘ip6_src’? ntohs(iph6->ip6_hdr.ip6_un1_plen), ^~~~~~~
When I experimentally update nDPI to version 2.8, we get more problems: In file included from /usr/include/ndpi/ndpi_typedefs.h:876, from /usr/include/ndpi/ndpi_main.h:30, from ../pmacct.h:96, from ndpi.c:30: /usr/include/ndpi/ndpi_config.h:80: warning: "PACKAGE" redefined #define PACKAGE "libndpi" <command-line>: note: this is the location of the previous definition In file included from /usr/include/ndpi/ndpi_typedefs.h:876, from /usr/include/ndpi/ndpi_main.h:30, from ../pmacct.h:96, from ndpi.c:30: /usr/include/ndpi/ndpi_config.h:83: warning: "PACKAGE_BUGREPORT" redefined #define PACKAGE_BUGREPORT "" <command-line>: note: this is the location of the previous definition In file included from /usr/include/ndpi/ndpi_typedefs.h:876, from /usr/include/ndpi/ndpi_main.h:30, from ../pmacct.h:96, from ndpi.c:30: /usr/include/ndpi/ndpi_config.h:86: warning: "PACKAGE_NAME" redefined #define PACKAGE_NAME "libndpi" <command-line>: note: this is the location of the previous definition In file included from /usr/include/ndpi/ndpi_typedefs.h:876, from /usr/include/ndpi/ndpi_main.h:30, from ../pmacct.h:96, from ndpi.c:30: /usr/include/ndpi/ndpi_config.h:89: warning: "PACKAGE_STRING" redefined #define PACKAGE_STRING "libndpi 2.8" That's a warning of things to come. Why does nDPI 2.8 include that in a public header? And this is after creating a 2kB patch for nDPI 2.8's build system. ndpi.c: In function ‘pm_ndpi_packet_processing’: ndpi.c:376:33: error: too few arguments to function ‘ndpi_detection_giveup’ flow->detected_protocol = ndpi_detection_giveup(workflow->ndpi_struct, flow->ndpi_flow); ^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/ndpi/ndpi_main.h:31, from ../pmacct.h:96, from ndpi.c:30: /usr/include/ndpi/ndpi_api.h:220:17: note: declared here ndpi_protocol ndpi_detection_giveup(struct ndpi_detection_module_struct *ndpi_struct, ^~~~~~~~~~~~~~~~~~~~~ ndpi.c: In function ‘pm_ndpi_node_guess_undetected_protocol’: ndpi.c:443:64: warning: passing argument 2 of ‘ndpi_guess_undetected_protocol’ makes pointer from integer without a cast [-Wint-conversion] flow->protocol, ~~~~^~~~~~~~~~ In file included from /usr/include/ndpi/ndpi_main.h:31, from ../pmacct.h:96, from ndpi.c:30: /usr/include/ndpi/ndpi_api.h:341:38: note: expected ‘struct ndpi_flow_struct *’ but argument is of type ‘u_int8_t’ {aka ‘unsigned char’} struct ndpi_flow_struct *flow, ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~ ndpi.c:442:29: error: too few arguments to function ‘ndpi_guess_undetected_protocol’ flow->detected_protocol = ndpi_guess_undetected_protocol(workflow->ndpi_struct, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ So they changed the API (and ABI) but pmacct has not caught up yet, even when it already uses pkg-config to detect nDPI >= 2.2. :-\
commit 01f8d5c1ec0f78289f397703f6e480217d243b6b Author: Jeroen Roovers <jer@gentoo.org> Date: Tue Jan 28 11:30:58 2020 +0100 net-analyzer/pmacct: Depend on >=net-libs/nDPI-3.0:= Package-Manager: Portage-2.3.85, Repoman-2.3.20 Signed-off-by: Jeroen Roovers <jer@gentoo.org>