From eefd0d0c768b40f74035071f679595867de2d97e58cf5275e776d20fce141afd Mon Sep 17 00:00:00 2001 From: Steffen Winterfeldt Date: Wed, 4 Feb 2015 15:01:22 +0000 Subject: [PATCH 1/2] - don't use timestamps to create a unique id (bnc #915950) OBS-URL: https://build.opensuse.org/package/show/system:install:head/syslinux?expand=0&rev=69 --- syslinux-4.04-mtime.diff | 97 ++++++++++++++++++++++++++++++++++++++++ syslinux.changes | 5 +++ syslinux.spec | 4 +- 3 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 syslinux-4.04-mtime.diff diff --git a/syslinux-4.04-mtime.diff b/syslinux-4.04-mtime.diff new file mode 100644 index 0000000..ffb855b --- /dev/null +++ b/syslinux-4.04-mtime.diff @@ -0,0 +1,97 @@ +diff --git a/core/Makefile b/core/Makefile +index 33ad7e9..49ba474 100644 +--- a/core/Makefile ++++ b/core/Makefile +@@ -63,7 +63,7 @@ PREPCORE = ../lzo/prepcore + # official release. Otherwise, substitute a hex string that is pretty much + # guaranteed to be unique to be unique from build to build. + ifndef HEXDATE +-HEXDATE := $(shell $(PERL) ../now.pl $(SRCS)) ++HEXDATE := $(shell $(PERL) ../now.pl $(ALLSRC)) + endif + ifndef DATE + DATE := $(shell sh ../gen-id.sh $(VERSION) $(HEXDATE)) +diff --git a/libinstaller/bin2c.pl b/libinstaller/bin2c.pl +index 07c11dd..2864488 100755 +--- a/libinstaller/bin2c.pl ++++ b/libinstaller/bin2c.pl +@@ -71,8 +71,4 @@ if ($align != 0) { + + printf "\n};\n\nconst unsigned int %s_len = %u;\n", $table_name, $total_len; + +-@st = stat STDIN; +- +-printf "\nconst int %s_mtime = %d;\n", $table_name, $st[9]; +- + exit 0; +diff --git a/libinstaller/syslinux.h b/libinstaller/syslinux.h +index 710d30e..963cafe 100644 +--- a/libinstaller/syslinux.h ++++ b/libinstaller/syslinux.h +@@ -20,11 +20,9 @@ + /* The standard boot sector and ldlinux image */ + extern unsigned char syslinux_bootsect[]; + extern const unsigned int syslinux_bootsect_len; +-extern const int syslinux_bootsect_mtime; + + extern unsigned char syslinux_ldlinux[]; + extern const unsigned int syslinux_ldlinux_len; +-extern const int syslinux_ldlinux_mtime; + + #define boot_sector syslinux_bootsect + #define boot_sector_len syslinux_bootsect_len +@@ -33,7 +31,6 @@ extern const int syslinux_ldlinux_mtime; + + extern unsigned char syslinux_mbr[]; + extern const unsigned int syslinux_mbr_len; +-extern const int syslinux_mbr_mtime; + + /* Sector size assumptions... */ + #define SECTOR_SHIFT 9 +diff --git a/now.pl b/now.pl +old mode 100644 +new mode 100755 +index a3b5a79..60c4fe0 +--- a/now.pl ++++ b/now.pl +@@ -1,21 +1,22 @@ +-#!/usr/bin/perl +-# +-# Print the time (possibly the mtime of a file) as a hexadecimal integer +-# If more than one file, print the mtime of the *newest* file. +-# +- +-undef $now; +- +-foreach $file ( @ARGV ) { +- ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime, +- $ctime,$blksize,$blocks) = stat($file); +- if ( !defined($now) || $now < $mtime ) { +- $now = $mtime; +- } +-} ++#! /usr/bin/perl ++ ++# Use checksum over all sources and source file names to create some unique id. ++ ++use Digest::SHA; ++ ++use strict; + +-if ( !defined($now) ) { +- $now = time; ++my $digest = Digest::SHA->new(256); ++ ++# print STDERR "now.pl: ", join(" ", @ARGV) , "\n"; ++ ++for (sort @ARGV) { ++ $digest->add($_); ++ $digest->addfile($_); + } + +-printf "0x%08x\n", $now; ++my $val = substr($digest->hexdigest, 0, 8); ++ ++# printf STDERR "now.pl: = 0x$val\n"; ++ ++print "0x$val\n"; diff --git a/syslinux.changes b/syslinux.changes index d262d57..04268fd 100644 --- a/syslinux.changes +++ b/syslinux.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Wed Feb 4 16:00:26 CET 2015 - snwint@suse.de + +- don't use timestamps to create a unique id (bnc #915950) + ------------------------------------------------------------------- Mon Aug 11 15:51:11 CEST 2014 - snwint@suse.de diff --git a/syslinux.spec b/syslinux.spec index 525a5fd..d1d49c1 100644 --- a/syslinux.spec +++ b/syslinux.spec @@ -1,7 +1,7 @@ # # spec file for package syslinux # -# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -50,6 +50,7 @@ Patch12: %{name}-%{version}-geometry.diff Patch13: %{name}-%{version}-nostrip.diff Patch14: %{name}-%{version}-timeout.diff Patch15: %{name}-%{version}-cache_fix.diff +Patch16: %{name}-%{version}-mtime.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -81,6 +82,7 @@ Authors: %patch13 -p0 %patch14 -p1 %patch15 -p1 +%patch16 -p1 %build cp %{SOURCE2} . From 18badfc1be53807ca9939793fbfd0510c77d577c5c6d02e4ce211b4a119ddf79 Mon Sep 17 00:00:00 2001 From: Steffen Winterfeldt Date: Wed, 4 Feb 2015 15:18:32 +0000 Subject: [PATCH 2/2] - syslinux-4.04-mtime.diff: don't use timestamps to create a unique id (bnc #915950) OBS-URL: https://build.opensuse.org/package/show/system:install:head/syslinux?expand=0&rev=70 --- syslinux.changes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syslinux.changes b/syslinux.changes index 04268fd..4e598b8 100644 --- a/syslinux.changes +++ b/syslinux.changes @@ -1,7 +1,7 @@ ------------------------------------------------------------------- Wed Feb 4 16:00:26 CET 2015 - snwint@suse.de -- don't use timestamps to create a unique id (bnc #915950) +- syslinux-4.04-mtime.diff: don't use timestamps to create a unique id (bnc #915950) ------------------------------------------------------------------- Mon Aug 11 15:51:11 CEST 2014 - snwint@suse.de