]> git.kaiwu.me - nginx.git/commitdiff
Dynamic modules: do not overwrite old modules on install.
authorMaxim Dounin <mdounin@mdounin.ru>
Thu, 10 Mar 2016 13:50:13 +0000 (16:50 +0300)
committerMaxim Dounin <mdounin@mdounin.ru>
Thu, 10 Mar 2016 13:50:13 +0000 (16:50 +0300)
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
auto/install
auto/make

index c593eda55e199557ea8e75e61cc37d59a889e5cd..910f5294b66502edef8382436a79e5c8a3cf65e0 100644 (file)
--- 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
index 6efa92f735d6616e449875a8da765351d2f70f1a..948ddc1774404c9e4d16b24087a0ab1d9eb81913 100644 (file)
@@ -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
index 6f26d3c29cd3838c50b1bc61fdbdfe5ceecee55f..5589bee8b43b69ca97efe039fa2e4996398db2ff 100644 (file)
--- 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