2008-02-14 22:10:07

by Chuck Lever III

[permalink] [raw]
Subject: location of headers under /usr/include/tirpc

Hi Steve-

I think libtirpc-devel installs the tirpc headers in the wrong
place. The #include directives in the headers themselves expect them
to appear under /usr/include, not under /usr/include/tirpc, so my
builds fail when trying to include these headers.

For example, /usr/include/tirpc/rpc/rpcb_clnt.h does a "#include <rpc/
rpcb_prot.h>" -- and the build chokes because that header is actually
in /usr/include/tirpc/rpc/rpcb_prot.h.

Now, I can probably fix this temporarily by adding "-I /usr/include/
tirpc" to my build. However:

1. On Solaris, these all appear under /usr/include, there is no /usr/
include/tirpc.

2. libtirpc-devel installs a bunch of files that already exist, such
as /usr/include/rpc/auth.h, in /usr/include/tirpc/rpc/auth.h.

It would be cleaner to have one place for nfs-utils to look for these
headers, so I don't want to permanently add "-I /usr/include/tirpc"
or autoconf magic to find the right path unless we decide /usr/
include/tirpc is the final location for these files.

So I think applications in general will expect to find these under /
usr/include, not under /usr/include/tirpc.

Comments?

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com


2008-02-15 17:46:36

by Steve Dickson

[permalink] [raw]
Subject: Re: location of headers under /usr/include/tirpc



Chuck Lever wrote:
> Hi Steve-
>
> I think libtirpc-devel installs the tirpc headers in the wrong place.
> The #include directives in the headers themselves expect them to appear
> under /usr/include, not under /usr/include/tirpc, so my builds fail when
> trying to include these headers.
>
> For example, /usr/include/tirpc/rpc/rpcb_clnt.h does a "#include
> <rpc/rpcb_prot.h>" -- and the build chokes because that header is
> actually in /usr/include/tirpc/rpc/rpcb_prot.h.
>
> Now, I can probably fix this temporarily by adding "-I
> /usr/include/tirpc" to my build. However:
>
> 1. On Solaris, these all appear under /usr/include, there is no
> /usr/include/tirpc.
>
> 2. libtirpc-devel installs a bunch of files that already exist, such as
> /usr/include/rpc/auth.h, in /usr/include/tirpc/rpc/auth.h.
>
> It would be cleaner to have one place for nfs-utils to look for these
> headers, so I don't want to permanently add "-I /usr/include/tirpc" or
> autoconf magic to find the right path unless we decide
> /usr/include/tirpc is the final location for these files.
>
> So I think applications in general will expect to find these under
> /usr/include, not under /usr/include/tirpc.
>
> Comments?
Its not clear what we can do. We just can't replace the file
under /usr/include with the tirpc since that would break other
RPC applications.

So what I think needs to happens, is I need to create
a libtirpc.pc file that will live in /usr/lib/pkgconfig/ so you
can used things like
pkg-config --libs libtirpc and pkg-config --cflags libgssglue

similar to how the librpcsecgss.pc and libgssglue.pc work

steved.


a
>
> --
> Chuck Lever
> chuck[dot]lever[at]oracle[dot]com

2008-02-15 19:12:44

by Chuck Lever III

[permalink] [raw]
Subject: Re: location of headers under /usr/include/tirpc

On Feb 15, 2008, at 12:46 PM, Steve Dickson wrote:
> Chuck Lever wrote:
>> Hi Steve-
>>
>> I think libtirpc-devel installs the tirpc headers in the wrong place.
>> The #include directives in the headers themselves expect them to
>> appear
>> under /usr/include, not under /usr/include/tirpc, so my builds
>> fail when
>> trying to include these headers.
>>
>> For example, /usr/include/tirpc/rpc/rpcb_clnt.h does a "#include
>> <rpc/rpcb_prot.h>" -- and the build chokes because that header is
>> actually in /usr/include/tirpc/rpc/rpcb_prot.h.
>>
>> Now, I can probably fix this temporarily by adding "-I
>> /usr/include/tirpc" to my build. However:
>>
>> 1. On Solaris, these all appear under /usr/include, there is no
>> /usr/include/tirpc.
>>
>> 2. libtirpc-devel installs a bunch of files that already exist,
>> such as
>> /usr/include/rpc/auth.h, in /usr/include/tirpc/rpc/auth.h.
>>
>> It would be cleaner to have one place for nfs-utils to look for these
>> headers, so I don't want to permanently add "-I /usr/include/
>> tirpc" or
>> autoconf magic to find the right path unless we decide
>> /usr/include/tirpc is the final location for these files.
>>
>> So I think applications in general will expect to find these under
>> /usr/include, not under /usr/include/tirpc.
>>
>> Comments?
> Its not clear what we can do. We just can't replace the file
> under /usr/include with the tirpc since that would break other
> RPC applications.

Fortunately it may not be all that bad. The file I looked at that
appeared in both places (/usr/include/rpc/auth.h and /usr/include/
tirpc/rpc/auth.h) was exactly the same. I'll bet most or all of the
duplicate files are the same, since they come from the same origin
(Sun) and perform the same duty.

The duplicates appear to come from glibc-headers-2.6-4... wouldn't be
hard to add a dependency in libtirpc-devel on glibc-headers-2.6.4 to
ensure these get installed first.

> So what I think needs to happens, is I need to create
> a libtirpc.pc file that will live in /usr/lib/pkgconfig/ so you
> can used things like
> pkg-config --libs libtirpc and pkg-config --cflags libgssglue
>
> similar to how the librpcsecgss.pc and libgssglue.pc work

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com