Opened 10 years ago

Closed 10 years ago

Last modified 10 years ago

#42358 closed defect (fixed)

am-utils fails to compile on Mavericks

Reported by: greeneg (Gary Greene) Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version: 2.2.1
Keywords: Cc: neverpanic (Clemens Lang)
Port: am-utils

Description

When building am-utils, I get the following error:

:info:build  /usr/bin/clang -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I/opt/local/include -pipe -Os -arch x86_64 -D_P1003_1B_VISIBLE -D_P1003_1B_VISIBLE -pipe -Os -arch x86_64 -D_P1003_1B_VISIBLE -c nfs_prot_xdr.c -o nfs_prot_xdr.o
:info:build misc_rpc.c:160:33: error: too few arguments to function call, expected 3, have 2
:info:build   if (!(*arg_xdr) (&msg_xdr, arg))
:info:build        ~~~~~~~~~~               ^
:info:build 1 error generated.
:info:build make[3]: *** [misc_rpc.lo] Error 1
:info:build make[3]: *** Waiting for unfinished jobs....
:info:build make[3]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_am-utils/am-utils/work/am-utils-6.1.5/libamu'
:info:build make[2]: *** [all] Error 2
:info:build make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_am-utils/am-utils/work/am-utils-6.1.5/libamu'
:info:build make[1]: *** [all-recursive] Error 1
:info:build make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_am-utils/am-utils/work/am-utils-6.1.5'
:info:build make: *** [all] Error 2
:info:build make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_am-utils/am-utils/work/am-utils-6.1.5'

I'm not positive, but it appears that the RPC headers in Mavericks are incomplete, since I see this further up in the configure stage:

:info:configure checking rpc/xdr.h usability... no
:info:configure checking rpc/xdr.h presence... yes
:info:configure configure: WARNING: rpc/xdr.h: present but cannot be compiled
:info:configure configure: WARNING: rpc/xdr.h:     check for missing prerequisite headers?
:info:configure configure: WARNING: rpc/xdr.h: see the Autoconf documentation
:info:configure configure: WARNING: rpc/xdr.h:     section "Present But Cannot Be Compiled"
:info:configure configure: WARNING: rpc/xdr.h: proceeding with the preprocessor's result
:info:configure configure: WARNING: rpc/xdr.h: in the future, the compiler will take precedence
:info:configure configure: WARNING:     ## ---------------------------------------------------------------------- ##
:info:configure configure: WARNING:     ## Report this to https://bugzilla.am-utils.org/ or am-utils@am-utils.org ##
:info:configure configure: WARNING:     ## ---------------------------------------------------------------------- ##
:info:configure checking for rpc/xdr.h... yes

Any assistance on getting this to build would be appreciated. Thanks.

Attachments (2)

main.log (86.4 KB) - added by greeneg (Gary Greene) 10 years ago.
am-utils 6.1.5 build logs
config.log (4.7 MB) - added by greeneg (Gary Greene) 10 years ago.

Change History (11)

comment:1 Changed 10 years ago by neverpanic (Clemens Lang)

Port: am-utils added

When reporting bugs against ports, please set the port field and Cc the maintainer, if any (in this case, there is none).

Please attach /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_am-utils/am-utils/work/am-utils-6.1.5/config.log – it might provide more insight into why the headers could not be compiled.

Changed 10 years ago by greeneg (Gary Greene)

Attachment: main.log added

am-utils 6.1.5 build logs

comment:2 Changed 10 years ago by greeneg (Gary Greene)

Attached as requested.

comment:3 Changed 10 years ago by neverpanic (Clemens Lang)

Thats main.log, not config.log. Unfortunately main.log doesn't tell us why the check failed, just that it did.

Changed 10 years ago by greeneg (Gary Greene)

Attachment: config.log added

comment:4 Changed 10 years ago by greeneg (Gary Greene)

Added. I mis-read your earlier request. Please look it over and let me know. Thanks.

comment:5 Changed 10 years ago by neverpanic (Clemens Lang)

It seems /usr/include/rpc/xdr.h is missing a declaration of bool_t:

configure:25152: /usr/bin/clang -c -pipe -Os -arch x86_64 -D_P1003_1B_VISIBLE -I/opt/local/include  conftest.c >&5
In file included from conftest.c:168:
/usr/include/rpc/xdr.h:126:3: error: type name requires a specifier or qualifier
                bool_t  (*x_getlong)(struct __rpc_xdr *, int *);
                ^
/usr/include/rpc/xdr.h:126:10: error: function cannot return function type 'int (struct __rpc_xdr *, int *)'
                bool_t  (*x_getlong)(struct __rpc_xdr *, int *);
                        ^
/usr/include/rpc/xdr.h:128:3: error: type name requires a specifier or qualifier
                bool_t  (*x_putlong)(struct __rpc_xdr *, const int *);
                ^
/usr/include/rpc/xdr.h:128:10: error: function cannot return function type 'int (struct __rpc_xdr *, const int *)'
                bool_t  (*x_putlong)(struct __rpc_xdr *, const int *);
                        ^
/usr/include/rpc/xdr.h:128:3: error: duplicate member 'bool_t'
                bool_t  (*x_putlong)(struct __rpc_xdr *, const int *);
                ^
/usr/include/rpc/xdr.h:126:3: note: previous declaration is here
                bool_t  (*x_getlong)(struct __rpc_xdr *, int *);
                ^
/usr/include/rpc/xdr.h:136:3: error: type name requires a specifier or qualifier
                bool_t  (*x_getbytes)(struct __rpc_xdr *, char *, unsigned int);
                ^
/usr/include/rpc/xdr.h:136:10: error: function cannot return function type 'int (struct __rpc_xdr *, char *, unsigned int)'
                bool_t  (*x_getbytes)(struct __rpc_xdr *, char *, unsigned int);
                        ^
/usr/include/rpc/xdr.h:136:3: error: duplicate member 'bool_t'
                bool_t  (*x_getbytes)(struct __rpc_xdr *, char *, unsigned int);
                ^
/usr/include/rpc/xdr.h:126:3: note: previous declaration is here
                bool_t  (*x_getlong)(struct __rpc_xdr *, int *);
                ^
/usr/include/rpc/xdr.h:138:3: error: type name requires a specifier or qualifier
                bool_t  (*x_putbytes)(struct __rpc_xdr *, const char *, unsigned int);
                ^
/usr/include/rpc/xdr.h:138:10: error: function cannot return function type 'int (struct __rpc_xdr *, const char *, unsigned int)'
                bool_t  (*x_putbytes)(struct __rpc_xdr *, const char *, unsigned int);
                        ^
/usr/include/rpc/xdr.h:138:3: error: duplicate member 'bool_t'
                bool_t  (*x_putbytes)(struct __rpc_xdr *, const char *, unsigned int);
                ^
/usr/include/rpc/xdr.h:126:3: note: previous declaration is here
                bool_t  (*x_getlong)(struct __rpc_xdr *, int *);
                ^
/usr/include/rpc/xdr.h:142:3: error: type name requires a specifier or qualifier
                bool_t  (*x_setpostn)(struct __rpc_xdr *, unsigned int);
                ^
/usr/include/rpc/xdr.h:142:11: error: function cannot return function type 'int (struct __rpc_xdr *, unsigned int)'
                bool_t  (*x_setpostn)(struct __rpc_xdr *, unsigned int);
                        ^
/usr/include/rpc/xdr.h:142:3: error: duplicate member 'bool_t'
                bool_t  (*x_setpostn)(struct __rpc_xdr *, unsigned int);
                ^
/usr/include/rpc/xdr.h:126:3: note: previous declaration is here
                bool_t  (*x_getlong)(struct __rpc_xdr *, int *);
                ^
/usr/include/rpc/xdr.h:147:3: error: type name requires a specifier or qualifier
                bool_t  (*x_control)(struct __rpc_xdr *, int, void *);
                ^
/usr/include/rpc/xdr.h:147:10: error: function cannot return function type 'int (struct __rpc_xdr *, int, void *)'
                bool_t  (*x_control)(struct __rpc_xdr *, int, void *);
                        ^
/usr/include/rpc/xdr.h:147:3: error: duplicate member 'bool_t'
                bool_t  (*x_control)(struct __rpc_xdr *, int, void *);
                ^
/usr/include/rpc/xdr.h:126:3: note: previous declaration is here
                bool_t  (*x_getlong)(struct __rpc_xdr *, int *);
                ^
/usr/include/rpc/xdr.h:191:16: error: function cannot return function type 'int (XDR *, void *, unsigned int)'
typedef bool_t (*xdrproc_t)(XDR *, void *, unsigned int);
               ^
/usr/include/rpc/xdr.h:219:7: error: no member named 'x_getlong' in 'struct xdr_ops'
        if (!xdr_getlong(xdrs, &l))
             ^~~~~~~~~~~~~~~~~~~~~
/usr/include/rpc/xdr.h:205:19: note: expanded from macro 'xdr_getlong'
        (*(xdrs)->x_ops->x_getlong)(xdrs, longp)
          ~~~~~~~~~~~~~  ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.

It seems rpc/xdr.h should really be including rpc/types.h, but doesn't. I suppose we might be able to patch am-utils to always include this header before rpc/xdr.h.

comment:6 Changed 10 years ago by neverpanic (Clemens Lang)

Actually, that's not the issue here – the check for the header fails, but as configure prints, it's ignoring the check done with the compiler and using the result of the check done with the preprocessor. The real problem is the build error. Let me see if I can reproduce that.

comment:7 Changed 10 years ago by neverpanic (Clemens Lang)

/usr/include/rpc/xdr.h, lines 155-190 explain the problem. I'll try to patch the call to xdrproc_t with the third parameter; that should fix the build.

comment:8 Changed 10 years ago by neverpanic (Clemens Lang)

Cc: cal@… added
Resolution: fixed
Status: newclosed

Fixed in r116699. Unfortunately I have no way of knowing whether the software will work as expected, though.

comment:9 Changed 10 years ago by greeneg (Gary Greene)

Thanks. I'll do some canary testing against it later this week to see if things work as expected.

Note: See TracTickets for help on using tickets.