From df75f9bb098fbb1bf2bff01ffc903456c2319b86 Mon Sep 17 00:00:00 2001 From: rdimaio Date: Wed, 17 Jan 2024 17:48:20 +0100 Subject: [PATCH] Filterdiff patch and apply separately to bin and lib; fix #249 --- daemons/start-daemon.sh | 34 +++++++++++++++++++++------------- server/Dockerfile | 2 +- server/docker-entrypoint.sh | 36 ++++++++++++++++++++++-------------- webui/docker-entrypoint.sh | 35 +++++++++++++++++++++-------------- 4 files changed, 65 insertions(+), 42 deletions(-) diff --git a/daemons/start-daemon.sh b/daemons/start-daemon.sh index 0f68491..286f23d 100755 --- a/daemons/start-daemon.sh +++ b/daemons/start-daemon.sh @@ -35,33 +35,41 @@ fi if [ -d "/patch" ] then echo "Patches found. Trying to apply them" - for patchfile in /patch/* + + TMP_PATCH_DIR="$(mktemp -d)" + trap 'rm -rf -- "$TMP_PATCH_DIR"' EXIT # Deletes temp dir when script exits + + for patchfile in /patch/*.patch do echo "Applying patch ${patchfile}" - bin_patch=$(filterdiff -i '*/bin/*' ${patchfile}) + tmp_bin_file="${TMP_PATCH_DIR}/tmp_bin" + filterdiff -i '*/bin/*' "${patchfile}" > ${tmp_bin_file} - if [ -n "$bin_patch" ] + if [ -s ${tmp_bin_file} ] then - if patch -p3 -d "$RUCIO_PYTHON_PATH" < $bin_patch + if patch -p2 -d "/usr/local/bin/" < ${tmp_bin_file} then - echo "Patch ${bin_patch} applied." + echo "Patch ${patchfile}/bin applied." else - echo "Patch ${bin_patch} could not be applied successfully (exit code $?). Exiting setup." + echo "Patch ${patchfile}/bin could not be applied successfully (exit code $?). Exiting setup." exit 1 - fi + fi + fi - lib_patch=$(filterdiff -i '*/lib/*' ${patchfile}) + tmp_lib_file="${TMP_PATCH_DIR}/tmp_lib" + filterdiff -i '*/lib/*' "${patchfile}" > ${tmp_lib_file} - if [ -n "$lib_patch" ] + if [ -s ${tmp_lib_file} ] then - if patch -p3 -d "$RUCIO_PYTHON_PATH" < $lib_patch + if patch -p3 -d "$RUCIO_PYTHON_PATH" < ${tmp_lib_file} then - echo "Patch ${lib_patch} applied." + echo "Patch ${patchfile}/lib applied." else - echo "Patch ${lib_patch} could not be applied successfully (exit code $?). Exiting setup." + echo "Patch ${patchfile}/lib could not be applied successfully (exit code $?). Exiting setup." exit 1 - fi + fi + fi done fi diff --git a/server/Dockerfile b/server/Dockerfile index 5de312f..c918e7e 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -20,7 +20,7 @@ RUN dnf install -y epel-release.noarch && \ procps-ng \ python-pip \ python-mod_wsgi \ - memcached && \ + memcached \ patchutils && \ dnf clean all && \ rm -rf /var/cache/dnf diff --git a/server/docker-entrypoint.sh b/server/docker-entrypoint.sh index 9293ba9..fce0377 100755 --- a/server/docker-entrypoint.sh +++ b/server/docker-entrypoint.sh @@ -46,36 +46,44 @@ echo "" if [ -d "/patch" ] then echo "Patches found. Trying to apply them" - for patchfile in /patch/* + + TMP_PATCH_DIR="$(mktemp -d)" + trap 'rm -rf -- "$TMP_PATCH_DIR"' EXIT # Deletes temp dir when script exits + + for patchfile in /patch/*.patch do echo "Applying patch ${patchfile}" - bin_patch=$(filterdiff -i '*/bin/*' ${patchfile}) + tmp_bin_file="${TMP_PATCH_DIR}/tmp_bin" + filterdiff -i '*/bin/*' "${patchfile}" > ${tmp_bin_file} - if [ -n "$bin_patch" ] + if [ -s ${tmp_bin_file} ] then - if patch -p3 -d "$RUCIO_PYTHON_PATH" < $bin_patch + if patch -p2 -d "/usr/local/bin/" < ${tmp_bin_file} then - echo "Patch ${bin_patch} applied." + echo "Patch ${patchfile}/bin applied." else - echo "Patch ${bin_patch} could not be applied successfully (exit code $?). Exiting setup." + echo "Patch ${patchfile}/bin could not be applied successfully (exit code $?). Exiting setup." exit 1 - fi + fi + fi - lib_patch=$(filterdiff -i '*/lib/*' ${patchfile}) + tmp_lib_file="${TMP_PATCH_DIR}/tmp_lib" + filterdiff -i '*/lib/*' "${patchfile}" > ${tmp_lib_file} - if [ -n "$lib_patch" ] + if [ -s ${tmp_lib_file} ] then - if patch -p3 -d "$RUCIO_PYTHON_PATH" < $lib_patch + if patch -p3 -d "$RUCIO_PYTHON_PATH" < ${tmp_lib_file} then - echo "Patch ${lib_patch} applied." + echo "Patch ${patchfile}/lib applied." else - echo "Patch ${lib_patch} could not be applied successfully (exit code $?). Exiting setup." + echo "Patch ${patchfile}/lib could not be applied successfully (exit code $?). Exiting setup." exit 1 - fi + fi + fi done fi pkill httpd || : sleep 2 -exec httpd -D FOREGROUND +exec httpd -D FOREGROUND \ No newline at end of file diff --git a/webui/docker-entrypoint.sh b/webui/docker-entrypoint.sh index 1e37993..87816b6 100755 --- a/webui/docker-entrypoint.sh +++ b/webui/docker-entrypoint.sh @@ -14,36 +14,43 @@ echo "" if [ -d "/patch" ] then echo "Patches found. Trying to apply them" - for patchfile in /patch/* + + TMP_PATCH_DIR="$(mktemp -d)" + trap 'rm -rf -- "$TMP_PATCH_DIR"' EXIT # Deletes temp dir when script exits + + for patchfile in /patch/*.patch do echo "Applying patch ${patchfile}" - bin_patch=$(filterdiff -i '*/bin/*' ${patchfile}) + tmp_bin_file="${TMP_PATCH_DIR}/tmp_bin" + filterdiff -i '*/bin/*' "${patchfile}" > ${tmp_bin_file} - if [ -n "$bin_patch" ] + if [ -s ${tmp_bin_file} ] then - if patch -p3 -d "$RUCIO_WEBUI_PATH" < $bin_patch + if patch -p2 -d "/usr/local/bin/" < ${tmp_bin_file} then - echo "Patch ${bin_patch} applied." + echo "Patch ${patchfile}/bin applied." else - echo "Patch ${bin_patch} could not be applied successfully (exit code $?). Exiting setup." + echo "Patch ${patchfile}/bin could not be applied successfully (exit code $?). Exiting setup." exit 1 - fi + fi + fi - lib_patch=$(filterdiff -i '*/lib/*' ${patchfile}) + tmp_lib_file="${TMP_PATCH_DIR}/tmp_lib" + filterdiff -i '*/lib/*' "${patchfile}" > ${tmp_lib_file} - if [ -n "$lib_patch" ] + if [ -s ${tmp_lib_file} ] then - if patch -p3 -d "$RUCIO_WEBUI_PATH" < $lib_patch + if patch -p3 -d "$RUCIO_WEBUI_PATH" < ${tmp_lib_file} then - echo "Patch ${lib_patch} applied." + echo "Patch ${patchfile}/lib applied." else - echo "Patch ${lib_patch} could not be applied successfully (exit code $?). Exiting setup." + echo "Patch ${patchfile}/lib could not be applied successfully (exit code $?). Exiting setup." exit 1 - fi + fi + fi done fi - echo "=================== Starting RUCIO WEBUI ========================" npm run start \ No newline at end of file