[ntp:questions] Trying to compile ntp-dev-4.2.7p485-RC

Brent Gordon ntp_list at adobe-labs.com
Mon Dec 15 04:49:45 UTC 2014

Because I'm going to talk about three different files all with the same 
name (capability.h) I will identify them this way:
cap_main is located in /usr/src/linux-headers-3.13.0-43/include/linux
cap_uapi is located in /usr/src/linux-headers-3.13.0-43/include/uapi/linux
cap_orig is located in /usr/include/linux

I originally linked cap_orig to /usr/include/sys.

The capability.h you mention below is cap_orig.  It is nearly identical 
to cap_uapi.  The main difference is that cap_uapi has __user in each 
type definition.

cap_t is defined in cap_main.  cap_main includes cap_uapi. The problem 
is that the one in uapi doesn't work; I haven't tried the replacing 
cap_uapi with cap_orig yet.  Here is the first part of the error:
        CC     ntpd.o
      In file included from /usr/include/sys/capability.h:15:0,
                       from ntpd.c:108:
      /usr/include/uapi/linux/capability.h:43:10: error: expected 
‘=’,‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
       } __user *cap_user_header_t;
Note that the error occurs after the __user.

Other comments below.

On 12/14/2014 8:13 PM, William Unruh wrote:
> On 2014-12-15, Harlan Stenn <stenn at ntp.org> wrote:
>> Brent Gordon writes:
> ...
>>> I had the same problem that David Taylor had with timepps.h being in
>>> /usr/include/sys instead of /usr/include.  In addition, capability.h was
>>> in /usr/include/linux instead of /usr/include/sys.  Both issues were
>>> fixed with soft links.
>> If you need to link both copies of timepps.h then your distro has made
>> changes that are "not the same" as what everybody else is doing.

I only have one copy of timepps.h, which was linked from 
/usr/include/sys to /usr/include/, per Brian Inglis' suggestion in a 
different thread.

> Mageia 3 capability.h is also in /usr/include/linux and timepps.h does
> not exist. (not does a ppstools package)

I previously installed ppstools because the whole purpose of compiling 
NTP was to experiment with pps.

> ...
>> The next trick will be for you to figure out why cap_t isn't being found
>> in the place others find it (sys/capability.h).

This is a brand new install of Ubuntu, so files are where the 
distribution put them.

> This is the only mention of cap_t in capability.h on my system:
> /* Note, cap_t, is defined by POSIX (draft) to be an "opaque" pointer to
>     a set of three capability sets.  The transposition of 3*the
>     following structure to such a composite is better handled in a
>     user library since the draft standard requires the use of
>     malloc/free etc.. */

More information about the questions mailing list