postgresql-client-8.3.3 build error

postgresql-client-8.3.5 build error

I'm running 7.0-RELEASE-p5, amd64.

Code:
# pkg_version -vL =
postgresql-client-8.3.3             <   needs updating (port has 8.3.5)
postgresql-server-8.3.3             <   needs updating (port has 8.3.5)

'make' gives this error:

Code:
...
cc -O2 -fno-strict-aliasing -pipe  -O3 -funroll-loops -Wall
-Wmissing-prototypes -Wpointer-arith -Winline
-Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing
-fwrapv -D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS -fPIC
-DPIC -shared -Wl,-x,-soname,libpq.so.5  fe-auth.o fe-connect.o
fe-exec.o fe-misc.o fe-print.o fe-lobj.o fe-protocol2.o fe-protocol3.o
pqexpbuffer.o pqsignal.o fe-secure.o md5.o ip.o wchar.o encnames.o
noblock.o pgstrcasecmp.o thread.o   -L../../../src/port
-L/usr/local/lib -lintl -lssl -lcrypto -lcrypt -pthread
-Wl,-R'/usr/local/lib' -o libpq.so.5 /usr/bin/ld: /usr/lib/libpthread.a
(thr_syscalls.o): relocation R_X86_64_32S can not be used when making a
shared object; recompile with -fPIC /usr/lib/libpthread.a: could not
read symbols: Bad value gmake[1]: *** [libpq.so.5] Error 1 gmake[1]:
Leaving directory
`/usr/ports/databases/postgresql83-client/work/postgresql-8.3.5/src/interfaces/libpq'
gmake: *** [all] Error 2 *** Error code 2

Stop in /usr/ports/databases/postgresql83-client.
*** Error code 1

Stop in /usr/ports/databases/postgresql83-client.
** Command failed [exit code 1]: /usr/bin/script
-qa /tmp/portupgrade.62208.0 env UPGRADE_TOOL=portupgrade
UPGRADE_PORT=postgresql-client-8.3.3 UPGRADE_PORT_VER=8.3.3 make ** Fix
the problem and try again.
--->  Skipping
'databases/postgresql83-server' (postgresql-server-8.3.3) because a
requisite package
'postgresql-client-8.3.3' (databases/postgresql83-client) failed
(specify -k to force) ** Listing the failed packages (-:ignored /
*:skipped / !:failed) ! databases/postgresql83-client
(postgresql-client-8.3.3)	(unknown build error)
	* databases/postgresql83-server (postgresql-server-8.3.3)

Anyone got any ideas? Ports tree is obviously up to date.

Thanks.
 
What were your config options? Have you set any CFLAGS or similar in /etc/make.conf? I guess this could be the -O3 flag in the postgresql83-client configuration or some CFLAG which is too agressive...
 
No, i haven't touched /etc/make.conf, everything is default.

I have another 7.0 box, and the same upgrade went fine there (and i suspect it works for (almost) everyone else, seeing that i'm the only one having problems with it).
 
Code:
cc [...] -O3 -funroll-loops [...]
This looks for me as if you'd have the chosen the optimization option in the configure dialogue. The relocation error could be related to that, so I'd suggest you try to run make config again for this port and disable the optimization option.
 
You're right, i had OPTIMIZED_CFLAGS checked.
I disabled it, and make gives this:

Code:
cc -O2 -fno-strict-aliasing -pipe  -Wall -Wmissing-prototypes -Wpointer-arith -Winline -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -fwrapv -D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS -fPIC -DPIC -shared -Wl,-x,-soname,libpq.so.5  fe-auth.o fe-connect.o fe-exec.o fe-misc.o fe-print.o fe-lobj.o fe-protocol2.o fe-protocol3.o pqexpbuffer.o pqsignal.o fe-secure.o md5.o ip.o wchar.o encnames.o noblock.o pgstrcasecmp.o thread.o   -L../../../src/port -L/usr/local/lib -lintl -lssl -lcrypto -lcrypt -pthread -Wl,-R'/usr/local/lib' -o libpq.so.5
/usr/bin/ld: /usr/lib/libpthread.a(thr_syscalls.o): relocation R_X86_64_32S can not be used when making a shared object; recompile with -fPIC
/usr/lib/libpthread.a: could not read symbols: Bad value
gmake[1]: *** [libpq.so.5] Error 1
gmake[1]: Leaving directory `/usr/ports/databases/postgresql83-client/work/postgresql-8.3.5/src/interfaces/libpq'
gmake: *** [all] Error 2
*** Error code 2

Stop in /usr/ports/databases/postgresql83-client.
*** Error code 1

Stop in /usr/ports/databases/postgresql83-client.
 
Would you mind trying the attached patch?

Sorry, but I'm running i386 so I can't test it.
 

Attachments

  • patch.txt
    319 bytes · Views: 307
Hey,

Here's the output with -fPIC:

Code:
cc -O2 -fno-strict-aliasing -pipe  -fPIC -Wall -Wmissing-prototypes -Wpointer-arith -Winline -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -fwrapv -D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS -fPIC -DPIC -shared -Wl,-x,-soname,libpq.so.5  fe-auth.o fe-connect.o fe-exec.o fe-misc.o fe-print.o fe-lobj.o fe-protocol2.o fe-protocol3.o pqexpbuffer.o pqsignal.o fe-secure.o md5.o ip.o wchar.o encnames.o noblock.o pgstrcasecmp.o thread.o   -L../../../src/port -L/usr/local/lib -lintl -lssl -lcrypto -lcrypt -pthread -Wl,-R'/usr/local/lib' -o libpq.so.5
/usr/bin/ld: /usr/lib/libpthread.a(thr_syscalls.o): relocation R_X86_64_32S can not be used when making a shared object; recompile with -fPIC
/usr/lib/libpthread.a: could not read symbols: Bad value
gmake[1]: *** [libpq.so.5] Error 1
gmake[1]: Leaving directory `/usr/ports/databases/postgresql83-client/work/postgresql-8.3.5/src/interfaces/libpq'
gmake: *** [all] Error 2
*** Error code 2

:(
 
OK, sorry, remove my patch as it's totally useless.
I've seen you message in a ml.
I think that you should try sending an email to the maintainer.
 
Code:
# ls -l /usr/lib/lib*thr*.so*
lrwxr-xr-x  1 root  wheel     16 Oct 24 20:27 /usr/lib/libthr.so -> /lib/libthr.so.3
lrwxr-xr-x  1 root  wheel     17 Oct 24 20:27 /usr/lib/libthread_db.so -> libthread_db.so.3
-r--r--r--  1 root  wheel  26656 Oct 24 20:27 /usr/lib/libthread_db.so.3
 
So, you need to figure out why postgresql wants to link with libpthread where it should be linking with libthr on 7.0.

Does this problem disappear when you build postgres without NLS support? It's the only non-base library in the link list.

The cause for the original problem, is that there is no shared libpthread to link with. More info here.
 
Mel_Flynn said:
Does this problem disappear when you build postgres without NLS support? It's the only non-base library in the link list.

Sadly no.

I found that thread some time ago while searching for my problem; however i don't know how to solve the situation.

Is this only happening on this specific 7.0 box i have? If so, why (as i stated earlier, it worked fine on other identical set up boxes)?
Any chance i could fix it eventually, or is the only solution a reinstall?
 
Is there any chance you upgraded this from a previous major version and did not run make delete-old-libs?

On my 7.x systems, libpthread is symlinked to libthr. Or maybe the links got lost.

I'd go about it like this:
Code:
mkdir /tmp/pthread.bkp
mv /usr/lib/libpthread* /tmp/pthread.bkp/
cd /usr/lib
for ext in .a .so _p.a; do
    ln -vs libthr$ext libpthread$ext
done
then recompile.
If this works but other problems now manifest on your system, you need to figure out where this libpthread came from.
 
Back
Top