You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by al...@apache.org on 2019/11/13 15:03:18 UTC
[kudu] 02/02: mini_chronyd: switch to using symbolic links
This is an automated email from the ASF dual-hosted git repository.
alexey pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git
commit f769f1db64076809486ec4bb6b4f39ff6c5bb1b7
Author: Adar Dembo <ad...@cloudera.com>
AuthorDate: Sun Nov 10 01:12:35 2019 -0800
mini_chronyd: switch to using symbolic links
The one gotcha is that the symbolic links won't exist a priori in a remote
dist-test machine, which causes MiniChronyd::GetPath to fail to find the
chrony binaries. To fix this, run_dist_test.py must recreate the links.
Change-Id: Id24d97d2badfee3e121f01a5280a2879513782de
Reviewed-on: http://gerrit.cloudera.org:8080/14684
Tested-by: Kudu Jenkins
Reviewed-by: Alexey Serbin <as...@cloudera.com>
---
build-support/run_dist_test.py | 10 +++++++++-
src/kudu/clock/CMakeLists.txt | 16 ++++++++--------
2 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/build-support/run_dist_test.py b/build-support/run_dist_test.py
index a3a4138..7bd7620 100755
--- a/build-support/run_dist_test.py
+++ b/build-support/run_dist_test.py
@@ -153,9 +153,17 @@ def main():
env['SENTRY_HOME'] = glob.glob(os.path.join(ROOT, "thirdparty/src/sentry-*"))[0]
env['JAVA_HOME'] = glob.glob("/usr/lib/jvm/java-1.8.0-*")[0]
+ # Restore the symlinks to the chrony binaries; tests expect to find them in
+ # same directory as the test binaries themselves.
+ for bin_path in glob.glob(os.path.join(ROOT, "build/*/bin")):
+ os.symlink(os.path.join(ROOT, "thirdparty/installed/common/bin/chronyc"),
+ os.path.join(bin_path, "chronyc"))
+ os.symlink(os.path.join(ROOT, "thirdparty/installed/common/sbin/chronyd"),
+ os.path.join(bin_path, "chronyd"))
+
env['LD_LIBRARY_PATH'] = ":".join(
[os.path.join(ROOT, "build/dist-test-system-libs/")] +
- glob.glob(os.path.abspath((os.path.join(ROOT, "build/*/lib")))))
+ glob.glob(os.path.abspath(os.path.join(ROOT, "build/*/lib"))))
# Don't pollute /tmp in dist-test setting. If a test crashes, the dist-test slave
# will clear up our working directory but won't be able to find and clean up things
diff --git a/src/kudu/clock/CMakeLists.txt b/src/kudu/clock/CMakeLists.txt
index ddb09f4..b0e9d85 100644
--- a/src/kudu/clock/CMakeLists.txt
+++ b/src/kudu/clock/CMakeLists.txt
@@ -38,14 +38,14 @@ target_link_libraries(clock
##############################
if (NOT NO_CHRONY)
- # These are copied/installed instead of linking because:
- # * symlinks would not work with dist-test
- # * hardlinks would not work if the target directory is at different
- # filesystem than thirdparty
- file(COPY "${CMAKE_SOURCE_DIR}/thirdparty/installed/common/bin/chronyc"
- DESTINATION "${EXECUTABLE_OUTPUT_PATH}")
- file(COPY "${CMAKE_SOURCE_DIR}/thirdparty/installed/common/sbin/chronyd"
- DESTINATION "${EXECUTABLE_OUTPUT_PATH}")
+ # Link the chrony binaries so that they can be found via
+ # MiniChronyd::GetPath in MiniChronyd::Start.
+ execute_process(COMMAND ln -nsf
+ "${CMAKE_SOURCE_DIR}/thirdparty/installed/common/bin/chronyc"
+ "${EXECUTABLE_OUTPUT_PATH}/chronyc")
+ execute_process(COMMAND ln -nsf
+ "${CMAKE_SOURCE_DIR}/thirdparty/installed/common/sbin/chronyd"
+ "${EXECUTABLE_OUTPUT_PATH}/chronyd")
set(MINI_CHRONYD_SRCS test/mini_chronyd.cc)