|
Alex, I'm testing solution using $ORIGIN rpath more binreloc. This would make Firebird true relocatable.
I'll attach a patch here so you can look at better way to support it in Linux and maybe others platforms. Alex, here is the patch.
Can you please verify it, and the better way to support it in all possible platforms? The only potential problem I see is as follows. I know very well that some people used to copy tools like isql, gbak, etc. to some other directories (like own working directories) in order to have eaiser access to them from something like shell scripts. Certainly, symbolic links should be used for that, but :-((
Do not think this should be a showstopper for making FB relocatable, but IMO adding a note to 'incompatibilities' is worth to do. What about the form of it - direct use of extern files like OS_SPECIFIC_Sources = $(addprefix jrd/, $(OS_SPECIFIC_Files)) common/dllinst.cpp \ ../extern/binreloc/binreloc.c was never used before. May be full import (like sha.cpp) will be better? All the rest appears OK. Thanks Alex. I've changed reference in Makefile to use $ROOT. Header file is still referencing extern directory.
I think better approach would be to use -Iextern and include "binreloc/binreloc.h", but leave it for now. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||
Therefore if we place version of firebird, built with prefix /opt/firebird, into another location, it's isql will anyway try to use libfbembed.so.2.5 from /opt/firebird/lib. And if this is 2 different builds of 2.5 (say beta1 and rc1), one can get very unexpected results.