gcc: Respect $SOURCE_DATE_EPOCH
This commit is contained in:
		
							parent
							
								
									f31fbadac3
								
							
						
					
					
						commit
						0db7ccb5c6
					
				@ -63,7 +63,8 @@ let version = "4.9.3";
 | 
			
		||||
 | 
			
		||||
    enableParallelBuilding = true;
 | 
			
		||||
 | 
			
		||||
    patches = [ ]
 | 
			
		||||
    patches =
 | 
			
		||||
      [ ../use-source-date-epoch.patch ]
 | 
			
		||||
      ++ optionals enableParallelBuilding [ ../parallel-bconfig.patch ./parallel-strsignal.patch ]
 | 
			
		||||
      ++ optional (cross != null) ../libstdc++-target.patch
 | 
			
		||||
      ++ optional noSysDirs ../no-sys-dirs.patch
 | 
			
		||||
 | 
			
		||||
@ -64,7 +64,8 @@ let version = "5.3.0";
 | 
			
		||||
 | 
			
		||||
    enableParallelBuilding = true;
 | 
			
		||||
 | 
			
		||||
    patches = [ ]
 | 
			
		||||
    patches =
 | 
			
		||||
      [ ../use-source-date-epoch.patch ]
 | 
			
		||||
      ++ optional (cross != null) ../libstdc++-target.patch
 | 
			
		||||
      ++ optional noSysDirs ../no-sys-dirs.patch
 | 
			
		||||
      # The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										52
									
								
								pkgs/development/compilers/gcc/use-source-date-epoch.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								pkgs/development/compilers/gcc/use-source-date-epoch.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,52 @@
 | 
			
		||||
https://gcc.gnu.org/ml/gcc-patches/2015-06/msg02210.html
 | 
			
		||||
 | 
			
		||||
diff --git a/libcpp/macro.c b/libcpp/macro.c
 | 
			
		||||
index 1e0a0b5..a52e3cb 100644
 | 
			
		||||
--- a/libcpp/macro.c
 | 
			
		||||
+++ b/libcpp/macro.c
 | 
			
		||||
@@ -349,14 +349,38 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node)
 | 
			
		||||
 	     slow on some systems.  */
 | 
			
		||||
 	  time_t tt;
 | 
			
		||||
 	  struct tm *tb = NULL;
 | 
			
		||||
+	  char *source_date_epoch;
 | 
			
		||||
 
 | 
			
		||||
-	  /* (time_t) -1 is a legitimate value for "number of seconds
 | 
			
		||||
-	     since the Epoch", so we have to do a little dance to
 | 
			
		||||
-	     distinguish that from a genuine error.  */
 | 
			
		||||
-	  errno = 0;
 | 
			
		||||
-	  tt = time(NULL);
 | 
			
		||||
-	  if (tt != (time_t)-1 || errno == 0)
 | 
			
		||||
-	    tb = localtime (&tt);
 | 
			
		||||
+	  /* Allow the date and time to be set externally by an exported
 | 
			
		||||
+	     environment variable to enable reproducible builds. */
 | 
			
		||||
+	  source_date_epoch = getenv ("SOURCE_DATE_EPOCH");
 | 
			
		||||
+	  if (source_date_epoch)
 | 
			
		||||
+	    {
 | 
			
		||||
+	      errno = 0;
 | 
			
		||||
+	      tt = (time_t) strtol (source_date_epoch, NULL, 10);
 | 
			
		||||
+	      if (errno == 0)
 | 
			
		||||
+	        {
 | 
			
		||||
+		  tb = gmtime (&tt);
 | 
			
		||||
+		  if (tb == NULL)
 | 
			
		||||
+		    cpp_error (pfile, CPP_DL_ERROR,
 | 
			
		||||
+			       "SOURCE_DATE_EPOCH=\"%s\" is not a valid date",
 | 
			
		||||
+			       source_date_epoch);
 | 
			
		||||
+	        }
 | 
			
		||||
+	      else
 | 
			
		||||
+		cpp_error (pfile, CPP_DL_ERROR,
 | 
			
		||||
+			   "SOURCE_DATE_EPOCH=\"%s\" is not a valid number",
 | 
			
		||||
+			   source_date_epoch);
 | 
			
		||||
+	    }
 | 
			
		||||
+	  else
 | 
			
		||||
+	    {
 | 
			
		||||
+	    /* (time_t) -1 is a legitimate value for "number of seconds
 | 
			
		||||
+	       since the Epoch", so we have to do a little dance to
 | 
			
		||||
+	       distinguish that from a genuine error.  */
 | 
			
		||||
+	    errno = 0;
 | 
			
		||||
+	    tt = time(NULL);
 | 
			
		||||
+	    if (tt != (time_t)-1 || errno == 0)
 | 
			
		||||
+	      tb = localtime (&tt);
 | 
			
		||||
+	  }
 | 
			
		||||
 
 | 
			
		||||
 	  if (tb)
 | 
			
		||||
 	    {
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user