Accepting request 511644 from home:bmwiedemann:branches:system:install:head

Add syslinux-4.04-reproducible.patch to sort file lists to fix build-compare (boo#1041090)

OBS-URL: https://build.opensuse.org/request/show/511644
OBS-URL: https://build.opensuse.org/package/show/system:install:head/syslinux?expand=0&rev=90
This commit is contained in:
Steffen Winterfeldt 2017-09-12 08:10:21 +00:00 committed by Git OBS Bridge
parent d27b292415
commit bc4b7ff926
3 changed files with 233 additions and 0 deletions

View File

@ -0,0 +1,224 @@
commit be645d7a9848847388a662f6c0f7571d52ed7a05
Author: Philippe Coval <philippe.coval@open.eurogiciel.org>
Date: Wed Dec 17 16:46:29 2014 -0500
build: sort sources to build in a more deterministic way
It has been observed that binaries contents
are depending on the order of linked objects.
This order is caused by GNU make's wildcard function
and the position of sources on filesystem.
This change tries to prevent this kind of randomness.
Also consider building using -j1 flag
to make it even more reproductible.
Change-Id: Ie8eee7f336e6f1fa2863c4150d967afd15519f1d
Bug: http://bugzilla.syslinux.org/show_bug.cgi?id=57#related
Signed-off-by: Philippe Coval <philippe.coval at open.eurogiciel.org>
Index: syslinux-4.04/com32/cmenu/Makefile
===================================================================
--- syslinux-4.04.orig/com32/cmenu/Makefile
+++ syslinux-4.04/com32/cmenu/Makefile
@@ -28,7 +28,7 @@ CFLAGS += -I./libmenu
LIBMENU = libmenu/syslnx.o libmenu/com32io.o libmenu/tui.o \
libmenu/menu.o libmenu/passwords.o libmenu/des.o libmenu/help.o
-CMENUS = $(patsubst %.c,%.c32,$(wildcard *.c))
+CMENUS = $(sort $(patsubst %.c,%.c32,$(wildcard *.c)))
IMENUS = $(patsubst %.menu,%.c32,$(wildcard *.menu))
MENUS = $(CMENUS) $(IMENUS)
@@ -56,7 +56,7 @@ clean: tidy menuclean libclean
rm -f *.lss *.c32 *.com
menuclean:
- rm -f $(patsubst %.menu,%.c,$(wildcard *.menu))
+ rm -f $(patsubst %.menu,%.c,$(sort $(wildcard *.menu)))
spotless: clean libclean menuclean
rm -f *~ \#*
Index: syslinux-4.04/com32/rosh/Makefile
===================================================================
--- syslinux-4.04.orig/com32/rosh/Makefile
+++ syslinux-4.04/com32/rosh/Makefile
@@ -24,7 +24,7 @@ include MCONFIG
# 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) $(topdir)/now.pl $(SRCS) $(wildcard *.h))
+HEXDATE := $(shell $(PERL) $(topdir)/now.pl $(SRCS) $(sort $(wildcard *.h)))
endif
ifndef DATE
DATE := $(shell sh $(topdir)/gen-id.sh $(VERSION) $(HEXDATE))
Index: syslinux-4.04/core/Makefile
===================================================================
--- syslinux-4.04.orig/core/Makefile
+++ syslinux-4.04/core/Makefile
@@ -37,10 +37,10 @@ BTARGET = kwdhash.gen \
isolinux.bin isolinux-debug.bin pxelinux.0
# All primary source files for the main syslinux files
-NASMSRC := $(wildcard *.asm)
-NASMHDR := $(wildcard *.inc)
-CSRC := $(wildcard *.c */*.c */*/*.c)
-SSRC := $(wildcard *.S */*.S */*/*.S)
+NASMSRC := $(sort $(wildcard *.asm))
+NASMHDR := $(sort $(wildcard *.inc))
+CSRC := $(sort $(wildcard *.c */*.c */*/*.c))
+SSRC := $(sort $(wildcard *.S */*.S */*/*.S))
CHDR := $(wildcard *.h)
OTHERSRC := keywords
ALLSRC = $(NASMSRC) $(NASMHDR) $(CSRC) $(SSRC) $(CHDR) $(OTHERSRC)
Index: syslinux-4.04/gpxe/src/Makefile.housekeeping
===================================================================
--- syslinux-4.04.orig/gpxe/src/Makefile.housekeeping
+++ syslinux-4.04/gpxe/src/Makefile.housekeeping
@@ -246,9 +246,9 @@ endif
#
# BIN has the form bin[-[arch-]platform]
-ARCHS := $(patsubst arch/%,%,$(wildcard arch/*))
+ARCHS := $(patsubst arch/%,%,$(sort $(wildcard arch/*)))
PLATFORMS := $(patsubst config/defaults/%.h,%,\
- $(wildcard config/defaults/*.h))
+ $(sort $(wildcard config/defaults/*.h)))
archs :
@$(ECHO) $(ARCHS)
@@ -307,8 +307,8 @@ srcdirs :
# SRCS lists all .c or .S files found in any SRCDIR
#
-SRCS += $(wildcard $(patsubst %,%/*.c,$(SRCDIRS)))
-SRCS += $(wildcard $(patsubst %,%/*.S,$(SRCDIRS)))
+SRCS += $(sort $(wildcard $(patsubst %,%/*.c,$(SRCDIRS))))
+SRCS += $(sort $(wildcard $(patsubst %,%/*.S,$(SRCDIRS))))
srcs :
@$(ECHO) $(SRCS)
@@ -677,7 +677,7 @@ endef
$(BIN)/%.objs : $(BIN)/%.tmp
$(Q)$(ECHO) $(call objs_list,$<)
$(BIN)/%.sizes : $(BIN)/%.tmp
- $(Q)$(SIZE) -t $(foreach OBJ,$(call objs_list,$<),$(wildcard $(BIN)/$(subst _,?,$(OBJ)).o)) | \
+ $(Q)$(SIZE) -t $(foreach OBJ,$(call objs_list,$<),$(sort $(wildcard $(BIN)/$(subst _,?,$(OBJ)).o))) | \
sort -g
# Get dependency list for the specified target
@@ -807,7 +807,7 @@ $(BIN)/%.o : payload/%.img
$(Q)$(LD) -b binary -r -o $@ $< --undefined obj_payload \
--defsym obj_$*=0
-BOBJS += $(patsubst payload/%.img,$(BIN)/%.o,$(wildcard payload/*.img))
+BOBJS += $(patsubst payload/%.img,$(BIN)/%.o,$(sort $(wildcard payload/*.img)))
# The "allXXXs" targets for each suffix
#
Index: syslinux-4.04/lzo/Makefile
===================================================================
--- syslinux-4.04.orig/lzo/Makefile
+++ syslinux-4.04/lzo/Makefile
@@ -15,7 +15,7 @@ include $(topdir)/MCONFIG.build
INCLUDES += -I./include
-LIBOBJS = $(patsubst %.c,%.o,$(wildcard src/*.c))
+LIBOBJS = $(sort $(patsubst %.c,%.o,$(wildcard src/*.c)))
LIB = lzo.a
BINS = prepcore
Index: syslinux-4.04/mtools/Makefile
===================================================================
--- syslinux-4.04.orig/mtools/Makefile
+++ syslinux-4.04/mtools/Makefile
@@ -13,7 +13,7 @@ SRCS = syslinux.c \
../libinstaller/setadv.c \
../libinstaller/bootsect_bin.c \
../libinstaller/ldlinux_bin.c \
- $(wildcard ../libfat/*.c)
+ $(sort $(wildcard ../libfat/*.c))
OBJS = $(patsubst %.c,%.o,$(notdir $(SRCS)))
.SUFFIXES: .c .o .i .s .S
Index: syslinux-4.04/com32/gpllib/Makefile
===================================================================
--- syslinux-4.04.orig/com32/gpllib/Makefile
+++ syslinux-4.04/com32/gpllib/Makefile
@@ -9,7 +9,7 @@ include ../lib/MCONFIG
REQFLAGS += -I../gplinclude
GPLDIRS := . disk dmi vpd acpi
-LIBOBJS := $(foreach dir,$(GPLDIRS),$(patsubst %.c,%.o,$(wildcard $(dir)/*.c)))
+LIBOBJS := $(sort $(foreach dir,$(GPLDIRS),$(patsubst %.c,%.o,$(wildcard $(dir)/*.c))))
BINDIR = /usr/bin
LIBDIR = /usr/lib
Index: syslinux-4.04/com32/hdt/Makefile
===================================================================
--- syslinux-4.04.orig/com32/hdt/Makefile
+++ syslinux-4.04/com32/hdt/Makefile
@@ -25,7 +25,7 @@ CFLAGS += -I$(com32)/cmenu/libmenu
MODULES = hdt.c32
TESTFILES =
-OBJS = $(patsubst %.c,%.o,$(wildcard *.c))
+OBJS = $(sort $(patsubst %.c,%.o,$(wildcard *.c)))
VERSION = $(shell $(SED) -n 's/\#define VERSION \"\(.*\)\"/\1/p' hdt.h)
CODENAME = $(shell $(SED) -n 's/\#define CODENAME \"\(.*\)\"/\1/p' hdt.h)
VERSION_C32 = $(shell echo $(VERSION) | $(SED) -e 's/-/_/g' | $(SED) -e 's/\./_/g')
Index: syslinux-4.04/com32/sysdump/Makefile
===================================================================
--- syslinux-4.04.orig/com32/sysdump/Makefile
+++ syslinux-4.04/com32/sysdump/Makefile
@@ -25,7 +25,7 @@ LNXLIBS = ../libutil/libutil_lnx.a
MODULES = sysdump.c32
TESTFILES =
-SRCS = $(wildcard *.c)
+SRCS = $(sort $(wildcard *.c))
OBJS = $(patsubst %.c,%.o,$(SRCS))
# The DATE is set on the make command line when building binaries for
Index: syslinux-4.04/memdisk/Makefile
===================================================================
--- syslinux-4.04.orig/memdisk/Makefile
+++ syslinux-4.04/memdisk/Makefile
@@ -23,7 +23,7 @@ NASMOPT = -O9999
NFLAGS = -dDATE='"$(DATE)"'
NINCLUDE =
-SRCS = $(wildcard *.asm *.c *.h)
+SRCS = $(sort $(wildcard *.asm *.c *.h))
# The DATE is set on the make command line when building binaries for
# official release. Otherwise, substitute a hex string that is pretty much
Index: syslinux-4.04/win32/Makefile
===================================================================
--- syslinux-4.04.orig/win32/Makefile
+++ syslinux-4.04/win32/Makefile
@@ -57,7 +57,7 @@ LIBSRC = ../libinstaller/fat.c \
../libinstaller/bootsect_bin.c \
../libinstaller/ldlinux_bin.c \
../libinstaller/mbr_bin.c \
- $(wildcard ../libfat/*.c)
+ $(sort $(wildcard ../libfat/*.c))
LIBOBJS = $(patsubst %.c,%.obj,$(notdir $(LIBSRC)))
LIB = syslinux.lib
Index: syslinux-4.04/win64/Makefile
===================================================================
--- syslinux-4.04.orig/win64/Makefile
+++ syslinux-4.04/win64/Makefile
@@ -47,7 +47,7 @@ LIBSRC = ../libinstaller/fat.c \
../libinstaller/bootsect_bin.c \
../libinstaller/ldlinux_bin.c \
../libinstaller/mbr_bin.c \
- $(wildcard ../libfat/*.c)
+ $(sort $(wildcard ../libfat/*.c))
LIBOBJS = $(patsubst %.c,%.obj,$(notdir $(LIBSRC)))
LIB = syslinux.lib

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Thu Jul 20 12:06:49 UTC 2017 - bwiedemann@suse.com
- Add syslinux-4.04-reproducible.patch to sort file lists
to fix build-compare (boo#1041090)
------------------------------------------------------------------- -------------------------------------------------------------------
Fri Jun 3 10:50:47 CEST 2016 - snwint@suse.de Fri Jun 3 10:50:47 CEST 2016 - snwint@suse.de

View File

@ -56,6 +56,8 @@ Patch15: %{name}-%{version}-cache_fix.diff
Patch16: %{name}-%{version}-mtime.diff Patch16: %{name}-%{version}-mtime.diff
Patch17: %{name}-%{version}-miniacc.diff Patch17: %{name}-%{version}-miniacc.diff
Patch18: %{name}-%{version}-align.diff Patch18: %{name}-%{version}-align.diff
# PATCH-FIX-UPSTREAM -- make package build reproducible
Patch19: syslinux-4.04-reproducible.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description %description
@ -90,6 +92,7 @@ Authors:
%patch16 -p1 %patch16 -p1
%patch17 %patch17
%patch18 %patch18
%patch19 -p1
%build %build
cp %{SOURCE2} . cp %{SOURCE2} .