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