diff options
| author | Maxim Dounin <mdounin@mdounin.ru> | 2016-03-10 16:50:13 +0300 |
|---|---|---|
| committer | Maxim Dounin <mdounin@mdounin.ru> | 2016-03-10 16:50:13 +0300 |
| commit | 5835963d61f374483f2acafb699031183bb8410f (patch) | |
| tree | 30765c73769ea5f540af3567a91e2ea1f78ea854 | |
| parent | 2301b095e60320f98d602751ba07a324690b6a47 (diff) | |
| download | nginx-5835963d61f374483f2acafb699031183bb8410f.tar.gz nginx-5835963d61f374483f2acafb699031183bb8410f.tar.bz2 | |
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.
| -rw-r--r-- | auto/init | 1 | ||||
| -rw-r--r-- | auto/install | 18 | ||||
| -rw-r--r-- | auto/make | 2 |
3 files changed, 16 insertions, 5 deletions
@@ -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 @@ -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 |
