From 4030e28f2c2296ba138cb5e2495202f8aec7ba32 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 9 Mar 2021 15:21:36 +0000 Subject: [PATCH 2/3] Makefile: Avoid wildcard determinism issues wildcard used in Makefiles preserves the order of the files on disk which leads to differences in the order the binaries are linked. This patch tweaks the usage of wildcard to also have a sort, making the binaries reproducible. A previous patch massively improved the situation but wider testing showed that these other changes can have an effect on some binaries, this patch avoids those issues as exposed by our wider testing. Signed-off-by: Richard Purdie Upstream-Status: Submitted [http://lists.linux.it/pipermail/ltp/2021-March/021388.html] --- include/mk/env_post.mk | 2 +- include/mk/module.mk | 2 +- runtest/Makefile | 2 +- scenario_groups/Makefile | 2 +- testcases/commands/ldd/datafiles/Makefile | 2 +- testcases/kernel/hotplug/memory_hotplug/Makefile | 3 ++- testcases/kernel/io/disktest/Makefile | 2 +- testcases/kernel/io/disktest/Makefile.linux | 4 ++-- testcases/kernel/sched/hyperthreading/ht_affinity/Makefile | 2 +- testcases/kernel/sched/hyperthreading/ht_enabled/Makefile | 2 +- testcases/kernel/sched/sched_stress/Makefile | 2 +- testcases/kernel/syscalls/lchown/Makefile | 2 +- testcases/kernel/syscalls/migrate_pages/Makefile | 2 +- testcases/kernel/syscalls/move_pages/Makefile | 2 +- testcases/kernel/syscalls/utils/compat_16.mk | 2 +- testcases/kernel/syscalls/utils/newer_64.mk | 2 +- testcases/misc/math/float/Makefile | 2 +- testcases/network/nfs/nfs_stress/nfs05_make_tree.c | 4 ++-- testcases/network/nfsv4/locks/Makefile | 2 +- utils/sctp/func_tests/Makefile | 2 +- 20 files changed, 23 insertions(+), 22 deletions(-) diff --git a/include/mk/env_post.mk b/include/mk/env_post.mk index d52ad9f0b..1d22f9c53 100644 --- a/include/mk/env_post.mk +++ b/include/mk/env_post.mk @@ -47,7 +47,7 @@ LDFLAGS += -L$(top_builddir)/lib/android_libpthread LDFLAGS += -L$(top_builddir)/lib/android_librt endif -MAKE_TARGETS ?= $(notdir $(patsubst %.c,%,$(wildcard $(abs_srcdir)/*.c))) +MAKE_TARGETS ?= $(notdir $(patsubst %.c,%,$(sort $(wildcard $(abs_srcdir)/*.c)))) MAKE_TARGETS := $(filter-out $(FILTER_OUT_MAKE_TARGETS),$(MAKE_TARGETS)) # with only *.dwo, .[0-9]+.dwo can not be cleaned diff --git a/include/mk/module.mk b/include/mk/module.mk index 95fb8336a..6c8814b96 100644 --- a/include/mk/module.mk +++ b/include/mk/module.mk @@ -42,7 +42,7 @@ endif ifneq ($(filter install clean,$(MAKECMDGOALS)),) MAKE_TARGETS := $(filter-out %.ko, $(MAKE_TARGETS)) -MAKE_TARGETS += $(wildcard *.ko) +MAKE_TARGETS += $(sort $(wildcard *.ko)) endif CLEAN_TARGETS += .dep_modules *.mod built-in.a diff --git a/runtest/Makefile b/runtest/Makefile index b7caaee06..6a1565b6a 100644 --- a/runtest/Makefile +++ b/runtest/Makefile @@ -36,7 +36,7 @@ ifneq ($(WITH_POWER_MANAGEMENT_TESTSUITE),yes) UNWANTED_FILES += power_management_tests endif -INSTALL_TARGETS := $(filter-out $(UNWANTED_FILES),$(notdir $(patsubst $(abs_srcdir)/%,%,$(wildcard $(abs_srcdir)/*)))) +INSTALL_TARGETS := $(filter-out $(UNWANTED_FILES),$(notdir $(patsubst $(abs_srcdir)/%,%,$(sort $(wildcard $(abs_srcdir)/*))))) MAKE_TARGETS := diff --git a/scenario_groups/Makefile b/scenario_groups/Makefile index 2978675d9..fcbc92708 100644 --- a/scenario_groups/Makefile +++ b/scenario_groups/Makefile @@ -31,7 +31,7 @@ UNWANTED_FILES := Makefile INSTALL_MODE := 00644 -INSTALL_TARGETS := $(filter-out $(UNWANTED_FILES),$(notdir $(patsubst $(abs_srcdir)/%,%,$(wildcard $(abs_srcdir)/*)))) +INSTALL_TARGETS := $(filter-out $(UNWANTED_FILES),$(notdir $(patsubst $(abs_srcdir)/%,%,$(sort $(wildcard $(abs_srcdir)/*))))) MAKE_TARGETS := diff --git a/testcases/commands/ldd/datafiles/Makefile b/testcases/commands/ldd/datafiles/Makefile index d8bcf5c06..01c352052 100644 --- a/testcases/commands/ldd/datafiles/Makefile +++ b/testcases/commands/ldd/datafiles/Makefile @@ -21,7 +21,7 @@ CPPFLAGS += -fpic INSTALL_TARGETS := ldd*.so lddfile.out -LDD_C_FILES := $(wildcard $(abs_srcdir)/lddfile*.c) +LDD_C_FILES := $(sort $(wildcard $(abs_srcdir)/lddfile*.c)) LDD_SO_FILES := $(patsubst $(abs_srcdir)/%.c,%.obj.so,$(LDD_C_FILES)) MAKE_TARGETS := lddfile.out CLEAN_TARGETS += *.obj $(LDD_SO_FILES) diff --git a/testcases/kernel/hotplug/memory_hotplug/Makefile b/testcases/kernel/hotplug/memory_hotplug/Makefile index d1ba65e65..38a77a2ba 100644 --- a/testcases/kernel/hotplug/memory_hotplug/Makefile +++ b/testcases/kernel/hotplug/memory_hotplug/Makefile @@ -31,6 +31,7 @@ LDLIBS := $(filter-out -lltp,$(LDLIBS)) MAKE_TARGETS := memtoy -memtoy: $(patsubst $(abs_srcdir)/%.c,%.o,$(wildcard $(abs_srcdir)/*.c)) +memtoy: $(patsubst $(abs_srcdir)/%.c,%.o,$(sort $(wildcard $(abs_srcdir)/*.c))) + include $(top_srcdir)/include/mk/generic_leaf_target.mk diff --git a/testcases/kernel/io/disktest/Makefile b/testcases/kernel/io/disktest/Makefile index d10d98434..3a3a9cbf0 100644 --- a/testcases/kernel/io/disktest/Makefile +++ b/testcases/kernel/io/disktest/Makefile @@ -209,7 +209,7 @@ LDLIBS += -lpthread MAKE_TARGETS := disktest -OBJS := $(patsubst $(abs_srcdir)/%.c,%.o,$(wildcard $(abs_srcdir)/*.c)) +OBJS := $(patsubst $(abs_srcdir)/%.c,%.o,$(sort $(wildcard $(abs_srcdir)/*.c))) disktest-$(VER): mkdir -p "$@" diff --git a/testcases/kernel/io/disktest/Makefile.linux b/testcases/kernel/io/disktest/Makefile.linux index ea45b5a57..0f3aab622 100644 --- a/testcases/kernel/io/disktest/Makefile.linux +++ b/testcases/kernel/io/disktest/Makefile.linux @@ -167,8 +167,8 @@ mandir=/usr/share/man VER=`grep VER_STR main.h | awk -F\" '{print $$2}'` GBLHDRS=main.h globals.h defs.h -ALLHDRS=$(wildcard *.h) -SRCS=$(wildcard *.c) +ALLHDRS=$(sort $(wildcard *.h)) +SRCS=$(sort $(wildcard *.c)) OBJS=$(SRCS:.c=.o) CFLAGS += -g -Wall -O -D"LINUX" -D"_THREAD_SAFE" -D"_GNU_SOURCE" -D"_LARGE_FILES" -D"_LARGEFILE64_SOURCE" -D"_FILE_OFFSET_BITS=64" $(RPM_OPT_FLAGS) diff --git a/testcases/kernel/sched/hyperthreading/ht_affinity/Makefile b/testcases/kernel/sched/hyperthreading/ht_affinity/Makefile index 10fec96dc..6b64bd261 100644 --- a/testcases/kernel/sched/hyperthreading/ht_affinity/Makefile +++ b/testcases/kernel/sched/hyperthreading/ht_affinity/Makefile @@ -28,6 +28,6 @@ INSTALL_TARGETS := smt_smp_affinity.sh MAKE_TARGETS := ht_affinity -$(MAKE_TARGETS): $(patsubst $(abs_srcdir)/%.c,%.o,$(wildcard $(abs_srcdir)/*.c)) +$(MAKE_TARGETS): $(patsubst $(abs_srcdir)/%.c,%.o,$(sort $(wildcard $(abs_srcdir)/*.c))) include $(top_srcdir)/include/mk/generic_leaf_target.mk diff --git a/testcases/kernel/sched/hyperthreading/ht_enabled/Makefile b/testcases/kernel/sched/hyperthreading/ht_enabled/Makefile index 9c1e139d6..585ff1383 100644 --- a/testcases/kernel/sched/hyperthreading/ht_enabled/Makefile +++ b/testcases/kernel/sched/hyperthreading/ht_enabled/Makefile @@ -28,6 +28,6 @@ INSTALL_TARGETS := smt_smp_enabled.sh MAKE_TARGETS := ht_enabled -$(MAKE_TARGETS): $(patsubst $(abs_srcdir)/%.c,%.o,$(wildcard $(abs_srcdir)/*.c)) +$(MAKE_TARGETS): $(patsubst $(abs_srcdir)/%.c,%.o,$(sort $(wildcard $(abs_srcdir)/*.c))) include $(top_srcdir)/include/mk/generic_leaf_target.mk diff --git a/testcases/kernel/sched/sched_stress/Makefile b/testcases/kernel/sched/sched_stress/Makefile index b76126c73..4dbbf3477 100644 --- a/testcases/kernel/sched/sched_stress/Makefile +++ b/testcases/kernel/sched/sched_stress/Makefile @@ -10,7 +10,7 @@ INSTALL_TARGETS := sched_stress.sh LDLIBS += -lpthread -MAKE_TARGETS := $(filter-out sched,$(patsubst $(abs_srcdir)/%.c,%,$(wildcard $(abs_srcdir)/*.c))) +MAKE_TARGETS := $(filter-out sched,$(patsubst $(abs_srcdir)/%.c,%,$(sort $(wildcard $(abs_srcdir)/*.c)))) RM += -r diff --git a/testcases/kernel/syscalls/lchown/Makefile b/testcases/kernel/syscalls/lchown/Makefile index 13d39cb81..305fee281 100644 --- a/testcases/kernel/syscalls/lchown/Makefile +++ b/testcases/kernel/syscalls/lchown/Makefile @@ -5,7 +5,7 @@ top_srcdir ?= ../../../.. include $(top_srcdir)/include/mk/testcases.mk -SRCS := $(wildcard $(abs_srcdir)/lchown*.c) +SRCS := $(sort $(wildcard $(abs_srcdir)/lchown*.c)) include $(abs_srcdir)/../utils/compat_16.mk diff --git a/testcases/kernel/syscalls/migrate_pages/Makefile b/testcases/kernel/syscalls/migrate_pages/Makefile index 46912b025..9cf3ce526 100644 --- a/testcases/kernel/syscalls/migrate_pages/Makefile +++ b/testcases/kernel/syscalls/migrate_pages/Makefile @@ -5,7 +5,7 @@ top_srcdir ?= ../../../.. include $(top_srcdir)/include/mk/testcases.mk -MAKE_TARGETS := $(patsubst $(abs_srcdir)/%.c,%,$(wildcard $(abs_srcdir)/*[0-9].c)) +MAKE_TARGETS := $(patsubst $(abs_srcdir)/%.c,%,$(sort $(wildcard $(abs_srcdir)/*[0-9].c))) $(MAKE_TARGETS): %: migrate_pages_common.o CPPFLAGS += -I$(abs_srcdir)/../utils/ diff --git a/testcases/kernel/syscalls/move_pages/Makefile b/testcases/kernel/syscalls/move_pages/Makefile index cd7ff6349..4b22160ed 100644 --- a/testcases/kernel/syscalls/move_pages/Makefile +++ b/testcases/kernel/syscalls/move_pages/Makefile @@ -7,7 +7,7 @@ include $(top_srcdir)/include/mk/testcases.mk CPPFLAGS += -I$(abs_srcdir)/../utils -MAKE_TARGETS := $(patsubst $(abs_srcdir)/%.c,%,$(wildcard $(abs_srcdir)/*[0-9].c)) +MAKE_TARGETS := $(patsubst $(abs_srcdir)/%.c,%,$(sort $(wildcard $(abs_srcdir)/*[0-9].c))) $(MAKE_TARGETS): %: move_pages_support.o diff --git a/testcases/kernel/syscalls/utils/compat_16.mk b/testcases/kernel/syscalls/utils/compat_16.mk index a0ff8f558..e81a00c40 100644 --- a/testcases/kernel/syscalls/utils/compat_16.mk +++ b/testcases/kernel/syscalls/utils/compat_16.mk @@ -50,7 +50,7 @@ CPPFLAGS += -I$(abs_srcdir) -I$(abs_srcdir)/../utils -SRCS ?= $(wildcard $(abs_srcdir)/*.c) +SRCS ?= $(sort $(wildcard $(abs_srcdir)/*.c)) MAKE_TARGETS := $(notdir $(patsubst %.c,%,$(SRCS))) MAKE_TARGETS_OBJS_WO_COMPAT_16 := $(addsuffix .o,$(MAKE_TARGETS)) diff --git a/testcases/kernel/syscalls/utils/newer_64.mk b/testcases/kernel/syscalls/utils/newer_64.mk index 8cd7e03c8..5e798057a 100644 --- a/testcases/kernel/syscalls/utils/newer_64.mk +++ b/testcases/kernel/syscalls/utils/newer_64.mk @@ -25,7 +25,7 @@ CPPFLAGS += -I$(abs_srcdir) -I$(abs_srcdir)/../utils -SRCS ?= $(wildcard $(abs_srcdir)/*.c) +SRCS ?= $(sort $(wildcard $(abs_srcdir)/*.c)) MAKE_TARGETS := $(notdir $(patsubst %.c,%,$(SRCS))) diff --git a/testcases/misc/math/float/Makefile b/testcases/misc/math/float/Makefile index 79dda35d6..5f4cb0f6c 100644 --- a/testcases/misc/math/float/Makefile +++ b/testcases/misc/math/float/Makefile @@ -27,6 +27,6 @@ include $(top_srcdir)/include/mk/testcases.mk LDLIBS += -lpthread -lm # main.c doesn't compile... -MAKE_TARGETS := $(patsubst $(abs_srcdir)/%.c,%,$(wildcard $(abs_srcdir)/float*.c)) +MAKE_TARGETS := $(patsubst $(abs_srcdir)/%.c,%,$(sort $(wildcard $(abs_srcdir)/float*.c))) include $(top_srcdir)/include/mk/generic_trunk_target.mk diff --git a/testcases/network/nfs/nfs_stress/nfs05_make_tree.c b/testcases/network/nfs/nfs_stress/nfs05_make_tree.c index 12c86799d..23c520d9d 100644 --- a/testcases/network/nfs/nfs_stress/nfs05_make_tree.c +++ b/testcases/network/nfs/nfs_stress/nfs05_make_tree.c @@ -104,7 +104,7 @@ static void *thread_fn(LTP_ATTRIBUTE_UNUSED void *args) "\treturn 0;\n}\n"; const char make_buf_n[] = "CFLAGS := -O -w -g\n" - "SRCS=$(wildcard *.c)\n" + "SRCS=$(sort $(wildcard *.c))\n" "TARGETS=$(SRCS:.c=)\n" "all: $(TARGETS)\n" "$(TARGETS): %: %.c\n" @@ -114,7 +114,7 @@ static void *thread_fn(LTP_ATTRIBUTE_UNUSED void *args) const char make_buf[] = "CFLAGS := -O -w -g\n" "SUBDIR = dir\n" - "SRCS=$(wildcard *.c)\n" + "SRCS=$(sort $(wildcard *.c))\n" "TARGETS=$(SRCS:.c=)\n" "all: $(SUBDIR) $(TARGETS)\n" "$(TARGETS): %: %.c\n" diff --git a/testcases/network/nfsv4/locks/Makefile b/testcases/network/nfsv4/locks/Makefile index 5812dea3a..05941c892 100644 --- a/testcases/network/nfsv4/locks/Makefile +++ b/testcases/network/nfsv4/locks/Makefile @@ -28,6 +28,6 @@ MAKE_TARGETS := locktests LDLIBS += -lpthread -$(MAKE_TARGETS): $(patsubst $(abs_srcdir)/%.c,%.o,$(wildcard $(abs_srcdir)/*.c)) +$(MAKE_TARGETS): $(patsubst $(abs_srcdir)/%.c,%.o,$(sort $(wildcard $(abs_srcdir)/*.c))) include $(top_srcdir)/include/mk/generic_leaf_target.mk diff --git a/utils/sctp/func_tests/Makefile b/utils/sctp/func_tests/Makefile index d296c652a..a17107853 100644 --- a/utils/sctp/func_tests/Makefile +++ b/utils/sctp/func_tests/Makefile @@ -30,7 +30,7 @@ LDFLAGS += $(addprefix -L$(abs_builddir)/../,lib testlib) LDLIBS += -lsctputil -lsctp -lpthread -V4_TARGETS := $(patsubst $(abs_srcdir)/%.c,%,$(wildcard $(abs_srcdir)/*.c)) +V4_TARGETS := $(patsubst $(abs_srcdir)/%.c,%,$(sort $(wildcard $(abs_srcdir)/*.c))) V6_TARGETS := test_basic_v6 test_fragments_v6 test_getname_v6 \ test_inaddr_any_v6 test_peeloff_v6 \ -- 2.27.0