Dan Burkert has submitted this change and it was merged. Change subject: el6: fix krb5 realm workaround for static builds ......................................................................
el6: fix krb5 realm workaround for static builds Here's another attempt at enabling the workaround for the numeric realm problem on el6 (see ba2ae3de4a7c43ff2f5873e822410e066ea99667 for background). The previous attempt didn't succeed for static builds because we were setting LD_PRELOAD to the non-absolute path of the override library. This worked OK in debug builds because our binary RUNPATHs included the build/lib/ directory. Static builds didn't have such a RUNPATH and thus the LD_PRELOAD was unable to locate the specified shared object. The two options to fix this were (1) determine and specify an absolute path, or (2) build this workaround into all of our binaries rather than try to preload it at runtime. The issue with #1 is that, when we get to Java-based testing, it would have been inconvenient to determine the absolute path of the override library. In addition, it would make test binaries non-relocatable, which is somewhat of a hassle. So, this takes approach #2. The build incantations are a bit nasty. In order to make sure that the symbol shows up everywhere, and shows up before the krb5 library, and doesn't show up more than once (to avoid ODR violations), we have to manually add it to the link list for the the executables that need the override. This includes the tests (and thus the 'test_main' library) as well as any executables which are run by the tests ((tserver, master, and 'kudu' tool). In addition, we need to make sure that the linker doesn't entirely skip the override binary. I accomplished this using the '--undefined' linker flag. I tested this patch using both sasl_rpc-test and external_mini_cluster-test on an el6 box in both debug (dynamic linked) and release (static-linked) builds. I also fully built both build types to ensure there were no linker issues in unrelated tests. Change-Id: I050d03d58658b650891566b9f955c867b15731e0 Reviewed-on: http://gerrit.cloudera.org:8080/5100 Tested-by: Kudu Jenkins Reviewed-by: Adar Dembo <[email protected]> Reviewed-by: Dan Burkert <[email protected]> --- M CMakeLists.txt M src/kudu/integration-tests/CMakeLists.txt M src/kudu/integration-tests/external_mini_cluster.cc M src/kudu/master/CMakeLists.txt M src/kudu/security/CMakeLists.txt R src/kudu/security/krb5_realm_override.cc M src/kudu/tools/CMakeLists.txt M src/kudu/tserver/CMakeLists.txt M src/kudu/util/CMakeLists.txt M src/kudu/util/test_main.cc M src/kudu/util/test_util.cc 11 files changed, 39 insertions(+), 38 deletions(-) Approvals: Dan Burkert: Looks good to me, approved Adar Dembo: Looks good to me, approved Kudu Jenkins: Verified -- To view, visit http://gerrit.cloudera.org:8080/5100 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: merged Gerrit-Change-Id: I050d03d58658b650891566b9f955c867b15731e0 Gerrit-PatchSet: 6 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Todd Lipcon <[email protected]> Gerrit-Reviewer: Adar Dembo <[email protected]> Gerrit-Reviewer: Dan Burkert <[email protected]> Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon <[email protected]>
