On 3/1/12 11:43 AM, Qrux wrote:
> What, specifically, are you addressing when you say "shouldn't care"?  Are 
> you speaking theoretically about how BIND should be designed?  Or 
> practically, based on knowledge of the source?  Just to be clear, I'm 
> specifically talking about the ssl-engine/libgost.so issue found in r9066 and 
> addressed in r9463.  Are you speaking in generalities about named's shared 
> lib dependencies?  My ldd shows this:

I'm saying that if you are compiling the libs and binaries, it should 
conform to the configuration of your toolchain. I say 'should' because 
it's wise to allow a small margin for corner cases in a user's personal 
build, but honestly if it doesn't conform then something is broken.

> None of that seems relevant to the ssl-engine/libgost.so issue.

Why? It's exactly the same principle. Run ldd on ssl-engine/libgost.so 
and see what you get.

> [~/lfs/src/openssl-1.0.0e] # grep ENGINESDIR $(find . -name "*.c" -o -name 
> "*.h")
> ./crypto/engine/eng_list.c:           if((load_dir = 
> getenv("OPENSSL_ENGINES")) == 0) load_dir = ENGINESDIR;
> ./crypto/opensslconf.h:#define ENGINESDIR "/usr/lib64/engines"
> ./include/openssl/opensslconf.h:#define ENGINESDIR "/usr/lib64/engines"

You appear to be searching after you've already configured it to build:

~/openssl-1.0.0e $ grep -r lib64 .
./CHANGES:     have names other than "lib", for example "/usr/lib64" 
which some
./util/shlib_wrap.sh:           eval 
$rld_var=\"/usr/lib64'${'$rld_var':+:$'$rld_var'}'\"

~/openssl-1.0.0e $ grep ENGINESDIR include/openssl/opensslconf.h
#define ENGINESDIR "/usr/local/ssl/lib/engines"

>> Its need for the symlink in BLFS has to do with where existing
>> library dependencies live and where the compiler and linker has been
>> told to look.
>
> ...What does this have to do with the ssl-engine/libgost.so issue?

Everything. It's the same principle.

> I think you're still speaking hypothetically at this point, because the 
> source seems to point to hardcoded paths.

1. It doesn't. did you grep for lib64?
2. Even if it did, hard coded paths are easy to change when you find them.

>> So the main reason for having lib64 as a symlink is for compatibility
>> with pre-compiled binaries, drivers, etc.
>
> Right.  On its own, this arguments strongly suggests the lib64-related links 
> must be included

Must is a strong word. The links themselves were a workaround - most 
mainstream distros do it the real way and offer multilib. Which means 
that both lib and lib64 are real directories. Actually, even pure64 with 
real lib and lib64 directories is better. It forces you to be careful 
about how you build and install your packages.

> 1) Are you speaking hypothetically or theoretically about BIND/OpenSSL?

> 2) If not, can you point me to the source that shows how OpenSSL is getting 
> around the #define ENGINESDIR when loading "gost" for BIND?

That stuff is set when it configures for your system.

> 3) Also, if not, are you saying you had built your pure-64 LFS and then went 
> on to compile OpenSSL using blfs-svn, and then went on to build BIND, and 
> discovered that BIND worked--either because OpenSSL sets a different (non 
> lib64-related) path for ENGINESDIR or works around it in some other way?

No, I don't use LFS or BLFS except as an occasional reference, comparing 
notes, so to speak.

> 3) Finally, if not, what is your system and how did you configure each (so 
> BIND/OpenSSL works without the /lib64 and /usr/lib64 links)?

I haven't built BIND in a long while since I haven't needed it, but for 
OpenSSL and all others, again it's just a matter of making sure your 
toolchain is configured correctly.

>
> In case my position is unclear, I'm just saying: "I think the lib64-related 
> changes should be tabled until a lot more eyeballs are committed to making 
> sure the change preserves functionality across a lot of dimensions, including 
> 'bad' apps with hardcoded paths, drivers, games, and 
> multilib-dependent-systems.  I also think that regardless of how this tangent 
> (BIND/OpenSSL) ends up--or any other tangents, for that matter--it's a red 
> flag that this situation may exist in other places downstream of LFS.  As 
> such, it requires much oversight before changing."

Tabling it because of the precompiled binaries is about the only reason 
to table it. What you are suggesting is overkill - 95% of the packages 
you build will be just fine if you configure your toolchain to only use 
lib. There will be some outside cases that will try to stick stuff in 
lib64, but most of those you can just move to lib. Anything that is 
hard-coded can be discovered by a careful build process and 
re-hard-coded to a working path, but again, most everything will "just 
work".

JH
-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to