* [kvm-unit-tests PATCH 0/4] powerpc fix and misc docs/build/CI improvements
@ 2024-06-02 12:25 Nicholas Piggin
2024-06-02 12:25 ` [kvm-unit-tests PATCH 1/4] powerpc/sprs: Fix report_kfail call Nicholas Piggin
` (3 more replies)
0 siblings, 4 replies; 19+ messages in thread
From: Nicholas Piggin @ 2024-06-02 12:25 UTC (permalink / raw)
To: Thomas Huth; +Cc: Nicholas Piggin, Andrew Jones, kvm
This is some fixes and odd bits before I was going to resubmit the
remains of the powerpc series.
Patch 1 is a silly rebase bug. I thought I must have missed a warning
in the build noise, but no gcc just doesn't warn for string literal to
bool conversion.
Patch 2 is the doc fix updated according to feedback from Thomas
(main change, enumerate the other special groups).
Patch 3 is a quick hack to make build warnings more obvious. Thoughts?
Results can be seen here
https://gitlab.com/npiggin/kvm-unit-tests/-/pipelines/1314895857
Patch 4, after debugging something with CI, it doesn't seem to save the
test logs on failure. I can't drive gitlab CI very well but this seemed
to fix it.
Thanks,
Nick
Nicholas Piggin (4):
powerpc/sprs: Fix report_kfail call
doc: update unittests doc
build: Make build output pretty
gitlab-ci: Always save artifacts
.gitlab-ci.yml | 5 +++++
Makefile | 14 ++++++++++++++
arm/Makefile.common | 7 +++++++
docs/unittests.txt | 11 ++++++++---
powerpc/Makefile.common | 11 +++++++----
powerpc/sprs.c | 2 +-
riscv/Makefile | 5 +++++
s390x/Makefile | 18 +++++++++++++++++-
scripts/mkstandalone.sh | 2 +-
x86/Makefile.common | 5 +++++
10 files changed, 70 insertions(+), 10 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 19+ messages in thread* [kvm-unit-tests PATCH 1/4] powerpc/sprs: Fix report_kfail call 2024-06-02 12:25 [kvm-unit-tests PATCH 0/4] powerpc fix and misc docs/build/CI improvements Nicholas Piggin @ 2024-06-02 12:25 ` Nicholas Piggin 2024-06-03 4:22 ` Thomas Huth 2024-06-02 12:25 ` [kvm-unit-tests PATCH 2/4] doc: update unittests doc Nicholas Piggin ` (2 subsequent siblings) 3 siblings, 1 reply; 19+ messages in thread From: Nicholas Piggin @ 2024-06-02 12:25 UTC (permalink / raw) To: Thomas Huth; +Cc: Nicholas Piggin, Andrew Jones, kvm Parameters to report_kfail are wrong. String to bool conversion is not warned by gcc, and printf format did not catch it due to string variable being passed at the format location. Fixes: 8f6290f0e6 ("powerpc/sprs: Specify SPRs with data rather than code") Signed-off-by: Nicholas Piggin <npiggin@gmail.com> --- powerpc/sprs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerpc/sprs.c b/powerpc/sprs.c index de9e87a21..33872136d 100644 --- a/powerpc/sprs.c +++ b/powerpc/sprs.c @@ -590,7 +590,7 @@ int main(int argc, char **argv) if (sprs[i].width == 32 && !(before[i] >> 32) && !(after[i] >> 32)) { /* known failure KVM migration of CTRL */ - report_kfail(true && i == 136, + report_kfail(i == 136, pass, "%-10s(%4d):\t 0x%08lx <==> 0x%08lx", sprs[i].name, i, before[i], after[i]); -- 2.43.0 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [kvm-unit-tests PATCH 1/4] powerpc/sprs: Fix report_kfail call 2024-06-02 12:25 ` [kvm-unit-tests PATCH 1/4] powerpc/sprs: Fix report_kfail call Nicholas Piggin @ 2024-06-03 4:22 ` Thomas Huth 0 siblings, 0 replies; 19+ messages in thread From: Thomas Huth @ 2024-06-03 4:22 UTC (permalink / raw) To: Nicholas Piggin; +Cc: Andrew Jones, kvm On 02/06/2024 14.25, Nicholas Piggin wrote: > Parameters to report_kfail are wrong. String to bool conversion is not > warned by gcc, and printf format did not catch it due to string variable > being passed at the format location. > > Fixes: 8f6290f0e6 ("powerpc/sprs: Specify SPRs with data rather than code") > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > --- > powerpc/sprs.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/powerpc/sprs.c b/powerpc/sprs.c > index de9e87a21..33872136d 100644 > --- a/powerpc/sprs.c > +++ b/powerpc/sprs.c > @@ -590,7 +590,7 @@ int main(int argc, char **argv) > > if (sprs[i].width == 32 && !(before[i] >> 32) && !(after[i] >> 32)) { > /* known failure KVM migration of CTRL */ > - report_kfail(true && i == 136, > + report_kfail(i == 136, pass, > "%-10s(%4d):\t 0x%08lx <==> 0x%08lx", > sprs[i].name, i, > before[i], after[i]); Reviewed-by: Thomas Huth <thuth@redhat.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
* [kvm-unit-tests PATCH 2/4] doc: update unittests doc 2024-06-02 12:25 [kvm-unit-tests PATCH 0/4] powerpc fix and misc docs/build/CI improvements Nicholas Piggin 2024-06-02 12:25 ` [kvm-unit-tests PATCH 1/4] powerpc/sprs: Fix report_kfail call Nicholas Piggin @ 2024-06-02 12:25 ` Nicholas Piggin 2024-06-03 4:24 ` Thomas Huth 2024-06-03 6:47 ` Andrew Jones 2024-06-02 12:25 ` [kvm-unit-tests PATCH 3/4] build: Make build output pretty Nicholas Piggin 2024-06-02 12:25 ` [kvm-unit-tests PATCH 4/4] gitlab-ci: Always save artifacts Nicholas Piggin 3 siblings, 2 replies; 19+ messages in thread From: Nicholas Piggin @ 2024-06-02 12:25 UTC (permalink / raw) To: Thomas Huth; +Cc: Nicholas Piggin, Andrew Jones, kvm Document the special groups, check path restrictions, and a small fix for check option syntax. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> --- docs/unittests.txt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/unittests.txt b/docs/unittests.txt index 6ff9872cf..509c529d7 100644 --- a/docs/unittests.txt +++ b/docs/unittests.txt @@ -69,8 +69,11 @@ groups groups = <group_name1> <group_name2> ... Used to group the test cases for the `run_tests.sh -g ...` run group -option. Adding a test to the nodefault group will cause it to not be -run by default. +option. The group name is arbitrary, except for these special groups: +- Tests in the "nodefault" group are not run by default (with no -g option). +- Tests in the "migration" group are run with the migration harness and + expects the test to make migrate_*() calls. +- Tests in the "panic" group expect QEMU to enter the GUEST_PANICKED state. accel ----- @@ -89,8 +92,10 @@ Optional timeout in seconds, after which the test will be killed and fail. check ----- -check = <path>=<<value> +check = <path>=<value> Check a file for a particular value before running a test. The check line can contain multiple files to check separated by a space, but each check parameter needs to be of the form <path>=<value> + +The path and value can not contain space, =, or shell wildcard characters. -- 2.43.0 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [kvm-unit-tests PATCH 2/4] doc: update unittests doc 2024-06-02 12:25 ` [kvm-unit-tests PATCH 2/4] doc: update unittests doc Nicholas Piggin @ 2024-06-03 4:24 ` Thomas Huth 2024-06-03 6:47 ` Andrew Jones 1 sibling, 0 replies; 19+ messages in thread From: Thomas Huth @ 2024-06-03 4:24 UTC (permalink / raw) To: Nicholas Piggin; +Cc: Andrew Jones, kvm On 02/06/2024 14.25, Nicholas Piggin wrote: > Document the special groups, check path restrictions, and a small fix > for check option syntax. > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > --- > docs/unittests.txt | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) Reviewed-by: Thomas Huth <thuth@redhat.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [kvm-unit-tests PATCH 2/4] doc: update unittests doc 2024-06-02 12:25 ` [kvm-unit-tests PATCH 2/4] doc: update unittests doc Nicholas Piggin 2024-06-03 4:24 ` Thomas Huth @ 2024-06-03 6:47 ` Andrew Jones 2024-06-03 8:12 ` Nicholas Piggin 1 sibling, 1 reply; 19+ messages in thread From: Andrew Jones @ 2024-06-03 6:47 UTC (permalink / raw) To: Nicholas Piggin; +Cc: Thomas Huth, kvm On Sun, Jun 02, 2024 at 10:25:56PM GMT, Nicholas Piggin wrote: > Document the special groups, check path restrictions, and a small fix > for check option syntax. > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > --- > docs/unittests.txt | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/docs/unittests.txt b/docs/unittests.txt > index 6ff9872cf..509c529d7 100644 > --- a/docs/unittests.txt > +++ b/docs/unittests.txt > @@ -69,8 +69,11 @@ groups > groups = <group_name1> <group_name2> ... > > Used to group the test cases for the `run_tests.sh -g ...` run group > -option. Adding a test to the nodefault group will cause it to not be > -run by default. > +option. The group name is arbitrary, except for these special groups: > +- Tests in the "nodefault" group are not run by default (with no -g option). > +- Tests in the "migration" group are run with the migration harness and > + expects the test to make migrate_*() calls. expect make migrate_*() calls. > +- Tests in the "panic" group expect QEMU to enter the GUEST_PANICKED state. > > accel > ----- > @@ -89,8 +92,10 @@ Optional timeout in seconds, after which the test will be killed and fail. > > check > ----- > -check = <path>=<<value> > +check = <path>=<value> > > Check a file for a particular value before running a test. The check line > can contain multiple files to check separated by a space, but each check > parameter needs to be of the form <path>=<value> > + > +The path and value can not contain space, =, or shell wildcard characters. cannot Otherwise, Reviewed-by: Andrew Jones <andrew.jones@linux.dev> Thanks, drew ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [kvm-unit-tests PATCH 2/4] doc: update unittests doc 2024-06-03 6:47 ` Andrew Jones @ 2024-06-03 8:12 ` Nicholas Piggin 2024-06-03 8:45 ` Andrew Jones 0 siblings, 1 reply; 19+ messages in thread From: Nicholas Piggin @ 2024-06-03 8:12 UTC (permalink / raw) To: Andrew Jones; +Cc: Thomas Huth, kvm On Mon Jun 3, 2024 at 4:47 PM AEST, Andrew Jones wrote: > On Sun, Jun 02, 2024 at 10:25:56PM GMT, Nicholas Piggin wrote: > > Document the special groups, check path restrictions, and a small fix > > for check option syntax. > > > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > > --- > > docs/unittests.txt | 11 ++++++++--- > > 1 file changed, 8 insertions(+), 3 deletions(-) > > > > diff --git a/docs/unittests.txt b/docs/unittests.txt > > index 6ff9872cf..509c529d7 100644 > > --- a/docs/unittests.txt > > +++ b/docs/unittests.txt > > @@ -69,8 +69,11 @@ groups > > groups = <group_name1> <group_name2> ... > > > > Used to group the test cases for the `run_tests.sh -g ...` run group > > -option. Adding a test to the nodefault group will cause it to not be > > -run by default. > > +option. The group name is arbitrary, except for these special groups: > > +- Tests in the "nodefault" group are not run by default (with no -g option). > > +- Tests in the "migration" group are run with the migration harness and > > + expects the test to make migrate_*() calls. > > expect make migrate_*() calls. Not sure if I follow you, but the grammar does sound a bit off now that I read it back. Is this better? "... are run with the migration harness and are expected to make migrate_*() calls." or "... are run with the migration harness, which expects them to make migrate_*() calls." > > > +- Tests in the "panic" group expect QEMU to enter the GUEST_PANICKED state. > > > > accel > > ----- > > @@ -89,8 +92,10 @@ Optional timeout in seconds, after which the test will be killed and fail. > > > > check > > ----- > > -check = <path>=<<value> > > +check = <path>=<value> > > > > Check a file for a particular value before running a test. The check line > > can contain multiple files to check separated by a space, but each check > > parameter needs to be of the form <path>=<value> > > + > > +The path and value can not contain space, =, or shell wildcard characters. > > cannot Huh, seems that is the more usual and formal form. I dind't know that. Thanks, Nick > > Otherwise, > > Reviewed-by: Andrew Jones <andrew.jones@linux.dev> > > Thanks, > drew ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [kvm-unit-tests PATCH 2/4] doc: update unittests doc 2024-06-03 8:12 ` Nicholas Piggin @ 2024-06-03 8:45 ` Andrew Jones 0 siblings, 0 replies; 19+ messages in thread From: Andrew Jones @ 2024-06-03 8:45 UTC (permalink / raw) To: Nicholas Piggin; +Cc: Thomas Huth, kvm On Mon, Jun 03, 2024 at 06:12:05PM GMT, Nicholas Piggin wrote: > On Mon Jun 3, 2024 at 4:47 PM AEST, Andrew Jones wrote: > > On Sun, Jun 02, 2024 at 10:25:56PM GMT, Nicholas Piggin wrote: > > > Document the special groups, check path restrictions, and a small fix > > > for check option syntax. > > > > > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > > > --- > > > docs/unittests.txt | 11 ++++++++--- > > > 1 file changed, 8 insertions(+), 3 deletions(-) > > > > > > diff --git a/docs/unittests.txt b/docs/unittests.txt > > > index 6ff9872cf..509c529d7 100644 > > > --- a/docs/unittests.txt > > > +++ b/docs/unittests.txt > > > @@ -69,8 +69,11 @@ groups > > > groups = <group_name1> <group_name2> ... > > > > > > Used to group the test cases for the `run_tests.sh -g ...` run group > > > -option. Adding a test to the nodefault group will cause it to not be > > > -run by default. > > > +option. The group name is arbitrary, except for these special groups: > > > +- Tests in the "nodefault" group are not run by default (with no -g option). > > > +- Tests in the "migration" group are run with the migration harness and > > > + expects the test to make migrate_*() calls. > > > > expect make migrate_*() calls. > > Not sure if I follow you, but the grammar does sound a bit off now that > I read it back. Is this better? > > "... are run with the migration harness and are expected to make > migrate_*() calls." This one looks good to me. Thanks, drew > > or > > "... are run with the migration harness, which expects them to make > migrate_*() calls." > > > > > > +- Tests in the "panic" group expect QEMU to enter the GUEST_PANICKED state. > > > > > > accel > > > ----- > > > @@ -89,8 +92,10 @@ Optional timeout in seconds, after which the test will be killed and fail. > > > > > > check > > > ----- > > > -check = <path>=<<value> > > > +check = <path>=<value> > > > > > > Check a file for a particular value before running a test. The check line > > > can contain multiple files to check separated by a space, but each check > > > parameter needs to be of the form <path>=<value> > > > + > > > +The path and value can not contain space, =, or shell wildcard characters. > > > > cannot > > Huh, seems that is the more usual and formal form. I dind't know that. > > Thanks, > Nick > > > > > Otherwise, > > > > Reviewed-by: Andrew Jones <andrew.jones@linux.dev> > > > > Thanks, > > drew > ^ permalink raw reply [flat|nested] 19+ messages in thread
* [kvm-unit-tests PATCH 3/4] build: Make build output pretty 2024-06-02 12:25 [kvm-unit-tests PATCH 0/4] powerpc fix and misc docs/build/CI improvements Nicholas Piggin 2024-06-02 12:25 ` [kvm-unit-tests PATCH 1/4] powerpc/sprs: Fix report_kfail call Nicholas Piggin 2024-06-02 12:25 ` [kvm-unit-tests PATCH 2/4] doc: update unittests doc Nicholas Piggin @ 2024-06-02 12:25 ` Nicholas Piggin 2024-06-03 7:00 ` Andrew Jones 2024-06-03 8:26 ` Thomas Huth 2024-06-02 12:25 ` [kvm-unit-tests PATCH 4/4] gitlab-ci: Always save artifacts Nicholas Piggin 3 siblings, 2 replies; 19+ messages in thread From: Nicholas Piggin @ 2024-06-02 12:25 UTC (permalink / raw) To: Thomas Huth; +Cc: Nicholas Piggin, Andrew Jones, kvm Unless make V=1 is specified, silence make recipe echoing and print an abbreviated line for major build steps. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> --- Makefile | 14 ++++++++++++++ arm/Makefile.common | 7 +++++++ powerpc/Makefile.common | 11 +++++++---- riscv/Makefile | 5 +++++ s390x/Makefile | 18 +++++++++++++++++- scripts/mkstandalone.sh | 2 +- x86/Makefile.common | 5 +++++ 7 files changed, 56 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 5b7998b79..cbb2fdbf1 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,11 @@ include config.mak # Set search path for all sources VPATH = $(SRCDIR) +V=0 +ifeq ($V, 0) +.SILENT: +endif + libdirs-get = $(shell [ -d "lib/$(1)" ] && echo "lib/$(1) lib/$(1)/asm") ARCH_LIBDIRS := $(call libdirs-get,$(ARCH_LIBDIR)) $(call libdirs-get,$(TEST_DIR)) OBJDIRS := $(ARCH_LIBDIRS) @@ -95,11 +100,13 @@ autodepend-flags = -MMD -MP -MF $(dir $*).$(notdir $*).d LDFLAGS += -nostdlib $(no_pie) -z noexecstack $(libcflat): $(cflatobjs) + @echo " [AR] $@" $(AR) rcs $@ $^ include $(LIBFDT_srcdir)/Makefile.libfdt $(LIBFDT_archive): CFLAGS += -ffreestanding -I $(SRCDIR)/lib -I $(SRCDIR)/lib/libfdt -Wno-sign-compare $(LIBFDT_archive): $(addprefix $(LIBFDT_objdir)/,$(LIBFDT_OBJS)) + @echo " [AR] $@" $(AR) rcs $@ $^ libfdt_clean: VECHO = echo " " @@ -112,7 +119,12 @@ libfdt_clean: SHAREDLIB_EXT = so directories: @mkdir -p $(OBJDIRS) +%.o: %.c + @echo " [CC] $@" + $(CC) $(CFLAGS) -c -nostdlib -o $@ $< + %.o: %.S + @echo " [AS] $@" $(CC) $(CFLAGS) -c -nostdlib -o $@ $< -include */.*.d */*/.*.d @@ -123,6 +135,7 @@ standalone: all @scripts/mkstandalone.sh install: standalone + @echo " [INSTALL] tests -> $(DESTDIR)" mkdir -p $(DESTDIR) install tests/* $(DESTDIR) @@ -136,6 +149,7 @@ distclean: clean cscope: cscope_dirs = lib lib/libfdt lib/linux $(TEST_DIR) $(ARCH_LIBDIRS) lib/asm-generic cscope: + @echo " [CSCOPE]" $(RM) ./cscope.* find -L $(cscope_dirs) -maxdepth 1 \ -name '*.[chsS]' -exec realpath --relative-base=$(CURDIR) {} \; | sort -u > ./cscope.files diff --git a/arm/Makefile.common b/arm/Makefile.common index f828dbe01..9d6b31239 100644 --- a/arm/Makefile.common +++ b/arm/Makefile.common @@ -73,15 +73,18 @@ FLATLIBS = $(libcflat) $(LIBFDT_archive) $(libeabi) ifeq ($(CONFIG_EFI),y) %.aux.o: $(SRCDIR)/lib/auxinfo.c + @echo " [CC] $@" $(CC) $(CFLAGS) -c -o $@ $< \ -DPROGNAME=\"$(@:.aux.o=.efi)\" -DAUXFLAGS=$(AUXFLAGS) %.so: EFI_LDFLAGS += -defsym=EFI_SUBSYSTEM=0xa --no-undefined %.so: %.o $(FLATLIBS) $(SRCDIR)/arm/efi/elf_aarch64_efi.lds $(cstart.o) %.aux.o + @echo " [LD] $@" $(LD) $(EFI_LDFLAGS) -o $@ -T $(SRCDIR)/arm/efi/elf_aarch64_efi.lds \ $(filter %.o, $^) $(FLATLIBS) $(EFI_LIBS) %.efi: %.so + @echo " [OBJCOPY] $@" $(call arch_elf_check, $^) $(OBJCOPY) --only-keep-debug $^ $@.debug $(OBJCOPY) --strip-debug $^ @@ -93,22 +96,26 @@ ifeq ($(CONFIG_EFI),y) -O binary $^ $@ else %.aux.o: $(SRCDIR)/lib/auxinfo.c + @echo " [CC] $@" $(CC) $(CFLAGS) -c -o $@ $< \ -DPROGNAME=\"$(@:.aux.o=.flat)\" -DAUXFLAGS=$(AUXFLAGS) %.elf: LDFLAGS += $(arch_LDFLAGS) %.elf: %.o $(FLATLIBS) $(SRCDIR)/arm/flat.lds $(cstart.o) %.aux.o + @echo " [LD] $@" $(LD) $(LDFLAGS) -o $@ -T $(SRCDIR)/arm/flat.lds \ $(filter %.o, $^) $(FLATLIBS) @chmod a-x $@ %.flat: %.elf + @echo " [OBJCOPY] $@" $(call arch_elf_check, $^) $(OBJCOPY) -O binary $^ $@ @chmod a-x $@ endif $(libeabi): $(eabiobjs) + @echo " [AR] $@" $(AR) rcs $@ $^ arm_clean: asm_offsets_clean diff --git a/powerpc/Makefile.common b/powerpc/Makefile.common index 68165fc25..b0af9fc00 100644 --- a/powerpc/Makefile.common +++ b/powerpc/Makefile.common @@ -51,31 +51,34 @@ cflatobjs += lib/powerpc/smp.o OBJDIRS += lib/powerpc %.aux.o: $(SRCDIR)/lib/auxinfo.c + @echo " [LD] $@" $(CC) $(CFLAGS) -c -o $@ $< -DPROGNAME=\"$(@:.aux.o=.elf)\" FLATLIBS = $(libcflat) $(LIBFDT_archive) %.elf: CFLAGS += $(arch_CFLAGS) %.elf: LDFLAGS += $(arch_LDFLAGS) -pie -n %.elf: %.o $(FLATLIBS) $(SRCDIR)/powerpc/flat.lds $(cstart.o) $(reloc.o) %.aux.o + @echo " [LD] $@" $(LD) $(LDFLAGS) -o $@ \ -T $(SRCDIR)/powerpc/flat.lds --build-id=none \ $(filter %.o, $^) $(FLATLIBS) @chmod a-x $@ - @echo -n Checking $@ for unsupported reloc types... @if $(OBJDUMP) -R $@ | grep R_ | grep -v R_PPC64_RELATIVE; then \ + @echo "Unsupported reloc types in $@" \ false; \ - else \ - echo " looks good."; \ fi $(TEST_DIR)/boot_rom.bin: $(TEST_DIR)/boot_rom.elf - dd if=/dev/zero of=$@ bs=256 count=1 + @echo " [DD] $@" + dd if=/dev/zero of=$@ bs=256 count=1 status=none + @echo " [OBJCOPY] $@" $(OBJCOPY) -O binary $^ $@.tmp cat $@.tmp >> $@ $(RM) $@.tmp $(TEST_DIR)/boot_rom.elf: CFLAGS = -mbig-endian $(TEST_DIR)/boot_rom.elf: $(TEST_DIR)/boot_rom.o + @echo " [LD] $@" $(LD) -EB -nostdlib -Ttext=0x100 --entry=start --build-id=none -o $@ $< @chmod a-x $@ diff --git a/riscv/Makefile b/riscv/Makefile index 919a3ebb5..ca33d4960 100644 --- a/riscv/Makefile +++ b/riscv/Makefile @@ -82,6 +82,7 @@ asm-offsets = lib/riscv/asm-offsets.h include $(SRCDIR)/scripts/asm-offsets.mak %.aux.o: $(SRCDIR)/lib/auxinfo.c + @echo " [CC] $@" $(CC) $(CFLAGS) -c -o $@ $< \ -DPROGNAME=\"$(notdir $(@:.aux.o=.$(exe)))\" -DAUXFLAGS=$(AUXFLAGS) @@ -96,10 +97,12 @@ cflatobjs += lib/efi.o %.so: EFI_LDFLAGS += -defsym=EFI_SUBSYSTEM=0xa --no-undefined %.so: %.o $(FLATLIBS) $(SRCDIR)/riscv/efi/elf_riscv64_efi.lds $(cstart.o) %.aux.o + @echo " [LD] $@" $(LD) $(EFI_LDFLAGS) -o $@ -T $(SRCDIR)/riscv/efi/elf_riscv64_efi.lds \ $(filter %.o, $^) $(FLATLIBS) $(EFI_LIBS) %.efi: %.so + @echo " [OBJCOPY] $@" $(call arch_elf_check, $^) $(OBJCOPY) --only-keep-debug $^ $@.debug $(OBJCOPY) --strip-debug $^ @@ -112,11 +115,13 @@ cflatobjs += lib/efi.o else %.elf: LDFLAGS += -pie -n -z notext %.elf: %.o $(FLATLIBS) $(SRCDIR)/riscv/flat.lds $(cstart.o) %.aux.o + @echo " [LD] $@" $(LD) $(LDFLAGS) -o $@ -T $(SRCDIR)/riscv/flat.lds \ $(filter %.o, $^) $(FLATLIBS) @chmod a-x $@ %.flat: %.elf + @echo " [OBJCOPY] $@" $(call arch_elf_check, $^) $(OBJCOPY) -O binary $^ $@ @chmod a-x $@ diff --git a/s390x/Makefile b/s390x/Makefile index 8603a523c..19c41a2ec 100644 --- a/s390x/Makefile +++ b/s390x/Makefile @@ -148,42 +148,54 @@ endif # the asm/c snippets %.o have additional generated files as dependencies $(SNIPPET_DIR)/asm/%.o: $(SNIPPET_DIR)/asm/%.S $(asm-offsets) + @echo " [CC] $@" $(CC) $(CFLAGS) -c -nostdlib -o $@ $< $(SNIPPET_DIR)/c/%.o: $(SNIPPET_DIR)/c/%.c $(asm-offsets) + @echo " [CC] $@" $(CC) $(CFLAGS) -c -nostdlib -o $@ $< $(SNIPPET_DIR)/asm/%.gbin: $(SNIPPET_DIR)/asm/%.o $(SNIPPET_DIR)/asm/flat.lds + @echo " [LD] $@" $(CC) $(LDFLAGS) -o $@ -T $(SNIPPET_DIR)/asm/flat.lds $< + @echo " [OBJCOPY] $@" $(OBJCOPY) -O binary -j ".rodata" -j ".lowcore" -j ".text" -j ".data" -j ".bss" --set-section-flags .bss=alloc,load,contents $@ $@ truncate -s '%4096' $@ $(SNIPPET_DIR)/c/%.gbin: $(SNIPPET_DIR)/c/%.o $(snippet_lib) $(FLATLIBS) $(SNIPPET_DIR)/c/flat.lds + @echo " [LD] $@" $(CC) $(LDFLAGS) -o $@ -T $(SNIPPET_DIR)/c/flat.lds $< $(snippet_lib) $(FLATLIBS) + @echo " [OBJCOPY] $@" $(OBJCOPY) -O binary -j ".rodata" -j ".lowcore" -j ".text" -j ".data" -j ".bss" --set-section-flags .bss=alloc,load,contents $@ $@ truncate -s '%4096' $@ %.hdr: %.gbin $(HOST_KEY_DOCUMENT) + @echo " [SEHDR ] $@" $(GEN_SE_HEADER) -k $(HOST_KEY_DOCUMENT) -c $<,0x0,0x00000000000000420000000000000000 --psw-addr 0x4000 -o $@ .SECONDARY: %.gobj: %.gbin + @echo " [OBJCOPY] $@" $(OBJCOPY) -I binary -O elf64-s390 -B "s390:64-bit" $< $@ .SECONDARY: %.hdr.obj: %.hdr + @echo " [OBJCOPY] $@" $(OBJCOPY) -I binary -O elf64-s390 -B "s390:64-bit" $< $@ lds-autodepend-flags = -MMD -MF $(dir $*).$(notdir $*).d -MT $@ %.lds: %.lds.S $(asm-offsets) + @echo " [CPP] $@" $(CPP) $(lds-autodepend-flags) $(CPPFLAGS) -P -C -o $@ $< %.aux.o: $(SRCDIR)/lib/auxinfo.c + @echo " [CC] $@" $(CC) $(CFLAGS) -c -o $@ $< -DPROGNAME=\"$(@:.aux.o=.elf)\" .SECONDEXPANSION: %.elf: $(FLATLIBS) $(asmlib) $(SRCDIR)/s390x/flat.lds $$(snippets-obj) $$(snippet-hdr-obj) %.o %.aux.o - @$(CC) $(LDFLAGS) -o $@ -T $(SRCDIR)/s390x/flat.lds \ + @echo " [CC] $@" + $(CC) $(LDFLAGS) -o $@ -T $(SRCDIR)/s390x/flat.lds \ $(filter %.o, $^) $(FLATLIBS) $(snippets-obj) $(snippet-hdr-obj) || \ { echo "Failure probably caused by missing definition of gen-se-header executable"; exit 1; } @chmod a-x $@ @@ -192,9 +204,11 @@ lds-autodepend-flags = -MMD -MF $(dir $*).$(notdir $*).d -MT $@ # 32 bytes of key material, uses existing one if available comm-key = $(TEST_DIR)/comm.key $(comm-key): + @echo " [DD] $@" dd if=/dev/urandom of=$@ bs=32 count=1 status=none %.bin: %.elf + @echo " [OBJCOPY] $@" $(OBJCOPY) -O binary $< $@ # The genprotimg arguments for the cck changed over time so we need to @@ -216,10 +230,12 @@ endif $(patsubst %.parmfile,%.pv.bin,$(wildcard s390x/*.parmfile)): %.pv.bin: %.parmfile %.pv.bin: %.bin $(HOST_KEY_DOCUMENT) $(comm-key) + @echo " [GENPROT] $@" $(eval parmfile_args = $(if $(filter %.parmfile,$^),--parmfile $(filter %.parmfile,$^),)) $(GENPROTIMG) --host-key-document $(HOST_KEY_DOCUMENT) --no-verify $(GENPROTIMG_COMM_OPTION) $(comm-key) --x-pcf $(GENPROTIMG_PCF) $(parmfile_args) --image $(filter %.bin,$^) -o $@ $(snippet_asmlib): $$(patsubst %.o,%.S,$$@) $(asm-offsets) + @echo " [CC] $@" $(CC) $(CFLAGS) -c -nostdlib -o $@ $< diff --git a/scripts/mkstandalone.sh b/scripts/mkstandalone.sh index 2318a85f0..3307c25b1 100755 --- a/scripts/mkstandalone.sh +++ b/scripts/mkstandalone.sh @@ -94,7 +94,7 @@ function mkstandalone() generate_test "$@" > $standalone chmod +x $standalone - echo Written $standalone. + echo " [WRITE] $standalone" } if [ "$ENVIRON_DEFAULT" = "yes" ] && [ "$ERRATATXT" ] && [ ! -f "$ERRATATXT" ]; then diff --git a/x86/Makefile.common b/x86/Makefile.common index 4ae9a5579..96fb0660c 100644 --- a/x86/Makefile.common +++ b/x86/Makefile.common @@ -49,11 +49,13 @@ ifeq ($(CONFIG_EFI),y) .PRECIOUS: %.efi %.so %.so: %.o $(FLATLIBS) $(SRCDIR)/x86/efi/elf_x86_64_efi.lds $(cstart.o) + @echo " [LD] $@" $(LD) -T $(SRCDIR)/x86/efi/elf_x86_64_efi.lds $(EFI_LDFLAGS) -o $@ \ $(filter %.o, $^) $(FLATLIBS) @chmod a-x $@ %.efi: %.so + @echo " [OBJCOPY] $@" $(OBJCOPY) --only-keep-debug $^ $@.debug $(OBJCOPY) --strip-debug $^ $(OBJCOPY) --add-gnu-debuglink=$@.debug $^ @@ -67,11 +69,13 @@ else %.elf: LDFLAGS += $(arch_LDFLAGS) %.elf: %.o $(FLATLIBS) $(SRCDIR)/x86/flat.lds $(cstart.o) + @echo " [LD] $@" $(LD) $(LDFLAGS) -T $(SRCDIR)/x86/flat.lds -o $@ \ $(filter %.o, $^) $(FLATLIBS) @chmod a-x $@ %.flat: %.elf + @echo " [OBJCOPY] $@" $(OBJCOPY) -O elf32-i386 $^ $@ @chmod a-x $@ endif @@ -104,6 +108,7 @@ test_cases: $(tests-common) $(tests) $(TEST_DIR)/%.o: CFLAGS += -std=gnu99 -ffreestanding -I $(SRCDIR)/lib -I $(SRCDIR)/lib/x86 -I lib $(TEST_DIR)/realmode.elf: $(TEST_DIR)/realmode.o + @echo " [LD] $@" $(LD) -m elf_i386 -nostdlib -o $@ \ -T $(SRCDIR)/$(TEST_DIR)/realmode.lds $^ -- 2.43.0 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [kvm-unit-tests PATCH 3/4] build: Make build output pretty 2024-06-02 12:25 ` [kvm-unit-tests PATCH 3/4] build: Make build output pretty Nicholas Piggin @ 2024-06-03 7:00 ` Andrew Jones 2024-06-03 8:26 ` Thomas Huth 1 sibling, 0 replies; 19+ messages in thread From: Andrew Jones @ 2024-06-03 7:00 UTC (permalink / raw) To: Nicholas Piggin; +Cc: Thomas Huth, kvm On Sun, Jun 02, 2024 at 10:25:57PM GMT, Nicholas Piggin wrote: > Unless make V=1 is specified, silence make recipe echoing and print > an abbreviated line for major build steps. > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > --- > Makefile | 14 ++++++++++++++ > arm/Makefile.common | 7 +++++++ > powerpc/Makefile.common | 11 +++++++---- > riscv/Makefile | 5 +++++ > s390x/Makefile | 18 +++++++++++++++++- > scripts/mkstandalone.sh | 2 +- > x86/Makefile.common | 5 +++++ > 7 files changed, 56 insertions(+), 6 deletions(-) Reviewed-by: Andrew Jones <andrew.jones@linux.dev> ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [kvm-unit-tests PATCH 3/4] build: Make build output pretty 2024-06-02 12:25 ` [kvm-unit-tests PATCH 3/4] build: Make build output pretty Nicholas Piggin 2024-06-03 7:00 ` Andrew Jones @ 2024-06-03 8:26 ` Thomas Huth 2024-06-03 8:56 ` Andrew Jones 2024-06-04 5:05 ` Nicholas Piggin 1 sibling, 2 replies; 19+ messages in thread From: Thomas Huth @ 2024-06-03 8:26 UTC (permalink / raw) To: Nicholas Piggin; +Cc: Andrew Jones, kvm On 02/06/2024 14.25, Nicholas Piggin wrote: > Unless make V=1 is specified, silence make recipe echoing and print > an abbreviated line for major build steps. > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > --- > Makefile | 14 ++++++++++++++ > arm/Makefile.common | 7 +++++++ > powerpc/Makefile.common | 11 +++++++---- > riscv/Makefile | 5 +++++ > s390x/Makefile | 18 +++++++++++++++++- > scripts/mkstandalone.sh | 2 +- > x86/Makefile.common | 5 +++++ > 7 files changed, 56 insertions(+), 6 deletions(-) The short lines look superfluous in verbose mode, e.g.: [OBJCOPY] s390x/memory-verify.bin objcopy -O binary s390x/memory-verify.elf s390x/memory-verify.bin Could we somehow suppress the echo lines in verbose mode, please? For example in the SLOF project, it's done like this: https://gitlab.com/slof/slof/-/blob/master/make.rules?ref_type=heads#L48 By putting the logic into $CC and friends, you also don't have to add "@echo" statements all over the place. Thomas ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [kvm-unit-tests PATCH 3/4] build: Make build output pretty 2024-06-03 8:26 ` Thomas Huth @ 2024-06-03 8:56 ` Andrew Jones 2024-06-05 0:38 ` Nicholas Piggin 2024-06-04 5:05 ` Nicholas Piggin 1 sibling, 1 reply; 19+ messages in thread From: Andrew Jones @ 2024-06-03 8:56 UTC (permalink / raw) To: Thomas Huth; +Cc: Nicholas Piggin, kvm On Mon, Jun 03, 2024 at 10:26:50AM GMT, Thomas Huth wrote: > On 02/06/2024 14.25, Nicholas Piggin wrote: > > Unless make V=1 is specified, silence make recipe echoing and print > > an abbreviated line for major build steps. > > > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > > --- > > Makefile | 14 ++++++++++++++ > > arm/Makefile.common | 7 +++++++ > > powerpc/Makefile.common | 11 +++++++---- > > riscv/Makefile | 5 +++++ > > s390x/Makefile | 18 +++++++++++++++++- > > scripts/mkstandalone.sh | 2 +- > > x86/Makefile.common | 5 +++++ > > 7 files changed, 56 insertions(+), 6 deletions(-) > > The short lines look superfluous in verbose mode, e.g.: > > [OBJCOPY] s390x/memory-verify.bin > objcopy -O binary s390x/memory-verify.elf s390x/memory-verify.bin > > Could we somehow suppress the echo lines in verbose mode, please? > > For example in the SLOF project, it's done like this: > > https://gitlab.com/slof/slof/-/blob/master/make.rules?ref_type=heads#L48 > > By putting the logic into $CC and friends, you also don't have to add > "@echo" statements all over the place. And I presume make will treat the printing and compiling as one unit, so parallel builds still get the summary above the error messages when compilation fails. The way this patch is now a parallel build may show the summary for the last successful build and then error messages for a build that hasn't output its summary yet, which can be confusing. So I agree that something more like SLOF's approach would be better. Thanks, drew ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [kvm-unit-tests PATCH 3/4] build: Make build output pretty 2024-06-03 8:56 ` Andrew Jones @ 2024-06-05 0:38 ` Nicholas Piggin 2024-06-12 10:32 ` Thomas Huth 0 siblings, 1 reply; 19+ messages in thread From: Nicholas Piggin @ 2024-06-05 0:38 UTC (permalink / raw) To: Andrew Jones, Thomas Huth; +Cc: kvm On Mon Jun 3, 2024 at 6:56 PM AEST, Andrew Jones wrote: > On Mon, Jun 03, 2024 at 10:26:50AM GMT, Thomas Huth wrote: > > On 02/06/2024 14.25, Nicholas Piggin wrote: > > > Unless make V=1 is specified, silence make recipe echoing and print > > > an abbreviated line for major build steps. > > > > > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > > > --- > > > Makefile | 14 ++++++++++++++ > > > arm/Makefile.common | 7 +++++++ > > > powerpc/Makefile.common | 11 +++++++---- > > > riscv/Makefile | 5 +++++ > > > s390x/Makefile | 18 +++++++++++++++++- > > > scripts/mkstandalone.sh | 2 +- > > > x86/Makefile.common | 5 +++++ > > > 7 files changed, 56 insertions(+), 6 deletions(-) > > > > The short lines look superfluous in verbose mode, e.g.: > > > > [OBJCOPY] s390x/memory-verify.bin > > objcopy -O binary s390x/memory-verify.elf s390x/memory-verify.bin > > > > Could we somehow suppress the echo lines in verbose mode, please? > > > > For example in the SLOF project, it's done like this: > > > > https://gitlab.com/slof/slof/-/blob/master/make.rules?ref_type=heads#L48 > > > > By putting the logic into $CC and friends, you also don't have to add > > "@echo" statements all over the place. > > And I presume make will treat the printing and compiling as one unit, so > parallel builds still get the summary above the error messages when > compilation fails. The way this patch is now a parallel build may show > the summary for the last successful build and then error messages for > a build that hasn't output its summary yet, which can be confusing. > > So I agree that something more like SLOF's approach would be better. Hmm... kbuild type commands is a pretty big patch. I like it though. Thoughts? Thanks, Nick --- diff --git a/Makefile b/Makefile index 5b7998b79..56052107f 100644 --- a/Makefile +++ b/Makefile @@ -53,6 +53,34 @@ EFI_CFLAGS += -fPIC EFI_LDFLAGS := -Bsymbolic -shared -nostdlib endif +quiet = quiet_ +quiet_echo = @echo $1 +Q = @ +ifeq ($V, 1) + quiet = + quiet_echo = + Q = +endif + +cmd = @$(echo-cmd) $(cmd_$(1)) +echo-cmd = $(if $($(quiet)cmd_$(1)), echo ' $($(quiet)cmd_$(1))';) + +quiet_cmd_cc = [CC] $@ + cmd_cc = $(CC) $(CFLAGS) -c -nostdlib -o $@ $< + +quiet_cmd_cpp = [CPP] $@ + cmd_cpp = $(CPP) $(CPPFLAGS) -P -C -o $@ $< + +quiet_cmd_as = [AS] $@ + cmd_as = $(CC) $(CFLAGS) -c -nostdlib -o $@ $< + +# Link libs last +quiet_cmd_ld = [LD] $@ + cmd_ld = $(LD) $(LDFLAGS) -o $@ $(filter %.o %.gobj, $^) $(filter %.a, $^) + +quiet_cmd_ar = [AR] $@ + cmd_ar = $(AR) rcs $@ $^ + #include architecture specific make rules include $(SRCDIR)/$(TEST_DIR)/Makefile @@ -95,14 +123,13 @@ autodepend-flags = -MMD -MP -MF $(dir $*).$(notdir $*).d LDFLAGS += -nostdlib $(no_pie) -z noexecstack $(libcflat): $(cflatobjs) - $(AR) rcs $@ $^ + $(call cmd,ar) include $(LIBFDT_srcdir)/Makefile.libfdt $(LIBFDT_archive): CFLAGS += -ffreestanding -I $(SRCDIR)/lib -I $(SRCDIR)/lib/libfdt -Wno-sign-compare $(LIBFDT_archive): $(addprefix $(LIBFDT_objdir)/,$(LIBFDT_OBJS)) - $(AR) rcs $@ $^ + $(call cmd,ar) -libfdt_clean: VECHO = echo " " libfdt_clean: STD_CLEANFILES = *.o .*.d libfdt_clean: LIBFDT_dir = $(LIBFDT_objdir) libfdt_clean: SHAREDLIB_EXT = so @@ -112,8 +139,11 @@ libfdt_clean: SHAREDLIB_EXT = so directories: @mkdir -p $(OBJDIRS) +%.o: %.c + $(call cmd,cc) + %.o: %.S - $(CC) $(CFLAGS) -c -nostdlib -o $@ $< + $(call cmd,as) -include */.*.d */*/.*.d @@ -123,23 +153,29 @@ standalone: all @scripts/mkstandalone.sh install: standalone - mkdir -p $(DESTDIR) - install tests/* $(DESTDIR) + $(call quiet_echo, " [INSTALL] tests -> $(DESTDIR)") + $(Q)mkdir -p $(DESTDIR) + $(Q)install tests/* $(DESTDIR) -clean: arch_clean libfdt_clean - $(RM) $(LIBFDT_archive) - $(RM) lib/.*.d $(libcflat) $(cflatobjs) +#clean: arch_clean libfdt_clean +clean: + $(call quiet_echo, " [CLEAN]") + $(Q)$(MAKE) --no-print-directory arch_clean libfdt_clean + $(Q)$(RM) $(LIBFDT_archive) + $(Q)$(RM) lib/.*.d $(libcflat) $(cflatobjs) distclean: clean - $(RM) lib/asm lib/config.h config.mak $(TEST_DIR)-run msr.out cscope.* build-head - $(RM) -r tests logs logs.old efi-tests + $(call quiet_echo, " [DISTCLEAN]") + $(Q)$(RM) lib/asm lib/config.h config.mak $(TEST_DIR)-run msr.out cscope.* build-head + $(Q)$(RM) -r tests logs logs.old efi-tests cscope: cscope_dirs = lib lib/libfdt lib/linux $(TEST_DIR) $(ARCH_LIBDIRS) lib/asm-generic cscope: - $(RM) ./cscope.* - find -L $(cscope_dirs) -maxdepth 1 \ + $(Q)$(RM) ./cscope.* + $(Q)find -L $(cscope_dirs) -maxdepth 1 \ -name '*.[chsS]' -exec realpath --relative-base=$(CURDIR) {} \; | sort -u > ./cscope.files - cscope -bk + $(call quiet_echo, " [CSCOPE]") + $(Q)cscope -bk .PHONY: shellcheck shellcheck: diff --git a/arm/Makefile.arm64 b/arm/Makefile.arm64 index 960880f1c..06e856ba1 100644 --- a/arm/Makefile.arm64 +++ b/arm/Makefile.arm64 @@ -52,4 +52,4 @@ tests += $(TEST_DIR)/debug.$(exe) include $(SRCDIR)/$(TEST_DIR)/Makefile.common arch_clean: arm_clean - $(RM) lib/arm64/.*.d + $(Q)$(RM) lib/arm64/.*.d diff --git a/arm/Makefile.common b/arm/Makefile.common index 5f22c9b08..0def9a327 100644 --- a/arm/Makefile.common +++ b/arm/Makefile.common @@ -72,48 +72,47 @@ eabiobjs = lib/arm/eabi_compat.o FLATLIBS = $(libcflat) $(LIBFDT_archive) $(libeabi) ifeq ($(CONFIG_EFI),y) +%.aux.o: CFLAGS += -DPROGNAME=\"$(@:.aux.o=.efi)\" -DAUXFLAGS=$(AUXFLAGS) $(tests-all:.$(exe)=.aux.o): $(SRCDIR)/lib/auxinfo.c - $(CC) $(CFLAGS) -c -o $@ $< \ - -DPROGNAME=\"$(@:.aux.o=.efi)\" -DAUXFLAGS=$(AUXFLAGS) + $(call cmd,cc) -%.so: EFI_LDFLAGS += -defsym=EFI_SUBSYSTEM=0xa --no-undefined -%.so: %.o $(FLATLIBS) $(SRCDIR)/arm/efi/elf_aarch64_efi.lds $(cstart.o) %.aux.o - $(LD) $(EFI_LDFLAGS) -o $@ -T $(SRCDIR)/arm/efi/elf_aarch64_efi.lds \ - $(filter %.o, $^) $(FLATLIBS) +%.so: LDFLAGS = $(EFI_LDFLAGS) -defsym=EFI_SUBSYSTEM=0xa --no-undefined -T $(SRCDIR)/arm/efi/elf_aarch64_efi.lds +%.so: %.o $(SRCDIR)/arm/efi/elf_aarch64_efi.lds $(cstart.o) $(FLATLIBS) $(EFI_LIBS) %.aux.o + $(call cmd,ld) %.efi: %.so $(call arch_elf_check, $^) - $(OBJCOPY) --only-keep-debug $^ $@.debug - $(OBJCOPY) --strip-debug $^ - $(OBJCOPY) --add-gnu-debuglink=$@.debug $^ - $(OBJCOPY) \ + $(call quiet_echo, " [OBJCOPY] $@") + $(Q)$(OBJCOPY) --only-keep-debug $^ $@.debug + $(Q)$(OBJCOPY) --strip-debug $^ + $(Q)$(OBJCOPY) --add-gnu-debuglink=$@.debug $^ + $(Q)$(OBJCOPY) \ -j .text -j .sdata -j .data -j .dynamic -j .dynsym \ -j .rel -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* \ -j .reloc \ -O binary $^ $@ else +%.aux.o: CFLAGS += -DPROGNAME=\"$(@:.aux.o=.flat)\" -DAUXFLAGS=$(AUXFLAGS) $(tests-all:.$(exe)=.aux.o): $(SRCDIR)/lib/auxinfo.c -%.aux.o: $(SRCDIR)/lib/auxinfo.c - $(CC) $(CFLAGS) -c -o $@ $< \ - -DPROGNAME=\"$(@:.aux.o=.flat)\" -DAUXFLAGS=$(AUXFLAGS) + $(call cmd,cc) -%.elf: LDFLAGS += $(arch_LDFLAGS) -%.elf: %.o $(FLATLIBS) $(SRCDIR)/arm/flat.lds $(cstart.o) %.aux.o - $(LD) $(LDFLAGS) -o $@ -T $(SRCDIR)/arm/flat.lds \ - $(filter %.o, $^) $(FLATLIBS) - @chmod a-x $@ +%.elf: LDFLAGS += $(arch_LDFLAGS) -T $(SRCDIR)/arm/flat.lds +%.elf: %.o $(SRCDIR)/arm/flat.lds $(cstart.o) $(FLATLIBS) %.aux.o + $(call cmd,ld) + $(Q)@chmod a-x $@ %.flat: %.elf $(call arch_elf_check, $^) - $(OBJCOPY) -O binary $^ $@ - @chmod a-x $@ + $(call quiet_echo, " [OBJCOPY] $@") + $(Q)$(OBJCOPY) -O binary $^ $@ + $(Q)chmod a-x $@ endif $(libeabi): $(eabiobjs) - $(AR) rcs $@ $^ + $(call cmd,ar) arm_clean: asm_offsets_clean - $(RM) $(TEST_DIR)/*.{o,flat,elf,so,efi,debug} $(libeabi) $(eabiobjs) \ + $(Q)$(RM) $(TEST_DIR)/*.{o,flat,elf,so,efi,debug} $(libeabi) $(eabiobjs) \ $(TEST_DIR)/.*.d $(TEST_DIR)/efi/.*.d lib/arm/.*.d generated-files = $(asm-offsets) diff --git a/lib/libfdt/Makefile.libfdt b/lib/libfdt/Makefile.libfdt index b6d8fc02d..3a1bc1128 100644 --- a/lib/libfdt/Makefile.libfdt +++ b/lib/libfdt/Makefile.libfdt @@ -13,6 +13,5 @@ LIBFDT_OBJS = $(LIBFDT_SRCS:%.c=%.o) LIBFDT_LIB = libfdt-$(DTC_VERSION).$(SHAREDLIB_EXT) libfdt_clean: - @$(VECHO) CLEAN "(libfdt)" - rm -f $(STD_CLEANFILES:%=$(LIBFDT_dir)/%) - rm -f $(LIBFDT_dir)/$(LIBFDT_soname) + $(Q)rm -f $(STD_CLEANFILES:%=$(LIBFDT_dir)/%) + $(Q)rm -f $(LIBFDT_dir)/$(LIBFDT_soname) diff --git a/powerpc/Makefile.common b/powerpc/Makefile.common index 3b219eee0..2fdf5bdae 100644 --- a/powerpc/Makefile.common +++ b/powerpc/Makefile.common @@ -52,37 +52,37 @@ cflatobjs += lib/powerpc/smp.o OBJDIRS += lib/powerpc +%.aux.o: CFLAGS += -DPROGNAME=\"$(@:.aux.o=.elf)\" $(tests-all:.elf=.aux.o): $(SRCDIR)/lib/auxinfo.c - $(CC) $(CFLAGS) -c -o $@ $< -DPROGNAME=\"$(@:.aux.o=.elf)\" + $(call cmd,cc) FLATLIBS = $(libcflat) $(LIBFDT_archive) %.elf: CFLAGS += $(arch_CFLAGS) -%.elf: LDFLAGS += $(arch_LDFLAGS) -pie -n +%.elf: LDFLAGS += $(arch_LDFLAGS) -pie -n --build-id=none -T $(SRCDIR)/powerpc/flat.lds %.elf: %.o $(FLATLIBS) $(SRCDIR)/powerpc/flat.lds $(cstart.o) $(reloc.o) %.aux.o - $(LD) $(LDFLAGS) -o $@ \ - -T $(SRCDIR)/powerpc/flat.lds --build-id=none \ - $(filter %.o, $^) $(FLATLIBS) - @chmod a-x $@ - @echo -n Checking $@ for unsupported reloc types... + $(call cmd,ld) + $(Q)chmod a-x $@ @if $(OBJDUMP) -R $@ | grep R_ | grep -v R_PPC64_RELATIVE; then \ + @echo "Unsupported reloc types in $@" \ false; \ - else \ - echo " looks good."; \ fi $(TEST_DIR)/boot_rom.bin: $(TEST_DIR)/boot_rom.elf - dd if=/dev/zero of=$@ bs=256 count=1 - $(OBJCOPY) -O binary $^ $@.tmp - cat $@.tmp >> $@ - $(RM) $@.tmp + $(call quiet_echo, " [DD] $@") + $(Q)dd if=/dev/zero of=$@ bs=256 count=1 status=none + $(call quiet_echo, " [OBJCOPY] $@") + $(Q)$(OBJCOPY) -O binary $^ $@.tmp + $(Q)cat $@.tmp >> $@ + $(Q)$(RM) $@.tmp $(TEST_DIR)/boot_rom.elf: CFLAGS = -mbig-endian +$(TEST_DIR)/boot_rom.elf: LDFLAGS = -EB -nostdlib -Ttext=0x100 --entry=start --build-id=none $(TEST_DIR)/boot_rom.elf: $(TEST_DIR)/boot_rom.o - $(LD) -EB -nostdlib -Ttext=0x100 --entry=start --build-id=none -o $@ $< - @chmod a-x $@ + $(call cmd,ld) + $(Q)chmod a-x $@ powerpc_clean: asm_offsets_clean - $(RM) $(TEST_DIR)/*.{o,elf} $(TEST_DIR)/boot_rom.bin \ + $(Q)$(RM) $(TEST_DIR)/*.{o,elf} $(TEST_DIR)/boot_rom.bin \ $(TEST_DIR)/.*.d lib/powerpc/.*.d generated-files = $(asm-offsets) diff --git a/powerpc/Makefile.ppc64 b/powerpc/Makefile.ppc64 index a18a9628f..b10499229 100644 --- a/powerpc/Makefile.ppc64 +++ b/powerpc/Makefile.ppc64 @@ -27,4 +27,4 @@ tests = $(TEST_DIR)/spapr_vpa.elf include $(SRCDIR)/$(TEST_DIR)/Makefile.common arch_clean: powerpc_clean - $(RM) lib/ppc64/.*.d + $(Q)$(RM) lib/ppc64/.*.d diff --git a/riscv/Makefile b/riscv/Makefile index eacca7ce1..f6fb9488a 100644 --- a/riscv/Makefile +++ b/riscv/Makefile @@ -81,9 +81,9 @@ CFLAGS += -I $(SRCDIR)/lib -I $(SRCDIR)/lib/libfdt asm-offsets = lib/riscv/asm-offsets.h include $(SRCDIR)/scripts/asm-offsets.mak +%.aux.o: CFLAGS += -DPROGNAME=\"$(notdir $(@:.aux.o=.$(exe)))\" -DAUXFLAGS=$(AUXFLAGS) $(tests:.$(exe)=.aux.o): $(SRCDIR)/lib/auxinfo.c - $(CC) $(CFLAGS) -c -o $@ $< \ - -DPROGNAME=\"$(notdir $(@:.aux.o=.$(exe)))\" -DAUXFLAGS=$(AUXFLAGS) + $(call cmd,cc) ifeq ($(CONFIG_EFI),y) # avoid jump tables before all relocations have been processed @@ -95,36 +95,37 @@ cflatobjs += lib/efi.o .PRECIOUS: %.so %.so: EFI_LDFLAGS += -defsym=EFI_SUBSYSTEM=0xa --no-undefined -%.so: %.o $(FLATLIBS) $(SRCDIR)/riscv/efi/elf_riscv64_efi.lds $(cstart.o) %.aux.o - $(LD) $(EFI_LDFLAGS) -o $@ -T $(SRCDIR)/riscv/efi/elf_riscv64_efi.lds \ - $(filter %.o, $^) $(FLATLIBS) +%.so: LDFLAGS = $(EFI_LDFLAGS) -T $(SRCDIR)/riscv/efi/elf_riscv64_efi.lds +%.so: %.o $(SRCDIR)/riscv/efi/elf_riscv64_efi.lds $(cstart.o) %.aux.o $(FLATLIBS) + $(call cmd,ld) %.efi: %.so $(call arch_elf_check, $^) - $(OBJCOPY) --only-keep-debug $^ $@.debug - $(OBJCOPY) --strip-debug $^ - $(OBJCOPY) --add-gnu-debuglink=$@.debug $^ - $(OBJCOPY) \ + $(call quiet_echo, " [OBJCOPY] $@") + $(Q)$(OBJCOPY) --only-keep-debug $^ $@.debug + $(Q)$(OBJCOPY) --strip-debug $^ + $(Q)$(OBJCOPY) --add-gnu-debuglink=$@.debug $^ + $(Q)$(OBJCOPY) \ -j .text -j .sdata -j .data -j .rodata -j .dynamic -j .dynsym \ -j .rel -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* \ -j .reloc \ -O binary $^ $@ else -%.elf: LDFLAGS += -pie -n -z notext -%.elf: %.o $(FLATLIBS) $(SRCDIR)/riscv/flat.lds $(cstart.o) %.aux.o - $(LD) $(LDFLAGS) -o $@ -T $(SRCDIR)/riscv/flat.lds \ - $(filter %.o, $^) $(FLATLIBS) - @chmod a-x $@ +%.elf: LDFLAGS += -pie -n -z notext -T $(SRCDIR)/riscv/flat.lds +%.elf: %.o $(SRCDIR)/riscv/flat.lds $(cstart.o) %.aux.o $(FLATLIBS) + $(call cmd,ld) + $(Q)@chmod a-x $@ %.flat: %.elf $(call arch_elf_check, $^) + $(call quiet_echo, " [OBJCOPY] $@") $(OBJCOPY) -O binary $^ $@ - @chmod a-x $@ + $(Q)@chmod a-x $@ endif generated-files = $(asm-offsets) $(tests:.$(exe)=.o) $(cstart.o) $(cflatobjs): $(generated-files) arch_clean: asm_offsets_clean - $(RM) $(TEST_DIR)/*.{o,flat,elf,so,efi,debug} \ + $(Q)$(RM) $(TEST_DIR)/*.{o,flat,elf,so,efi,debug} \ $(TEST_DIR)/.*.d $(TEST_DIR)/efi/.*.d lib/riscv/.*.d diff --git a/s390x/Makefile b/s390x/Makefile index 4c0c8085c..28d8a5b07 100644 --- a/s390x/Makefile +++ b/s390x/Makefile @@ -82,7 +82,7 @@ CFLAGS += -O2 CFLAGS += -march=zEC12 CFLAGS += -mbackchain CFLAGS += -fno-delete-null-pointer-checks -LDFLAGS += -Wl,--build-id=none +LDFLAGS += --build-id=none # We want to keep intermediate files .PRECIOUS: %.o %.lds @@ -148,54 +148,65 @@ endif # the asm/c snippets %.o have additional generated files as dependencies $(SNIPPET_DIR)/asm/%.o: $(SNIPPET_DIR)/asm/%.S $(asm-offsets) - $(CC) $(CFLAGS) -c -nostdlib -o $@ $< + $(call cmd,cc) $(SNIPPET_DIR)/c/%.o: $(SNIPPET_DIR)/c/%.c $(asm-offsets) - $(CC) $(CFLAGS) -c -nostdlib -o $@ $< + $(call cmd,cc) +$(SNIPPET_DIR)/asm/%.gbin: LDFLAGS += -T $(SNIPPET_DIR)/asm/flat.lds $(SNIPPET_DIR)/asm/%.gbin: $(SNIPPET_DIR)/asm/%.o $(SNIPPET_DIR)/asm/flat.lds - $(CC) $(LDFLAGS) -o $@ -T $(SNIPPET_DIR)/asm/flat.lds $< - $(OBJCOPY) -O binary -j ".rodata" -j ".lowcore" -j ".text" -j ".data" -j ".bss" --set-section-flags .bss=alloc,load,contents $@ $@ + $(call cmd,ld) + $(call quiet_echo, " [OBJCOPY] $@") + $(Q)$(OBJCOPY) -O binary -j ".rodata" -j ".lowcore" -j ".text" -j ".data" -j ".bss" --set-section-flags .bss=alloc,load,contents $@ $@ truncate -s '%4096' $@ +$(SNIPPET_DIR)/c/%.gbin: LDFLAGS += -T $(SNIPPET_DIR)/c/flat.lds $(SNIPPET_DIR)/c/%.gbin: $(SNIPPET_DIR)/c/%.o $(snippet_lib) $(FLATLIBS) $(SNIPPET_DIR)/c/flat.lds - $(CC) $(LDFLAGS) -o $@ -T $(SNIPPET_DIR)/c/flat.lds $< $(snippet_lib) $(FLATLIBS) - $(OBJCOPY) -O binary -j ".rodata" -j ".lowcore" -j ".text" -j ".data" -j ".bss" --set-section-flags .bss=alloc,load,contents $@ $@ - truncate -s '%4096' $@ + $(call cmd,ld) + $(call quiet_echo, " [OBJCOPY] $@") + $(Q)$(OBJCOPY) -O binary -j ".rodata" -j ".lowcore" -j ".text" -j ".data" -j ".bss" --set-section-flags .bss=alloc,load,contents $@ $@ + $(Q)truncate -s '%4096' $@ %.hdr: %.gbin $(HOST_KEY_DOCUMENT) - $(GEN_SE_HEADER) -k $(HOST_KEY_DOCUMENT) -c $<,0x0,0x00000000000000420000000000000000 --psw-addr 0x4000 -o $@ + $(call quiet_echo, " [SEHDR] $@") + $(Q)$(GEN_SE_HEADER) -k $(HOST_KEY_DOCUMENT) -c $<,0x0,0x00000000000000420000000000000000 --psw-addr 0x4000 -o $@ .SECONDARY: %.gobj: %.gbin - $(OBJCOPY) -I binary -O elf64-s390 -B "s390:64-bit" $< $@ + $(call quiet_echo, " [OBJCOPY] $@") + $(Q)$(OBJCOPY) -I binary -O elf64-s390 -B "s390:64-bit" $< $@ .SECONDARY: %.hdr.obj: %.hdr - $(OBJCOPY) -I binary -O elf64-s390 -B "s390:64-bit" $< $@ + $(call quiet_echo, " [OBJCOPY] $@") + $(Q)$(OBJCOPY) -I binary -O elf64-s390 -B "s390:64-bit" $< $@ lds-autodepend-flags = -MMD -MF $(dir $*).$(notdir $*).d -MT $@ +%.lds: CPPFLAGS += $(lds-autodepend-flags) %.lds: %.lds.S $(asm-offsets) - $(CPP) $(lds-autodepend-flags) $(CPPFLAGS) -P -C -o $@ $< + $(call cmd,cpp) +%.aux.o: CFLAGS += -DPROGNAME=\"$(@:.aux.o=.elf)\" $(tests:.elf=.aux.o): $(SRCDIR)/lib/auxinfo.c - $(CC) $(CFLAGS) -c -o $@ $< -DPROGNAME=\"$(@:.aux.o=.elf)\" + $(call cmd,cc) .SECONDEXPANSION: -%.elf: $(FLATLIBS) $(asmlib) $(SRCDIR)/s390x/flat.lds $$(snippets-obj) $$(snippet-hdr-obj) %.o %.aux.o - @$(CC) $(LDFLAGS) -o $@ -T $(SRCDIR)/s390x/flat.lds \ - $(filter %.o, $^) $(FLATLIBS) $(snippets-obj) $(snippet-hdr-obj) || \ - { echo "Failure probably caused by missing definition of gen-se-header executable"; exit 1; } - @chmod a-x $@ +%.elf: LDFLAGS += -T $(SRCDIR)/s390x/flat.lds +%.elf: $(SRCDIR)/s390x/flat.lds $$(snippets-obj) $$(snippet-hdr-obj) %.o %.aux.o $(FLATLIBS) $(asmlib) + $(call cmd,ld) +# XXX: some test for gen-se-header executable? + $(Q)@chmod a-x $@ # Secure Execution Customer Communication Key file # 32 bytes of key material, uses existing one if available comm-key = $(TEST_DIR)/comm.key $(comm-key): - dd if=/dev/urandom of=$@ bs=32 count=1 status=none + $(call quiet_echo, " [DD] $@") + $(Q)dd if=/dev/urandom of=$@ bs=32 count=1 status=none %.bin: %.elf - $(OBJCOPY) -O binary $< $@ + $(call quiet_echo, " [OBJCOPY] $@") + $(Q)$(OBJCOPY) -O binary $< $@ # The genprotimg arguments for the cck changed over time so we need to # figure out which argument to use in order to set the cck @@ -221,14 +232,14 @@ endif $(patsubst %.parmfile,%.pv.bin,$(wildcard s390x/*.parmfile)): %.pv.bin: %.parmfile %.pv.bin: %.bin $(HOST_KEY_DOCUMENT) $(comm-key) $(eval parmfile_args = $(if $(filter %.parmfile,$^),--parmfile $(filter %.parmfile,$^),)) - $(GENPROTIMG) --host-key-document $(HOST_KEY_DOCUMENT) --no-verify $(GENPROTIMG_COMM_OPTION) $(comm-key) --x-pcf $(GENPROTIMG_PCF) $(parmfile_args) --image $(filter %.bin,$^) -o $@ + $(call quiet_echo, " [GENPROT] $@") + $(Q)$(GENPROTIMG) --host-key-document $(HOST_KEY_DOCUMENT) --no-verify $(GENPROTIMG_COMM_OPTION) $(comm-key) --x-pcf $(GENPROTIMG_PCF) $(parmfile_args) --image $(filter %.bin,$^) -o $@ $(snippet_asmlib): $$(patsubst %.o,%.S,$$@) $(asm-offsets) - $(CC) $(CFLAGS) -c -nostdlib -o $@ $< - + $(call cmd,cc) arch_clean: asm_offsets_clean - $(RM) $(TEST_DIR)/*.{o,elf,bin,lds} $(SNIPPET_DIR)/*/*.{o,elf,*bin,*obj,hdr,lds} $(SNIPPET_DIR)/asm/.*.d $(TEST_DIR)/.*.d lib/s390x/.*.d $(comm-key) + $(Q)$(RM) $(TEST_DIR)/*.{o,elf,bin,lds} $(SNIPPET_DIR)/*/*.{o,elf,*bin,*obj,hdr,lds} $(SNIPPET_DIR)/asm/.*.d $(TEST_DIR)/.*.d lib/s390x/.*.d $(comm-key) generated-files = $(asm-offsets) $(tests:.elf=.o) $(asmlib) $(cflatobjs): $(generated-files) diff --git a/scripts/asm-offsets.mak b/scripts/asm-offsets.mak index 7b64162dd..db5f741c8 100644 --- a/scripts/asm-offsets.mak +++ b/scripts/asm-offsets.mak @@ -16,7 +16,7 @@ define sed-y endef define make_asm_offsets - (set -e; \ + $(Q)(set -e; \ echo "#ifndef __ASM_OFFSETS_H__"; \ echo "#define __ASM_OFFSETS_H__"; \ echo "/*"; \ @@ -29,16 +29,17 @@ define make_asm_offsets echo "#endif" ) > $@ endef +$(asm-offsets:.h=.s): CFLAGS += -fverbose-asm -S $(asm-offsets:.h=.s): $(asm-offsets:.h=.c) - $(CC) $(CFLAGS) -fverbose-asm -S -o $@ $< + $(call cmd,cc) $(asm-offsets): $(asm-offsets:.h=.s) $(call make_asm_offsets) - cp -f $(asm-offsets) lib/generated/ + $(Q)cp -f $(asm-offsets) lib/generated/ OBJDIRS += lib/generated asm_offsets_clean: - $(RM) $(asm-offsets) $(asm-offsets:.h=.s) \ + $(Q)$(RM) $(asm-offsets) $(asm-offsets:.h=.s) \ $(addprefix lib/generated/,$(notdir $(asm-offsets))) diff --git a/scripts/mkstandalone.sh b/scripts/mkstandalone.sh index 2318a85f0..3307c25b1 100755 --- a/scripts/mkstandalone.sh +++ b/scripts/mkstandalone.sh @@ -94,7 +94,7 @@ function mkstandalone() generate_test "$@" > $standalone chmod +x $standalone - echo Written $standalone. + echo " [WRITE] $standalone" } if [ "$ENVIRON_DEFAULT" = "yes" ] && [ "$ERRATATXT" ] && [ ! -f "$ERRATATXT" ]; then diff --git a/x86/Makefile.common b/x86/Makefile.common index 4ae9a5579..7896fb6c9 100644 --- a/x86/Makefile.common +++ b/x86/Makefile.common @@ -48,32 +48,33 @@ FLATLIBS = lib/libcflat.a ifeq ($(CONFIG_EFI),y) .PRECIOUS: %.efi %.so -%.so: %.o $(FLATLIBS) $(SRCDIR)/x86/efi/elf_x86_64_efi.lds $(cstart.o) - $(LD) -T $(SRCDIR)/x86/efi/elf_x86_64_efi.lds $(EFI_LDFLAGS) -o $@ \ - $(filter %.o, $^) $(FLATLIBS) - @chmod a-x $@ +%.so: LDFLAGS = $(EFI_LDFLAGS) -T $(SRCDIR)/x86/efi/elf_x86_64_efi.lds +%.so: %.o $(SRCDIR)/x86/efi/elf_x86_64_efi.lds $(cstart.o) $(FLATLIBS) + $(call cmd,ld) + $(Q)@chmod a-x $@ %.efi: %.so - $(OBJCOPY) --only-keep-debug $^ $@.debug - $(OBJCOPY) --strip-debug $^ - $(OBJCOPY) --add-gnu-debuglink=$@.debug $^ - $(OBJCOPY) \ + $(call quiet_echo, " [OBJCOPY] $@") + $(Q)$(OBJCOPY) --only-keep-debug $^ $@.debug + $(Q)$(OBJCOPY) --strip-debug $^ + $(Q)$(OBJCOPY) --add-gnu-debuglink=$@.debug $^ + $(Q)$(OBJCOPY) \ -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \ -j .rela -j .reloc -S --target=$(FORMAT) $< $@ - @chmod a-x $@ + $(Q)chmod a-x $@ else # We want to keep intermediate file: %.elf and %.o .PRECIOUS: %.elf %.o -%.elf: LDFLAGS += $(arch_LDFLAGS) -%.elf: %.o $(FLATLIBS) $(SRCDIR)/x86/flat.lds $(cstart.o) - $(LD) $(LDFLAGS) -T $(SRCDIR)/x86/flat.lds -o $@ \ - $(filter %.o, $^) $(FLATLIBS) - @chmod a-x $@ +%.elf: LDFLAGS += $(arch_LDFLAGS) -T $(SRCDIR)/x86/flat.lds +%.elf: %.o $(SRCDIR)/x86/flat.lds $(cstart.o) $(FLATLIBS) + $(call cmd,ld) + $(Q)@chmod a-x $@ %.flat: %.elf - $(OBJCOPY) -O elf32-i386 $^ $@ - @chmod a-x $@ + $(call quiet_echo, " [OBJCOPY] $@") + $(Q)$(OBJCOPY) -O elf32-i386 $^ $@ + $(Q)chmod a-x $@ endif tests-common = $(TEST_DIR)/vmexit.$(exe) $(TEST_DIR)/tsc.$(exe) \ @@ -103,9 +104,9 @@ test_cases: $(tests-common) $(tests) $(TEST_DIR)/%.o: CFLAGS += -std=gnu99 -ffreestanding -I $(SRCDIR)/lib -I $(SRCDIR)/lib/x86 -I lib +$(TEST_DIR)/realmode.elf: LDFLAGS = -m elf_i386 -nostdlib -T $(SRCDIR)/$(TEST_DIR)/realmode.lds $(TEST_DIR)/realmode.elf: $(TEST_DIR)/realmode.o - $(LD) -m elf_i386 -nostdlib -o $@ \ - -T $(SRCDIR)/$(TEST_DIR)/realmode.lds $^ + $(call cmd,ld) $(TEST_DIR)/realmode.o: bits = $(if $(call cc-option,-m16,""),16,32) @@ -124,7 +125,7 @@ $(TEST_DIR)/hyperv_stimer.$(bin): $(TEST_DIR)/hyperv.o $(TEST_DIR)/hyperv_connections.$(bin): $(TEST_DIR)/hyperv.o arch_clean: - $(RM) $(TEST_DIR)/*.o $(TEST_DIR)/*.flat $(TEST_DIR)/*.elf \ + $(Q)$(RM) $(TEST_DIR)/*.o $(TEST_DIR)/*.flat $(TEST_DIR)/*.elf \ $(TEST_DIR)/.*.d lib/x86/.*.d \ $(TEST_DIR)/efi/*.o $(TEST_DIR)/efi/.*.d \ $(TEST_DIR)/*.so $(TEST_DIR)/*.efi $(TEST_DIR)/*.debug ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [kvm-unit-tests PATCH 3/4] build: Make build output pretty 2024-06-05 0:38 ` Nicholas Piggin @ 2024-06-12 10:32 ` Thomas Huth 2024-06-14 1:07 ` Nicholas Piggin 0 siblings, 1 reply; 19+ messages in thread From: Thomas Huth @ 2024-06-12 10:32 UTC (permalink / raw) To: Nicholas Piggin, Andrew Jones; +Cc: kvm On 05/06/2024 02.38, Nicholas Piggin wrote: > On Mon Jun 3, 2024 at 6:56 PM AEST, Andrew Jones wrote: >> On Mon, Jun 03, 2024 at 10:26:50AM GMT, Thomas Huth wrote: >>> On 02/06/2024 14.25, Nicholas Piggin wrote: >>>> Unless make V=1 is specified, silence make recipe echoing and print >>>> an abbreviated line for major build steps. >>>> >>>> Signed-off-by: Nicholas Piggin <npiggin@gmail.com> >>>> --- >>>> Makefile | 14 ++++++++++++++ >>>> arm/Makefile.common | 7 +++++++ >>>> powerpc/Makefile.common | 11 +++++++---- >>>> riscv/Makefile | 5 +++++ >>>> s390x/Makefile | 18 +++++++++++++++++- >>>> scripts/mkstandalone.sh | 2 +- >>>> x86/Makefile.common | 5 +++++ >>>> 7 files changed, 56 insertions(+), 6 deletions(-) >>> >>> The short lines look superfluous in verbose mode, e.g.: >>> >>> [OBJCOPY] s390x/memory-verify.bin >>> objcopy -O binary s390x/memory-verify.elf s390x/memory-verify.bin >>> >>> Could we somehow suppress the echo lines in verbose mode, please? >>> >>> For example in the SLOF project, it's done like this: >>> >>> https://gitlab.com/slof/slof/-/blob/master/make.rules?ref_type=heads#L48 >>> >>> By putting the logic into $CC and friends, you also don't have to add >>> "@echo" statements all over the place. >> >> And I presume make will treat the printing and compiling as one unit, so >> parallel builds still get the summary above the error messages when >> compilation fails. The way this patch is now a parallel build may show >> the summary for the last successful build and then error messages for >> a build that hasn't output its summary yet, which can be confusing. >> >> So I agree that something more like SLOF's approach would be better. > > Hmm... kbuild type commands is a pretty big patch. I like it though. > Thoughts? Looks pretty complex to me ... do we really need this complexity in the k-u-t? If not, I think I'd rather prefer to go with a more simple approach like the one from SLOF. Thomas ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [kvm-unit-tests PATCH 3/4] build: Make build output pretty 2024-06-12 10:32 ` Thomas Huth @ 2024-06-14 1:07 ` Nicholas Piggin 0 siblings, 0 replies; 19+ messages in thread From: Nicholas Piggin @ 2024-06-14 1:07 UTC (permalink / raw) To: Thomas Huth, Andrew Jones; +Cc: kvm On Wed Jun 12, 2024 at 8:32 PM AEST, Thomas Huth wrote: > On 05/06/2024 02.38, Nicholas Piggin wrote: > > On Mon Jun 3, 2024 at 6:56 PM AEST, Andrew Jones wrote: > >> On Mon, Jun 03, 2024 at 10:26:50AM GMT, Thomas Huth wrote: > >>> On 02/06/2024 14.25, Nicholas Piggin wrote: > >>>> Unless make V=1 is specified, silence make recipe echoing and print > >>>> an abbreviated line for major build steps. > >>>> > >>>> Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > >>>> --- > >>>> Makefile | 14 ++++++++++++++ > >>>> arm/Makefile.common | 7 +++++++ > >>>> powerpc/Makefile.common | 11 +++++++---- > >>>> riscv/Makefile | 5 +++++ > >>>> s390x/Makefile | 18 +++++++++++++++++- > >>>> scripts/mkstandalone.sh | 2 +- > >>>> x86/Makefile.common | 5 +++++ > >>>> 7 files changed, 56 insertions(+), 6 deletions(-) > >>> > >>> The short lines look superfluous in verbose mode, e.g.: > >>> > >>> [OBJCOPY] s390x/memory-verify.bin > >>> objcopy -O binary s390x/memory-verify.elf s390x/memory-verify.bin > >>> > >>> Could we somehow suppress the echo lines in verbose mode, please? > >>> > >>> For example in the SLOF project, it's done like this: > >>> > >>> https://gitlab.com/slof/slof/-/blob/master/make.rules?ref_type=heads#L48 > >>> > >>> By putting the logic into $CC and friends, you also don't have to add > >>> "@echo" statements all over the place. > >> > >> And I presume make will treat the printing and compiling as one unit, so > >> parallel builds still get the summary above the error messages when > >> compilation fails. The way this patch is now a parallel build may show > >> the summary for the last successful build and then error messages for > >> a build that hasn't output its summary yet, which can be confusing. > >> > >> So I agree that something more like SLOF's approach would be better. > > > > Hmm... kbuild type commands is a pretty big patch. I like it though. > > Thoughts? > > Looks pretty complex to me ... do we really need this complexity in the > k-u-t? If not, I think I'd rather prefer to go with a more simple approach > like the one from SLOF. The first patch I posted added silent to make too, but I don't love it because it silences things that you missed or forgot about. This way is loud by default and you have to adjust recipes to be quiet. It caught a couple of things I missed the first time around. I think that's a long term advantage for more short term churn. Thanks, Nick ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [kvm-unit-tests PATCH 3/4] build: Make build output pretty 2024-06-03 8:26 ` Thomas Huth 2024-06-03 8:56 ` Andrew Jones @ 2024-06-04 5:05 ` Nicholas Piggin 1 sibling, 0 replies; 19+ messages in thread From: Nicholas Piggin @ 2024-06-04 5:05 UTC (permalink / raw) To: Thomas Huth; +Cc: Andrew Jones, kvm On Mon Jun 3, 2024 at 6:26 PM AEST, Thomas Huth wrote: > On 02/06/2024 14.25, Nicholas Piggin wrote: > > Unless make V=1 is specified, silence make recipe echoing and print > > an abbreviated line for major build steps. > > > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > > --- > > Makefile | 14 ++++++++++++++ > > arm/Makefile.common | 7 +++++++ > > powerpc/Makefile.common | 11 +++++++---- > > riscv/Makefile | 5 +++++ > > s390x/Makefile | 18 +++++++++++++++++- > > scripts/mkstandalone.sh | 2 +- > > x86/Makefile.common | 5 +++++ > > 7 files changed, 56 insertions(+), 6 deletions(-) > > The short lines look superfluous in verbose mode, e.g.: > > [OBJCOPY] s390x/memory-verify.bin > objcopy -O binary s390x/memory-verify.elf s390x/memory-verify.bin > > Could we somehow suppress the echo lines in verbose mode, please? > > For example in the SLOF project, it's done like this: > > https://gitlab.com/slof/slof/-/blob/master/make.rules?ref_type=heads#L48 > > By putting the logic into $CC and friends, you also don't have to add > "@echo" statements all over the place. I'll could try a bit harder at it, this was a pretty quick hack. I probably prefer the cmd_cc style that Linux uses rather than overloading CC. But maybe that's more work. Thanks, Nick ^ permalink raw reply [flat|nested] 19+ messages in thread
* [kvm-unit-tests PATCH 4/4] gitlab-ci: Always save artifacts 2024-06-02 12:25 [kvm-unit-tests PATCH 0/4] powerpc fix and misc docs/build/CI improvements Nicholas Piggin ` (2 preceding siblings ...) 2024-06-02 12:25 ` [kvm-unit-tests PATCH 3/4] build: Make build output pretty Nicholas Piggin @ 2024-06-02 12:25 ` Nicholas Piggin 2024-06-03 4:29 ` Thomas Huth 3 siblings, 1 reply; 19+ messages in thread From: Nicholas Piggin @ 2024-06-02 12:25 UTC (permalink / raw) To: Thomas Huth; +Cc: Nicholas Piggin, Andrew Jones, kvm The unit test logs are important to have when a test fails so mark these as always save. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> --- .gitlab-ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 23bb69e24..c58dcc46c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,14 +4,19 @@ before_script: - dnf update -y - dnf install -y make python +# Always save logs even for build failure, because the tests are actually +# run as part of the test step (because there is little need for an +# additional build step. .intree_template: artifacts: + when: always expire_in: 2 days paths: - logs .outoftree_template: artifacts: + when: always expire_in: 2 days paths: - build/logs -- 2.43.0 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [kvm-unit-tests PATCH 4/4] gitlab-ci: Always save artifacts 2024-06-02 12:25 ` [kvm-unit-tests PATCH 4/4] gitlab-ci: Always save artifacts Nicholas Piggin @ 2024-06-03 4:29 ` Thomas Huth 2024-06-03 8:17 ` Nicholas Piggin 0 siblings, 1 reply; 19+ messages in thread From: Thomas Huth @ 2024-06-03 4:29 UTC (permalink / raw) To: Nicholas Piggin; +Cc: Andrew Jones, kvm On 02/06/2024 14.25, Nicholas Piggin wrote: > The unit test logs are important to have when a test fails so > mark these as always save. > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > --- > .gitlab-ci.yml | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml > index 23bb69e24..c58dcc46c 100644 > --- a/.gitlab-ci.yml > +++ b/.gitlab-ci.yml > @@ -4,14 +4,19 @@ before_script: > - dnf update -y > - dnf install -y make python > > +# Always save logs even for build failure, because the tests are actually > +# run as part of the test step (because there is little need for an > +# additional build step. > .intree_template: > artifacts: > + when: always > expire_in: 2 days > paths: > - logs > > .outoftree_template: > artifacts: > + when: always > expire_in: 2 days > paths: > - build/logs Reviewed-by: Thomas Huth <thuth@redhat.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [kvm-unit-tests PATCH 4/4] gitlab-ci: Always save artifacts 2024-06-03 4:29 ` Thomas Huth @ 2024-06-03 8:17 ` Nicholas Piggin 0 siblings, 0 replies; 19+ messages in thread From: Nicholas Piggin @ 2024-06-03 8:17 UTC (permalink / raw) To: Thomas Huth; +Cc: Andrew Jones, kvm On Mon Jun 3, 2024 at 2:29 PM AEST, Thomas Huth wrote: > On 02/06/2024 14.25, Nicholas Piggin wrote: > > The unit test logs are important to have when a test fails so > > mark these as always save. > > > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > > --- > > .gitlab-ci.yml | 5 +++++ > > 1 file changed, 5 insertions(+) > > > > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml > > index 23bb69e24..c58dcc46c 100644 > > --- a/.gitlab-ci.yml > > +++ b/.gitlab-ci.yml > > @@ -4,14 +4,19 @@ before_script: > > - dnf update -y > > - dnf install -y make python > > > > +# Always save logs even for build failure, because the tests are actually > > +# run as part of the test step (because there is little need for an > > +# additional build step. This wording is a bit scrambled too, I wrote it thinking CI was using build step by default. It seems to be test so changing the words around didn't work (also I'll fix the closing paren). I'll fix that up. Thanks, Nick > > .intree_template: > > artifacts: > > + when: always > > expire_in: 2 days > > paths: > > - logs > > > > .outoftree_template: > > artifacts: > > + when: always > > expire_in: 2 days > > paths: > > - build/logs > > Reviewed-by: Thomas Huth <thuth@redhat.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2024-06-14 1:07 UTC | newest] Thread overview: 19+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-06-02 12:25 [kvm-unit-tests PATCH 0/4] powerpc fix and misc docs/build/CI improvements Nicholas Piggin 2024-06-02 12:25 ` [kvm-unit-tests PATCH 1/4] powerpc/sprs: Fix report_kfail call Nicholas Piggin 2024-06-03 4:22 ` Thomas Huth 2024-06-02 12:25 ` [kvm-unit-tests PATCH 2/4] doc: update unittests doc Nicholas Piggin 2024-06-03 4:24 ` Thomas Huth 2024-06-03 6:47 ` Andrew Jones 2024-06-03 8:12 ` Nicholas Piggin 2024-06-03 8:45 ` Andrew Jones 2024-06-02 12:25 ` [kvm-unit-tests PATCH 3/4] build: Make build output pretty Nicholas Piggin 2024-06-03 7:00 ` Andrew Jones 2024-06-03 8:26 ` Thomas Huth 2024-06-03 8:56 ` Andrew Jones 2024-06-05 0:38 ` Nicholas Piggin 2024-06-12 10:32 ` Thomas Huth 2024-06-14 1:07 ` Nicholas Piggin 2024-06-04 5:05 ` Nicholas Piggin 2024-06-02 12:25 ` [kvm-unit-tests PATCH 4/4] gitlab-ci: Always save artifacts Nicholas Piggin 2024-06-03 4:29 ` Thomas Huth 2024-06-03 8:17 ` Nicholas Piggin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox