After the patch, I also had to include <sys/types.h> and <netinet/in.h> in 
common-src/sockaddr-util (per https://man.openbsd.org/inet.4 and 
https://man.openbsd.org/inet6.4) to avoid the error below.  Now its just 
complaining about SWIG not being installed even though I installed it.  I will 
look into that next but didn’t want to leave you hanging for a response. Thanks 
for your help!


gmake[3]: Entering directory '/home/admin/git/amanda/amanda/common-src'
depbase=`echo ambind.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I../config  -I../gnulib -I../common-src 
-fno-strict-aliasing -I/usr/local/include -D_GNU_SOURCE -I/usr/include -pthread 
-I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include 
-I/usr/local/include -Wall -Wextra -Wparentheses -Wdeclaration-after-statement 
-Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wformat 
-Wformat-security -Wsign-compare -Wfloat-equal -Wold-style-definition 
-Wno-strict-aliasing -Wno-unknown-pragmas -Wno-deprecated-declarations 
-DAMANDA_FILE=\"`basename ambind.c`\" -g -O2 -fno-strict-aliasing   -MT 
ambind.o -MD -MP -MF $depbase.Tpo -c -o ambind.o ambind.c &&\
mv -f $depbase.Tpo $depbase.Po
In file included from ambind.c:28:
sockaddr-util.h:39: error: field 'sin' has incomplete type
sockaddr-util.h:41: error: field 'sin6' has incomplete type
gmake[3]: *** [Makefile:2519: ambind.o] Error 1
gmake[3]: Leaving directory '/home/admin/git/amanda/amanda/common-src'
gmake[2]: *** [Makefile:2125: all] Error 2
gmake[2]: Leaving directory '/home/admin/git/amanda/amanda/common-src'
gmake[1]: *** [Makefile:1713: all-recursive] Error 1
gmake[1]: Leaving directory '/home/admin/git/amanda/amanda'
gmake: *** [Makefile:1637: all] Error 2


From: Jean-Louis Martineau 
<jmartin...@carbonite.com<mailto:jmartin...@carbonite.com>>
Date: Thursday, August 3, 2017 at 9:03 AM
To: Eric Lovelace 
<elovel...@msddecatur.k12.in.us<mailto:elovel...@msddecatur.k12.in.us>>, 
"amanda-users@amanda.org<mailto:amanda-users@amanda.org>" 
<amanda-users@amanda.org<mailto:amanda-users@amanda.org>>
Subject: Re: Compiling 3.4.5 on OpenBSD 6.1

Eric,

Try this patch.
It doesn't use syshacks, it really detect the getservbyname_r variant.

Jean-Louis

On 02/08/17 05:57 PM, Eric Lovelace wrote:
I worked your patch in with some changes I made and got it to compile (The 
changes to Makefile.am<http://Makefile.am> were a separate problem that came up 
after).  Currently I am working with inetd to try and actually get it running 
to confirm that it works, but it definitely compiles now!  Changes are below.

--- config/amanda/syshacks.m4 Wed Aug 2 11:06:49 2017
+++ config/amanda/syshacks.m4.bak Wed Aug 2 11:05:12 2017
@@ -23,7 +23,6 @@
*-freebsd*)
;;
*-openbsd*)
- AC_DEFINE(GETSERVBYNAME_R4,1,[Define on openbsd])
;;
*-hp-*)
case "$CC" in

--- /root/amanda-3.4.5/common-src/security-util.c       Wed Aug  2 17:39:04 2017
+++ /root/amanda-3.4.5/common-src/security-util.c.bak   Wed Aug  2 08:56:01 2017
@@ -3305,7 +3305,7 @@
         struct servent sp;
         char buf[2048];

-#if defined GETSERVBYNAME_R5
+#ifdef GETSERVBYNAME_R5
        result = getservbyname_r(service, proto, &sp, buf, 2048);
        if (result == 0) {
            assert(errno != ERANGE);
@@ -3313,16 +3313,6 @@
        } else {
            port = (in_port_t)(ntohs((in_port_t)sp.s_port));
        }
-#elif defined GETSERVBYNAME_R4
-       struct servent_data servent_data;
-        int r;
-       memset(&servent_data, 0, sizeof(struct servent_data));
-        r = getservbyname_r(service, proto, &result, &servent_data);
-        if (r !=0) {
-            port = 0;
-        } else {
-            port = (in_port_t)(ntohs((in_port_t)result->s_port));
-        }
 #else
        int r;
        r = getservbyname_r(service, proto, &sp, buf, 2048, &result);

--- Makefile.am<http://Makefile.am> Wed Aug 2 14:12:14 2017
+++ Makefile.am.bak Wed Aug 2 13:30:41 2017
@@ -4,7 +4,7 @@
include $(top_srcdir)/config/automake/vars.am
include $(top_srcdir)/config/automake/installperms.am

-ACLOCAL_AMFLAGS = --force -I config -I . -I config/gettext-macros -I 
config/gnulib -I config/amanda -I config/macro-archive
+ACLOCAL_AMFLAGS = --force -I config -I . -I config/gettext-macros -I 
config/gnulib -I config/amanda -I config/macro-archive -I /usr/share/aclocal

if WANT_CLIENT
CLIENT_SUBDIRS = client-src application-src

From: <owner-amanda-us...@amanda.org<mailto:owner-amanda-us...@amanda.org>> on 
behalf of Jean-Louis Martineau 
<jmartin...@carbonite.com<mailto:jmartin...@carbonite.com>>
Date: Wednesday, August 2, 2017 at 1:02 PM
To: Eric Lovelace 
<elovel...@msddecatur.k12.in.us<mailto:elovel...@msddecatur.k12.in.us>>, 
"amanda-users@amanda.org<mailto:amanda-users@amanda.org>" 
<amanda-users@amanda.org<mailto:amanda-users@amanda.org>>
Subject: Re: Compiling 3.4.5 on OpenBSD 6.1

Another variant of getservbyname_r.

Try the attached patch.
I can't compile it, I do not have an openbsd host.

If the patch works, we will have to fix the configure script to detect that 
variant and define GETSERVBYNAME_R4

Jean-Louis


On 01/08/17 06:17 PM, Eric Lovelace wrote:
This seems to be the relevant part from the doc (located here: 
https://man.openbsd.org/getservent.3):

int getservbyname_r(const char *name, const char *proto, struct servent 
*servent, struct servent_data *servent_data);

I checked out the line from the source (security-util.c line 3318)
r = getservbyname_r(service, proto, &sp, buf, 2048, &result);

So there definitely is a mismatch in parameters. It also looks like that area 
of code already has some logic for switching between a 5 parameter call and a 6 
parameter call; I guess when I sit back down in front of the system in question 
I will see if I can get enough of a handle on the code to write the 4 parameter 
call.
________________________________________
From: Jean-Louis Martineau 
[jmartin...@carbonite.com<mailto:jmartin...@carbonite.com>]
Sent: Tuesday, August 01, 2017 5:11 PM
To: Eric Lovelace; amanda-users@amanda.org<mailto:amanda-users@amanda.org>
Subject: Re: Compiling 3.4.5 on OpenBSD 6.1

How getservbyname_r is defined on OpenBSD 6.1

Jean-Louis

On 01/08/17 04:28 PM, Eric Lovelace wrote:
> Hello,
>
> I would like to run Amanda on OpenBSD (Ideally with current versions of
> each). From what I have found online, this was possible in previous
> versions of both softwares but I can¹t find any examples with more recent
> versions; is this setup still supported? I ran into an issue with the
> default make command (that apparently the Makefile used some GNU make
> exclusive features), but using gmake seemed to advance the progress a
> little further. Has anyone encountered anything similar and been able to
> get it working? Thanks in advance!
>
> The error from running gmake
> ============================
> libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../config -I../gnulib
> -I../common-src -fno-strict-aliasing -D_GNU_SOURCE -I/usr/include -pthread
> -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include
> -I/usr/local/include -Wall -Wextra -Wparentheses
> -Wdeclaration-after-statement -Wmissing-prototypes -Wstrict-prototypes
> -Wmissing-declarations -Wformat -Wformat-security -Wsign-compare
> -Wfloat-equal -Wold-style-definition -Wno-strict-aliasing
> -Wno-unknown-pragmas -Wno-deprecated-declarations
> -DAMANDA_FILE=\"security-util.c\" -g -O2 -fno-strict-aliasing -MT
> security-util.lo -MD -MP -MF .deps/security-util.Tpo -c security-util.c
> -fPIC -DPIC -o .libs/security-util.o
> security-util.c: In function 'find_port_for_service':
> security-util.c:3318: warning: passing argument 4 of 'getservbyname_r'
> from incompatible pointer type
> security-util.c:3318: error: too many arguments to function
> 'getservbyname_r'
> gmake[3]: *** [Makefile:2479: security-util.lo] Error 1
> gmake[3]: Leaving directory '/root/amanda-3.4.5/common-src'
> gmake[2]: *** [Makefile:2123: all] Error 2
> gmake[2]: Leaving directory '/root/amanda-3.4.5/common-src'
> gmake[1]: *** [Makefile:1717: all-recursive] Error 1
> gmake[1]: Leaving directory '/root/amanda-3.4.5'
> gmake: *** [Makefile:1641: all] Error 2
>
>
>
>
> The results from ./configure
> ============================
> Directories:
> Application: /usr/local/libexec/amanda/application
> Configuration: /usr/local/etc/amanda
> GNU Tar lists: /usr/local/var/amanda/gnutar-lists
> Perl modules (amperldir): /usr/local/libdata/perl5/site_perl
> Template and example data files (amdatadir): /usr/local/share/amanda
> Temporary: /tmp/amanda
> WARNINGS:
> no user specified (--with-user) -- using 'amanda'
> no group specified (--with-group) -- using 'backup'
> /bin/tar is not GNU tar, so it will not be used.
> /usr/local/bin/smbclient does not seem to be smbclient.
>
>

Reply via email to