svn commit: r291732 - head/share/mk
Bryan Drewery
bdrewery at FreeBSD.org
Fri Dec 4 03:17:09 UTC 2015
Author: bdrewery
Date: Fri Dec 4 03:17:07 2015
New Revision: 291732
URL: https://svnweb.freebsd.org/changeset/base/291732
Log:
DIRDEPS_BUILD: Install new Makefile.depend files atomically.
Sponsored by: EMC / Isilon Storage Division
Modified:
head/share/mk/install-new.mk
Modified: head/share/mk/install-new.mk
==============================================================================
--- head/share/mk/install-new.mk Fri Dec 4 03:17:04 2015 (r291731)
+++ head/share/mk/install-new.mk Fri Dec 4 03:17:07 2015 (r291732)
@@ -32,9 +32,23 @@ CmpCp= CmpCp() { \
cp $$src $$target; \
fi; }
+# Replace the file if they are different and make a backup if desired
+CmpReplace= CmpReplace() { \
+ src=$$1 target=$$2 _bak=$$3; \
+ if ! test -s $$target || ! cmp -s $$target $$src; then \
+ trap "" 1 2 3 15; \
+ if test -s $$target; then \
+ if test "x$$_bak" != x; then \
+ rm -f $$target$$_bak; \
+ cp -f $$target $$target$$_bak; \
+ fi; \
+ fi; \
+ mv -f $$src $$target; \
+ fi; }
+
# If the .new file is different, we want it.
# Note: this function will work as is for *.new$RANDOM"
-InstallNew= ${CmpCp}; InstallNew() { \
+InstallNew= ${CmpReplace}; InstallNew() { \
_t=-e; _bak=; \
while :; do \
case "$$1" in \
@@ -46,7 +60,7 @@ InstallNew= ${CmpCp}; InstallNew() { \
for new in "$$@"; do \
if test $$_t $$new; then \
target=`expr $$new : '\(.*\).new'`; \
- CmpCp $$new $$target $$_bak; \
+ CmpReplace $$new $$target $$_bak; \
fi; \
rm -f $$new; \
done; :; }
More information about the svn-src-head
mailing list