From 92040c66e7fb9283fe5e6b72cf063b805df30fe8 Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Thu, 31 Aug 2017 19:40:39 +0000 Subject: [PATCH] make, scripts: Preserve modification time on installation Implemented -p switch on pkg.sh log-install and used it on standard installation rules. Signed-off-by: Jan Lindemann --- make/defs.mk | 2 +- make/doxygen.mk | 2 +- make/fc-mod-cpp.mk | 4 ++-- make/install-files.mk | 2 +- make/make.mk | 4 ++-- make/py-mod.mk | 4 ++-- make/rules.mk | 22 +++++++++++----------- make/std-tools.mk | 2 +- make/subtree.mk | 2 +- make/swig.mk | 4 ++-- make/theme-images.mk | 2 +- scripts/pkg.sh | 12 +++++++++--- 12 files changed, 34 insertions(+), 28 deletions(-) diff --git a/make/defs.mk b/make/defs.mk index 640d4405..96a5a666 100644 --- a/make/defs.mk +++ b/make/defs.mk @@ -717,7 +717,7 @@ define make_subdirs_target endef define install_local_cfg - $(INSTALL) -o $(CFGOWNER) -g $(CFGGROUP) -m $(CFGMODE) $< $@ + $(INSTALL) -p -o $(CFGOWNER) -g $(CFGGROUP) -m $(CFGMODE) $< $@ endef define cvs_files diff --git a/make/doxygen.mk b/make/doxygen.mk index 71c38875..656e7e83 100644 --- a/make/doxygen.mk +++ b/make/doxygen.mk @@ -76,7 +76,7 @@ install.done: doxygen.done inst-dir.done touch $@ install.doxygen: - $(INSTALL) -o $(DOCOWNER) -g $(DOCGROUP) -m $(DOCMODE) \ + $(INSTALL) -p -o $(DOCOWNER) -g $(DOCGROUP) -m $(DOCMODE) \ $(wildcard $(DX_OUTPUT_DIR)/*.html) \ $(wildcard $(DX_OUTPUT_DIR)/*.gif) \ $(wildcard $(DX_OUTPUT_DIR)/*.png) \ diff --git a/make/fc-mod-cpp.mk b/make/fc-mod-cpp.mk index 81ecc477..a910d8b1 100644 --- a/make/fc-mod-cpp.mk +++ b/make/fc-mod-cpp.mk @@ -59,7 +59,7 @@ create-dirs.done: $(INSTALL) -d -m $(LIBDIRMODE) -o $(LIBDIROWNER) -g $(LIBDIRGROUP) $(FC_INSTALL_DIRS) $(FC_INSTALL_PYDIR)/%.py: %.py create-dirs.done - $(INSTALL) -m $(PYMODMODE) -o $(PYMODOWNER) -g $(PYMODGROUP) $< $@ + $(INSTALL) -p -m $(PYMODMODE) -o $(PYMODOWNER) -g $(PYMODGROUP) $< $@ $(FC_INSTALL_LIBDIR)/%.so: %.so - $(INSTALL) -m $(LIBMODE) -o $(LIBOWNER) -g $(LIBGROUP) $< $@ + $(INSTALL) -p -m $(LIBMODE) -o $(LIBOWNER) -g $(LIBGROUP) $< $@ diff --git a/make/install-files.mk b/make/install-files.mk index 658e9ed4..6b2f4946 100644 --- a/make/install-files.mk +++ b/make/install-files.mk @@ -24,7 +24,7 @@ install.done: if [ -d $$f ]; then \ $(INSTALL) -d -D -m $(TARGET_DIR_MODE) -o $(TARGET_DIR_OWNER) -g $(TARGET_DIR_GROUP) $(TARGET_DIR)/$$relpath ;\ else \ - $(INSTALL) -D -m $(TARGET_MODE) -o $(TARGET_OWNER) -g $(TARGET_GROUP) $$f $(TARGET_DIR)/$$relpath ;\ + $(INSTALL) -p -D -m $(TARGET_MODE) -o $(TARGET_OWNER) -g $(TARGET_GROUP) $$f $(TARGET_DIR)/$$relpath ;\ fi ;\ done touch $@ diff --git a/make/make.mk b/make/make.mk index f494a4c8..ec9120a7 100644 --- a/make/make.mk +++ b/make/make.mk @@ -33,11 +33,11 @@ test: $(INSTALL_PCKG_DEPS_DIR)/$(PROJECT).mk: pckg-deps.mk mkdir -p $(dir $@) - $(INSTALL) -m $(MAKEMODE) -o $(MAKEOWNER) -g $(MAKEGROUP) $< $@ + $(INSTALL) -p -m $(MAKEMODE) -o $(MAKEOWNER) -g $(MAKEGROUP) $< $@ $(INSTALL_PCKG_DEFS_DIR)/$(PROJECT).mk: pckg-defs.mk mkdir -p $(dir $@) - $(INSTALL) -m $(MAKEMODE) -o $(MAKEOWNER) -g $(MAKEGROUP) $< $@ + $(INSTALL) -p -m $(MAKEMODE) -o $(MAKEOWNER) -g $(MAKEGROUP) $< $@ install-links: DEVELOPMENT=false make do-install-links diff --git a/make/py-mod.mk b/make/py-mod.mk index 10b59a29..7931c11b 100644 --- a/make/py-mod.mk +++ b/make/py-mod.mk @@ -28,10 +28,10 @@ install-reg.done: install-dirs.done $(PY_INSTALLED_REG) python -c "import py_compile; py_compile.compile(\"$<\")" $(PY_INSTALL_DIR)/%.py: %.py - $(INSTALL) -m $(PYMODMODE) -o $(PYMODOWNER) -g $(PYMODGROUP) $< $@ + $(INSTALL) -p -m $(PYMODMODE) -o $(PYMODOWNER) -g $(PYMODGROUP) $< $@ $(PY_INSTALL_DIR)/%.pyc: %.pyc - $(INSTALL) -m $(PYMODMODE) -o $(PYMODOWNER) -g $(PYMODGROUP) $< $@ + $(INSTALL) -p -m $(PYMODMODE) -o $(PYMODOWNER) -g $(PYMODGROUP) $< $@ __init__.py: $(PY_INIT_TMPL) $(filter-out __init__.py,$(PY_SRC_PY)) if [ "$(PY_INIT_TMPL)" ]; then cat "$(PY_INIT_TMPL)" > $@.tmp; else > $@.tmp; fi diff --git a/make/rules.mk b/make/rules.mk index dc187700..854f7202 100644 --- a/make/rules.mk +++ b/make/rules.mk @@ -348,25 +348,25 @@ endef # --- special installation rules, that the general rules farther down # below don't catch for whatever reason > $(INSTALL_INITDIR)/%: %.init | provide_dir_INIT - $(INSTALL) -o $(INITOWNER) -g $(INITGROUP) -m $(INITMODE) $< $@ + $(INSTALL) -p -o $(INITOWNER) -g $(INITGROUP) -m $(INITMODE) $< $@ $(INSTALL_SYSTEMDDIR)/%.service: %.service | provide_dir_SYSTEMD - $(INSTALL) -o $(SYSTEMDOWNER) -g $(SYSTEMDGROUP) -m $(SYSTEMDMODE) $< $@ + $(INSTALL) -p -o $(SYSTEMDOWNER) -g $(SYSTEMDGROUP) -m $(SYSTEMDMODE) $< $@ $(INSTALL_LOGROTDIR)/%: %.logrotate | provide_dir_LOGROT - $(INSTALL) -o $(LOGROTOWNER) -g $(LOGROTGROUP) -m $(LOGROTMODE) $< $@ + $(INSTALL) -p -o $(LOGROTOWNER) -g $(LOGROTGROUP) -m $(LOGROTMODE) $< $@ $(INSTALL_APACHE_CONFDIR)/%.conf: %.apache-conf | provide_dir_APACHE_CONF - $(INSTALL) -o $(APACHE_CONFOWNER) -g $(APACHE_CONFGROUP) -m $(APACHE_CONFMODE) $< $@ + $(INSTALL) -p -o $(APACHE_CONFOWNER) -g $(APACHE_CONFGROUP) -m $(APACHE_CONFMODE) $< $@ $(INSTALL_RSYSLOGDIR)/%.conf: %.rsyslog | provide_dir_RSYSLOG - $(INSTALL) -o $(RSYSLOGOWNER) -g $(RSYSLOGGROUP) -m $(RSYSLOGMODE) $< $@ + $(INSTALL) -p -o $(RSYSLOGOWNER) -g $(RSYSLOGGROUP) -m $(RSYSLOGMODE) $< $@ $(INSTALL_RSYSLOGDIR)/%.bprof: rsyslog-%.bprof | provide_dir_RSYSLOG - $(INSTALL) -o $(RSYSLOGOWNER) -g $(RSYSLOGGROUP) -m $(RSYSLOGMODE) $< $@ + $(INSTALL) -p -o $(RSYSLOGOWNER) -g $(RSYSLOGGROUP) -m $(RSYSLOGMODE) $< $@ $(INSTALL_SYSCFGDIR)/%: %.sysconf | provide_dir_SYSCFG - $(INSTALL) -o $(INITOWNER) -g $(INITGROUP) -m $(INITMODE) $< $@ + $(INSTALL) -p -o $(INITOWNER) -g $(INITGROUP) -m $(INITMODE) $< $@ # --- special installation rules < @@ -390,8 +390,8 @@ $$(TOPDIR)/dir_install_$(1).done: $$(BUILD_$(1)DIR)/%: % $$(TOPDIR)/dir_build_$(1).done @if [ ! $$< -ef $$@ -a "`echo $$< | $(SED) 's/\..*//'`" != local ]; then \ - echo install -m $($(1)MODE) $$< $$@ ;\ - install -m $($(1)MODE) $$< $$@ ;\ + echo install -p -m $($(1)MODE) $$< $$@ ;\ + install -p -m $($(1)MODE) $$< $$@ ;\ rm -f $$(TOPDIR)/dirs-*.done ;\ fi @@ -399,7 +399,7 @@ $$(INSTALL_$(1)DIR): $$(INSTALL) -d -o $$($(1)DIROWNER) -g $$($(1)DIRGROUP) -m $$($(1)DIRMODE) $$(INSTALL_$(1)DIR) $$(INSTALL_$(1)DIR)/%: % | $$(INSTALL_$(1)DIR) - $$(INSTALL) -o $$($(1)OWNER) -g $$($(1)GROUP) -m $$($(1)MODE) $$< $$@ + $$(INSTALL) -p -o $$($(1)OWNER) -g $$($(1)GROUP) -m $$($(1)MODE) $$< $$@ endef #endef @@ -418,7 +418,7 @@ endif $(INSTALLED_PROFILE_PATH_SCRIPT): $(TOPDIR)/profiledir.done echo "if [ -z \"\$$PATH\" ]; then PATH=$(shell echo $(INSTALL_EXEDIR) | $(SED) -e s%^$(ENV_PREFIX)/%/%)" > path_script.sh echo "else PATH=\$$PATH:$(shell echo $(INSTALL_EXEDIR) | $(SED) -e s%^$(ENV_PREFIX)/%/%); fi" >> path_script.sh - $(INSTALL) -o $(PROFILEOWNER) -g $(PROFILEGROUP) -m $(PROFILEMODE) path_script.sh $@ + $(INSTALL) -p -o $(PROFILEOWNER) -g $(PROFILEGROUP) -m $(PROFILEMODE) path_script.sh $@ find: @bash $(MOD_SCRIPT_DIR)/list-cvs-files.sh diff --git a/make/std-tools.mk b/make/std-tools.mk index 6d0a6aac..07254c38 100644 --- a/make/std-tools.mk +++ b/make/std-tools.mk @@ -26,7 +26,7 @@ clean.std-tools: rm -f $(PROFILE_SH) *.done install.std-tools.done: install.std-dir.done - $(INSTALL) -o $(PROFILEOWNER) -g $(PROFILEGROUP) -m $(PROFILEMODE) $(PROFILE_SH) $(PROFILE_DIR) + $(INSTALL) -p -o $(PROFILEOWNER) -g $(PROFILEGROUP) -m $(PROFILEMODE) $(PROFILE_SH) $(PROFILE_DIR) touch $@ install.std-dir.done: diff --git a/make/subtree.mk b/make/subtree.mk index bb227cea..c90696ef 100644 --- a/make/subtree.mk +++ b/make/subtree.mk @@ -36,5 +36,5 @@ $(INSTALLED_SUBTREE_DIRS): $(INSTALL) -d -o $(SUBTREE_DIROWNER) -g $(SUBTREE_DIRGROUP) -m $(SUBTREE_DIRMODE) $@ $(ENV_PREFIX)$(SUBTREE_INSTALL_PREFIX)/%: % - $(INSTALL) -o $(SUBTREE_OWNER) -g $(SUBTREE_GROUP) -m $(SUBTREE_MODE) $< $@ + $(INSTALL) -p -o $(SUBTREE_OWNER) -g $(SUBTREE_GROUP) -m $(SUBTREE_MODE) $< $@ diff --git a/make/swig.mk b/make/swig.mk index c9ffc113..2cded068 100644 --- a/make/swig.mk +++ b/make/swig.mk @@ -28,7 +28,7 @@ ifeq ($(SWIG_TARGET),php) all: $(SWIG_PHP_MODULE_INI_DIR)/%.ini: %.ini - $(INSTALL) -o $(APACHE_CONFOWNER) -g $(APACHE_CONFGROUP) -m $(APACHE_CONFMODE) $< $@ + $(INSTALL) -p -o $(APACHE_CONFOWNER) -g $(APACHE_CONFGROUP) -m $(APACHE_CONFMODE) $< $@ %.ini: echo extension=$*.so > $@.tmp @@ -124,7 +124,7 @@ $(SWIG_MODULE_SO): $(SWIG_OBJ) $(CPP) $^ -shared $(BUILD_LDFLAGS) -o $@ $(SWIG_MODULE_TARGET_DIR)/%: % - $(INSTALL) -o $(SWIG_TARGETOWNER) -g $(SWIG_TARGETGROUP) -m $(SWIG_TARGETMODE) $< $@ + $(INSTALL) -p -o $(SWIG_TARGETOWNER) -g $(SWIG_TARGETGROUP) -m $(SWIG_TARGETMODE) $< $@ clean.generated: rm -f $(SWIG_MODULE_WRAP_C) $(SWIG_OBJ) $(SWIG_MODULE_SO) $(SWIG_MODULE_TARGET) $(SWIG_CLEAN) $(SWIG_WRAPPER_DEP_MK) diff --git a/make/theme-images.mk b/make/theme-images.mk index 2d5e9d61..ea76b132 100644 --- a/make/theme-images.mk +++ b/make/theme-images.mk @@ -26,7 +26,7 @@ install-images.done: basedir.done generate.done $(INSTALLED_IMG) $(INSTALL) -d -m $(IMGDIRMODE) -o $(IMGDIROWNER) -g $(IMGDIRGROUP) $(BASEDIR)/$$d ;\ done for f in `find . -name '*.png' -o -name '*.jpg' -o -name '*.gif'`; do \ - $(INSTALL) -m $(IMGMODE) -o $(IMGOWNER) -g $(IMGGROUP) $$f $(BASEDIR)/$$f ;\ + $(INSTALL) -p -m $(IMGMODE) -o $(IMGOWNER) -g $(IMGGROUP) $$f $(BASEDIR)/$$f ;\ done touch $@ diff --git a/scripts/pkg.sh b/scripts/pkg.sh index 6e6595b5..d0b327ab 100644 --- a/scripts/pkg.sh +++ b/scripts/pkg.sh @@ -420,7 +420,7 @@ build_pkg() scm_files | grep -v VERSION | cpio -o -H newc | - ( cd $src_tree; cpio --make-directories -i) + ( cd $src_tree; cpio -m --make-directories -i) echo $version > $src_tree/VERSION local pkgfmt @@ -669,6 +669,7 @@ cmd_log_install() local c_opmode=opmode_install local c_absolute=0 local c_wrap=0 + local install_opts set -- `getopt 'DLWi:a:f:l:bg:cdm:o:psS:vA' $*` @@ -696,8 +697,10 @@ cmd_log_install() ;; -b) + install_opts="$install_opts $1" ;; -c) + install_opts="$install_opts $1" ;; -d) c_mode_dir=true;; @@ -713,13 +716,16 @@ cmd_log_install() c_owner=$2 shift;; -p) + install_opts="$install_opts $1" ;; -s) + install_opts="$install_opts $1" ;; -S) c_suffix=$2 shift;; -v) + install_opts="$install_opts $1" ;; -L) c_opmode=opmode_link;; @@ -754,8 +760,8 @@ cmd_log_install() check_create_parent $c_create_leading_dirs $c_target cp -d $c_source $c_target || exit $? else - [ "$c_create_leading_dirs" ] && local opts=-D - install $opts $args || exit $? + [ "$c_create_leading_dirs" ] && local install_opts="$install_opts -D" + install $install_opts $args || exit $? fi ;;