Thread: Problem with ucred.h building 7.2.1

Problem with ucred.h building 7.2.1

From
Niclas Gustafsson
Date:
Hi,

I'm having some trouble compiling 7.2.1 on one of our machines,
It's a linux box running SuSE 6.0, with kernel version 2.2.14.

I'm configuring with:
./configure  --enable-locale --enable-multibyte=LATIN1 --with-openssl
(even tried with a clean ./configure)

Compiling goes fine until the hba.c file:
gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -I../../../src/include -I/usr/local/ssl/include  -c crypt.c
-ocrypt.o 
gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -I../../../src/include -I/usr/local/ssl/include  -c hba.c -o
hba.o
hba.c: In function `ident_unix':
hba.c:885: storage size of `peercred' isn't known
hba.c:885: warning: unused variable `peercred'
make[3]: *** [hba.o] Error 1
make[3]: Leaving directory `/usr/src/postgresql-7.2.1/src/backend/libpq'
make[2]: *** [libpq-recursive] Error 2
make[2]: Leaving directory `/usr/src/postgresql-7.2.1/src/backend'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/usr/src/postgresql-7.2.1/src'
make: *** [all] Error 2

line 885 looks like:
        struct ucred peercred;

When inspecting the config.log file I encounter the
following:

configure:5878: checking for struct cmsgcred
configure:5892: gcc -c -O2   -I/usr/local/ssl/include conftest.c 1>&5
configure:5886: sys/ucred.h: No such file or directory
configure: failed program was:
#line 5883 "configure"
#include "confdefs.h"
#include <sys/param.h>
#include <sys/socket.h>
#include <sys/ucred.h>
int main() {
struct cmsgcred sockcred;
; return 0; }
configure:5912: checking for struct fcred
configure:5926: gcc -c -O2   -I/usr/local/ssl/include conftest.c 1>&5
.
.
.
No wonder it couldn't find the storage size of peercred.
After searching the system I see that I do not have the ucred.h
anywhere.
However I find the ucred definition in /usr/include/linux/socket.h as
struct ucred {
        __u32   pid;
        __u32   uid;
        __u32   gid;
};

So does anyone have a workaround this problem? Anyone tried to compile
7.2.1 on a SuSE 6.0? :)
I'm not that thrilled at the idea of installing another dist. on the
machine, as it is up and running a lot of services that is important to me.


Regards,

Niclas Gustafsson



Re: Problem with ucred.h building 7.2.1

From
Tom Lane
Date:
Niclas Gustafsson <Niclas.Gustafsson@codesense.com> writes:
> I'm having some trouble compiling 7.2.1 on one of our machines,
> It's a linux box running SuSE 6.0, with kernel version 2.2.14.
> ...
> After searching the system I see that I do not have the ucred.h
> anywhere.
> However I find the ucred definition in /usr/include/linux/socket.h as

Yeah, we've heard a couple of prior reports to the effect that this code
is not sufficiently configurable.  I'm a bit confused though ---- hba.c
pulls in <sys/socket.h>, doesn't that include <linux/socket.h> ?  Seems
like it should work...

            regards, tom lane

Re: Problem with ucred.h building 7.2.1

From
Niclas Gustafsson
Date:
> Niclas Gustafsson <Niclas.Gustafsson@codesense.com> writes:
>> I'm having some trouble compiling 7.2.1 on one of our machines,
>> It's a linux box running SuSE 6.0, with kernel version 2.2.14.
>> ...
>> After searching the system I see that I do not have the ucred.h
>> anywhere.
>> However I find the ucred definition in /usr/include/linux/socket.h as

> Yeah, we've heard a couple of prior reports to the effect that this code
> is not sufficiently configurable.  I'm a bit confused though ---- hba.c
> pulls in <sys/socket.h>, doesn't that include <linux/socket.h> ?  Seems
> like it should work...

Nope, It does not include linux/socket.h.
It only includes the following:

#include <features.h>
#include <stddef.h>
#include <socketbits.h>

And noone of them includes linux/socket.h

I made a rather crude insert into hba.h

struct ucred {
       unsigned int   pid;
       unsigned int   uid;
       unsigned int   gid;
};

And with that it passed both the compilation and regression tests.

Regards,

Niclas Gustafsson



Re: Problem with ucred.h building 7.2.1

From
Bruce Momjian
Date:
In the only other creds failure I can remember on Linux, it was caused
by someone updating their partially system headers, but not completely.

---------------------------------------------------------------------------

Niclas Gustafsson wrote:
> > Niclas Gustafsson <Niclas.Gustafsson@codesense.com> writes:
> >> I'm having some trouble compiling 7.2.1 on one of our machines,
> >> It's a linux box running SuSE 6.0, with kernel version 2.2.14.
> >> ...
> >> After searching the system I see that I do not have the ucred.h
> >> anywhere.
> >> However I find the ucred definition in /usr/include/linux/socket.h as
>
> > Yeah, we've heard a couple of prior reports to the effect that this code
> > is not sufficiently configurable.  I'm a bit confused though ---- hba.c
> > pulls in <sys/socket.h>, doesn't that include <linux/socket.h> ?  Seems
> > like it should work...
>
> Nope, It does not include linux/socket.h.
> It only includes the following:
>
> #include <features.h>
> #include <stddef.h>
> #include <socketbits.h>
>
> And noone of them includes linux/socket.h
>
> I made a rather crude insert into hba.h
>
> struct ucred {
>        unsigned int   pid;
>        unsigned int   uid;
>        unsigned int   gid;
> };
>
> And with that it passed both the compilation and regression tests.
>
> Regards,
>
> Niclas Gustafsson
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026