Обсуждение: Problem with ucred.h building 7.2.1
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
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
> 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
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