>>>>> On Mon, 27 Aug 2018 18:53:01 -0400, Dan Langille said:
> 
> > On Aug 14, 2018, at 11:16 AM, Martin Simmons <mar...@lispworks.com> wrote:
> > 
> >>>>>> On Tue, 14 Aug 2018 16:34:07 +0200, Radosław Korzeniewski said:
> >> 
> >> Hello Martin,
> >> 
> >> 2018-08-14 12:56 GMT+02:00 Martin Simmons <mar...@lispworks.com>:
> >> 
> >>> Sorry to say that it doesn't compile on FreeBSD (see below).
> >>> 
> >>> The warnings about BSOCK::recv are probably generic and occur in every
> >>> file.
> >>> 
> >> 
> >> A standard Linux compile does not raise any warnings here.
> > 
> > The warning will depend on the C compiler.  I'm using the default FreeBSD
> > clang-based C compiler and passing -Wall.  It looks like gcc (gcc7 at least)
> > does not issue this warning unless you explicitly pass -Woverloaded-virtual.
> > 
> > 
> >>> 
> >>> There is some hack for ENODATA in bsockcore.c, but not in bsock.c.
> >>> 
> >> 
> >> Yes, it should be in bsock.c too.
> >> 
> >> Could you check the following patch:
> >> 
> >> diff --git a/bacula/src/lib/bsock.c b/bacula/src/lib/bsock.c
> >> index a6e4d98c3..c6bed981d 100644
> >> --- a/bacula/src/lib/bsock.c
> >> +++ b/bacula/src/lib/bsock.c
> >> @@ -40,6 +40,10 @@
> >> 
> >> #define BSOCK_DEBUG_LVL    900
> >> 
> >> +#if !defined(ENODATA)              /* not defined on BSD systems */
> >> +#define ENODATA  EPIPE
> >> +#endif
> >> +
> >> /* Commands sent to Director */
> >> static char hello[]    = "Hello %s calling\n";
> > 
> > Yes, thanks, that fixes the compilation.
> 
> I didn't know about the above problem when I upgraded the FreeBSD port to 
> 9.2.1, which compiles fine on FreeBSD 11.2
> 
> Overnight received a report of a failure on FreeBSD 10.4
> 
> Tonight, I ran tests on both FreeBSD 11.2 and 10.4 to reproduce the problem.  
> Indeed, it fails on 10.4
> 
> I am not sure where to look for ENODATA which is used by Bacula, but I found 
> it defined on both systems.  Details here:
> 
>     https://gist.github.com/dlangille/1c91c184618e336b6ec8d231329b2308
> 
> ###
> 
> root@104amd64-default:~ # grep -r ENODATA /usr/include/
> /usr/include/bsm/audit_errno.h:#define        BSM_ERRNO_ENODATA               
> 61      /* Solaris/Darwin/Linux-specific. */
> /usr/include/c++/v1/cerrno:#ifndef ENODATA
> /usr/include/c++/v1/cerrno:#define ENODATA 9919
> /usr/include/c++/v1/system_error:    no_message_available,               // 
> ENODATA
> /usr/include/c++/v1/system_error:#ifdef ENODATA
> /usr/include/c++/v1/system_error:    no_message_available                = 
> ENODATA,
> /usr/include/c++/v1/tr1/cerrno:#ifndef ENODATA
> /usr/include/c++/v1/tr1/cerrno:#define ENODATA 9919
> /usr/include/c++/v1/tr1/system_error:    no_message_available,               
> // ENODATA
> /usr/include/c++/v1/tr1/system_error:#ifdef ENODATA
> /usr/include/c++/v1/tr1/system_error:    no_message_available                
> = ENODATA,
> root@104amd64-default:~ # 
> ###
> 
> Are any of those what Bacula needs?  Could it be that Bacula on 10.4 is not 
> pulling in the appropriate include files?

The files in /usr/include/c++/v1/ seem to be part of LLVM/clang, as used by
the system compiler, so will not be used if you want to compile with the GNU
compiler (e.g. lang/gcc7).

The patch mentioned by Radosław is the right approach.

__Martin

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Bacula-devel mailing list
Bacula-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-devel

Reply via email to