The branch OpenSSL_1_0_2-stable has been updated
       via  f4ef1c53486d378ab2e2ef3427c0eb1c2fea358f (commit)
       via  7a9d7128d87d1572a0b7f99ff7b19d704395c8db (commit)
       via  62f16de2d17af4ac1f3df4622b7bec850b60820a (commit)
       via  22cc44d6b63e070cbff9770497f4fe6b3fa8d2a5 (commit)
       via  ecc955157af5f0fa19bcd74caaf52ec3fa18f755 (commit)
      from  8ac70bef694e733cec0f19a9438af98991cb5fa3 (commit)


- Log -----------------------------------------------------------------
commit f4ef1c53486d378ab2e2ef3427c0eb1c2fea358f
Author: Orgad Shaneh <org...@gmail.com>
Date:   Mon Sep 19 15:12:08 2016 +0300

    domd: Preserve Makefile time when it is unchanged
    
    also on systems with makedepend that does not report its version, or that
    its version does not contain "gcc" or "clang".
    
    Some versions of makedepends just overwrite Makefile. Preserve the
    timestamp of the previous Makefile, and copy it back if it is unchanged.
    
    Reviewed-by: Rich Salz <rs...@openssl.org>
    Reviewed-by: Richard Levitte <levi...@openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/1370)

commit 7a9d7128d87d1572a0b7f99ff7b19d704395c8db
Author: Orgad Shaneh <org...@gmail.com>
Date:   Sun Jul 31 09:18:22 2016 +0300

    mklink: Do not needlessly overwrite linked files...
    
    ... on systems with symlinks.
    
    Creating or overwriting a symlink sets the file ctime to the current time.
    This causes needless rebuilds because the time of all the headers is
    changed, and apparently make considers the link's time rather than the
    time of the target.
    
    Reviewed-by: Rich Salz <rs...@openssl.org>
    Reviewed-by: Richard Levitte <levi...@openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/1370)

commit 62f16de2d17af4ac1f3df4622b7bec850b60820a
Author: Orgad Shaneh <org...@gmail.com>
Date:   Sun Jul 31 15:34:57 2016 +0300

    domd: Do not needlessly overwrite Makefiles
    
    Reviewed-by: Rich Salz <rs...@openssl.org>
    Reviewed-by: Richard Levitte <levi...@openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/1370)

commit 22cc44d6b63e070cbff9770497f4fe6b3fa8d2a5
Author: Orgad Shaneh <org...@gmail.com>
Date:   Sun Jul 31 09:18:22 2016 +0300

    mklink: Do not needlessly overwrite linked files...
    
    ... on systems without symlinks.
    
    Overwriting all the headers on each Configure causes full rebuild even if
    nothing has changed.
    
    Reviewed-by: Rich Salz <rs...@openssl.org>
    Reviewed-by: Richard Levitte <levi...@openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/1370)

commit ecc955157af5f0fa19bcd74caaf52ec3fa18f755
Author: Orgad Shaneh <org...@gmail.com>
Date:   Sun Jul 31 09:13:13 2016 +0300

    Configure: Improve incremental build time
    
    When Makefile/opensslconf.h is unchanged, don't write it at all.
    
    Currently every time Configure is executed, these files are overwritten.
    Makefile leads to regeneration of buildinf.h, and opensslconf.h is itself
    a central header.
    
    As a result, Configure triggers full rebuild, even if nothing is changed.
    
    Reviewed-by: Rich Salz <rs...@openssl.org>
    Reviewed-by: Richard Levitte <levi...@openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/1370)

-----------------------------------------------------------------------

Summary of changes:
 Configure      | 29 ++++++++++++++++++++++++-----
 util/domd      | 11 +++++++++--
 util/mklink.pl |  8 +++++---
 3 files changed, 38 insertions(+), 10 deletions(-)

diff --git a/Configure b/Configure
index c39f71a..c26c9d7 100755
--- a/Configure
+++ b/Configure
@@ -7,6 +7,7 @@ eval 'exec perl -S $0 ${1+"$@"}'
 
 require 5.000;
 use strict;
+use File::Compare;
 
 # see INSTALL for instructions.
 
@@ -1792,8 +1793,16 @@ while (<IN>)
        }
 close(IN);
 close(OUT);
-rename($Makefile,"$Makefile.bak") || die "unable to rename $Makefile\n" if -e 
$Makefile;
-rename("$Makefile.new",$Makefile) || die "unable to rename $Makefile.new\n";
+if ((compare($Makefile, "$Makefile.new"))
+       or file_newer('Configure', $Makefile)
+       or file_newer('config', $Makefile)
+       or file_newer('Makefile.org', $Makefile))
+       {
+       rename($Makefile,"$Makefile.bak") || die "unable to rename $Makefile\n" 
if -e $Makefile;
+       rename("$Makefile.new",$Makefile) || die "unable to rename 
$Makefile.new\n";
+       }
+else
+       { unlink("$Makefile.new"); }
 
 print "CC            =$cc\n";
 print "CFLAG         =$cflags\n";
@@ -1985,9 +1994,13 @@ print OUT "#ifdef  __cplusplus\n";
 print OUT "}\n";
 print OUT "#endif\n";
 close(OUT);
-rename("crypto/opensslconf.h","crypto/opensslconf.h.bak") || die "unable to 
rename crypto/opensslconf.h\n" if -e "crypto/opensslconf.h";
-rename("crypto/opensslconf.h.new","crypto/opensslconf.h") || die "unable to 
rename crypto/opensslconf.h.new\n";
-
+if (compare("crypto/opensslconf.h.new","crypto/opensslconf.h"))
+       {
+       rename("crypto/opensslconf.h","crypto/opensslconf.h.bak") || die 
"unable to rename crypto/opensslconf.h\n" if -e "crypto/opensslconf.h";
+       rename("crypto/opensslconf.h.new","crypto/opensslconf.h") || die 
"unable to rename crypto/opensslconf.h.new\n";
+       }
+else
+       { unlink("crypto/opensslconf.h.new"); }
 
 # Fix the date
 
@@ -2289,3 +2302,9 @@ sub test_sanity
        print STDERR "No sanity errors detected!\n" if $errorcnt == 0;
        return $errorcnt;
        }
+
+sub file_newer
+       {
+       my ($file1, $file2) = @_;
+       return (stat($file1))[9] > (stat($file2))[9]
+       }
diff --git a/util/domd b/util/domd
index 95bb1b0..bc2a85f 100755
--- a/util/domd
+++ b/util/domd
@@ -11,7 +11,9 @@ if [ "$1" = "-MD" ]; then
 fi
 if [ "$MAKEDEPEND" = "" ]; then MAKEDEPEND=makedepend; fi
 
-cp Makefile Makefile.save
+# Preserve Makefile timestamp by moving instead of copying (cp -p is GNU only)
+mv Makefile Makefile.save
+cp Makefile.save Makefile
 # fake the presence of Kerberos
 touch $TOP/krb5.h
 if ${MAKEDEPEND} --version 2>&1 | grep "clang" > /dev/null ||
@@ -32,7 +34,12 @@ else
     ${PERL} $TOP/util/clean-depend.pl < Makefile > Makefile.new
     RC=$?
 fi
-mv Makefile.new Makefile
+if ! cmp -s Makefile.save Makefile.new; then
+    mv Makefile.new Makefile
+else
+    mv Makefile.save Makefile
+    rm -f Makefile.new
+fi
 # unfake the presence of Kerberos
 rm $TOP/krb5.h
 
diff --git a/util/mklink.pl b/util/mklink.pl
index 61db12c..a937606 100755
--- a/util/mklink.pl
+++ b/util/mklink.pl
@@ -55,9 +55,11 @@ if ($^O eq "msys") { $symlink_exists=0 };
 foreach $file (@files) {
     my $err = "";
     if ($symlink_exists) {
-       unlink "$from/$file";
-       symlink("$to/$file", "$from/$file") or $err = " [$!]";
-    } else {
+        if (!-l "$from/$file") {
+           unlink "$from/$file";
+           symlink("$to/$file", "$from/$file") or $err = " [$!]";
+       }
+    } elsif (-d "$from" && (!-f "$from/$file" || ((stat("$file"))[9] > 
(stat("$from/$file"))[9]))) {
        unlink "$from/$file"; 
        open (OLD, "<$file") or die "Can't open $file: $!";
        open (NEW, ">$from/$file") or die "Can't open $from/$file: $!";
_____
openssl-commits mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-commits

Reply via email to