From 5835963d61f374483f2acafb699031183bb8410f Mon Sep 17 00:00:00 2001 From: Maxim Dounin Date: Thu, 10 Mar 2016 16:50:13 +0300 Subject: [PATCH] Dynamic modules: do not overwrite old modules on install. Just using "cp" is incorrect, as it will overwrite old files possibly used by OS, leading to unexpected effects. Changed to "mv + cp", much like used for the main binary. --- auto/init | 1 - auto/install | 18 ++++++++++++++++-- auto/make | 2 -- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/auto/init b/auto/init index c593eda55..910f5294b 100644 --- a/auto/init +++ b/auto/init @@ -5,7 +5,6 @@ NGX_MAKEFILE=$NGX_OBJS/Makefile NGX_MODULES_C=$NGX_OBJS/ngx_modules.c -NGX_MODULES= NGX_AUTO_HEADERS_H=$NGX_OBJS/ngx_auto_headers.h NGX_AUTO_CONFIG_H=$NGX_OBJS/ngx_auto_config.h diff --git a/auto/install b/auto/install index 6efa92f73..948ddc177 100644 --- a/auto/install +++ b/auto/install @@ -169,17 +169,31 @@ END fi -if test -n "$NGX_MODULES"; then +if test -n "$DYNAMIC_MODULES"; then cat << END >> $NGX_MAKEFILE test -d '\$(DESTDIR)$NGX_MODULES_PATH' \ || mkdir -p '\$(DESTDIR)$NGX_MODULES_PATH' - cp $NGX_MODULES '\$(DESTDIR)$NGX_MODULES_PATH' END fi +for ngx_module in $DYNAMIC_MODULES +do + ngx_module=$ngx_module$ngx_modext + + cat << END >> $NGX_MAKEFILE + + test ! -f '\$(DESTDIR)$NGX_MODULES_PATH/$ngx_module' \ + || mv '\$(DESTDIR)$NGX_MODULES_PATH/$ngx_module' \ + '\$(DESTDIR)$NGX_MODULES_PATH/$ngx_module.old' + cp $NGX_OBJS/$ngx_module '\$(DESTDIR)$NGX_MODULES_PATH/$ngx_module' +END + +done + + # create Makefile cat << END >> Makefile diff --git a/auto/make b/auto/make index 6f26d3c29..5589bee8b 100644 --- a/auto/make +++ b/auto/make @@ -609,8 +609,6 @@ END ngx_obj=$NGX_OBJS$ngx_dirsep$ngx_module$ngx_modext - NGX_MODULES="$NGX_MODULES $ngx_obj" - if [ "$NGX_PLATFORM" = win32 ]; then ngx_module_libs="$CORE_LIBS $ngx_module_libs" fi -- 2.47.3