# HG changeset patch # User Maxim Dounin # Date 1457617813 -10800 # Node ID 05c894a598ea3a4599b30321708bc930666fb3ee # Parent ae41f64f7c9b79e6eac18ac5dd7314eb13ce01d0 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. diff --git a/auto/init b/auto/init --- 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 --- 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 --- 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