Message ID | 20240806121029.1199794-1-usama.anjum@collabora.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | selftests: kvm: fix mkdir error when building for non-supported arch | expand |
On 8/6/24 06:10, Muhammad Usama Anjum wrote: > The mkdir generates an error when kvm suite is build for non-supported built unsupported > architecture such as arm. Fix it by ignoring the error from mkdir. > > mkdir: missing operand > Try 'mkdir --help' for more information. Simply suppressing the message isn't a good fix. Can you investigate a bit more on why mkdir is failing and the architectures it is failing on? This change simply suppresses the error message and continues - Should this error end the build process or not run mkdir to begin with by checking why $(sort $(dir $(TEST_GEN_PROGS)))) results in an empty string? > > Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com> > --- > tools/testing/selftests/kvm/Makefile | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile > index 48d32c5aa3eb7..8ff46a0a8d1cd 100644 > --- a/tools/testing/selftests/kvm/Makefile > +++ b/tools/testing/selftests/kvm/Makefile > @@ -317,7 +317,7 @@ $(LIBKVM_S_OBJ): $(OUTPUT)/%.o: %.S $(GEN_HDRS) > $(LIBKVM_STRING_OBJ): $(OUTPUT)/%.o: %.c > $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -ffreestanding $< -o $@ > > -$(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS)))) > +$(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS))) > /dev/null 2>&1) > $(SPLIT_TEST_GEN_OBJ): $(GEN_HDRS) > $(TEST_GEN_PROGS): $(LIBKVM_OBJS) > $(TEST_GEN_PROGS_EXTENDED): $(LIBKVM_OBJS) thanks, -- Shuah
On 8/6/24 9:00 PM, Shuah Khan wrote: > On 8/6/24 06:10, Muhammad Usama Anjum wrote: >> The mkdir generates an error when kvm suite is build for non-supported > > built > unsupported > >> architecture such as arm. Fix it by ignoring the error from mkdir. >> >> mkdir: missing operand >> Try 'mkdir --help' for more information. > > Simply suppressing the message isn't a good fix. Can you investigate > a bit more on why mkdir is failing and the architectures it is failing > on? > > This change simply suppresses the error message and continues - Should > this error end the build process or not run mkdir to begin with by > checking why $(sort $(dir $(TEST_GEN_PROGS)))) results in an empty > string? The tests are specified on per architecture basis. As KVM isn't supported on arm, there are no tests in TEST_GEN_PROGS and it is empty. While lib.mk infrastructure has support to ignore and not build anything in such cases, the Makefile's behaviour isn't robust enough. I think the better fix would be to check if TEST_GEN_PROGS isn't empty and then call mkdir. I'll reiterate and send the fix. > >> >> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com> >> --- >> tools/testing/selftests/kvm/Makefile | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile >> index 48d32c5aa3eb7..8ff46a0a8d1cd 100644 >> --- a/tools/testing/selftests/kvm/Makefile >> +++ b/tools/testing/selftests/kvm/Makefile >> @@ -317,7 +317,7 @@ $(LIBKVM_S_OBJ): $(OUTPUT)/%.o: %.S $(GEN_HDRS) >> $(LIBKVM_STRING_OBJ): $(OUTPUT)/%.o: %.c >> $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -ffreestanding $< -o $@ >> -$(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS)))) >> +$(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS))) > /dev/null 2>&1) >> $(SPLIT_TEST_GEN_OBJ): $(GEN_HDRS) >> $(TEST_GEN_PROGS): $(LIBKVM_OBJS) >> $(TEST_GEN_PROGS_EXTENDED): $(LIBKVM_OBJS) > > > thanks, > -- Shuah
On 8/7/24 11:08 AM, Muhammad Usama Anjum wrote: > On 8/6/24 9:00 PM, Shuah Khan wrote: >> On 8/6/24 06:10, Muhammad Usama Anjum wrote: >>> The mkdir generates an error when kvm suite is build for non-supported >> >> built >> unsupported >> >>> architecture such as arm. Fix it by ignoring the error from mkdir. >>> >>> mkdir: missing operand >>> Try 'mkdir --help' for more information. >> >> Simply suppressing the message isn't a good fix. Can you investigate >> a bit more on why mkdir is failing and the architectures it is failing >> on? >> >> This change simply suppresses the error message and continues - Should >> this error end the build process or not run mkdir to begin with by >> checking why $(sort $(dir $(TEST_GEN_PROGS)))) results in an empty >> string? > The tests are specified on per architecture basis. As KVM isn't supported on arm, there are no tests in TEST_GEN_PROGS and it is empty. While lib.mk infrastructure has support to ignore and not build anything in such cases, the Makefile's behaviour isn't robust enough. > > I think the better fix would be to check if TEST_GEN_PROGS isn't empty and then call mkdir. I'll reiterate and send the fix. Waiting on Paolo's response before sending the following fix. Maybe he has better idea here. --- a/tools/testing/selftests/kvm/Makefile +++ b/tools/testing/selftests/kvm/Makefile @@ -317,7 +317,9 @@ $(LIBKVM_S_OBJ): $(OUTPUT)/%.o: %.S $(GEN_HDRS) $(LIBKVM_STRING_OBJ): $(OUTPUT)/%.o: %.c $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -ffreestanding $< -o $@ -$(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS)))) +ifneq ($(strip $(TEST_GEN_PROGS)),) +$(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS)))) +endif $(SPLIT_TEST_GEN_OBJ): $(GEN_HDRS) $(TEST_GEN_PROGS): $(LIBKVM_OBJS) $(TEST_GEN_PROGS_EXTENDED): $(LIBKVM_OBJS) > >> >>> >>> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com> >>> --- >>> tools/testing/selftests/kvm/Makefile | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile >>> index 48d32c5aa3eb7..8ff46a0a8d1cd 100644 >>> --- a/tools/testing/selftests/kvm/Makefile >>> +++ b/tools/testing/selftests/kvm/Makefile >>> @@ -317,7 +317,7 @@ $(LIBKVM_S_OBJ): $(OUTPUT)/%.o: %.S $(GEN_HDRS) >>> $(LIBKVM_STRING_OBJ): $(OUTPUT)/%.o: %.c >>> $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -ffreestanding $< -o $@ >>> -$(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS)))) >>> +$(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS))) > /dev/null 2>&1) >>> $(SPLIT_TEST_GEN_OBJ): $(GEN_HDRS) >>> $(TEST_GEN_PROGS): $(LIBKVM_OBJS) >>> $(TEST_GEN_PROGS_EXTENDED): $(LIBKVM_OBJS) >> >> >> thanks, >> -- Shuah >
Adding Sean On 8/7/24 11:33 AM, Muhammad Usama Anjum wrote: > On 8/7/24 11:08 AM, Muhammad Usama Anjum wrote: >> On 8/6/24 9:00 PM, Shuah Khan wrote: >>> On 8/6/24 06:10, Muhammad Usama Anjum wrote: >>>> The mkdir generates an error when kvm suite is build for non-supported >>> >>> built >>> unsupported >>> >>>> architecture such as arm. Fix it by ignoring the error from mkdir. >>>> >>>> mkdir: missing operand >>>> Try 'mkdir --help' for more information. >>> >>> Simply suppressing the message isn't a good fix. Can you investigate >>> a bit more on why mkdir is failing and the architectures it is failing >>> on? >>> >>> This change simply suppresses the error message and continues - Should >>> this error end the build process or not run mkdir to begin with by >>> checking why $(sort $(dir $(TEST_GEN_PROGS)))) results in an empty >>> string? >> The tests are specified on per architecture basis. As KVM isn't supported on arm, there are no tests in TEST_GEN_PROGS and it is empty. While lib.mk infrastructure has support to ignore and not build anything in such cases, the Makefile's behaviour isn't robust enough. >> >> I think the better fix would be to check if TEST_GEN_PROGS isn't empty and then call mkdir. I'll reiterate and send the fix. > > Waiting on Paolo's response before sending the following fix. Maybe he > has better idea here. > --- a/tools/testing/selftests/kvm/Makefile > +++ b/tools/testing/selftests/kvm/Makefile > @@ -317,7 +317,9 @@ $(LIBKVM_S_OBJ): $(OUTPUT)/%.o: %.S $(GEN_HDRS) > $(LIBKVM_STRING_OBJ): $(OUTPUT)/%.o: %.c > $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -ffreestanding $< -o $@ > > -$(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS)))) > +ifneq ($(strip $(TEST_GEN_PROGS)),) > +$(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS)))) > +endif > $(SPLIT_TEST_GEN_OBJ): $(GEN_HDRS) > $(TEST_GEN_PROGS): $(LIBKVM_OBJS) > $(TEST_GEN_PROGS_EXTENDED): $(LIBKVM_OBJS) Do you agree with the fix or is there better fix? Please feel free to jump in to propose better fix here. > > >> >>> >>>> >>>> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com> >>>> --- >>>> tools/testing/selftests/kvm/Makefile | 2 +- >>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>> >>>> diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile >>>> index 48d32c5aa3eb7..8ff46a0a8d1cd 100644 >>>> --- a/tools/testing/selftests/kvm/Makefile >>>> +++ b/tools/testing/selftests/kvm/Makefile >>>> @@ -317,7 +317,7 @@ $(LIBKVM_S_OBJ): $(OUTPUT)/%.o: %.S $(GEN_HDRS) >>>> $(LIBKVM_STRING_OBJ): $(OUTPUT)/%.o: %.c >>>> $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -ffreestanding $< -o $@ >>>> -$(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS)))) >>>> +$(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS))) > /dev/null 2>&1) >>>> $(SPLIT_TEST_GEN_OBJ): $(GEN_HDRS) >>>> $(TEST_GEN_PROGS): $(LIBKVM_OBJS) >>>> $(TEST_GEN_PROGS_EXTENDED): $(LIBKVM_OBJS) >>> >>> >>> thanks, >>> -- Shuah >> >
diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile index 48d32c5aa3eb7..8ff46a0a8d1cd 100644 --- a/tools/testing/selftests/kvm/Makefile +++ b/tools/testing/selftests/kvm/Makefile @@ -317,7 +317,7 @@ $(LIBKVM_S_OBJ): $(OUTPUT)/%.o: %.S $(GEN_HDRS) $(LIBKVM_STRING_OBJ): $(OUTPUT)/%.o: %.c $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -ffreestanding $< -o $@ -$(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS)))) +$(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS))) > /dev/null 2>&1) $(SPLIT_TEST_GEN_OBJ): $(GEN_HDRS) $(TEST_GEN_PROGS): $(LIBKVM_OBJS) $(TEST_GEN_PROGS_EXTENDED): $(LIBKVM_OBJS)
The mkdir generates an error when kvm suite is build for non-supported architecture such as arm. Fix it by ignoring the error from mkdir. mkdir: missing operand Try 'mkdir --help' for more information. Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com> --- tools/testing/selftests/kvm/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)